Instrument Definition: Korg Wavestate

VERSION 1 # Currently, this should only be 1.

# Supports all alphanumeric ASCII, and ' ', '_', '-', '+' - can also be NULL
TRACKNAME WAVESTATE

# Can be POLY, DRUM, MPE, or NULL
TYPE POLY

# Can be A, B, C, D, USBD, USBH, CVGx (x between 1&4), CVx, Gx, or NULL
OUTPORT B

# Can be x (between 1-16), or NULL -- this is ignored if output port is not MIDI
OUTCHAN 7

# Can be NONE, ALLACTIVE, A, B, USBH, USBD, CVG, or NULL
INPORT ALLACTIVE

# Can be x (between 1-16), ALL, or NULL. This definition will be ignored if INPORT is NONE, ALLACTIVE or CVG
INCHAN ALL

# This defines the default 'MAX RATE' for automation lanes.
# Can be NULL, 192, 96, 64, 48, 32, 24, 16, 12, 8, 6, 4, 3, 2, 1
MAXRATE NULL

# DRUMLANES
# Syntax: ROW:TRIG:CHAN:NOTENUMBER NAME
# ROW must be between 1 and 8
# TRIG can be between 0 and 127, or NULL
# CHAN can be a number between 1 and 16, Gx, CVx, CVGx (x between 1 and 4), or NULL
# NOTENUMBER can be between 0 and 127, or NULL
# NAME supports all alphanumeric ASCII, and ' ', '_', '-', '+' - can also be NULL
# Please note this section will be discarded for tracks which are not DRUM tracks
[DRUMLANES]
[/DRUMLANES]


# PC
# Syntax: NUMBER NAME
# number must be either:
#   - A number (for simple PC)
#   - Three numbers, delimited by ':', which represent PC:MSB:LSB. You can put 'NULL' to not set the MSB/LSB.
# PC must be between 1...128
# MSB/LSB must be between 0...127
[PC]
[/PC]


# CC
# Syntax: CC_NUMBER NAME or CC_NUMBER:DEFAULT=xx NAME
# DEFAULT_VALUE must be a valid number between 0 and 127
[CC]
1 MODULATION
7 VOLUME
10 PAN
11 EXPRESSION
16 VECTOR X
17 VECTOR Y
24 MASTER
25 TIMING
26 SAMPLE
27 PITCH
28 SHAPE
29 GATE
30 STEP SEQ
31 SPEED
80 LAYR A MASTER
81 LAYR A TIMING
82 LAYR A SAMPLE
83 LAYR A PITCH
84 LAYR A SHAPE
85 LAYR A GATE
86 LAYR A STEP
87 LAYR A SPEED
88 LAYR B MASTER
89 LAYR B TIMING
90 LAYR B SAMPLE
91 LAYR B PITCH
92 LAYR B SHAPE
93 LAYR B GATE
94 LAYR B STEP
95 LAYR B SPEED
102 LAYR C MASTER
103 LAYR C TIMING
104 LAYR C SAMPLE
105 LAYR C PITCH
106 LAYR C SHAPE
107 LAYR C GATE
108 LAYR C STEP
109 LAYR C SPEED
110 LAYR D MASTER
111 LAYR D TIMING
112 LAYR D SAMPLE
113 LAYR D PITCH
114 LAYR D SHAPE
115 LAYR D GATE
116 LAYR D STEP
117 LAYR D SPEED
[/CC]


# NRPN
# Syntax: "MSB:LSB:DEPTH NAME" or "MSB:LSB:DEPTH:DEFAULT=xx NAME"
# Lsb & msb should be between 0 and 127
  # Note: LSB can be over 127 ONLY if MSB is 0 or omitted
  # e.g. '0:1026:7 FOO', or ':2000:7 BAR' 
  # the examples above would be equivalent to '8:2:7 FOO' and '15:80:7 BAR' respectively
