SAP Specification
(S)-disc (A)scii (P)rotocol
Version 1.10; Last Updated 5/29/96
Disclaimer
Digitech did not create this specification, nor do they accept any
responsilibity or liability for anything pertaining to the use of
this specification.
Introduction
The GSP-2101 has proven to be an extremely versatile guitar
FX processor with practically limitless capabilities. The recent
surge in internet activity has brought together an increasingly
large collection of GSP-2101 users that desire to share programs
and algorithms.
The SAP specification has been created in order to standardize and
facilitate the sharing of GSP-2101 programs and may eventually be
extended to support future S-disc based products from Digitech.
This specification should be used by all gsp-users list members for
sharing GSP-2101 programs/algorithms with the group at large.
Additionally, anyone wishing
to write editor/librarian software for the GSP-2101 should consider
using this specification as a basis for saving/loading files.
This specification is to be used with GSP-2101 firmware 2.00.00 or
greater.
If you don't have version 3.x or greater in your GSP-2101, then
you should go get it yesterday. It is TRES cool!
Advantages
The main advantage of using this specification is that it will provide
a common file format for anyone wishing to implement Mac/PC software
to support the GSP-2101.
Additionally, having a common format will provide a consistent way
for gsp-users list members to share their ideas with the group,
whether it be through the use of software, or by merely notating them
manually by hand. Guitar players which do not own a MIDI-ready computer
may particpate in the share-a-thon of GSP-2101 programs
that will continue to take place.
Examples
There are two real-world examples included at the end of this document.
Archives
There will soon be an archive of many GSP-2101 programs and also
templates that
use factory algorithms. These will be available on the
gsp-users ftp site in the future.
GSP-USERS Mail-List Information
Contributors
The following people were key in developing the SAP specification:
Steve Schow
Randy Thorderson
Tom Owens
Format Rules - "The Spec"
General
-
Comments are specified by use of the '#' character. Any text following
a '#' character is a comment. That simply means that you can put
anything you want there to describe the data.
-
Blank and comment lines are completely skipped. Except where otherwise
noted, spaces and blank lines can be used freely as desired to make
the file look nice and sensible.
-
A SAP ascii file may contain one and only one GSP-2101
program/algorithm description ( at least for now ).
-
By convention, each SAP definition should start with a comment
section that fully describes the program, the guitar/amp used, type of
pickup, etc. In addition, the author's name and email address
could be provided. This is a comment, so it can really be formatted
just about any way you want. It doesn't neccessarily need to take up this
much room, but here is an example:
#============================================================
#============================================================
#
# Program: Death Metal Haze
# Author: John Doe
# Date Created: 4/5/65
#
# Description:
#
# This is a way cool program if you like to play REALLY
# fast. It sounds best cranked REALLY loud until
# your ear feels like its gonna start bleeding.
# I wish I could remember what it sounds like.
# Let me know what you think!!
#
# Notes:
#
# Program was created using an Ibanez with humbucker
# going into a Marshall stack turned up all the way.
#
#============================================================
#============================================================
Sections
-
Each SAP definition will contain a Header section, a Module
Parameters section and an optional Algorithm Link section.
There are no section labels, just convention that they exist in that
order within the file. The only hard and fast rule is that the
Header section MUST come first.
Header Section
-
The First four non-comment lines are always the header section
lines. Four data values are always provided here. There are no
labels. They must always
be provided on a seperate line for each value and in the following
order:
<device_id>
<firmware_version>
<program_name>
<algorithm_number>
Here is an example. Comments are optional, but highly reccomended:
GSP-2101 # Device ID
3.00.00 # Software Version
Death Flange Soup # Program name
F9 # Algorithm Number
-
If an 'F' is placed in front of the algorithm number, then its a
factory algorithm. If a 'U' is placed in front of the algorithm
number than its a custom user algorithm and should be defined below.
If a 'U' is there with no number, then that means that the algorithm
is defined below, but software will figure out where to put it
in the GSP-2101(next available slot).
-
An optional
algorithm name may be provided in parenthesis following the
algorithm number. For example:
GSP-2101 # Device ID
3.00.00 # Software Version
Death Flange Soup # Program name
U ( Joe's Mixer Madness ) # Algorithm number/name
Module Parameters Section
-
The module section will list each of the analog and digital modules
that are used in the GSP-2101 program. It will also contain two
special modules called MVol and MMix
even though they don't appear to be thought of technically
as dedicated FX modules(see below).
-
Each module definition will begin with
the abbreviated name of the module and contain a list of parameters
seperated by commas and enclosed in parenthesis. For example:
Dist (On, Saturated Tube, 10.3, 8.5 )
-
The abbreviation for each module name should be used. These can be
obtained from the GSP-2101 screen by pressing the <Next> button
once from the program's main screen, which then displays the
algorithm and all of the abbreviated module names being used in it.
-
The parameters should appear in the same order as they appear in
the GSP-2101 window while editing effect settings manually.
-
Numeric parameters do not need to indicate the type of units. Just
the numeric value is required, even when the type of unit is displayed
in the GSP-2101 window. For example, if the value for a particular
parameter is 12db, the module parameter definition can simply be 12 (without
the 'db') and that will work just fine. The unit type will be
automatically presumed.
-
Non-numeric parameters should use the same spelling as indicated
in the GSP-2101 window. For example, for the Distortion Type parameter,
a valid value might be 'Saturated Tube'; as it is spelled in the
GSP-2101 window.
-
If a particular module is not listed in the description,
but exists in the algorithm being used, then "default"
parameters will be used. In many cases, "default" means
Off, but in some cases it may not. These defaults are entirely
dependent on which PC software is being used.
-
If a particular module does not have enough parameters specified,
then certain defaults for the missing parameters will be assumed.
Note, however, that its highly adviseable to include values
for every parameter, even if the default is desired, or the
Module is Off.
-
Spacing between parameters does not matter. In fact, they can even
be placed on seperate lines. The comma seperates them and the
parenthesis enclose them. Different variations can be employed to
make it easier to read or to save space. For example the following
two examples produce the same results:
4x2A (100, 100, -50, 50, 100, 100, 0, 0)
Or seperate lines with comments for each parameter:
4x2A ( 100, # parameter 1
100, # parameter 2
-50, # parameter 3
50, # parameter 4
100, # parameter 5
100, # parameter 6
0, # parameter 7
0 ) # parameter 8
Algorithm Link Section
-
Algorithm Links define where the input signal for a given module
comes from. For example, to define what signals coming from either
the analog section or from the output of other modules will feed
into the four inputs of the 4x2A module, an Algorithm Link definition
would be made for that module.
-
No Algorithm Link section is needed for GSP-2101 programs using
factory algorithms.
-
Algorithm Links do not apply for modules in the analog section. The
analog section is hard-wired. Therefore Algorithm Link definitions
for analog modules would be meaningless.
-
The signal coming from the analog section output is referred to as
'Right Input' and 'Left Input', the same as is used
in the GSP-2101 window to refer to the analog section output. If
you want to connect the analog output directly to the input of a
digital FX module, then use these terms.
-
The final output stage should always be to a phantom module called
MMix. It takes 2 inputs which are automatically sent out
to the final Left and Right outputs of the 2101(see below).
-
Algorithm Link definitions are expressed by using "<-"
between the abbreviated module name and a list of inputs
enclosed in parenthesis and seperated by commas. Each input will
be defined with the same text that is displayed in the GSP-2101
window for input links. For example, the following would define
inputs 1, 2, 3 and 4 of the 4x2A module to be receiving their signals
from the output of SCho and from the analog section respectively:
4x2A <- ( SCho Out 1, SCho Out 2, Left Input, Right Input )
CC Links
-
The Continuous Controller links can be assigned to individual
parameters by putting
the following syntax after a particular parameter value:
<parameter_value> cc[<min>,<max>]
For example:
Dist (On,Saturated Tube, 10.3 cc[1,11], 8.5 cc[11,1] )
-
If an external controller needs to be used instead of the built in
pedal on the foot controller,
then you may specify that with the following syntax:
<parameter_value> cc:<cc_number>[<min>,<max>]
For example:
Dist (On,Saturated Tube, 10.3 cc:3[1,11], 8.5 cc[11,1] )
-
The acronyms 'INT' and 'EXT' may be used to refer to
default internal and external continuous controller numbers. If
no CC number is provided, then the default internal CC is presumed.
-
If no min/max values are provided, then default values will be assumed.
Normally the default values will be the full range of the parameter,
but this is entirely dependent on the PC software being used.
Following are several example CC assignments that would all be perfectly
legal assignments with different outcomes:
Dist (On,Saturated Tube, 10.3 cc:7[1,8], 8.5 )
Dist (On,Saturated Tube, 10.3 cc[1,5], 8.5 )
Dist (On,Saturated Tube, 10.3 cc, 8.5 )
Dist (On,Saturated Tube, 10.3 cc:3, 8.5 )
Dist (On,Saturated Tube, 10.3 cc:EXT, 8.5 )
Function Key Assignments
-
There are 3 function keys on the front panel of the GSP-2101 and
specific parameters can be assigned to each one so that when the user
presses the function key, that particular parameter will come up on
screen to be edited with the big black knob on the front panel.
Function keys can be assigned to individual parameters with the
following syntax:
<parameter_value> fk[n]
For example, to attach the distortion type to function key #2:
Dist (On, Saturated Tube fk[2], 10.3, 8.5 )
-
Note that you can assign both a function key and a CC link to a
particular parameter by simply including them both. For example:
Dist (On, Saturated Tube, 10.3 cc[1,11] fk[2], 8.5 )
Examples
The remaining text in this document contains two real-world
example programs. One is a factory program and the
other one is a program contributed to the gsp-users list which
contains a custom user algorithm.
Warning, the current examples
have been obtained from a 1.x machine and may vary slightly
from what you would expect on a 2.x or 3.x machine.
Example 1 - Factory Program 198
#==============================================================
#==============================================================
# Example 1 - Factory Program 198
#==============================================================
#==============================================================
GSP-2101 # Device ID
1.03.02 # Software Version
The Morgue AutoSwell # Program name
F17 # Algorithm Number
#==============================================================
# Module parameter settings
#==============================================================
Comp ( On, 5:1, -30dB, -6dB )
Dist ( On, Heavy Sustain, 6.3 fk[1])
EQ ( 4, 0, 0, 0, 4, 12, -12 )
MVol ( 2 )
FxL ( Bypassed )
NGt ( On, -45, 6, 22, 850, 50, 100, 4.5 )
2x1A ( 50, 50, 100 )
Cho ( On, 100, 10.00, 0.20, 9.00, Tringl )
2x1B ( 50, 50, 100 )
ArpA ( On, 100, 4 cc[3,4], 0, 3-6, 0.100 fk[2], Off )
ArpB ( On, 100, 7, 0, 4-8, 0.400 fk[3], Off )
3x2 ( 50, -50, 50, 50, 50, 0, 100,100 )
SDly ( On, 0.500, 50%, 100, Off )
4x2 ( 80, -50, 80, 50, 80,-50, 80, 50, 100, 100 )
#==============================================================
#==============================================================
# END OF PROGRAM
#==============================================================
#==============================================================
Example 2 - Program with Customer User Algorithm
#============================================================
#============================================================
#
# Program: Montgomery Ward
# Author: Tom Owens
# Date Created: 4/8/95
#
# Description:
#
# Imitates Wes Montgomery playing in octaves when you
# push down the foot controller pedal (cc:INT).
#
# Notes:
#
# I play this on a Strat clone using the neck pickup.
# I usually roll the tone knob back to 4 or 5.
# Overall volume is controlled by "cc:EXT"
#
#==============================================================
#==============================================================
# Example 2 - User Program with User Algorithm
#==============================================================
#==============================================================
GSP-2101 # Device ID
1.03.02 # Software Version
Montgomery Ward # Program name
U # Algorithm Number
#==============================================================
# Module parameter settings
#==============================================================
Comp ( On, 1.5:1, -35,-6 ) # Compressor
Dist ( On, Clean Tube, 6.0 ) # Distortion
EQ ( +2, +4, +2, 0, -2, -2, -2) # EQ
MVol ( -5 cc:EXT[-10,10] ) # Master Volume
# EXTernal cc! (Starts quiet.)
FxL ( No Sum ) # External FX Loop
NGt ( Bypass ) # Noise Gate
Pch ( On, 100, 0ms, # Pitch Shifter
-12, 0, 12-24, # 1 Octave down.
Off )
Dly ( On, # Mono Delay 0.5 Sec (cc)
0.000 cc[0.000,0.043], # The cc adds a delay to the
Off, # non-pitch shifted signal.
100, # simulates the "pick time"
Off # delay between two strings.
)
2x1A ( # 2x1 Mixer_A (cc)
0 cc[ 0,58], # cc: Fades IN pitch shifted signal.
100 cc[100,66], # cc: Non-pitch shifted signal fades
100 # back from full to 2/3s.
)
2x2 ( 100, 0, # 2x2 Mixer
100, 0, # Combines normal tone and
100, 100 # and pitch shifted 8va(Bass) signal
)
Awah ( On, 81, 100 ) # Automatic Wah (use sparingly)
2x1B ( 14, 88, 100 ) # 2x1 Mixer_B
# Auto-Wah and "straight" signal.
Mvrb ( On, 15ms, 10ms, # Multi-FX Reverb
1, 16000, 16000, # This program would be much
1, 0.25 S, 100 ) # improved by a better reverb.
#====================================================================
# User algorithm input linkage
#====================================================================
Pch <- ( Left Input )
Dly <- ( Right Input )
2x1A <- ( Pch Out 1, Dly Out 1 )
2x2 <- ( 2x1A Out 1, 2x1A Out 1 )
AWah <- ( 2x2 Out 1 )
2x1B <- ( AWah Out 1, 2x2 Out 2 )
MVrb <- ( 2x1B )
MMixer <- ( MVrb Out 1, MVrb Out 2 )
#==============================================================
#==============================================================
# END OF PROGRAM
#==============================================================
#==============================================================
#
# Notes:
#
# I play this on a Strat clone using the neck pickup.
# I usually roll the tone knob back to 4 or 5.
#
# There's a little bit of Autowah and bassy EQ to
# imitate a jazz hollow body guitar sound.
# Overall volume is controlled by "cc:EXT"
#
# The "octaves mode" sounds best if you play simple
# single note lines and slide around a bit.
# The illusion is lost if you play too fast or
# play chords. But it's fun to do that anyway!
#
#==============================================================
#==============================================================