How to use SNES SPC700 Player - dgrfactory/spcplay GitHub Wiki

Basic operations

How to play any SPC file

  • Click the "OPEN" button to select any SPC file.
      OR
    Drag and drop any SPC file into the label area (left side of the window).

How to stop

  • Click the "PAUSE" button to pause, or the "STOP" button to stop completely.
  • Click the "PLAY" button to resume.

How to append file to a playlist

  • Click the "APPEND" button to append the currently opened file to a playlist.
      OR
    Drag and drop any SPC file into the playlist area (right side of the window).

How to remove file from a playlist

  • Select a file from a playlist, and click the "REMOVE" button.
  • Click the "CLEAR" button to all clear from a playlist.
  • In both cases, the actual file is not deleted.

How to play from a playlist

  • Select a file from a playlist, and push Enter key or double-click an item.

How to endless playback

  • Select the "Disable/Endless" item in the "Settings" - "Play Time" menu.

Keyboard shortcuts

Key Operation
⬆️ / ⬇️ Select file in a playlist
⬅️ / ➡️ Change the information indicator
Shift Use another functions
Enter Play selected a file in a playlist
Ctrl+Enter Randomly select file from a playlist
Ctrl+O Open any file
Ctrl+S Save a playlist to storage
Ctrl+P Play / Pause
Ctrl+R Restart
Ctrl+T Stop
Ctrl+Z Play previous file in a playlist
Ctrl+X Play opened/selected a file
Ctrl+C Pause
Ctrl+V Stop
Ctrl+B Play next file in a playlist
Ctrl+⬆️ Move selected a file to up in a playlist
Ctrl+⬇️ Move selected a file to down in a playlist
Ctrl+⬅️ Speed to down
Ctrl+➡️ Speed to up
Ctrl+,(<) Set the loop start position
Ctrl+.(>) Set the loop end position
Ctrl+/ Reset the loop position
Shift+Enter Randomly select from a playlist
Shift+⬆️ Play previous file in a playlist
Shift+⬇️ Play next file in a playlist
Shift+⬅️ Seek to backward
Shift+➡️ Seek to forward
Alt+⬆️ Move selected a file to up in a playlist
Alt+⬇️ Move selected a file to down in a playlist
Alt+⬅️ Volume to down
Alt+➡️ Volume to up
Insert Append a file to a playlist
Shift+Insert Insert a file to a playlist
Delete Delete selected a file in a playlist
Ctrl+Delete Clear all files in a playlist
F1 ~ F8 Channel mask
Ctrl+F1 ~ Ctrl+F8 Channel solo
F9 Toggle channel mask for all channels
Ctrl+F9 Reset channel mask for all channels
F12 / Pause/Break Change DEC / HEX, and show additional value
Esc Minimize window
0 (Numeric keypad) Stop
1 (Numeric keypad) Speed to down
2 (Numeric keypad) Play next file in a playlist
3 (Numeric keypad) Speed to up
4 (Numeric keypad) Seek to backward
5 (Numeric keypad) Play / Pause
6 (Numeric keypad) Seek to forward
7 (Numeric keypad) Decrease strength of the stereo separator
8 (Numeric keypad) Play previous file in a playlist
9 (Numeric keypad) Increase strength of the stereo separator
/ (Numeric keypad) Decrease strength of the echo feedback
* (Numeric keypad) Increase strength of the echo feedback
- (Numeric keypad) Volume to down
+ (Numeric keypad) Volume to up

Mouse shortcuts

Button Operation
Right button Use another functions (same as Shift key)
4th / 5th button Change the information indicator

Graphic indicator

SNES SPC700 Player

Mixer Bars

  • (1) Green bar: Main volume (Left / Right)
  • (2) Orange bar: Echo volume (Left / Right)
  • (3) Cyan bar: Echo delay
  • (4) Red bar: Echo feedback
  • (5) Blue bar: Output level (Left / Right)

Channel Bars

  • (6) Green bar: Channel volume (Left / Right)
  • (7) Orange bar: Pitch height
  • (8) Red bar: Envelope height
  • (9) Blue bar: Output level (Left / Right)

Channel Effects

  • (E): Echo ON
  • (P): Pitch modulation ON
  • (N): Noise ON

How to change settings without closing menu

  1. Highlight any items you want to select.
  2. Click right button on mouse, or push space key.

How to save music as a .wav file

  1. Open any SPC file.
  2. Click the "STOP" button, so stop playing.
  3. Click the "SAVE" button.
  4. Select "WAVE sound (*.wav)" from "Files of type" pulldown.
  5. Input any file name, and click the "Save" button.
  6. Click "OK" button in confirmation dialog.

How to output as close as possible to the actual device

The default settings are adjusted to sound as similar to the actual device as possible.
Please set the following in the "Settings" menu:

  • Channels : 2 Channels (Stereo)
  • Bit : 16-Bit
  • Sampling Rate : 32,000 Hz
  • Interpolation : SNES Gaussian Table
  • Pitch : Normal
  • Stereo Separator : 50%
  • Feedback Mixer (Echo Feedback) : 0%
  • Expansion Flags
    • SNES Low-Pass Filter : ✅ON
    • SNES Echo/FIR Method : ✅ON
    • Old ADPCM Decoder : 🟥OFF
    • Disable *** : All 🟥OFF

