Wavestation SR Developer Overview

Wavestation SR Developer Overview

Dan Phillips

This material is © 1992 by Korg Research and Development

Changes in the Wavestation SR

This document assumes that you are already familiar with the Wavestation, Wavestation EX, and Wavestation A/D. It details the differences between the Wavestation SR and the Wavestation A/D; if you need documentation for the Wavestation A/D as well, please contact Korg USA Developer Support.

Seven Additional ROM Program Banks

7 more ROM Banks have been added, which (along with RAM1-3 and the original ROM Bank) brings the total number of internal Banks to 11.

Enhanced Multisets

The SR has 32 Multisets, as opposed to the 16 of the Wavestation and Wavestation A/D. The SR's Multisets also have 15-character names, just like Performances. Each Channel now has an additional FX Bus parameter, which is used for panning and effects routing (just as the similarly named parameter in Performance Parts). Instead of the Part's FX Bus setting, "PATCH," Multisets have "PERF."

Uses New Korg PCM Cards

The SR uses the same PCM cards as the new 01/W series, which have four times the storage capacity as the older cards. The program data cards are the same as the Wavestation, so that all of the existing program card libraries can be used.

Enhanced MIDI features

Reception of Bank Select may be disabled, to make it easier to select programs from controllers with less banks than the SR. It is possible to globally limit the number of MIDI channels received in MULTI mode, in addition to the number received in MONO mode (the new parameter is stored separately). MIDI Pan (controller #10) is now recognized (controller 42 is also used for accessing the extra bus settings, C, C+D, D, ALL, and PATCH or PERF).

New SysEx Executable Commands

New commands are provided for initializing entire Performances (all 8 parts), initializing Patches, soloing Parts and Wave Sequence Steps, initializing and copying entire Wave Sequences, companding Wave Sequences, and inserting and deleting Wave Sequence Steps.

Wave Sequence Dump Request

This isn't actually unique to the SR, but I thought that I'd point it out in case anyone hadn't noticed it previously. The original Wavestation keyboard required the user to manually initiate a Wave Sequence dump from the front panel; the Wavestation EX, Wavestation A/D, and Wavestation SR all respond to a Wave Sequence dump request.

No Local Controllers or Analog Inputs

The analog inputs, joystick, and pedal inputs have been removed (joystick and pedals are still received via MIDI).

Program Data Fully Compatible with previous Wavestations

The expanded features of the Wavestation SR are simply ignored by the A/D, EX, and original keyboard. Any parameter editors will work just as they did for previous Wavestations.

Implementation of ROM expansion

The Wavestation SR has 3 RAM Banks (as does the Wavestation A/D), and 8 ROM Banks (seven more than the Wavestation, Wavestation EX, and Wavestation A/D, which all have only one). To maintain compatibility with older members of the Wavestation family, these additional Banks have been implemented in several different ways, as described below.

Internal Bank Numbering

Where possible, SysEx data for the new Banks is handled by simply referencing their internal bank numbers. In two important cases, however, we have used other methods, in the interest of maintaining backwards compatibility with the previous Wavestation instruments. These special cases are the references to Patches in Performances and to Wave Sequences in Patches. Additionally, the Multi Mode Setups and Performance Map are sent three times each, with each carrying information appropriate to a different Wavestation model.

Note that the SR's front panel interface increments through the Banks according to the order of the bank names, as opposed to the order of the internal bank numbers (otherwise, you'd press the Bank button and see, RAM1, RAM2, ROM11, CARD, RAM3, ROM4 etc.).

Note also that the old ROM Bank is now ROM11.

Bank Name    Internal Bank Number
RAM1         0
RAM2         1
RAM3         4
ROM4         5
ROM5         6
ROM6         7
ROM7         8
ROM8         9
ROM9         10
ROM10        11
ROM11        2
CARD         3
 

MIDI Bank Select and Program Change

