Change the .asm song format so it's a bit easier to parse, by replacing PORT and GLOBALPORT macros with LOCALPORT and GLOBALPORT.

The LOCALPORT and GLOBALPORT just get numeric parameters (unit, port) and (voice, unit, port), respectively, which should be now quite intuitive as most of the time the port index is one of the parameters visible in the .asm file. Only a few units have extra ports beyond transformed variables. Overall, this should make the parsing of the .asm files a lot easier.
This commit is contained in:
Veikko Sariola
2020-10-26 12:53:17 +02:00
parent f495b0575a
commit 1d07b4f192
25 changed files with 45 additions and 45 deletions

View File

@ -113,8 +113,8 @@ endstruc
%endmacro
%define AMOUNT(val) val
%define PORT(unit,unittype,port) ((unit+1)*su_unit.size + su_ %+ unittype %+ _ports. %+ port + su_unit.ports)/4
%define GLOBALPORT(voice,unit,unittype,port) SEND_GLOBAL + (su_synth.voices+voice*su_voice.size+su_voice.workspace+unit*su_unit.size + su_ %+ unittype %+ _ports. %+ port + su_unit.ports)/4
%define LOCALPORT(unit,port) ((unit+1)*su_unit.size + su_unit.ports)/4 + port
%define GLOBALPORT(voice,unit,port) SEND_GLOBAL + (su_synth.voices+voice*su_voice.size+su_voice.workspace+unit*su_unit.size + su_unit.ports)/4 + port
%define OUTPORT 0
%define SEND_POP 0x8000
%define SEND_GLOBAL 0x4000

View File

@ -19,8 +19,8 @@ BEGIN_PATCH
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP STEREO
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,left) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,right) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,0) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,1) + SEND_POP
END_INSTRUMENT
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(128)
@ -28,8 +28,8 @@ BEGIN_PATCH
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP STEREO
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,left) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,right) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,0) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,1) + SEND_POP
END_INSTRUMENT
BEGIN_INSTRUMENT VOICES(1) ; Global compressor effect
SU_RECEIVE STEREO

View File

@ -19,8 +19,8 @@ BEGIN_PATCH
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP STEREO
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,left) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,right) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,0) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,1) + SEND_POP
END_INSTRUMENT
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(128)
@ -28,8 +28,8 @@ BEGIN_PATCH
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_OSCILLAT MONO,TRANSPOSE(88),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP STEREO
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,left) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,receive,right) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,0) + SEND_POP
SU_SEND MONO,AMOUNT(128),GLOBALPORT(2,0,1) + SEND_POP
END_INSTRUMENT
BEGIN_INSTRUMENT VOICES(1) ; Global compressor effect
SU_RECEIVE STEREO

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,damp) + SEND_POP
SU_SEND MONO,AMOUNT(32),LOCALPORT(3,3) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,dry) + SEND_POP
SU_SEND MONO,AMOUNT(32),LOCALPORT(3,1) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,feedback) + SEND_POP
SU_SEND MONO,AMOUNT(32),LOCALPORT(3,2) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -20,7 +20,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(50),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(65),PORT(3,delay,delaymod) + SEND_POP
SU_SEND MONO,AMOUNT(65),LOCALPORT(3,5) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,pregain) + SEND_POP
SU_SEND MONO,AMOUNT(32),LOCALPORT(3,0) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -17,8 +17,8 @@ BEGIN_PATCH
SU_ENVELOPE MONO, ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_DISTORT MONO, DRIVE(96)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,distort,drive)
SU_SEND MONO,AMOUNT(68),PORT(3,distort,drive) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,0)
SU_SEND MONO,AMOUNT(68),LOCALPORT(3,0) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -15,11 +15,11 @@ BEGIN_PATCH
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(120),DETUNE(64),PHASE(0),COLOR(128),SHAPE(96),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(68),PORT(0,env,attac)
SU_SEND MONO,AMOUNT(68),PORT(0,env,decay)
SU_SEND MONO,AMOUNT(68),LOCALPORT(0,0)
SU_SEND MONO,AMOUNT(68),LOCALPORT(0,1)
; Sustain modulation seems not to be implemented
SU_SEND MONO,AMOUNT(68),PORT(0,env,release)
SU_SEND MONO,AMOUNT(68),PORT(1,env,gain) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(0,3)
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,4) + SEND_POP
SU_OUT STEREO,GAIN(110)
END_INSTRUMENT
END_PATCH

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,filter,freq) + SEND_POP
SU_SEND MONO,AMOUNT(32),LOCALPORT(3,0) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,filter,res) + SEND_POP
SU_SEND MONO,AMOUNT(32),LOCALPORT(3,1) + SEND_POP
END_INSTRUMENT
END_PATCH

View File

@ -17,8 +17,8 @@ BEGIN_PATCH
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_HOLD MONO,HOLDFREQ(3)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,hold,freq)
SU_SEND MONO,AMOUNT(68),PORT(3,hold,freq) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,0)
SU_SEND MONO,AMOUNT(68),LOCALPORT(3,0) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -17,7 +17,7 @@ BEGIN_PATCH
SU_MULP MONO
SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,color) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,3) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -17,7 +17,7 @@ BEGIN_PATCH
SU_MULP MONO
SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(96),PORT(1,osc,detune) + SEND_POP
SU_SEND MONO,AMOUNT(96),LOCALPORT(1,1) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -17,7 +17,7 @@ BEGIN_PATCH
SU_MULP MONO
SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,gain) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,5) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -17,7 +17,7 @@ BEGIN_PATCH
SU_MULP MONO
SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(128),PORT(1,osc,phaseofs) + SEND_POP
SU_SEND MONO,AMOUNT(128),LOCALPORT(1,2) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -19,7 +19,7 @@ BEGIN_PATCH
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT STEREO,TRANSPOSE(64+4),DETUNE(32),PHASE(64),SAMPLENO(0),SHAPE(64),GAIN(128), FLAGS(SAMPLE)
SU_OSCILLAT STEREO,TRANSPOSE(68),DETUNE(32),PHASE(64),SAMPLENO(0),SHAPE(64),GAIN(128), FLAGS(SAMPLE)
SU_MULP STEREO
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT

View File

@ -17,7 +17,7 @@ BEGIN_PATCH
SU_MULP MONO
SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,shape) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,4) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -17,7 +17,7 @@ BEGIN_PATCH
SU_MULP MONO
SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,transpose) + SEND_POP
SU_SEND MONO,AMOUNT(68),LOCALPORT(1,0) + SEND_POP
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
END_PATCH

View File

@ -13,10 +13,10 @@ END_TRACKS
BEGIN_PATCH
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(32) ; should receive -0.5
SU_SEND MONO,AMOUNT(128),PORT(5,receive,left) ; should send -0.25
SU_SEND MONO,AMOUNT(128),PORT(6,receive,left) + SEND_POP ; should send -0.25
SU_SEND MONO,AMOUNT(128),LOCALPORT(5,0) ; should send -0.25
SU_SEND MONO,AMOUNT(128),LOCALPORT(6,0) + SEND_POP ; should send -0.25
SU_LOADVAL MONO,VALUE(128) ; should receive 1
SU_SEND MONO,AMOUNT(128),PORT(6,receive,left) + SEND_POP ; should send 0.5
SU_SEND MONO,AMOUNT(128),LOCALPORT(6,0) + SEND_POP ; should send 0.5
SU_RECEIVE MONO ; should receive -0.5
SU_RECEIVE MONO ; should receive 0.5
SU_OUT STEREO,GAIN(128)

View File

@ -13,10 +13,10 @@ END_TRACKS
BEGIN_PATCH
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(32) ; should receive -0.5
SU_SEND MONO,AMOUNT(128),PORT(5,receive,right) ; should send -0.25
SU_SEND MONO,AMOUNT(128),PORT(5,receive,left) + SEND_POP ; should send -0.25
SU_SEND MONO,AMOUNT(128),LOCALPORT(5,1) ; should send -0.25
SU_SEND MONO,AMOUNT(128),LOCALPORT(5,0) + SEND_POP ; should send -0.25
SU_LOADVAL MONO,VALUE(128) ; should receive 1
SU_SEND MONO,AMOUNT(128),PORT(5,receive,left) + SEND_POP ; should send 0.5
SU_SEND MONO,AMOUNT(128),LOCALPORT(5,0) + SEND_POP ; should send 0.5
SU_RECEIVE STEREO; should receive 0.5 -0.5
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT

View File

@ -13,10 +13,10 @@ END_TRACKS
BEGIN_PATCH
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(32) ; should receive -0.5
SU_SEND MONO,AMOUNT(96),PORT(5,load_val,value) ; should send -0.25
SU_SEND MONO,AMOUNT(96),PORT(6,load_val,value) + SEND_POP ; should send -0.25
SU_SEND MONO,AMOUNT(96),LOCALPORT(5,0) ; should send -0.25
SU_SEND MONO,AMOUNT(96),LOCALPORT(6,0) + SEND_POP ; should send -0.25
SU_LOADVAL MONO,VALUE(128) ; should receive 1
SU_SEND MONO,AMOUNT(96),PORT(6,load_val,value) + SEND_POP ; should send 0.5
SU_SEND MONO,AMOUNT(96),LOCALPORT(6,0) + SEND_POP ; should send 0.5
SU_LOADVAL MONO,VALUE(64) ; should receive -0.5
SU_LOADVAL MONO,VALUE(64) ; should receive 0.5
SU_OUT STEREO,GAIN(128)

View File

@ -13,14 +13,14 @@ END_TRACKS
BEGIN_PATCH
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(96)
SU_SEND MONO,AMOUNT(96),GLOBALPORT(1,3,load_val,value) + SEND_POP
SU_SEND MONO,AMOUNT(96),GLOBALPORT(1,3,0) + SEND_POP
SU_LOADVAL MONO,VALUE(64)
SU_LOADVAL MONO,VALUE(64)
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT
BEGIN_INSTRUMENT VOICES(1) ; Instrument1
SU_LOADVAL MONO,VALUE(32)
SU_SEND MONO,AMOUNT(96),GLOBALPORT(0,2,load_val,value) + SEND_POP
SU_SEND MONO,AMOUNT(96),GLOBALPORT(0,2,0) + SEND_POP
SU_LOADVAL MONO,VALUE(64)
SU_LOADVAL MONO,VALUE(64)
SU_OUT STEREO,GAIN(128)

View File

@ -14,10 +14,10 @@ BEGIN_PATCH
BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(0)
SU_LOADVAL MONO,VALUE(0)
SU_SEND STEREO,AMOUNT(96),PORT(6,receive,left) + SEND_POP
SU_SEND STEREO,AMOUNT(96),LOCALPORT(6,0) + SEND_POP
SU_LOADVAL MONO,VALUE(64)
SU_LOADVAL MONO,VALUE(128)
SU_SEND STEREO,AMOUNT(128),PORT(6,receive,left) + SEND_POP
SU_SEND STEREO,AMOUNT(128),LOCALPORT(6,0) + SEND_POP
SU_RECEIVE STEREO; should receive 0.5 -0.5
SU_OUT STEREO,GAIN(128)
END_INSTRUMENT