How to output as high quality sound as possible

By changing the following settings, the sound will not be the same as the actual device, but it will be higher quality.
Try the following to suit your taste in the "Settings" menu:

  • Bit : 32-Bit (float)
    • Output results of SNESAPU's DSP processing without degradation.
  • Interpolation : Sinc Function
    • Restores the original waveform as closely as possible.
  • Feedback Mixer (Echo Feedback) : 75%
    • Adjusting the left/right balance of the echo.
  • Expansion Flags
    • SNES Low-Pass Filter : ✅ON
      • If you don't want to remove the treble, turn it 🟥OFF.
    • SNES Echo/FIR Method : 🟥OFF
      • If you don't like sounds that are far from the actual thing, turn it ✅ON.
    • Disable Surround : ✅ON
      • Better to disable SHVC-SOUND's simple surround and adjust effect on your own sound device.

Difference between ON/OFF for "SNES Echo/FIR Mathod" flag

✅ON:

  • Echo processing is closer to the actual device.
  • The FIR filter is emulated in 16-bit equivalent range, and enabled overdrive effect.
  • Writes the result of echo processing to the 64KB RAM.
  • Audio data is created at 32kHz and then upsampled.
  • If you want to test your SPC for the purpose of having it play on the actual device, recommended to turn ✅ON.

🟥OFF:

  • The FIR filter is emulated in 17-bit equivalent range, and prevents sound distortion.
  • Prevents the sound from cracking when volume becomes too loud during the echo processing.
  • Overdrive effect with FIR does not work.
  • Upsampled immediately after BRR restoration.
  • If you are not concerned about reproducing the same sound as the actual device, and want higher sound quality, recommended to turn 🟥OFF.

Error codes

Code Cause Solution
101 SNESAPU.DLL is broken or not DLL Please download again from release page.
102 Some APIs are unavailable Please use the same version of the SPCPLAY.EXE and SNESAPU.DLL.
103 Version mismatch Please use the same version of the SPCPLAY.EXE and SNESAPU.DLL.
104 SNESAPU.DLL has memory map error Please download again from release page.
If you have built it yourself, see "If ERROR 104 occurs when started SPCPLAY".
111 ~ 114 Cannot read SPCPLAY.EXE Please rename the exe file as spcplay.exe.
If doesn't solved, rename folder so that the path is simple alphanumeric characters.
119 SPCPLAY.EXE is broken or tampered Please download again from release page.
121 ~ 124 Cannot read SNESAPU.DLL Please put the SNESAPU.DLL in the same folder as the SPCPLAY.EXE.
If doesn't solved, rename folder so that the path is simple alphanumeric characters.
129 SNESAPU.DLL is broken or tampered Please download again from release page.
201, 202 Cannot read SPC file Please select a file again.
If doesn't solved, rename file or folder so that the path is simple alphanumeric characters.
203 SPC format error Please select a different file.
251, 252 Cannot write file Please check storage write permissions.
If doesn't solved, rename file or folder so that the path is simple alphanumeric characters.
302 Sound device is not ready Please check a sound device is connected properly.
304 Sound device is busy Please close other software.
306 Sound device driver is broken Please restart your computer or reinstall the sound driver.
307 Unable to allocate memory Please restart your computer.
310 Unable to use direct transfer mode Please restart your computer.
332 Selected channel, bit, or sampling rate is unsupported Please change the output settings.
335 Unable to async mode Please restart your computer or reinstall the sound driver.

Command-Line options

Create a .wav file

Since v2.21.0:
This command saves the performance (waveform data) of an SPC file to an uncompressed wave (.wav) file.
You can save a separate .wav file for each channel.

Notes:

  • You must start the "SNES SPC700 Player" before executing this command because to operate an already running application.
  • If target .wav file already exists, nothing is done. Use -f option to overwrite force.
  • SPCPLAY.EXE is not a console application, so control is returned before processing is completed when you execute a command.
    Therefore, add start /wait to the beginning of a command to wait for the process to complete.
  • SNESAPU cannot perform playback and output .wav file at the same time because it is a single instance design.

Usage:

# Create a wav file
spcplay.exe -wav [[-s <channels: 1~8>]/[-m <channels: 1~8>]] [-v <volume %>]
                 [-o <.wav file path>] [-f] <.spc file path>

Examples:

# Create sample.wav from sample.spc
start /wait spcplay.exe -wav sample.spc
# Create test.wav from sample.spc
start /wait spcplay.exe -wav -o test.wav sample.spc
# Create sample.wav from sample.spc with only channel 1
start /wait spcplay.exe -wav -s 1 sample.spc
# Create sample.wav from sample.spc with only channel 1 and 4
start /wait spcplay.exe -wav -s 14 sample.spc
# Create sample.wav from sample.spc without only channel 1
start /wait spcplay.exe -wav -m 1 sample.spc
# Create sample.wav from sample.spc without only channel 1 and 4
start /wait spcplay.exe -wav -m 14 sample.spc
# Create sample.wav from sample.spc with volume 150%
start /wait spcplay.exe -wav -v 150 sample.spc