# DEPTH can be 7 or 14
# For NRPN: DEFAULT_VALUE must be a valid number, either between 0 and 127 (for 7 bit NRPNs) or between 0 and 16383 (for 14bit NRPNs)
[NRPN]
[/NRPN]


# ASSIGN
# Syntax: POT_NUMBER TYPE:VALUE or POT_NUMBER TYPE:VALUE DEFAULT=DEFAULT_VALUE
# POT_NUMBER must be between 1 and 8
# TYPE can be "CC", "PB" (pitchbend), "AT" (aftertouch), "CV", "NRPN", or "NULL" (this won't assign the pot).
# Non explicitly-defined pots will be considered "NULL"
# VALUE VALIDATION
#### For CC: Value must be a valid number between 0 and 119
#### For PB and AT, any text after the TYPE will be ignored
#### For CV, value must be between 1 and 4
#### For NRPN, value must be MSB:LSB:DEPTH, with both lsb & msb bebtween 0 and 127, and DEPTH being either 7 or 14
# DEFAULT VALUE
#### For CC: DEFAULT_VALUE must be a valid number between 0 and 127
#### For PB: DEFAULT_VALUE must be a valid number between 0 and 16383
#### For NRPN: DEFAULT_VALUE must be a valid number, either between 0 and 127 (for 7 bit NRPNs) or between 0 and 16383 (for 14bit NRPNs)
#### For CV: DEFAULT_VALUE must be either a valid number between 0 and 65535, or a voltage between -5V and 5V, e.g. "-4.25V" or "1.7V"
#### Please note default value will be ignored for PB and AT messages.
[ASSIGN]
[/ASSIGN]


# AUTOMATION
# Syntax: TYPE:VALUE
# TYPE can be "CC", "PB" (pitchbend), "AT" (aftertouch), "CV", or "NRPN"
# VALUE VALIDATION
#### For CC: Value must be a valid number between 0 and 119
#### For PB and AT, any text after the TYPE will be ignored
#### For CV, value must be between 1 and 4
#### For NRPN, value must be MSB:LSB:DEPTH, with both lsb & msb bebtween 0 and 127, and DEPTH being either 7 or 14
# NOTE: You are limited to 64 automation lanes
[AUTOMATION]
[/AUTOMATION]


# This section will be readable from Hapax.
[COMMENT]
WAVESTATE
[/COMMENT]

Here is a Korg Wavestate definition with all the default CC assignments. I mapped it to MIDI B Track 7 but you can change it as you see fit.

Steve

Added to the tool :wink:
https://gamahachaa.codeberg.page/

3 Likes
VERSION 1

TRACKNAME WAVESTATE

TYPE POLY

OUTPORT B

OUTCHAN 7

INPORT ALLACTIVE

INCHAN ALL

MAXRATE NULL

[DRUMLANES]
[/DRUMLANES]

[PC]
[/PC]

[CC]
1 MODULATION
2 BREATH CONTROL
7 VOLUME
10 PAN
11 EXPRESSION
16 VECTOR X
17 VECTOR Y
24 MASTER
25 TIMING
26 SAMPLE
27 PITCH
28 SHAPE
29 GATE
30 STEP SEQ
31 SPEED
64 SUSTAIN
65 PORTAMENTO ON/OFF
66 SOSTENUTO
67 SOFT PEDAL
74 FILTER CUTOFF
71 RESONANCE
80 LAYER A MASTER
81 LAYER A TIMING
82 LAYER A SAMPLE
83 LAYER A PITCH
84 LAYER A SHAPE
85 LAYER A GATE
86 LAYER A STEP
87 LAYER A SPEED
88 LAYER B MASTER
89 LAYER B TIMING
90 LAYER B SAMPLE
91 LAYER B PITCH
92 LAYER B SHAPE
93 LAYER B GATE
94 LAYER B STEP
95 LAYER B SPEED
102 LAYER C MASTER
103 LAYER C TIMING
104 LAYER C SAMPLE
105 LAYER C PITCH
106 LAYER C SHAPE
107 LAYER C GATE
108 LAYER C STEP
109 LAYER C SPEED
110 LAYER D MASTER
111 LAYER D TIMING
112 LAYER D SAMPLE
113 LAYER D PITCH
114 LAYER D SHAPE
115 LAYER D GATE
116 LAYER D STEP
117 LAYER D SPEED
120 ALL SOUNDS OFF
121 RESET ALL CONTROLLERS
123 ALL NOTES OFF
[/CC]