The table below shows the mapping between MIDI Bank Select (controller #32) and the internal Banks. Note that, as in the keyboard and A/D, there are two internal Banks to every MIDI Bank (sounds like a Beach Boys song....). The MSB of Bank Select, controller #0, is transmitted but ignored on receive.

SR Bank    MIDI Bank   MIDI Program Change
RAM1       0           0 - 49
RAM2       0           50 - 99
RAM3       2           0 - 49
ROM4       2           50 - 99
ROM5       3           0 - 49
ROM6       3           50 - 99
ROM7       4           0 - 49
ROM8       4           50 - 99
ROM9       5           0 - 49
ROM10      5           50 - 99
ROM11*     1           0 - 49
CARD*      1           50 - 99
 

*ROM11 is the same as the original Wavestation's single ROM bank. To maintain compatibility with the Wavestation family, ROM11 and CARD use MIDI Bank 1.

Multi Mode Setup

The Multi Mode Setup dump is sent three times; once as a "normal" dump for the Wavestation and Wavestation EX, once as an "expanded" dump for the Wavestation A/D, and once as a true SR dump. Each dump uses a similar data structure, with a different header, as described in the System Exclusive documentation. The "normal" and "expanded" dumps change the Bank references as shown in the chart below, while the SR dump leaves the Banks unchanged. Also, the normal and expanded dumps only include the data for the first 16 Multisets, and also strip out the names and channel panning; the SR dump includes all of this additional data.

The Wavestation keyboard ignores both the expanded and SR dumps, so that only the normal one has any effect. The Wavestation A/D accepts both the normal and the expanded dumps, ignoring the SR dump; as the expanded version is received second, it supersedes the normal one. The SR accepts all three dumps, but as the SR dump is received last, it is the one which takes effect.

The All Data dump contains the Wavestation Keyboard version of the Multi Mode Setup data; the A/D and SR versions are sent separately afterwards.

The chart below shows the conversion from Wavestation SR Banks to Wavestation A/D and Wavestation Keyboard Banks.

SR Bank   A/D Bank  Keyboard Bank
RAM1      RAM1      RAM1
RAM2      RAM2      RAM2
RAM3      RAM3      ROM
ROM4      RAM3      RAM1
ROM5      RAM3      RAM2
ROM6      RAM3      CARD
ROM7      RAM1      RAM1
ROM8      RAM2      RAM2
ROM9      ROM       ROM
ROM10     CARD      CARD
ROM11     ROM       ROM
CARD      CARD      CARD
 

Performance Map

The Performance Map dump, like the Multi Mode Setup dump above, is sent three times; once as a "normal" dump for the keyboard, once as an "expanded" dump for the A/D, and once as a true SR dump. The Banks are mapped as for Multiset dumps, above. Note that the original Wavestation keyboard ignores all Perf Map dumps (Perf Maps are only communicated as part of the All Data Dump), but the Wavestation EX recognizes the "normal" dump. The Wavestation A/D accepts the first two dumps, but as the expanded version is received second, it supersedes the normal one. The SR accepts all three dumps, but as the SR dump is received last, it is the one which takes effect.

The All Data dump contains the Wavestation keyboard version of this data; the expanded and SR versions are sent separately afterwards.

Patches in Performances

In the Performance dump, bits 6-7 of the Part_Mode parameter work in conjunction with the Bank_Num parameter to determine the Bank of the Patch in the current Part.

Note that the Wavestation A/D used only bit 6 of the Part_Mode parameter, for the purpose of selecting RAM3. Also, the A/D itself always set the Bank_Num of a RAM3 Wave to 2; unfortunately, this point was omitted from the A/D's developer docs. We are aware that some developers set the Bank_Num for RAM3 to 4; others may have ignored this parameter altogether. This means that, to ensure compatibility of your Wavestation A/D patches with the SR, you may need to check your code for the A/D (otherwise, a Part might show up as RAM3 on the A/D and, for instance, ROM5 on an SR). To maintain as much compatibility as possible with existing editor programs, the SR will accept any Bank_Num value of 4 or greater as RAM3 (when the Part_Mode bits are also set correctly to 01).

Bank_Num    Bits 6-7 of Part_Mode
            00     01     10     11
0           RAM1   ROM4   ROM7   Reserved for future use
1           RAM2   ROM5   ROM8   Reserved for future use
2           ROM11  RAM3*  ROM9   Reserved for future use
3           CARD   ROM6   ROM10  Reserved for future use
 

*As discussed above, when bits 6-7 are set to 01, Bank_Num values of 4 or greater will also be interpreted as RAM3.

Wave Sequences in Patches

In the Patch dump, the Bank_Exp byte works in conjunction with the Wave_Bank parameter to determine the Bank of a Wave Sequence used by a Patch. While each of the four Waves in a Patch has its own Wave_Bank parameter, there is only a single Bank_Exp byte. Bits 0 and 4 refer to Wave A, bits 1 and 5 to Wave B, bits 2 and 6 to Wave C, and bits 3 and 7 to Wave D.

If neither of a Wave's Bank_Exp bits are set, then the Wave_Bank parameter selects the Wave Sequence Bank as before: 0 is RAM1, 1 is RAM2, 2 is ROM11, and 3 is Card. If one of the Bank_Exp bits is set, the Wave Sequence Bank is determined as shown in the table below.

Only one of the two Bank_Exp bits per Wave should be set. For instance, if Bit 3 is set to 1 (so that D uses ROM4), Bit 7 should be set to 0.

The Wave_Bank parameter is similar to the Bank_Num parameter in Performances. The Wavestation A/D always set Wave_Bank to 2 for RAM3, but to maintain as much compatibility as possible with existing editor programs, Wave_Bank values of 4 and above will also be accepted as RAM3 (when the Bank_Exp bits are set appropriately).

Bank_Exp Bits        Wave_Bank (set for each Wave)
                     0        1        2        3
bit 0=1 (bit 4=0)    A=ROM4   A=ROM5   A=RAM3*  A=ROM6
bit 1=1 (bit 5=0)    B=ROM4   B=ROM5   B=RAM3*  B=ROM
bit 2=1 (bit 6=0)    C=ROM4   C=ROM5   C=RAM3*  C=ROM6
bit 3=1 (bit 7=0)    D=ROM4   D=ROM5   D=RAM3*  D=ROM6
bit 4=1 (bit 0=0)    A=ROM7   A=ROM8   A=ROM9   A=ROM10
bit 5=1 (bit 1=0)    B=ROM7   B=ROM8   B=ROM9   B=ROM10
bit 6=1 (bit 2=0)    C=ROM7   C=ROM8   C=ROM9   C=ROM10
bit 7=1 (bit 3=0)    D=ROM7   D=ROM8   D=ROM9   D=ROM10
 
 

*As discussed above, when bits 0-3 are set, Wave_Bank values of 4 or greater will also be interpreted as RAM3.

Another look at the bits in the Bank_Exp byte:

2nd Expansion Bits      1st Expansion Bits
7     6     5     4     3     2     1     0
 
D     C     B     A     D     C     B     A
    ( W a v e )             ( W a v e )
 

Implementation of Enhanced Multisets

Multiset Selection via SysEx

The original Wavestation allowed selection of Multisets via System Exclusive parameter changes. The Wavestation A/D added an option to select Multisets via Program Changes on the Basic Channel. The SR supports both of these methods, but the SysEx implementation has been changed to support the 16 additional Multisets.

The original Multi Mode Setup Select, message 5B(hex), is used to select Multisets 0-15; the new Multi Mode Setup Select SR Expanded, message 63(hex), is used to select the new Multisets, 16-31. The SR Expanded message uses the true Multiset number as the value, so that Multiset 16 is selected by a value of 16.

The Wavestation keyboard and Wavestation A/D will not recognize the SR Expanded message.

Multiset Sysex Dump

The SR's Multiset SysEx dump consists of four main parts. First is the original set of 16 Multisets, with the same data structure as before. Next is the set of the 16 additional Multisets, also using the original data structure. Next, the names for all 32 Multisets are sent, followed by the FX Bus settings for each of the 16 channels in all of the 32 Multisets.

Note that the SR also sends out Multiset dumps compatible with the Wavestation keyboard and Wavestation A/D, as described under section 2.3, Multi Mode Setup on page 6.

Please note that, as in the original keyboard and A/D, there is an additional byte sent after each group of 16 Multisets (so, in the SR multiset dump, there are two extra bytes). This is shown in the System Exclusive documentation, but some developers have missed this detail.

Default Values of Non-Referenced Parameters

FOOT PEDAL ASSIGN page removed

The Foot Pedal Assign page has now been completely removed, as there are no foot pedals for it to assign (sometimes, these things just make sense). The page's parameters will continue to be transferred by the GLOBAL system exclusive data dump. The parameters will be stored, but not displayed, in the Wavestation SR. All the parameters will be set to the following default values on initial power up:

Foot Pedal    Function       Polarity
 
Damper        Sustain        -
Pedal/Sw 1    Perf Advance   -
Pedal/Sw 2    Mod Pedal      -
 

Other Parameters Not Referenced by the Wavestation SR

The following parameters are referenced by the Wavestation and Wavestation EX, but not by the A/D or SR. This list is the same as in the Wavestation A/D documentation; we have included it again for convenience's sake.

TRANSMIT page parameters

These will be transferred in the GLOBALS system exclusive data transfer. Since these parameters cannot be edited on the Wavestation SR, they can only be changed by a GLOBAL system exclusive data transfer from a Wavestation or a system exclusive parameter change message. All the parameters will be set to the following default values on initial power up of the Wavestation SR.

PROGRAM PART DETAIL page MIDI Xmit parameters.

The Xmit Chan and Prog Change Xmit parameters have been removed from the Performance Part Detail page. These will be transferred by PERFORMANCE system exclusive data transfer, or by a Program CARD. Since these parameters cannot be edited on the Wavestation SR, they can only be changed by a GLOBAL system exclusive data transfer from a Wavestation or a system exclusive parameter change message. All the parameters will be set to the following default values on initial power up of the Wavestation SR.

Key offset amount parameter removed from MIDI page.

Xpose parameter added to GLOBAL page.

The Key offset amount parameter has been removed from the MIDI page, and the Xpose parameter has been added to the GLOBAL page. These will be received by GLOBAL system exclusive data transfer. The Key Offset Amount field on the Wavestation will be set to the value of the Xpose field on the GLOBALS page of the Wavestation SR.

Parameter Changes

New Parameters added.

The SR adds a number of new parameters. Some will be useful to you as a developer; others were added for the user interface or internal debugging, and are best left alone. 407 through 409 allow you to initiate dumps as if you were doing so from the front panel. These were added for the user interface, and it's probably best to use the dump requests instead.

/* 407 */   	SYSEX_XMIT_TYPE,
/* 408 */   	SYSEX_XMIT_BANK,
/* 409 */   	SYSEX_XMIT_NUM,
 

410 through 424 should look similar to you, as they duplicate the functions of pre-existing parameters. These were added for the user interface alone, and the SR will accept all of the old parameters just fine.

/* 410 */   	WAVE_BANK,
/* 411 */   	WAVE_NUM,
/* 412 */   	WAVE_NAME,
/* 413 */   	WAVE_LEVEL,
/* 414 */   	WAVE_TUNE_COARSE,
/* 415 */   	WAVE_TUNE_FINE,
/* 416 */   	WAVE_TUNE_SLOPE,
/* 417 */   	WAVE_BUS_A,
/* 418 */   	WAVE_BUS_B,
/* 419 */   	WAVE_BUS_C,
/* 420 */   	WAVE_BUS_D,
/* 421 */   	MIX_ENV_RATE_1,
/* 422 */   	MIX_ENV_RATE_2,
/* 423 */   	MIX_ENV_RATE_3,
/* 424 */   	MIX_ENV_RATE_4,
 

The Solo Status parameters are read-only.

/* 425 */   	PART_SOLO_STATUS,
/* 426 */   	WS_STEP_SOLO_STATUS,
 

Params 427-428 can be used to change the Mode of the SR, just as if the front panel PERF or MULTI button were pressed.

/* 427 */   	PERF_MIDI_MODE,
/* 428 */   	MULTI_MIDI_MODE,
 

If you want to play the demos via SysEx (possible but unlikely), use 429 to select the desired demo sequence, and then use 451 (EXECUTE_PLAY_DEMO) to start playback.

/* 429 */   	CURRENT_DEMO,
 

430 is read-only.

/* 430 */   	CURRENT_DEMO_NAME,
 

WAVE_WAVE was added for the user interface only. You can safely ignore it, but first, for fun, read it aloud a couple of times using the correct inflection (WAVE-wave).

/* 431 */   	WAVE_WAVE,
 

432 and 433 are the new Multiset parameters. The MULTISET_OUTPUT applies to the current channel.

/* 432 */   	MULTISET_NAME,
/* 433 */   	MULTISET_OUTPUT,
 

434-436 are the new MIDI parameters. 434 sets the number of channels received in Multi mode. 435 determines whether or not controllers, along with notes, should be reset if active sensing is discontinued. 436 determines whether or not Bank Select messages are recognized. See the Reference Guide for more details.

/* 434 */   	NUM_MULTI_CHANS,
/* 435 */   	RESET_ACT_SENS_CONTROL,
/* 436 */   	REC_BANK_CHANGE
 

437 -449 are read-only parameters intended for internal debugging. Note that the SR will respond to a Device Inquiry Request, which includes the version number.

/* 437 */   	KSD_ENABLE,
/* 438 */   	VERSION_NUM,
/* 439 */   	VERSION_DATE,
/* 440 */   	ERROR_NUMBER,
/* 441 */   	TASK_NUMBER,
/* 442 */   	STATUS_REGISTER,
/* 443 */   	CRASH_LEVEL,
/* 444 */   	PROGRAM_COUNTER,
/* 445 */   	C_PROGRAM_COUNTER,
/* 446 */   	STACK_POINTER,
/* 447 */   	USER_STACK_POINTER,
/* 448 */   	POOL_LEVEL,
/* 449 */   	POOL_LEVEL_MAX,
 

We affectionately refer to 450 as the "Bill and Ted parameter."

/* 450 */   	BOGUS_PARAM,
 

451 to the end are the executable parameters. A value of 1 executes the command, just like pressing "YES" on the front panel; a value of 0 is the same as pressing "NO" (you shouldn't need to use the latter).

/* 451 */   	EXECUTE_PLAY_DEMO,
/* 452 */   	EXECUTE_SOLO_PART,
/* 453 */   	EXECUTE_INIT_PART,
/* 454 */   	EXECUTE_COPY_PART,
/* 455 */   	EXECUTE_COPY_MODULES,
/* 456 */   	EXECUTE_COPY_FX_ALL,
/* 457 */   	EXECUTE_COPY_FX_PARAMS,
/* 458 */   	EXECUTE_COPY_FX_MIX,
/* 459 */   	EXECUTE_INSERT_WS_STEP,
/* 460 */   	EXECUTE_DELETE_WS_STEP,
/* 461 */   	EXECUTE_ZONE_KEY_LAYER,
/* 462 */   	EXECUTE_ZONE_KEY_SPLIT,
/* 463 */   	EXECUTE_ZONE_VEL_SWITCH,
/* 464 */   	EXECUTE_ZONE_VEL_LAYER,
/* 465 */   	EXECUTE_SOLO_WS_STEP,
/* 466 */   	EXECUTE_WRITE,
/* 467 */   	EXECUTE_COMPARE,
/* 468 */   	EXECUTE_INIT_PATCH,
/* 469 */   	EXECUTE_CENTER_POINT,
/* 470 */   	EXECUTE_SYSEX_XMIT,
/* 471 */   	EXECUTE_SYSEX_MULTI_DUMP,
/* 472 */   	EXECUTE_BANK_MOVE,
/* 473 */   	EXECUTE_FORMAT_CARD,
/* 474 */   	EXECUTE_WAVESEQ_COMPAND,
/* 475 */   	EXECUTE_WAVESEQ_INIT,
/* 476 */   	EXECUTE_WAVESEQ_COPY,
/* 477 */   	EXECUTE_WAVESEQ_STEP_COPY,
/* 478 */   	EXECUTE_ENABLE_SHOW,
 

479 initializes all RAM to default parameters.

/* 479 */   	EXECUTE_INIT_RAM,
 

480 and 481 load the contents of a card into RAM, and then spit the data out again, respectively. These will make complete and utter hash of the SR's Multisets, Performances, etc. We considered giving these functions their own large, red button on the front panel, labeled "Do Not Touch," but then thought the better of it.

/* 480 */   	EXECUTE_LOAD_DIAG,
/* 481 */   	EXECUTE_SAVE_DIAG,
 

482 duplicates the user interface EXIT function.

/* 482 */   	EXECUTE_EXIT_LEVEL,
 

Special Bonus Parameter 483 was added after the printing of the first version of the SR Reference Guide.

/* 483 */	EXECUTE_INIT_PERF
/* 484 */   	PARAM_END     /* Must be last */