Advanced usage: Batch (.bat file) to create 8 .wav files, one for each channel

start spcplay.exe
timeout 1
FOR %%I IN (1 2 3 4 5 6 7 8) DO spcplay.exe -wav -s %%I -o output-%%I.wav input.spc

Breakpoint in SPC700 processing

Since v2.21.0:
This command temporarily stops the opcode processing of SPC700 at a specific address.
You can pause the operation just before execute specific instruction by using a breakpoint, which is useful for debugging SPC.

Notes:

  • You must start the "SNES SPC700 Player" and play an SPC before executing this command.
  • Running from the command-line is a simple feature intended for debugging purposes. If command is incorrect, nothing is done.

Usages:

# Set breakpoint, pause at specified address
spcplay.exe -bp [-s] <address: $0000~$FFFF> [soft/mixed/hard] ...
# Unset breakpoint
spcplay.exe -bp -u <address: $0000~$FFFF> ...
# Pause at next opecode
spcplay.exe -bp -n [soft/mixed/hard]
# Resume / Stop at next breakpoint
spcplay.exe -bp -r
# All clear
spcplay.exe -bp -c
Stop option SPC700 Timer DSP
soft STOP
mixed (default) STOP STOP
hard STOP STOP STOP

Examples:

# Set a breakpoint at address 0x0F8C, and stop the process there location
spcplay.exe -bp $0F8C
# Set two breakpoints at addresses 0x0F8C and 0x27AA, and stop the process those locations
spcplay.exe -bp -s $0F8C $27AA
# Set a breakpoint at address 0x0F8C with stop SPC700, timer, and DSP
spcplay.exe -bp $0F8C hard
# Unset a breakpoint at address 0x0F8C
spcplay.exe -bp -u $0F8C

Cheat DSP registers

Since v2.21.0:
This command force changes the DSP register value to a different value.
You can check how the sound is output by changing the DSP register, which is useful for debugging SPC.

Notes:

  • You must start the "SNES SPC700 Player" and play an SPC before executing this command.
  • Running from the command-line is a simple feature intended for debugging purposes. If command is incorrect, nothing is done.

Usages:

# Set cheat DSP
spcplay.exe -dsp [-s] <address: $00~$7F>=<value: $00~$FF> ...
# Unset cheat DSP
spcplay.exe -dsp -u <address: $00~$7F> ...
# All clear
spcplay.exe -dsp -c

Examples:

# Fix channel 1 left volume to 0x60
spcplay.exe -dsp $00=$60
# Fix channel 1 left and right volume to 0x60
spcplay.exe -dsp -s $00=$60 $01=$60
# Cancel fix channel 1 left volume
spcplay.exe -dsp -u $00

Write to SPC700 ports

Since v2.21.0:
This command writes a specific value to an SPC700 port.
You can calling SPC driver functions, such as playing sound effects while playing music.

Notes:

  • You must start the "SNES SPC700 Player" and play an SPC before executing this command.
  • Running from the command-line is a simple feature intended for debugging purposes. If command is incorrect, nothing is done.

Usages:

# Write port
spcplay.exe -port [-s] <port: 0~3>=<value: $00~$FF> ...
# Sleep
spcplay.exe -port -w <time [ms]> ...
# Write port and undo immediately
spcplay.exe -port -t <port: 0~3>=<value: $00~$FF> ...

Examples:

# Write 0x2A to port 0
spcplay.exe -port 0=$2A
# Write 0x2A to port 0, and 0x7F to port 2
spcplay.exe -port -s 0=$2A 2=$7F
# Write 0x2A to port 0 immediately, and 0x00 to port 0 after left 1000ms
spcplay.exe -port -s 0=$2A -w 1000 -s 0=$00
# Write 0x2A to port 0 and undo immediately
spcplay.exe -port -t 0=$2A

Basic operation commands

Since v2.21.0:
This command performs basic external operations on the "SNES SPC700 Player".
You can calling a function in one step by creating a shortcut or registering in a launcher.

Notes:

  • You must start the "SNES SPC700 Player" before executing this command because to operate an already running application.
  • Running from the command-line is a simple feature intended for debugging purposes. If command is incorrect, nothing is done.

Usages:

# Play/Pause
spcplay.exe -p
# Restart
spcplay.exe -r
# Stop
spcplay.exe -s
# Exit
spcplay.exe -q
# Set volume to the lowest (5%)
spcplay.exe -l
# Play a next file selected in a playlist
spcplay.exe -next
# Play a previous file selected in a playlist
spcplay.exe -prev
# Play a file randomly in a playlist
spcplay.exe -rand
⚠️ **GitHub.com Fallback** ⚠️