[NRPN]
0:0:7 VECTOR JOYSTICK X
0:1:7 VECTOR JOYSTICK Y
0:2:7 VECTOR ENVELOPE TIME
0:3:7 VECTOR ENVELOPE AMOUNT
0:4:7 VECTOR ENVELOPE SHAPE
0:5:7 VECTOR ENVELOPE LOOP
0:6:7 VECTOR ENVELOPE RESET
0:7:7 VECTOR ENVELOPE START POINT
0:8:7 VECTOR ENVELOPE END POINT
0:9:7 VECTOR ENVELOPE SUSTAIN POINT
0:10:7 VECTOR ENVELOPE RELEASE POINT
0:11:7 VECTOR ENVELOPE ATTACK TIME
0:12:7 VECTOR ENVELOPE DECAY TIME
0:13:7 VECTOR ENVELOPE SUSTAIN LEVEL
0:14:7 VECTOR ENVELOPE RELEASE TIME
0:15:7 VECTOR ENVELOPE ATTACK LEVEL
0:16:7 VECTOR ENVELOPE DECAY LEVEL
0:17:7 VECTOR ENVELOPE SUSTAIN TIME
0:18:7 VECTOR ENVELOPE RELEASE LEVEL
0:19:7 VECTOR ENVELOPE ATTACK SHAPE
0:20:7 VECTOR ENVELOPE DECAY SHAPE
0:21:7 VECTOR ENVELOPE SUSTAIN SHAPE
0:22:7 VECTOR ENVELOPE RELEASE SHAPE
0:23:7 VECTOR ENVELOPE LOOP START
0:24:7 VECTOR ENVELOPE LOOP END
0:25:7 VECTOR ENVELOPE LOOP MODE
0:26:7 VECTOR ENVELOPE LOOP COUNT
0:27:7 VECTOR ENVELOPE LOOP DIRECTION
[/NRPN]

[ASSIGN]
[/ASSIGN]

[AUTOMATION]
CC:1 MODULATION
CC:7 VOLUME
CC:10 PAN
CC:16 VECTOR X
CC:17 VECTOR Y
CC:64 SUSTAIN
CC:65 PORTAMENTO ON/OFF
CC:71 RESONANCE
CC:74 FILTER CUTOFF
CC:91 REVERB LEVEL
CC:93 CHORUS LEVEL
NRPN:0:2:7 VECTOR ENVELOPE TIME
NRPN:0:3:7 VECTOR ENVELOPE AMOUNT
NRPN:0:4:7 VECTOR ENVELOPE SHAPE
NRPN:0:0:7 VECTOR JOYSTICK X
NRPN:0:1:7 VECTOR JOYSTICK Y
[/AUTOMATION]

[COMMENT]
WAVESTATE
[/COMMENT]

Hi everyone,

I’ve managed to put together a file that includes:

  • MIDI CCs: Covers modulation, expression, sustain, filter cutoff, resonance, and layer-specific parameters.
  • NRPNs: Comprehensive support for vector joystick and envelope control.
  • Automation: A carefully selected set of CCs and NRPNs for real-time automation.
  • Compact Format: Unnecessary comments and clutter have been removed for simplicity.

This file should save time and effort for anyone looking to integrate the Wavestate with their Hapax. If you spot any areas for improvement, feel free to suggest updates.