How to use SNES SPC700 Player - dgrfactory/spcplay GitHub Wiki
- 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).
- Click the "PAUSE" button to pause, or the "STOP" button to stop completely.
- Click the "PLAY" button to resume.
- 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).
- 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.
- Select a file from a playlist, and push Enter key or double-click an item.
- Select the "Disable/Endless" item in the "Settings" - "Play Time" menu.
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 |
Button | Operation |
---|---|
Right button |
Use another functions (same as Shift key) |
4th / 5th button |
Change the information indicator |
- (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)
- (6) Green bar: Channel volume (Left / Right)
- (7) Orange bar: Pitch height
- (8) Red bar: Envelope height
- (9) Blue bar: Output level (Left / Right)
- (E): Echo ON
- (P): Pitch modulation ON
- (N): Noise ON
- Highlight any items you want to select.
- Click right button on mouse, or push space key.
- Open any SPC file.
- Click the "STOP" button, so stop playing.
- Click the "SAVE" button.
- Select "WAVE sound (*.wav)" from "Files of type" pulldown.
- Input any file name, and click the "Save" button.
- Click "OK" button in confirmation dialog.
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
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.
- SNES Low-Pass Filter : ✅ON
✅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.
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. |
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, addstart /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
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
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
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
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