retro commit for released version 3.11

This commit is contained in:
Dominik Ries
2018-03-10 00:14:40 +01:00
parent 3576dddac2
commit 45a35d8772
23 changed files with 4706 additions and 980 deletions

View File

@ -47,7 +47,12 @@ go4k_synth_wrk resb go4k_synth.size
global _go4k_delay_buffer_ofs
_go4k_delay_buffer_ofs resd 1
global _go4k_delay_buffer
_go4k_delay_buffer resd 117*go4kDLL_wrk.size
_go4k_delay_buffer resd 16*16*go4kDLL_wrk.size
%ifdef AUTHORING
global __4klang_current_tick
__4klang_current_tick resd 0
%endif
%ifdef GO4K_USE_ENVELOPE_RECORDINGS
global __4klang_envelope_buffer
@ -130,10 +135,12 @@ section .text
%endif
export_func FloatRandomNumber@0
push eax
imul eax,dword [_RandSeed],16007
mov dword [_RandSeed], eax
fild dword [_RandSeed]
fidiv dword [c_RandDiv]
pop eax
ret
; //========================================================================================
@ -279,8 +286,7 @@ go4kENV_func_do:
mov eax, dword [ecx-8] ; // is the instrument in release mode (note off)?
test eax, eax
je go4kENV_func_process
mov al, ENV_STATE_RELEASE
mov dword [WRK+go4kENV_wrk.state], eax
mov dword [WRK+go4kENV_wrk.state], ENV_STATE_RELEASE
go4kENV_func_process:
mov eax, dword [WRK+go4kENV_wrk.state]
fld dword [WRK+go4kENV_wrk.level] ; // val -
@ -384,8 +390,13 @@ section .g4kcods code align=1
section .text
%endif
go4kVCO_sine:
fxch ; // p c
fstp st1 ; // p
fucomi st1 ; // c p
jnc short go4kVCO_func_sine_do
fstp st1
fsub st0, st0 ; // 0
ret
go4kVCO_func_sine_do
fdivp st1, st0 ; // p/c
fldpi ; // pi p
fadd st0 ; // 2*pi p
fmulp st1, st0 ; // 2*pi*p
@ -462,11 +473,28 @@ export_func go4kVCO_func@0
mov eax, dword [ecx-4]
test eax, eax
jne go4kVCO_func_do
%ifdef GO4K_USE_VCO_STEREO
movzx eax, byte [VAL-1] ; // get flags and check for stereo
test al, byte VCO_STEREO
jz short go4kVCO_func_nostereoout
fldz
go4kVCO_func_nostereoout:
%endif
fldz
ret
go4kVCO_func_do:
%endif
movzx eax, byte [VAL-1] ; // get flags
%ifdef GO4K_USE_VCO_STEREO
test al, byte VCO_STEREO
jz short go4kVCO_func_nopswap
fld dword [WRK+go4kVCO_wrk.phase] ;// swap left/right phase values for first stereo run
fld dword [WRK+go4kVCO_wrk.phase2]
fstp dword [WRK+go4kVCO_wrk.phase]
fstp dword [WRK+go4kVCO_wrk.phase2]
go4kVCO_func_nopswap:
%endif
go4kVCO_func_process:
fld dword [edx+go4kVCO_val.transpose]
fsub dword [c_0_5]
%ifdef GO4K_USE_VCO_MOD_TM
@ -476,6 +504,12 @@ go4kVCO_func_do:
fld dword [edx+go4kVCO_val.detune]
fsub dword [c_0_5]
fadd st0
%ifdef GO4K_USE_VCO_STEREO
test al, byte VCO_STEREO
jz short go4kVCO_func_nodswap
fchs ;// negate detune for stereo
go4kVCO_func_nodswap:
%endif
faddp st1
%ifdef GO4K_USE_VCO_MOD_DM
fadd dword [WRK+go4kVCO_wrk.dm]
@ -562,6 +596,18 @@ go4kVCO_func_end:
fadd dword [WRK+go4kVCO_wrk.gm]
%endif
fmulp st1, st0
%ifdef GO4K_USE_VCO_STEREO
test al, byte VCO_STEREO
jz short go4kVCO_func_stereodone
sub al, byte VCO_STEREO
fld dword [WRK+go4kVCO_wrk.phase] ;// swap left/right phase values again for second stereo run
fld dword [WRK+go4kVCO_wrk.phase2]
fstp dword [WRK+go4kVCO_wrk.phase]
fstp dword [WRK+go4kVCO_wrk.phase2]
jmp go4kVCO_func_process
go4kVCO_func_stereodone:
%endif
ret
%ifdef USE_SECTIONS
@ -590,16 +636,31 @@ export_func go4kVCF_func@0
go4kVCF_func_do:
%endif
movzx eax, byte [VAL-1] ; // get type flag
fld dword [edx+go4kVCF_val.res] ; // r in
%ifdef GO4K_USE_VCF_MOD_RM
fadd dword [WRK+go4kVCF_wrk.rm]
%endif
fld dword [edx+go4kVCF_val.freq] ; // f r in
%endif
fstp dword [esp-8]
fld dword [edx+go4kVCF_val.freq] ; // f in
%ifdef GO4K_USE_VCF_MOD_FM
fadd dword [WRK+go4kVCF_wrk.fm]
%endif
fmul st0, st0 ; // square the input so we never get negative and also have a smoother behaviour in the lower frequencies
fst dword [WRK+go4kVCF_wrk.freq] ; // f r in
fstp dword [esp-4] ; // in
%ifdef GO4K_USE_VCF_STEREO
test al, byte STEREO
jz short go4kVCF_func_process
add WRK, go4kVCF_wrk.low2
go4kVCF_func_stereoloop: ; // switch channels
fxch st1 ; // inr inl
%endif
go4kVCF_func_process:
fld dword [esp-8]
fld dword [esp-4]
fmul dword [WRK+go4kVCF_wrk.band] ; // f*b r in
fadd dword [WRK+go4kVCF_wrk.low] ; // l' r in
fst dword [WRK+go4kVCF_wrk.low] ; // l' r in
@ -607,7 +668,7 @@ go4kVCF_func_do:
fmul dword [WRK+go4kVCF_wrk.band] ; // r*b in-l'
fsubp st1, st0 ; // h'
fst dword [WRK+go4kVCF_wrk.high] ; // h'
fmul dword [WRK+go4kVCF_wrk.freq] ; // h'*f
fmul dword [esp-4] ; // h'*f
fadd dword [WRK+go4kVCF_wrk.band] ; // b'
fstp dword [WRK+go4kVCF_wrk.band]
fldz
@ -630,15 +691,21 @@ go4kVCF_func_band:
go4kVCF_func_peak:
%ifdef GO4K_USE_VCF_PEAK
test al, byte PEAK
jz short go4kVCF_func_end
jz short go4kVCF_func_processdone
fadd dword [WRK+go4kVCF_wrk.low]
fsub dword [WRK+go4kVCF_wrk.high]
%endif
go4kVCF_func_processdone:
%ifdef GO4K_USE_VCF_STEREO
test al, byte STEREO ; // outr inl
jz short go4kVCF_func_end
sub al, byte STEREO
sub WRK, go4kVCF_wrk.low2
jmp go4kVCF_func_stereoloop
%endif
go4kVCF_func_end: ; // value - - - -
%ifdef GO4K_USE_UNDENORMALIZE
fadd dword [c_0_5] ; add and sub small offset to prevent denormalization
fsub dword [c_0_5]
%endif
ret
%ifdef USE_SECTIONS
@ -658,10 +725,18 @@ section .text
export_func go4kDST_func@0
%ifdef GO4K_USE_DST
%ifdef GO4K_USE_DST_SH
push 2
%else
push 1
%endif
%ifdef GO4K_USE_DST_STEREO
push 3
%else
push 2
%endif
%else
%ifdef GO4K_USE_DST_STEREO
push 2
%else
push 1
%endif
%endif
call go4kTransformValues
%ifdef GO4K_USE_DST_CHECK
; check if current note still active
@ -671,6 +746,7 @@ export_func go4kDST_func@0
ret
go4kDST_func_do:
%endif
movzx eax, byte [VAL-1] ; // get type flag
%ifdef GO4K_USE_DST_SH
fld dword [edx+go4kDST_val.snhfreq] ; // snh in
%ifdef GO4K_USE_DST_MOD_SH
@ -688,6 +764,21 @@ go4kDST_func_do:
fstp dword [WRK+go4kDST_wrk.snhphase]; // in
%endif
; // calc pregain and postgain
%ifdef GO4K_USE_DST_STEREO
test al, byte STEREO ; // outr inl
jz short go4kDST_func_mono
fxch st1 ; // inr inl
fld dword [edx+go4kDST_val.drive] ; // drive inr inl
%ifdef GO4K_USE_DST_MOD_DM
fadd dword [WRK+go4kDST_wrk.dm]
%endif
call go4kWaveshaper ; // outr inl
%ifdef GO4K_USE_DST_SH
fst dword [WRK+go4kDST_wrk.out2] ; // outr inl
%endif
fxch st1 ; // inl outr
go4kDST_func_mono:
%endif
fld dword [edx+go4kDST_val.drive] ; // drive in
%ifdef GO4K_USE_DST_MOD_DM
fadd dword [WRK+go4kDST_wrk.dm]
@ -701,6 +792,12 @@ go4kDST_func_do:
go4kDST_func_hold:
fstp st0 ; // in
fstp st0
%ifdef GO4K_USE_DST_STEREO
test al, byte STEREO ; // outr inl
jz short go4kDST_func_monohold
fld dword [WRK+go4kDST_wrk.out2] ; // out2
go4kDST_func_monohold:
%endif
fld dword [WRK+go4kDST_wrk.out] ; // out
ret
%endif
@ -953,26 +1050,22 @@ go4kFOP_func_mul:
jnz go4kFOP_func_addp2
fmul st1
ret
%ifdef GO4K_USE_FOP_LOADNOTE
go4kFOP_func_addp2:
dec eax
jnz go4kFOP_func_loadnote
faddp st2, st0
faddp st2, st0
ret
go4kFOP_func_loadnote:
go4kFOP_func_loadnote:
dec eax
jnz go4kFOP_func_mulp2
fild dword [ecx-4]
fmul dword [c_i128]
ret
%else
go4kFOP_func_addp2:
dec eax
jnz go4kFOP_func_dummy+1 ; // now this is no valid jump address (just to please the packer) but if we run in that case we're fucked up anyway
faddp st2, st0
go4kFOP_func_dummy:
faddp st2, st0
ret
%endif
go4kFOP_func_mulp2:
fmulp st2, st0
fmulp st2, st0
ret
%ifdef USE_SECTIONS
section .g4kcodh code align=1
@ -989,13 +1082,23 @@ section .text
; // DIRTY :
; //----------------------------------------------------------------------------------------
export_func go4kFST_func@0
push 2
push 1
call go4kTransformValues
fld dword [edx+go4kFST_val.amount]
fsub dword [c_0_5]
fadd st0
fmul st1
fstp dword [ecx+eax*4] ; // eax already contains the destination from the go4kTransformValues call
lodsw
and eax, 0x00003fff ; // eax is destination slot
test word [VAL-2], FST_ADD
jz go4kFST_func_set
fadd dword [ecx+eax*4]
go4kFST_func_set:
fstp dword [ecx+eax*4]
test word [VAL-2], FST_POP
jz go4kFST_func_done
fstp st0
go4kFST_func_done:
ret
%ifdef USE_SECTIONS
@ -1041,30 +1144,39 @@ section .text
; // DIRTY :
; //----------------------------------------------------------------------------------------
export_func go4kFSTG_func@0
push 5
push 1
call go4kTransformValues
%ifdef GO4K_USE_FSTG_CHECK
; check if current note still active
mov eax, dword [ecx-4]
test eax, eax
jne go4kFSTG_func_do
ret
lodsw
jmp go4kFSTG_func_testpop
go4kFSTG_func_do:
%endif
fld dword [edx+go4kFST_val.amount]
fsub dword [c_0_5]
fadd st0
fmul st1
mov eax, dword [VAL-4]
fmul st1
lodsw
and eax, 0x00003fff ; // eax is destination slot
test word [VAL-2], FST_ADD
jz go4kFSTG_func_set
fadd dword [go4k_synth_wrk+eax*4]
go4kFSTG_func_set:
%if MAX_VOICES > 1
fst dword [go4k_synth_wrk+eax]
fstp dword [go4k_synth_wrk+eax+go4k_instrument.size]
fst dword [go4k_synth_wrk+eax*4]
fstp dword [go4k_synth_wrk+eax*4+go4k_instrument.size]
%else
fstp dword [go4k_synth_wrk+eax]
%endif
ret
fstp dword [go4k_synth_wrk+eax*4]
%endif
go4kFSTG_func_testpop:
test word [VAL-2], FST_POP
jz go4kFSTG_func_done
fstp st0
go4kFSTG_func_done:
ret
%endif
%ifdef USE_SECTIONS
@ -1117,7 +1229,7 @@ export_func go4kOUT_func@0 ;// l r
push 2
call go4kTransformValues
pushad
lea edi, [ecx+256*4]
lea edi, [ecx+MAX_UNITS*MAX_UNIT_SLOTS*4]
fld st1 ;// r l r
fld st1 ;// l r l r
fld dword [edx+go4kOUT_val.auxsend] ;// as l r l r
@ -1158,13 +1270,13 @@ export_func go4kOUT_func@0 ;// l r
fadd dword [WRK+go4kOUT_wrk.gm] ;// gm l r
%endif
fmulp st1, st0 ;// l' r
fstp dword [ecx+256*4+0] ;// r
fstp dword [ecx+MAX_UNITS*MAX_UNIT_SLOTS*4+0] ;// r
fld dword [edx+go4kOUT_val.gain] ;// g r
%ifdef GO4K_USE_OUT_MOD_GM
fadd dword [WRK+go4kOUT_wrk.gm] ;// gm r
%endif
fmulp st1, st0 ;// r'
fstp dword [ecx+256*4+4] ;// -
fstp dword [ecx+MAX_UNITS*MAX_UNIT_SLOTS*4+4] ;// -
%endif
ret
@ -1248,7 +1360,7 @@ go4kUpdateInstrument_newNote:
%endif
pushad
xor eax, eax
mov ecx, (8+256*4)/4 ; // clear only relase, note and workspace
mov ecx, (8+MAX_UNITS*MAX_UNIT_SLOTS*4)/4 ; // clear only relase, note and workspace
rep stosd
popad
mov dword [edi+4], edx ; // set requested note as current note
@ -1476,6 +1588,9 @@ go4k_render_nogroove:
jl go4k_render_sampleloop
pop ecx
inc ecx
%ifdef AUTHORING
mov dword[__4klang_current_tick], ecx
%endif
cmp ecx, dword MAX_TICKS
jl go4k_render_tickloop
%ifdef GO4K_USE_BUFFER_RECORDINGS
@ -1507,7 +1622,7 @@ go4k_VM_process_loop:
test eax, eax
je go4k_VM_process_done ; // command byte = 0? so done
call dword [eax*4+go4k_synth_commands]
add WRK, MAX_WORKSPACE_SLOTS*4 ; // go to next workspace slot
add WRK, MAX_UNIT_SLOTS*4 ; // go to next workspace slot
jmp short go4k_VM_process_loop
go4k_VM_process_done:
add edi, go4k_instrument.size ; // go to next instrument voice

View File

@ -7,7 +7,7 @@
global _%1
_%1:
%endmacro
%define USE_SECTIONS
;%define USE_SECTIONS
; //----------------------------------------------------------------------------------------
; // basic defines for the song/synth
; //----------------------------------------------------------------------------------------
@ -52,22 +52,24 @@
%define GO4K_USE_VCO_MOD_CM ; // removing this skips color modulation code
%define GO4K_USE_VCO_MOD_GM ; // removing this skips gain modulation code
%define GO4K_USE_VCO_MOD_SM ; // removing this skips shaping modulation code
%define GO4K_USE_VCO_STEREO ; // removing this skips stereo code
%define GO4K_USE_VCF_CHECK ; // removing this skips checks if processing is needed
%define GO4K_USE_VCF_MOD_FM ; // removing this skips frequency modulation code
%define GO4K_USE_VCF_MOD_RM ; // removing this skips resonance modulation code
%define GO4K_USE_VCF_HIGH ; // removing this skips code for high output
%define GO4K_USE_VCF_BAND ; // removing this skips code for band output
%define GO4K_USE_VCF_PEAK ; // removing this skips code for peak output
%define GO4K_USE_VCF_STEREO ; // removing this skips code for stereo filter output
%define GO4K_USE_DST_CHECK ; // removing this skips checks if processing is needed
%define GO4K_USE_DST_SH ; // removing this skips sample and hold code
%define GO4K_USE_DST_MOD_DM ; // removing this skips distortion modulation code
%define GO4K_USE_DST_MOD_SH ; // removing this skips sample and hold modulation code
%define GO4K_USE_DST_STEREO ; // removing this skips stereo processing
%define GO4K_USE_DLL_NOTE_SYNC ; // removing this will skip delay length adjusting code (karplus strong)
%define GO4K_USE_DLL_CHORUS ; // removing this will skip delay chorus/flanger code
%define GO4K_USE_DLL_CHORUS_CLAMP ; // removing this will skip chorus lfo phase clamping
%define GO4K_USE_DLL_DAMP ; // removing this will skip dll damping code
%define GO4K_USE_DLL_DC_FILTER ; // removing this will skip dll dc offset removal code
%define GO4K_USE_FOP_LOADNOTE ; // removing this will skip load note code
%define GO4K_USE_FSTG_CHECK ; // removing this skips checks if processing is needed
%define GO4K_USE_PAN_MOD ; // removing this will skip panning modulation code
%define GO4K_USE_OUT_MOD_AM ; // removing this skips output aux send modulation code
@ -86,11 +88,12 @@
; // synth defines
; //----------------------------------------------------------------------------------------
%define MAX_DELAY 65536
%define MAX_WORKSPACE_SLOTS 8
%define GO4K_BEGIN_CMDDEF(def_name)
%define GO4K_END_CMDDEF db 0
%define GO4K_BEGIN_PARAMDEF(def_name)
%define GO4K_END_PARAMDEF
%define MAX_UNITS 64
%define MAX_UNIT_SLOTS 16
%define GO4K_BEGIN_CMDDEF(def_name)
%define GO4K_END_CMDDEF db 0
%define GO4K_BEGIN_PARAMDEF(def_name)
%define GO4K_END_PARAMDEF
; //----------------------------------------------------------------------------------------
; // ENV structs
; //----------------------------------------------------------------------------------------
@ -168,6 +171,7 @@ GO4K_VCO_ID equ 2
%define NOISE 0x08
%define LFO 0x10
%define GATE 0x20
%define VCO_STEREO 0x40
struc go4kVCO_val
;// unit paramters
.transpose resd 1
@ -197,6 +201,8 @@ struc go4kVCO_wrk
.cm resd 1
.sm resd 1
.gm resd 1
;// stero variables
.phase2 resd 1
.size
endstruc
; //----------------------------------------------------------------------------------------
@ -214,6 +220,7 @@ GO4K_VCF_ID equ 3
%define BANDSTOP 0x3
%define ALLPASS 0x7
%define PEAK 0x8
%define STEREO 0x10
%define FREQUENCY(val) val
%define RESONANCE(val) val
%define VCFTYPE(val) val
@ -229,38 +236,54 @@ struc go4kVCF_wrk
.low resd 1
.high resd 1
.band resd 1
.freq resd 1
.freq resd 1 ;// unused but kept so modulation target offsets stay same
;// modulation targets
.fm resd 1
.rm resd 1
.rm resd 1
;// stereo variables
.low2 resd 1
.high2 resd 1
.band2 resd 1
.size
endstruc
; //----------------------------------------------------------------------------------------
; // DST structs
; //----------------------------------------------------------------------------------------
GO4K_DST_ID equ 4
%macro GO4K_DST 2
%macro GO4K_DST 3
db %1
%ifdef GO4K_USE_DST_SH
db %2
%endif
%ifdef GO4K_USE_DST_STEREO
db %3
%endif
%else
%ifdef GO4K_USE_DST_STEREO
db %3
%endif
%endif
%endmacro
%define DRIVE(val) val
%define SNHFREQ(val) val
%define FLAGS(val) val
struc go4kDST_val
;// unit paramters
.drive resd 1
%ifdef GO4K_USE_DST_SH
.snhfreq resd 1
%endif
.flags resd 1
.size
endstruc
struc go4kDST_wrk
;// work variables
.out resd 1
.snhphase resd 1
;// modulation targets
.dm resd 1
.sm resd 1
;// stereo variables
.out2 resd 1
.size
endstruc
; //----------------------------------------------------------------------------------------
@ -342,6 +365,7 @@ GO4K_FOP_ID equ 6
%define FOP_MUL 0x7
%define FOP_ADDP2 0x8
%define FOP_LOADNOTE 0x9
%define FOP_MULP2 0xa
struc go4kFOP_val
.flags resd 1
.size
@ -355,10 +379,13 @@ endstruc
GO4K_FST_ID equ 7
%macro GO4K_FST 2
db %1
db %2
dw %2
%endmacro
%define AMOUNT(val) val
%define DEST(val) val
%define FST_SET 0x0000
%define FST_ADD 0x4000
%define FST_POP 0x8000
struc go4kFST_val
.amount resd 1
.op1 resd 1
@ -455,7 +482,7 @@ endstruc
GO4K_FSTG_ID equ 12
%macro GO4K_FSTG 2
db %1
dd %2
dw %2
%endmacro
struc go4kFSTG_val
.amount resd 1
@ -472,7 +499,7 @@ endstruc
struc go4k_instrument
.release resd 1
.note resd 1
.workspace resd 256
.workspace resd MAX_UNITS*MAX_UNIT_SLOTS
.dlloutl resd 1
.dlloutr resd 1
.outl resd 1
@ -723,18 +750,18 @@ section .data
go4k_synth_parameter_values
GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_ENV ATTAC(72),DECAY(96),SUSTAIN(96),RELEASE(88),GAIN(128)
GO4K_FST AMOUNT(64),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(64),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(60),PHASE(32),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(PULSE)
GO4K_VCO TRANSPOSE(64),DETUNE(72),PHASE(32),GATES(0),COLOR(96),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(96),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(2*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(61),DEST(3*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(68),DEST(2*MAX_UNIT_SLOTS+2)
GO4K_FST AMOUNT(61),DEST(3*MAX_UNIT_SLOTS+2)
GO4K_FOP OP(FOP_POP)
GO4K_FOP OP(FOP_ADDP)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(26),RESONANCE(128),VCFTYPE(PEAK)
GO4K_VCF FREQUENCY(64),RESONANCE(64),VCFTYPE(LOWPASS)
GO4K_DST DRIVE(104), SNHFREQ(128)
GO4K_DST DRIVE(104), SNHFREQ(128), FLAGS(0)
GO4K_PAN PANNING(64)
GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1)
GO4K_FOP OP(FOP_XCH)
@ -744,18 +771,18 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument1)
GO4K_ENV ATTAC(72),DECAY(96),SUSTAIN(96),RELEASE(88),GAIN(128)
GO4K_FST AMOUNT(64),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(64),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(60),PHASE(32),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_VCO TRANSPOSE(64),DETUNE(72),PHASE(32),GATES(0),COLOR(96),SHAPE(112),GAIN(64),FLAGS(SINE)
GO4K_VCO TRANSPOSE(80),DETUNE(112),PHASE(0),GATES(0),COLOR(64),SHAPE(16),GAIN(128),FLAGS(PULSE|LFO)
GO4K_FST AMOUNT(68),DEST(2*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(68),DEST(2*MAX_UNIT_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_UNIT_SLOTS+2)
GO4K_FOP OP(FOP_POP)
GO4K_FOP OP(FOP_ADDP)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(80),RESONANCE(24),VCFTYPE(LOWPASS)
GO4K_VCF FREQUENCY(48),RESONANCE(24),VCFTYPE(HIGHPASS)
GO4K_DST DRIVE(64), SNHFREQ(128)
GO4K_DST DRIVE(64), SNHFREQ(128), FLAGS(0)
GO4K_PAN PANNING(64)
GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1)
GO4K_FOP OP(FOP_XCH)
@ -765,18 +792,18 @@ GO4K_BEGIN_PARAMDEF(Instrument1)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument2)
GO4K_ENV ATTAC(32),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(64)
GO4K_FST AMOUNT(120),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(120),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(32),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(PULSE)
GO4K_VCO TRANSPOSE(64),DETUNE(72),PHASE(32),GATES(0),COLOR(96),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(96),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(2*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(68),DEST(2*MAX_UNIT_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_UNIT_SLOTS+2)
GO4K_FOP OP(FOP_POP)
GO4K_FOP OP(FOP_ADDP)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(18),RESONANCE(64),VCFTYPE(PEAK)
GO4K_VCF FREQUENCY(32),RESONANCE(48),VCFTYPE(LOWPASS)
GO4K_DST DRIVE(88), SNHFREQ(128)
GO4K_DST DRIVE(88), SNHFREQ(128), FLAGS(0)
GO4K_PAN PANNING(64)
GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1)
GO4K_FOP OP(FOP_XCH)
@ -786,7 +813,7 @@ GO4K_BEGIN_PARAMDEF(Instrument2)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument3)
GO4K_ENV ATTAC(0),DECAY(76),SUSTAIN(0),RELEASE(0),GAIN(32)
GO4K_FST AMOUNT(128),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(64),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(NOISE)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(80),RESONANCE(128),VCFTYPE(LOWPASS)
@ -795,10 +822,10 @@ GO4K_BEGIN_PARAMDEF(Instrument3)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument4)
GO4K_ENV ATTAC(0),DECAY(64),SUSTAIN(96),RELEASE(64),GAIN(128)
GO4K_FST AMOUNT(128),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_ENV ATTAC(0),DECAY(70),SUSTAIN(0),RELEASE(0),GAIN(128)
GO4K_DST DRIVE(32), SNHFREQ(128)
GO4K_FST AMOUNT(80),DEST(6*MAX_WORKSPACE_SLOTS+1)
GO4K_DST DRIVE(32), SNHFREQ(128), FLAGS(0)
GO4K_FST AMOUNT(80),DEST(6*MAX_UNIT_SLOTS+1)
GO4K_FOP OP(FOP_POP)
GO4K_VCO TRANSPOSE(46),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_FOP OP(FOP_MULP)
@ -819,10 +846,10 @@ GO4K_BEGIN_PARAMDEF(Instrument5)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument6)
GO4K_ENV ATTAC(0),DECAY(72),SUSTAIN(0),RELEASE(72),GAIN(128)
GO4K_FST AMOUNT(128),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_ENV ATTAC(0),DECAY(56),SUSTAIN(0),RELEASE(0),GAIN(128)
GO4K_FST AMOUNT(108),DEST(6*MAX_WORKSPACE_SLOTS+1)
GO4K_FST AMOUNT(72),DEST(7*MAX_WORKSPACE_SLOTS+1)
GO4K_FST AMOUNT(108),DEST(6*MAX_UNIT_SLOTS+1)
GO4K_FST AMOUNT(72),DEST(7*MAX_UNIT_SLOTS+1)
GO4K_FOP OP(FOP_POP)
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(32),GAIN(64),FLAGS(SINE)
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(80),GAIN(64),FLAGS(SINE)
@ -850,8 +877,8 @@ GO4K_BEGIN_PARAMDEF(Instrument8)
GO4K_ENV ATTAC(0),DECAY(0),SUSTAIN(128),RELEASE(0),GAIN(128)
GO4K_VCO TRANSPOSE(48),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO)
GO4K_FOP OP(FOP_MULP)
GO4K_FSTG AMOUNT(72),DEST(2*go4k_instrument.size*MAX_VOICES+10*MAX_WORKSPACE_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FSTG AMOUNT(66),DEST(1*go4k_instrument.size*MAX_VOICES+10*MAX_WORKSPACE_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FSTG AMOUNT(72),DEST(2*go4k_instrument.size*MAX_VOICES+10*MAX_UNIT_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FSTG AMOUNT(66),DEST(1*go4k_instrument.size*MAX_VOICES+10*MAX_UNIT_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FOP OP(FOP_POP)
GO4K_END_PARAMDEF
;// global parameters

View File

@ -19,7 +19,11 @@ Go4kVSTi::Go4kVSTi (audioMasterCallback audioMaster) : AudioEffectX (audioMaster
hasVu (false);
hasClip (false);
isSynth ();
#ifdef _8KLANG
setUniqueID ('8klg');
#else
setUniqueID ('4klg');
#endif
}
initProcess ();
suspend ();
@ -99,7 +103,11 @@ bool Go4kVSTi::copyProgram (long destination)
//-----------------------------------------------------------------------------------------
bool Go4kVSTi::getEffectName (char* name)
{
#ifdef _8KLANG
strcpy (name, "8klang");
#else
strcpy (name, "4klang");
#endif
return true;
}
@ -113,7 +121,11 @@ bool Go4kVSTi::getVendorString (char* text)
//-----------------------------------------------------------------------------------------
bool Go4kVSTi::getProductString (char* text)
{
#ifdef _8KLANG
strcpy (text, "8klang");
#else
strcpy (text, "4klang");
#endif
return true;
}

File diff suppressed because it is too large Load Diff

View File

@ -66,14 +66,12 @@ void Go4kVSTi_LoadUnit(char* filename, BYTE* slot);
// save unit date from specified slot
void Go4kVSTi_SaveUnit(char* filename, BYTE* slot);
#define EXPORT_OBJECT_FILE_
void Go4kVSTi_SaveByteStream(HINSTANCE hInst, char* filename, int useenvlevels, int useenotevalues, int clipoutput, int undenormalize, int objformat, int output16);
#define MAX_POLYPHONY 2
#define MAX_INSTRUMENTS 16
#define MAX_SLOT_VALUES 32
#define MAX_SLOTS 32
#define MAX_UNITS 64
#define MAX_UNIT_SLOTS 16
enum UnitID
{
@ -120,6 +118,7 @@ typedef struct ENV_val
#define VCO_NOISE 0x08
#define VCO_LFO 0x10
#define VCO_GATE 0x20
#define VCO_STEREO 0x40
typedef struct VCO_val
{
BYTE id;
@ -153,6 +152,7 @@ typedef struct VCO11_val
#define VCF_BANDSTOP 0x3
#define VCF_ALLPASS 0x7
#define VCF_PEAK 0x8
#define VCF_STEREO 0x10
typedef struct VCF_val
{
BYTE id;
@ -167,6 +167,7 @@ typedef struct DST_val
BYTE id;
BYTE drive;
BYTE snhfreq;
BYTE stereo;
// GUI STUFF
} *DST_valP;
@ -213,17 +214,22 @@ typedef struct DLL10_val
#define FOP_MUL 0x7
#define FOP_ADDP2 0x8
#define FOP_LOADNOTE 0x9
#define FOP_MULP2 0xa
typedef struct FOP_val
{
BYTE id;
BYTE flags;
} *FOP_valP;
#define FST_SET 0x00
#define FST_ADD 0x10
#define FST_MUL 0x20
#define FST_POP 0x40
typedef struct FST_val
{
BYTE id;
BYTE amount;
BYTE dest;
BYTE type;
// GUI STUFF
char dest_stack;
char dest_unit;
@ -269,7 +275,7 @@ typedef struct InstrumentWorkspace
{
DWORD release;
DWORD note;
float workspace[256];
float workspace[MAX_UNITS*MAX_UNIT_SLOTS];
float dlloutl;
float dlloutr;
float outl;
@ -280,8 +286,8 @@ typedef struct SynthObject
{
DWORD Polyphony;
char InstrumentNames[MAX_INSTRUMENTS][64];
BYTE InstrumentValues[MAX_INSTRUMENTS][MAX_SLOTS][MAX_SLOT_VALUES]; // 16 instruments a 32 slots a 32 dowrds
BYTE GlobalValues[MAX_SLOTS][MAX_SLOT_VALUES]; // 32 slots a 32 dwords
BYTE InstrumentValues[MAX_INSTRUMENTS][MAX_UNITS][MAX_UNIT_SLOTS]; // 16 instruments a 32 slots a 32 dowrds
BYTE GlobalValues[MAX_UNITS][MAX_UNIT_SLOTS]; // 32 slots a 32 dwords
InstrumentWorkspace InstrumentWork[MAX_INSTRUMENTS*MAX_POLYPHONY];
InstrumentWorkspace GlobalWork;
DWORD InstrumentSignalValid[MAX_INSTRUMENTS];
@ -289,6 +295,7 @@ typedef struct SynthObject
float SignalTrace[MAX_INSTRUMENTS];
int ControlInstrument[MAX_INSTRUMENTS];
int VoiceIndex[MAX_INSTRUMENTS];
int HighestSlotIndex[17];
} *SynthObjectP;
SynthObjectP Go4kVSTi_GetSynthObject();

View File

@ -29,9 +29,10 @@ static int SelectedIUnit = 0;
static int SelectedGUnit = 0;
static int SelectedTab = T_INSTRUMENT;
static int SelectedInstrument = 0;
static int LinkToInstrument[16] = { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 };
static int SetUnit = -1;
static char SliderValTxt[128];
static DWORD UnitCopyBuffer[MAX_SLOT_VALUES];
static DWORD UnitCopyBuffer[MAX_UNIT_SLOTS];
static int InstrumentScrollPos[MAX_INSTRUMENTS];
static int GlobalScrollPos;
static int InitDone = false;
@ -183,17 +184,18 @@ char* GetUnitString(BYTE* unit, char* unitname)
if (unit[0] == M_VCF)
{
VCF_valP val = (VCF_valP)unit;
if (val->type == VCF_LOWPASS)
int ft = val->type & ~VCF_STEREO;
if (ft == VCF_LOWPASS)
sprintf(UnitDesc, " (%s F:%d)","Low", val->freq);
if (val->type == VCF_HIGHPASS)
if (ft == VCF_HIGHPASS)
sprintf(UnitDesc, " (%s F:%d)","High", val->freq);
if (val->type == VCF_BANDPASS)
if (ft == VCF_BANDPASS)
sprintf(UnitDesc, " (%s F:%d)","Band", val->freq);
if (val->type == VCF_BANDSTOP)
if (ft == VCF_BANDSTOP)
sprintf(UnitDesc, " (%s F:%d)","Notch", val->freq);
if (val->type == VCF_PEAK)
if (ft == VCF_PEAK)
sprintf(UnitDesc, " (%s F:%d)","Peak", val->freq);
if (val->type == VCF_ALLPASS)
if (ft == VCF_ALLPASS)
sprintf(UnitDesc, " (%s F:%d)","All", val->freq);
}
if (unit[0] == M_FOP)
@ -217,6 +219,8 @@ char* GetUnitString(BYTE* unit, char* unitname)
sprintf(UnitDesc, " (%s)","2+/Pop");
if (val->flags == FOP_LOADNOTE)
sprintf(UnitDesc, " (%s)","LoadNote");
if (val->flags == FOP_MULP2)
sprintf(UnitDesc, " (%s)","2*/Pop");
}
if (unit[0] == M_DLL)
{
@ -235,16 +239,24 @@ char* GetUnitString(BYTE* unit, char* unitname)
}
else
{
std::string st;
if (val->type & FST_ADD)
st = "+";
if (val->type & FST_MUL)
st = "*";
if (val->type & FST_POP)
st += ",Pop";
if ((val->dest_stack != -1) && (val->dest_stack != SelectedInstrument))
{
if (val->dest_stack == MAX_INSTRUMENTS)
sprintf(UnitDesc, " (GU%d %s)", val->dest_unit+1, UnitModulationTargetShortNames[val->dest_id][val->dest_slot]);
sprintf(UnitDesc, " (GU%d %s)%s", val->dest_unit+1, UnitModulationTargetShortNames[val->dest_id][val->dest_slot], st.c_str());
else
sprintf(UnitDesc, " (%dU%d %s)",val->dest_stack+1, val->dest_unit+1, UnitModulationTargetShortNames[val->dest_id][val->dest_slot]);
sprintf(UnitDesc, " (%dU%d %s)%s",val->dest_stack+1, val->dest_unit+1, UnitModulationTargetShortNames[val->dest_id][val->dest_slot], st.c_str());
}
else
{
sprintf(UnitDesc, " (U%d %s)", val->dest_unit+1, UnitModulationTargetShortNames[val->dest_id][val->dest_slot]);
sprintf(UnitDesc, " (U%d %s)%s", val->dest_unit+1, UnitModulationTargetShortNames[val->dest_id][val->dest_slot], st.c_str());
}
}
}
@ -329,8 +341,13 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
const char* instrument[] = {"1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14", "15", "16" };
for (int i = 0; i < 16; i++)
{
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENT, CB_ADDSTRING, (WPARAM)0, (LPARAM)(instrument[i]));
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENTLINK, CB_ADDSTRING, (WPARAM)0, (LPARAM)(instrument[i]));
}
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENTLINK, CB_ADDSTRING, (WPARAM)0, (LPARAM)("None"));
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENT, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENT, CB_SETCURSEL, (WPARAM)16, (LPARAM)0);
const char* patternsize[] = {"8", "16", "32", "64"};
for (int i = 0; i < 4; i++)
@ -381,6 +398,59 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
}
return TRUE;
}
// link to combo box
if (((HWND)lParam) == GetDlgItem(hwndDlg, IDC_INSTRUMENTLINK))
{
if (HIWORD(wParam) == CBN_SELCHANGE)
{
int linkToInstrument = SendDlgItemMessage(hwndDlg, IDC_INSTRUMENTLINK, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
if (SelectedInstrument == linkToInstrument)
{
MessageBox(DialogWnd, "Instrument cannot be linked to itself!", "Info", MB_OK);
return TRUE;
}
if (linkToInstrument < 16)
{
// compare instruments
for (int u = 0; u < MAX_UNITS; u++)
{
// special case, compare manually
if (SynthObjP->InstrumentValues[SelectedInstrument][u][0] == M_DLL)
{
DLL_valP ds = (DLL_valP)SynthObjP->InstrumentValues[SelectedInstrument][u];
DLL_valP dl = (DLL_valP)SynthObjP->InstrumentValues[linkToInstrument][u];
if (ds->pregain != dl->pregain ||
ds->dry != dl->dry ||
ds->feedback != dl->feedback ||
ds->damp != dl->damp ||
ds->freq != dl->freq ||
ds->depth != dl->depth ||
ds->guidelay != dl->guidelay ||
ds->synctype != dl->synctype ||
ds->leftreverb != dl->leftreverb ||
ds->reverb != dl->reverb)
{
MessageBox(DialogWnd, "Instruments cannot be linked as they differ!", "Info", MB_OK);
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENTLINK, CB_SETCURSEL, (WPARAM)16, (LPARAM)0);
return TRUE;
}
}
else
{
if (memcmp(SynthObjP->InstrumentValues[SelectedInstrument][u], SynthObjP->InstrumentValues[linkToInstrument][u], MAX_UNIT_SLOTS))
{
MessageBox(DialogWnd, "Instruments cannot be linked as they differ!", "Info", MB_OK);
SendDlgItemMessage(hwndDlg, IDC_INSTRUMENTLINK, CB_SETCURSEL, (WPARAM)16, (LPARAM)0);
return TRUE;
}
}
}
}
// set link
LinkToInstrument[SelectedInstrument] = linkToInstrument;
}
return TRUE;
}
// Polyphony
else if (((HWND)lParam) == GetDlgItem(hwndDlg, IDC_POLYPHONY))
{
@ -498,6 +568,7 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
for (int i = 0; i < MAX_INSTRUMENTS; i++)
{
UpdateSignalCount(i);
LinkToInstrument[i] = 16;
}
UpdateControls(SelectedInstrument);
}
@ -620,12 +691,14 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
InstrumentScrollPos[SelectedInstrument] = 0;
SynthObjP->InstrumentSignalValid[SelectedInstrument] = 0;
Go4kVSTi_LoadInstrument(ofn.lpstrFile, (char)SelectedInstrument);
LinkToInstrument[SelectedInstrument] = 16;
}
else
{
GlobalScrollPos = 0;
SynthObjP->GlobalSignalValid = 0;
Go4kVSTi_LoadInstrument(ofn.lpstrFile, (char)16);
LinkToInstrument[SelectedInstrument] = 16;
}
UpdateControls(SelectedInstrument);
}
@ -864,17 +937,17 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
case IDC_UNIT_COPY:
{
if (SelectedTab == T_INSTRUMENT)
memcpy(UnitCopyBuffer, SynthObjP->InstrumentValues[SelectedInstrument][SelectedIUnit], MAX_SLOT_VALUES);
memcpy(UnitCopyBuffer, SynthObjP->InstrumentValues[SelectedInstrument][SelectedIUnit], MAX_UNIT_SLOTS);
else
memcpy(UnitCopyBuffer, SynthObjP->GlobalValues[SelectedGUnit], MAX_SLOT_VALUES);
memcpy(UnitCopyBuffer, SynthObjP->GlobalValues[SelectedGUnit], MAX_UNIT_SLOTS);
return TRUE;
}
case IDC_UNIT_PASTE:
{
if (SelectedTab == T_INSTRUMENT)
memcpy(SynthObjP->InstrumentValues[SelectedInstrument][SelectedIUnit], UnitCopyBuffer, MAX_SLOT_VALUES);
memcpy(SynthObjP->InstrumentValues[SelectedInstrument][SelectedIUnit], UnitCopyBuffer, MAX_UNIT_SLOTS);
else
memcpy(SynthObjP->GlobalValues[SelectedGUnit], UnitCopyBuffer, MAX_SLOT_VALUES);
memcpy(SynthObjP->GlobalValues[SelectedGUnit], UnitCopyBuffer, MAX_UNIT_SLOTS);
UpdateControls(SelectedInstrument);
return TRUE;
}
@ -960,6 +1033,7 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
for (int i = 0; i < MAX_INSTRUMENTS; i++)
{
UpdateSignalCount(i);
LinkToInstrument[i] = 16;
}
UpdateControls(SelectedInstrument);
}
@ -981,6 +1055,7 @@ BOOL CALLBACK MainDialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l
InstrumentScrollPos[SelectedInstrument] = 0;
SynthObjP->InstrumentSignalValid[SelectedInstrument] = 0;
Go4kVSTi_LoadInstrument(DropFileName, (char)SelectedInstrument);
LinkToInstrument[SelectedInstrument] = 16;
}
else
{
@ -1245,7 +1320,7 @@ void Go4kVSTiGUI_Create(HINSTANCE hInst)
timerID = SetTimer(DialogWnd, timer, 200, TimerProc);
backupTimerID = SetTimer(DialogWnd, backupTimer, 60*1000, BackupTimerProc);
memset(UnitCopyBuffer, 0, MAX_SLOT_VALUES);
memset(UnitCopyBuffer, 0, MAX_UNIT_SLOTS);
// set fst instrument elements
const char* idest[] = {"Local", "Instrument 1", "Instrument 2", "Instrument 3", "Instrument 4", "Instrument 5", "Instrument 6", "Instrument 7", "Instrument 8",
@ -1313,6 +1388,38 @@ void Go4kVSTiGUI_Destroy()
DestroyWindow(DialogWnd);
}
void LinkInstrumentUnit(int selectedInstrument, int selectedIUnit)
{
for (int i = 0; i < 16; i++)
{
if (LinkToInstrument[i] == selectedInstrument)
{
if (SynthObjP->InstrumentValues[selectedInstrument][selectedIUnit][0] == M_DLL)
{
DLL_valP ds = (DLL_valP)SynthObjP->InstrumentValues[selectedInstrument][selectedIUnit];
DLL_valP dl = (DLL_valP)SynthObjP->InstrumentValues[i][selectedIUnit];
dl->id = ds->id;
dl->pregain = ds->pregain;
dl->dry = ds->dry;
dl->feedback = ds->feedback;
dl->damp = ds->damp;
dl->freq = ds->freq;
dl->depth = ds->depth;
dl->guidelay = ds->guidelay;
dl->synctype = ds->synctype;
dl->leftreverb = ds->leftreverb;
dl->reverb = ds->reverb;
}
else
{
memcpy(SynthObjP->InstrumentValues[i][selectedIUnit],
SynthObjP->InstrumentValues[selectedInstrument][selectedIUnit],
MAX_UNIT_SLOTS);
}
}
}
Go4kVSTi_UpdateDelayTimes();
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
@ -1331,10 +1438,11 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
ButtonGroupChanged(IDC_VCO_SINE, IDC_VCO_GATE, LOWORD(id), M_VCO, res);
if (res)
{
v->flags = 0;
if (SendDlgItemMessage(ModuleWnd[M_VCO], IDC_VCO_LFO, BM_GETCHECK, 0, 0)==BST_CHECKED)
v->flags = VCO_LFO;
else
v->flags = 0;
v->flags |= VCO_LFO;
if (SendDlgItemMessage(ModuleWnd[M_VCO], IDC_VCO_STEREO, BM_GETCHECK, 0, 0)==BST_CHECKED)
v->flags |= VCO_STEREO;
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_TRANSPOSE), true);
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_TRANSPOSE_VAL), true);
@ -1370,8 +1478,6 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
if (IDC_VCO_SINE == res)
{
v->flags |= VCO_SINE;
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_COLOR), false);
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_COLOR_VAL), false);
}
if (IDC_VCO_TRISAW == res)
{
@ -1403,6 +1509,13 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
else
v->flags &= ~VCO_LFO;
}
if (LOWORD(id) == IDC_VCO_STEREO)
{
if (SendDlgItemMessage(ModuleWnd[M_VCO], IDC_VCO_STEREO, BM_GETCHECK, 0, 0)==BST_CHECKED)
v->flags |= VCO_STEREO;
else
v->flags &= ~VCO_STEREO;
}
// gate bits changed?
WORD gatebits;
GetCheckboxGroupBitmask(IDC_VCO_GATE1, IDC_VCO_GATE16, LOWORD(id), M_VCO, gatebits, res);
@ -1413,6 +1526,8 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
// adjust color slider
InitSliderCenter(ModuleWnd[M_VCO], IDC_VCO_COLOR, 0, 128, v->color);
}
// update signalcount
UpdateSignalCount(SelectedInstrument);
}
else if (uid == M_VCF)
{
@ -1420,19 +1535,42 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
ButtonGroupChanged(IDC_VCF_LOW, IDC_VCF_ALL, LOWORD(id), M_VCF, res);
if (res)
{
int stereo = v->type & VCF_STEREO;
if (res == IDC_VCF_LOW)
v->type = VCF_LOWPASS;
v->type = stereo | VCF_LOWPASS;
else if (res == IDC_VCF_HIGH)
v->type = VCF_HIGHPASS;
v->type = stereo | VCF_HIGHPASS;
else if (res == IDC_VCF_BAND)
v->type = VCF_BANDPASS;
v->type = stereo | VCF_BANDPASS;
else if (res == IDC_VCF_NOTCH)
v->type = VCF_BANDSTOP;
v->type = stereo | VCF_BANDSTOP;
else if (res == IDC_VCF_PEAK)
v->type = VCF_PEAK;
v->type = stereo | VCF_PEAK;
else if (res == IDC_VCF_ALL)
v->type = VCF_ALLPASS;
v->type = stereo | VCF_ALLPASS;
}
if (LOWORD(id) == IDC_VCF_STEREO)
{
if (SendDlgItemMessage(ModuleWnd[M_VCF], IDC_VCF_STEREO, BM_GETCHECK, 0, 0)==BST_CHECKED)
v->type |= VCF_STEREO;
else
v->type &= ~VCF_STEREO;
}
// update signalcount
UpdateSignalCount(SelectedInstrument);
}
else if (uid == M_DST)
{
DST_valP v = (DST_valP)val;
if (LOWORD(id) == IDC_DST_STEREO)
{
if (SendDlgItemMessage(ModuleWnd[M_DST], IDC_DST_STEREO, BM_GETCHECK, 0, 0)==BST_CHECKED)
v->stereo = VCF_STEREO;
else
v->stereo = 0;
}
// update signalcount
UpdateSignalCount(SelectedInstrument);
}
else if (uid == M_DLL)
{
@ -1504,7 +1642,7 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
SynthObjP->GlobalSignalValid = 0;
}
FOP_valP v = (FOP_valP)val;
ButtonGroupChanged(IDC_FOP_POP, IDC_FOP_LOADNOTE, LOWORD(id), M_FOP, res);
ButtonGroupChanged(IDC_FOP_POP, IDC_FOP_MULP2, LOWORD(id), M_FOP, res);
if (res)
{
v->flags = 1 + res - IDC_FOP_POP;
@ -1546,10 +1684,10 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_ADDSTRING, (WPARAM)0, (LPARAM)"- Nothing Selected -");
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
char unitname[128], unitname2[128];
sprintf(unitname, "%d: %s", i+1, GetUnitString(&units[i*MAX_SLOT_VALUES], unitname2));
sprintf(unitname, "%d: %s", i+1, GetUnitString(&units[i*MAX_UNIT_SLOTS], unitname2));
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_ADDSTRING, (WPARAM)0, (LPARAM)unitname);
}
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
@ -1636,6 +1774,28 @@ void SetButtonParams(int uid, BYTE* val, WPARAM id, LPARAM lParam)
v->dest_id = slots[0];
}
ButtonGroupChanged(IDC_FST_SET, IDC_FST_MUL, LOWORD(id), M_FST, res);
if (res)
{
int pop = v->type & FST_POP;
if (res == IDC_FST_SET)
v->type = FST_SET;
else if (res == IDC_FST_ADD)
v->type = FST_ADD;
else if (res == IDC_FST_MUL)
v->type = FST_MUL;
if (pop)
v->type |= FST_POP;
}
if (LOWORD(id) == IDC_FST_POP)
{
if (SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_POP, BM_GETCHECK, 0, 0)==BST_CHECKED)
v->type |= FST_POP;
else
v->type &= ~FST_POP;
}
// update signalcount
UpdateSignalCount(SelectedInstrument);
}
else if (uid == M_ACC)
{
@ -1661,6 +1821,7 @@ bool ButtonPressed(WPARAM id, LPARAM lParam)
char unitname[128];
GetUnitString(SynthObjP->InstrumentValues[SelectedInstrument][SelectedIUnit], unitname);
SetWindowText(GetDlgItem(TabWnd[T_INSTRUMENT], IDC_ISTACK_UNIT1+SelectedIUnit*6), unitname);
LinkInstrumentUnit(SelectedInstrument, SelectedIUnit);
}
else if (SelectedTab == T_GLOBAL)
{
@ -1881,6 +2042,7 @@ bool ScrollbarChanged(HWND hwndDlg, WPARAM wParam, LPARAM lParam)
char unitname[128];
GetUnitString(SynthObjP->InstrumentValues[SelectedInstrument][SelectedIUnit], unitname);
SetWindowText(GetDlgItem(TabWnd[T_INSTRUMENT], IDC_ISTACK_UNIT1+SelectedIUnit*6), unitname);
LinkInstrumentUnit(SelectedInstrument, SelectedIUnit);
}
else if (SelectedTab == T_GLOBAL)
{
@ -1909,7 +2071,7 @@ void CheckModulations(int unit1, int unit2 = -1)
// look in all instruments if a store unit had its target on one of the changed units
for (int i = 0; i < MAX_INSTRUMENTS; i++)
{
for (int u = 0; u < MAX_SLOTS; u++)
for (int u = 0; u < MAX_UNITS; u++)
{
if (SynthObjP->InstrumentValues[i][u][0] == M_FST)
{
@ -1959,7 +2121,7 @@ void CheckModulations(int unit1, int unit2 = -1)
}
}
// now check the global slots
for (int u = 0; u < MAX_SLOTS; u++)
for (int u = 0; u < MAX_UNITS; u++)
{
if (SynthObjP->GlobalValues[u][0] == M_FST)
{
@ -2008,7 +2170,7 @@ void CheckModulations(int unit1, int unit2 = -1)
// look in all instruments if a store unit had its target on a global unit
for (int i = 0; i < MAX_INSTRUMENTS; i++)
{
for (int u = 0; u < MAX_SLOTS; u++)
for (int u = 0; u < MAX_UNITS; u++)
{
if (SynthObjP->InstrumentValues[i][u][0] == M_FST)
{
@ -2048,7 +2210,7 @@ void CheckModulations(int unit1, int unit2 = -1)
}
}
// now check the global slots
for (int u = 0; u < MAX_SLOTS; u++)
for (int u = 0; u < MAX_UNITS; u++)
{
if (SynthObjP->GlobalValues[u][0] == M_FST)
{
@ -2097,7 +2259,7 @@ bool StackButtonPressed(WPARAM id)
if (SelectedTab == T_INSTRUMENT)
{
// check unit click
InterleavedButtonGroupChanged(IDC_ISTACK_UNIT1, MAX_SLOTS, LOWORD(id), res);
InterleavedButtonGroupChanged(IDC_ISTACK_UNIT1, MAX_UNITS, LOWORD(id), res);
if (res >= 0)
{
SelectedIUnit = res;
@ -2105,7 +2267,7 @@ bool StackButtonPressed(WPARAM id)
}
// check down click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_ISTACK_DOWN1+i*6;
if (LOWORD(id) == tid)
@ -2114,13 +2276,15 @@ bool StackButtonPressed(WPARAM id)
EnableWindow(GetDlgItem(TabWnd[T_INSTRUMENT], tid), false);
Go4kVSTi_FlipInstrumentSlots(SelectedInstrument, i, i+1);
CheckModulations(i, i+1);
LinkInstrumentUnit(SelectedInstrument, i);
LinkInstrumentUnit(SelectedInstrument, i+1);
UpdateControls(SelectedInstrument);
EnableWindow(GetDlgItem(TabWnd[T_INSTRUMENT], tid), true);
}
}
// check up click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_ISTACK_UP1+i*6;
if (LOWORD(id) == tid)
@ -2129,13 +2293,15 @@ bool StackButtonPressed(WPARAM id)
EnableWindow(GetDlgItem(TabWnd[T_INSTRUMENT], tid), false);
Go4kVSTi_FlipInstrumentSlots(SelectedInstrument, i, i-1);
CheckModulations(i, i-1);
LinkInstrumentUnit(SelectedInstrument, i);
LinkInstrumentUnit(SelectedInstrument, i-1);
UpdateControls(SelectedInstrument);
EnableWindow(GetDlgItem(TabWnd[T_INSTRUMENT], tid), true);
}
}
// check set click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_ISTACK_SET1+i*6;
if (LOWORD(id) == tid)
@ -2149,6 +2315,7 @@ bool StackButtonPressed(WPARAM id)
Go4kVSTi_InitInstrumentSlot(SelectedInstrument, i, SetUnit);
CheckModulations(i);
SelectedIUnit = i;
LinkInstrumentUnit(SelectedInstrument, i);
UpdateControls(SelectedInstrument);
}
}
@ -2158,7 +2325,7 @@ bool StackButtonPressed(WPARAM id)
}
// check reset click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_ISTACK_RESET1+i*6;
if (LOWORD(id) == tid)
@ -2166,7 +2333,9 @@ bool StackButtonPressed(WPARAM id)
SynthObjP->InstrumentSignalValid[SelectedInstrument] = 0;
EnableWindow(GetDlgItem(TabWnd[T_INSTRUMENT], tid), false);
Go4kVSTi_ClearInstrumentSlot(SelectedInstrument, i);
LinkInstrumentUnit(SelectedInstrument, i);
CheckModulations(i);
UpdateControls(SelectedInstrument);
EnableWindow(GetDlgItem(TabWnd[T_INSTRUMENT], tid), true);
}
@ -2175,7 +2344,7 @@ bool StackButtonPressed(WPARAM id)
else if (SelectedTab == T_GLOBAL)
{
// check unit click
InterleavedButtonGroupChanged(IDC_GSTACK_UNIT1, MAX_SLOTS, LOWORD(id), res);
InterleavedButtonGroupChanged(IDC_GSTACK_UNIT1, MAX_UNITS, LOWORD(id), res);
if (res >= 0)
{
SelectedGUnit = res;
@ -2183,7 +2352,7 @@ bool StackButtonPressed(WPARAM id)
}
// check down click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_GSTACK_DOWN1+i*6;
if (LOWORD(id) == tid)
@ -2198,7 +2367,7 @@ bool StackButtonPressed(WPARAM id)
}
// check up click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_GSTACK_UP1+i*6;
if (LOWORD(id) == tid)
@ -2213,7 +2382,7 @@ bool StackButtonPressed(WPARAM id)
}
// check set click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_GSTACK_SET1+i*6;
if (LOWORD(id) == tid)
@ -2235,7 +2404,7 @@ bool StackButtonPressed(WPARAM id)
}
// check reset click
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
WORD tid = IDC_GSTACK_RESET1+i*6;
if (LOWORD(id) == tid)
@ -2319,8 +2488,15 @@ void UpdateSignalCount(int channel)
int valid = 1;
int signalcount = 0;
// check stack validity
for (int i = 0; i < MAX_SLOTS; i++)
SynthObjP->HighestSlotIndex[channel] = 63;
int highestSlotIndex = 0;
for (int i = 0; i < MAX_UNITS; i++)
{
if (SynthObjP->InstrumentValues[channel][i][0] != 0)
{
if (i >= highestSlotIndex)
highestSlotIndex = i;
}
// check unit precondition
int precond = UnitPreSignals[SynthObjP->InstrumentValues[channel][i][0]];
// adjust for arithmetic unit (depending on mode)
@ -2335,12 +2511,28 @@ void UpdateSignalCount(int channel)
precond = 1;
if (v->flags == FOP_ADDP2)
precond = 4;
if (v->flags == FOP_MULP2)
precond = 4;
}
// adjust for stereo in vcf (we need 2 signals for stereo)
if (SynthObjP->InstrumentValues[channel][i][0] == M_VCF)
{
VCF_valP v = (VCF_valP)(SynthObjP->InstrumentValues[channel][i]);
if (v->type & VCF_STEREO)
precond += 1;
}
// adjust for stereo in dst (we need 2 signals for stereo)
if (SynthObjP->InstrumentValues[channel][i][0] == M_DST)
{
DST_valP v = (DST_valP)(SynthObjP->InstrumentValues[channel][i]);
if (v->stereo & VCF_STEREO)
precond += 1;
}
if (signalcount < precond)
{
valid = 0;
Go4kVSTi_ClearInstrumentWorkspace(channel);
for (int j = i; j < MAX_SLOTS; j++)
for (int j = i; j < MAX_UNITS; j++)
{
char txt[10];
sprintf(txt, "%d", signalcount);
@ -2369,15 +2561,31 @@ void UpdateSignalCount(int channel)
signalcount--;
if (v->flags == FOP_ADDP2)
signalcount-=2;
if (v->flags == FOP_MULP2)
signalcount-=2;
if (v->flags == FOP_LOADNOTE)
signalcount++;
}
// adjust for stereo in vco (2 signals for stereo)
if (SynthObjP->InstrumentValues[channel][i][0] == M_VCO)
{
VCO_valP v = (VCO_valP)(SynthObjP->InstrumentValues[channel][i]);
if (v->flags & VCO_STEREO)
signalcount++;
}
// adjust for pop in store
if (SynthObjP->InstrumentValues[channel][i][0] == M_FST)
{
FST_valP v = (FST_valP)(SynthObjP->InstrumentValues[channel][i]);
if (v->type & FST_POP)
signalcount--;
}
// check stack undeflow
if (signalcount < 0)
{
valid = 0;
Go4kVSTi_ClearInstrumentWorkspace(channel);
for (int j = i; j < MAX_SLOTS; j++)
for (int j = i; j < MAX_UNITS; j++)
{
char txt[10];
sprintf(txt, "%d", signalcount);
@ -2393,7 +2601,7 @@ void UpdateSignalCount(int channel)
{
valid = 0;
Go4kVSTi_ClearInstrumentWorkspace(channel);
for (int j = i; j < MAX_SLOTS; j++)
for (int j = i; j < MAX_UNITS; j++)
{
char txt[10];
sprintf(txt, "%d", signalcount);
@ -2427,6 +2635,15 @@ void UpdateSignalCount(int channel)
SetWindowText(GetDlgItem(DialogWnd, IDC_ISTACK_VALID), "Signal INVALID! Signal Count != 0 after last unit");
}
}
SynthObjP->HighestSlotIndex[channel] = highestSlotIndex;
if (channel < 16)
{
if (LinkToInstrument[channel] != 16)
{
SynthObjP->InstrumentSignalValid[LinkToInstrument[channel]] = SynthObjP->InstrumentSignalValid[channel];
SynthObjP->HighestSlotIndex[LinkToInstrument[channel]] = SynthObjP->HighestSlotIndex[channel];
}
}
//////////////////////////////////////////////////////////////
// global
@ -2437,8 +2654,15 @@ void UpdateSignalCount(int channel)
valid = 1;
signalcount = 0;
// check stack validity
for (int i = 0; i < MAX_SLOTS; i++)
SynthObjP->HighestSlotIndex[16] = 63;
highestSlotIndex = 0;
for (int i = 0; i < MAX_UNITS; i++)
{
if (SynthObjP->GlobalValues[i][0] != 0)
{
if (i >= highestSlotIndex)
highestSlotIndex = i;
}
// check unit precondition
int precond = UnitPreSignals[SynthObjP->GlobalValues[i][0]];
// adjust for arithmetic unit (depending on mode)
@ -2453,12 +2677,28 @@ void UpdateSignalCount(int channel)
precond = 1;
if (v->flags == FOP_ADDP2)
precond = 4;
if (v->flags == FOP_MULP2)
precond = 4;
}
// adjust for stereo in vcf (we need 2 signals for stereo)
if (SynthObjP->GlobalValues[i][0] == M_VCF)
{
VCF_valP v = (VCF_valP)(SynthObjP->GlobalValues[i]);
if (v->type & VCF_STEREO)
precond += 1;
}
// adjust for stereo in dst (we need 2 signals for stereo)
if (SynthObjP->GlobalValues[i][0] == M_DST)
{
DST_valP v = (DST_valP)(SynthObjP->GlobalValues[i]);
if (v->stereo & VCF_STEREO)
precond += 1;
}
if (signalcount < precond)
{
valid = 0;
Go4kVSTi_ClearGlobalWorkspace();
for (int j = i; j < MAX_SLOTS; j++)
for (int j = i; j < MAX_UNITS; j++)
{
char txt[10];
sprintf(txt, "%d", signalcount);
@ -2487,15 +2727,31 @@ void UpdateSignalCount(int channel)
signalcount--;
if (v->flags == FOP_ADDP2)
signalcount-=2;
if (v->flags == FOP_MULP2)
signalcount-=2;
if (v->flags == FOP_LOADNOTE)
signalcount++;
}
// adjust for stereo in vco (2 signals for stereo)
if (SynthObjP->GlobalValues[i][0] == M_VCO)
{
VCO_valP v = (VCO_valP)(SynthObjP->GlobalValues[i]);
if (v->flags & VCO_STEREO)
signalcount++;
}
// adjust for pop in store
if (SynthObjP->GlobalValues[i][0] == M_FST)
{
FST_valP v = (FST_valP)(SynthObjP->GlobalValues[i]);
if (v->type & FST_POP)
signalcount--;
}
// check stack undeflow
if (signalcount < 0)
{
valid = 0;
Go4kVSTi_ClearGlobalWorkspace();
for (int j = i; j < MAX_SLOTS; j++)
for (int j = i; j < MAX_UNITS; j++)
{
char txt[10];
sprintf(txt, "%d", signalcount);
@ -2511,7 +2767,7 @@ void UpdateSignalCount(int channel)
{
valid = 0;
Go4kVSTi_ClearGlobalWorkspace();
for (int j = i; j < MAX_SLOTS; j++)
for (int j = i; j < MAX_UNITS; j++)
{
char txt[10];
sprintf(txt, "%d", signalcount);
@ -2545,6 +2801,7 @@ void UpdateSignalCount(int channel)
SetWindowText(GetDlgItem(DialogWnd, IDC_GSTACK_VALID), "Signal INVALID! Signal Count != 0 after last unit");
}
}
SynthObjP->HighestSlotIndex[16] = highestSlotIndex;
}
void UpdateControls(int channel)
@ -2552,8 +2809,9 @@ void UpdateControls(int channel)
int res;
UpdateSignalCount(channel);
SetDlgItemText(DialogWnd, IDC_INSTRUMENT_NAME, (LPSTR)&(SynthObjP->InstrumentNames[channel]));
SendDlgItemMessage(DialogWnd, IDC_INSTRUMENTLINK, CB_SETCURSEL, (WPARAM)LinkToInstrument[SelectedInstrument], (LPARAM)0);
SendDlgItemMessage(DialogWnd, IDC_POLYPHONY, CB_SETCURSEL, (WPARAM)(SynthObjP->Polyphony-1), (LPARAM)0);
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
// set unit text
char unitname[128];
@ -2562,8 +2820,8 @@ void UpdateControls(int channel)
GetUnitString(SynthObjP->GlobalValues[i], unitname);
SetWindowText(GetDlgItem(TabWnd[T_GLOBAL], IDC_GSTACK_UNIT1+i*6), unitname);
}
InterleavedButtonGroupChanged(IDC_ISTACK_UNIT1, MAX_SLOTS, IDC_ISTACK_UNIT1+SelectedIUnit*6, res);
InterleavedButtonGroupChanged(IDC_GSTACK_UNIT1, MAX_SLOTS, IDC_GSTACK_UNIT1+SelectedGUnit*6, res);
InterleavedButtonGroupChanged(IDC_ISTACK_UNIT1, MAX_UNITS, IDC_ISTACK_UNIT1+SelectedIUnit*6, res);
InterleavedButtonGroupChanged(IDC_GSTACK_UNIT1, MAX_UNITS, IDC_GSTACK_UNIT1+SelectedGUnit*6, res);
UpdateModuleParamWindow(SelectedTab, -1);
}
@ -2615,8 +2873,6 @@ void UpdateModule(int uid, BYTE* val)
if (v->flags & VCO_SINE)
{
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_SINE), false);
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_COLOR), false);
EnableWindow(GetDlgItem(ModuleWnd[M_VCO], IDC_VCO_COLOR_VAL), false);
}
else if (v->flags & VCO_TRISAW)
{
@ -2652,6 +2908,7 @@ void UpdateModule(int uid, BYTE* val)
WORD gatebits = ((WORD)v->color << 8) | (WORD)v->gate;
SetCheckboxGroupBitmask(IDC_VCO_GATE1, IDC_VCO_GATE16, M_VCO, gatebits);
SendDlgItemMessage(ModuleWnd[M_VCO], IDC_VCO_LFO, BM_SETCHECK, v->flags & VCO_LFO, 0);
SendDlgItemMessage(ModuleWnd[M_VCO], IDC_VCO_STEREO, BM_SETCHECK, v->flags & VCO_STEREO, 0);
}
else if (uid == M_VCF)
{
@ -2663,18 +2920,22 @@ void UpdateModule(int uid, BYTE* val)
// buttons
DisableButtonGroup(IDC_VCF_LOW, IDC_VCF_ALL, M_VCF);
if (v->type == VCF_LOWPASS)
int mode = v->type & ~VCF_STEREO;
if (mode == VCF_LOWPASS)
EnableWindow(GetDlgItem(ModuleWnd[M_VCF], IDC_VCF_LOW), false);
else if (v->type == VCF_HIGHPASS)
else if (mode == VCF_HIGHPASS)
EnableWindow(GetDlgItem(ModuleWnd[M_VCF], IDC_VCF_HIGH), false);
else if (v->type == VCF_BANDPASS)
else if (mode == VCF_BANDPASS)
EnableWindow(GetDlgItem(ModuleWnd[M_VCF], IDC_VCF_BAND), false);
else if (v->type == VCF_BANDSTOP)
else if (mode == VCF_BANDSTOP)
EnableWindow(GetDlgItem(ModuleWnd[M_VCF], IDC_VCF_NOTCH), false);
else if (v->type == VCF_PEAK)
else if (mode == VCF_PEAK)
EnableWindow(GetDlgItem(ModuleWnd[M_VCF], IDC_VCF_PEAK), false);
else if (v->type == VCF_ALLPASS)
else if (mode == VCF_ALLPASS)
EnableWindow(GetDlgItem(ModuleWnd[M_VCF], IDC_VCF_ALL), false);
SendDlgItemMessage(ModuleWnd[M_VCF], IDC_VCF_STEREO, BM_SETCHECK, v->type & VCF_STEREO, 0);
}
else if (uid == M_DST)
{
@ -2683,6 +2944,7 @@ void UpdateModule(int uid, BYTE* val)
InitSliderCenter(ModuleWnd[uid], IDC_DST_DRIVE, 0, 128, v->drive);
// snhfreq
InitSlider(ModuleWnd[uid], IDC_DST_SNH, 0, 128, v->snhfreq);
SendDlgItemMessage(ModuleWnd[M_DST], IDC_DST_STEREO, BM_SETCHECK, v->stereo & VCF_STEREO, 0);
}
else if (uid == M_DLL)
{
@ -2751,7 +3013,7 @@ void UpdateModule(int uid, BYTE* val)
else if (uid == M_FOP)
{
FOP_valP v = (FOP_valP)val;
DisableButtonGroup(IDC_FOP_POP, IDC_FOP_LOADNOTE, M_FOP);
DisableButtonGroup(IDC_FOP_POP, IDC_FOP_MULP2, M_FOP);
EnableWindow(GetDlgItem(ModuleWnd[M_FOP], IDC_FOP_POP + v->flags-FOP_POP), false);
}
else if (uid == M_FST)
@ -2795,10 +3057,10 @@ void UpdateModule(int uid, BYTE* val)
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0);
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_ADDSTRING, (WPARAM)0, (LPARAM)"- Nothing Selected -");
for (int i = 0; i < MAX_SLOTS; i++)
for (int i = 0; i < MAX_UNITS; i++)
{
char unitname[128], unitname2[128];
sprintf(unitname, "%d: %s", i+1, GetUnitString(&units[i*MAX_SLOT_VALUES], unitname2));
sprintf(unitname, "%d: %s", i+1, GetUnitString(&units[i*MAX_UNIT_SLOTS], unitname2));
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_ADDSTRING, (WPARAM)0, (LPARAM)unitname);
}
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_UNIT, CB_SETCURSEL, (WPARAM)(v->dest_unit+1), (LPARAM)0);
@ -2814,13 +3076,22 @@ void UpdateModule(int uid, BYTE* val)
else
{
EnableWindow(GetDlgItem(ModuleWnd[M_FST], IDC_FST_DESTINATION_SLOT), true);
DWORD unitid = units[v->dest_unit*MAX_SLOT_VALUES];
DWORD unitid = units[v->dest_unit*MAX_UNIT_SLOTS];
for (int i = 0; i < 8; i++)
{
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_SLOT, CB_ADDSTRING, (WPARAM)0, (LPARAM)UnitModulationTargetNames[unitid][i]);
}
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_DESTINATION_SLOT, CB_SETCURSEL, (WPARAM)(v->dest_slot+1), (LPARAM)0);
}
// buttons
DisableButtonGroup(IDC_FST_SET, IDC_FST_MUL, M_FST);
if (v->type & FST_ADD)
EnableWindow(GetDlgItem(ModuleWnd[M_FST], IDC_FST_ADD), false);
else if (v->type & FST_MUL)
EnableWindow(GetDlgItem(ModuleWnd[M_FST], IDC_FST_MUL), false);
else
EnableWindow(GetDlgItem(ModuleWnd[M_FST], IDC_FST_SET), false);
SendDlgItemMessage(ModuleWnd[M_FST], IDC_FST_POP, BM_SETCHECK, v->type & FST_POP, 0);
}
else if (uid == M_PAN)
{
@ -2961,7 +3232,11 @@ void GetStreamFileName()
{'4','k','l','a','n','g',' ','I','n','c','l','u','d','e', 0 ,
'*','.','i','n','c', 0,
0};
#ifdef _4KLANG2
char lpstrFile[4096] = "4klang2.inc";
#else
char lpstrFile[4096] = "4klang.inc";
#endif
char lpstrDirectory[4096];
GetCurrentDirectory(4096, lpstrDirectory);

View File

@ -58,7 +58,7 @@ void Go4kVSTi::processAnyhow(float **inputs, float **outputs, long sampleFrames)
VstTimeInfo* myTime = getTimeInfo ( kVstTempoValid );
Go4kVSTi_SetBPM(myTime->tempo);
bpmCheck = 20; // only check every 20th call of this function (bpm shouldnt change that often)
}
}
bpmCheck--;
int start = 0;
@ -66,7 +66,7 @@ void Go4kVSTi::processAnyhow(float **inputs, float **outputs, long sampleFrames)
if (m_currentEvents.size() > 0)
{
// for all events
for (unsigned int i = 0; i < m_currentEvents.size(); i++)
for (unsigned int i = 0; i < m_currentEvents.size(); i++)
{
// process samples until next event
int todo = m_currentEvents[i]->deltaFrames - start;

View File

@ -47,7 +47,12 @@ go4k_synth_wrk resb go4k_synth.size
global _go4k_delay_buffer_ofs
_go4k_delay_buffer_ofs resd 1
global _go4k_delay_buffer
_go4k_delay_buffer resd 117*go4kDLL_wrk.size
_go4k_delay_buffer resd 16*16*go4kDLL_wrk.size
%ifdef AUTHORING
global __4klang_current_tick
__4klang_current_tick resd 0
%endif
%ifdef GO4K_USE_ENVELOPE_RECORDINGS
global __4klang_envelope_buffer
@ -130,10 +135,12 @@ section .text
%endif
export_func FloatRandomNumber@0
push eax
imul eax,dword [_RandSeed],16007
mov dword [_RandSeed], eax
fild dword [_RandSeed]
fidiv dword [c_RandDiv]
pop eax
ret
; //========================================================================================
@ -279,8 +286,7 @@ go4kENV_func_do:
mov eax, dword [ecx-8] ; // is the instrument in release mode (note off)?
test eax, eax
je go4kENV_func_process
mov al, ENV_STATE_RELEASE
mov dword [WRK+go4kENV_wrk.state], eax
mov dword [WRK+go4kENV_wrk.state], ENV_STATE_RELEASE
go4kENV_func_process:
mov eax, dword [WRK+go4kENV_wrk.state]
fld dword [WRK+go4kENV_wrk.level] ; // val -
@ -384,8 +390,13 @@ section .g4kcods code align=1
section .text
%endif
go4kVCO_sine:
fxch ; // p c
fstp st1 ; // p
fucomi st1 ; // c p
jnc short go4kVCO_func_sine_do
fstp st1
fsub st0, st0 ; // 0
ret
go4kVCO_func_sine_do
fdivp st1, st0 ; // p/c
fldpi ; // pi p
fadd st0 ; // 2*pi p
fmulp st1, st0 ; // 2*pi*p
@ -462,11 +473,28 @@ export_func go4kVCO_func@0
mov eax, dword [ecx-4]
test eax, eax
jne go4kVCO_func_do
%ifdef GO4K_USE_VCO_STEREO
movzx eax, byte [VAL-1] ; // get flags and check for stereo
test al, byte VCO_STEREO
jz short go4kVCO_func_nostereoout
fldz
go4kVCO_func_nostereoout:
%endif
fldz
ret
go4kVCO_func_do:
%endif
movzx eax, byte [VAL-1] ; // get flags
%ifdef GO4K_USE_VCO_STEREO
test al, byte VCO_STEREO
jz short go4kVCO_func_nopswap
fld dword [WRK+go4kVCO_wrk.phase] ;// swap left/right phase values for first stereo run
fld dword [WRK+go4kVCO_wrk.phase2]
fstp dword [WRK+go4kVCO_wrk.phase]
fstp dword [WRK+go4kVCO_wrk.phase2]
go4kVCO_func_nopswap:
%endif
go4kVCO_func_process:
fld dword [edx+go4kVCO_val.transpose]
fsub dword [c_0_5]
%ifdef GO4K_USE_VCO_MOD_TM
@ -476,6 +504,12 @@ go4kVCO_func_do:
fld dword [edx+go4kVCO_val.detune]
fsub dword [c_0_5]
fadd st0
%ifdef GO4K_USE_VCO_STEREO
test al, byte VCO_STEREO
jz short go4kVCO_func_nodswap
fchs ;// negate detune for stereo
go4kVCO_func_nodswap:
%endif
faddp st1
%ifdef GO4K_USE_VCO_MOD_DM
fadd dword [WRK+go4kVCO_wrk.dm]
@ -562,6 +596,18 @@ go4kVCO_func_end:
fadd dword [WRK+go4kVCO_wrk.gm]
%endif
fmulp st1, st0
%ifdef GO4K_USE_VCO_STEREO
test al, byte VCO_STEREO
jz short go4kVCO_func_stereodone
sub al, byte VCO_STEREO
fld dword [WRK+go4kVCO_wrk.phase] ;// swap left/right phase values again for second stereo run
fld dword [WRK+go4kVCO_wrk.phase2]
fstp dword [WRK+go4kVCO_wrk.phase]
fstp dword [WRK+go4kVCO_wrk.phase2]
jmp go4kVCO_func_process
go4kVCO_func_stereodone:
%endif
ret
%ifdef USE_SECTIONS
@ -590,16 +636,31 @@ export_func go4kVCF_func@0
go4kVCF_func_do:
%endif
movzx eax, byte [VAL-1] ; // get type flag
fld dword [edx+go4kVCF_val.res] ; // r in
%ifdef GO4K_USE_VCF_MOD_RM
fadd dword [WRK+go4kVCF_wrk.rm]
%endif
fld dword [edx+go4kVCF_val.freq] ; // f r in
%endif
fstp dword [esp-8]
fld dword [edx+go4kVCF_val.freq] ; // f in
%ifdef GO4K_USE_VCF_MOD_FM
fadd dword [WRK+go4kVCF_wrk.fm]
%endif
fmul st0, st0 ; // square the input so we never get negative and also have a smoother behaviour in the lower frequencies
fst dword [WRK+go4kVCF_wrk.freq] ; // f r in
fstp dword [esp-4] ; // in
%ifdef GO4K_USE_VCF_STEREO
test al, byte STEREO
jz short go4kVCF_func_process
add WRK, go4kVCF_wrk.low2
go4kVCF_func_stereoloop: ; // switch channels
fxch st1 ; // inr inl
%endif
go4kVCF_func_process:
fld dword [esp-8]
fld dword [esp-4]
fmul dword [WRK+go4kVCF_wrk.band] ; // f*b r in
fadd dword [WRK+go4kVCF_wrk.low] ; // l' r in
fst dword [WRK+go4kVCF_wrk.low] ; // l' r in
@ -607,7 +668,7 @@ go4kVCF_func_do:
fmul dword [WRK+go4kVCF_wrk.band] ; // r*b in-l'
fsubp st1, st0 ; // h'
fst dword [WRK+go4kVCF_wrk.high] ; // h'
fmul dword [WRK+go4kVCF_wrk.freq] ; // h'*f
fmul dword [esp-4] ; // h'*f
fadd dword [WRK+go4kVCF_wrk.band] ; // b'
fstp dword [WRK+go4kVCF_wrk.band]
fldz
@ -630,15 +691,21 @@ go4kVCF_func_band:
go4kVCF_func_peak:
%ifdef GO4K_USE_VCF_PEAK
test al, byte PEAK
jz short go4kVCF_func_end
jz short go4kVCF_func_processdone
fadd dword [WRK+go4kVCF_wrk.low]
fsub dword [WRK+go4kVCF_wrk.high]
%endif
go4kVCF_func_processdone:
%ifdef GO4K_USE_VCF_STEREO
test al, byte STEREO ; // outr inl
jz short go4kVCF_func_end
sub al, byte STEREO
sub WRK, go4kVCF_wrk.low2
jmp go4kVCF_func_stereoloop
%endif
go4kVCF_func_end: ; // value - - - -
%ifdef GO4K_USE_UNDENORMALIZE
fadd dword [c_0_5] ; add and sub small offset to prevent denormalization
fsub dword [c_0_5]
%endif
ret
%ifdef USE_SECTIONS
@ -658,10 +725,18 @@ section .text
export_func go4kDST_func@0
%ifdef GO4K_USE_DST
%ifdef GO4K_USE_DST_SH
push 2
%else
push 1
%endif
%ifdef GO4K_USE_DST_STEREO
push 3
%else
push 2
%endif
%else
%ifdef GO4K_USE_DST_STEREO
push 2
%else
push 1
%endif
%endif
call go4kTransformValues
%ifdef GO4K_USE_DST_CHECK
; check if current note still active
@ -671,6 +746,7 @@ export_func go4kDST_func@0
ret
go4kDST_func_do:
%endif
movzx eax, byte [VAL-1] ; // get type flag
%ifdef GO4K_USE_DST_SH
fld dword [edx+go4kDST_val.snhfreq] ; // snh in
%ifdef GO4K_USE_DST_MOD_SH
@ -688,6 +764,21 @@ go4kDST_func_do:
fstp dword [WRK+go4kDST_wrk.snhphase]; // in
%endif
; // calc pregain and postgain
%ifdef GO4K_USE_DST_STEREO
test al, byte STEREO ; // outr inl
jz short go4kDST_func_mono
fxch st1 ; // inr inl
fld dword [edx+go4kDST_val.drive] ; // drive inr inl
%ifdef GO4K_USE_DST_MOD_DM
fadd dword [WRK+go4kDST_wrk.dm]
%endif
call go4kWaveshaper ; // outr inl
%ifdef GO4K_USE_DST_SH
fst dword [WRK+go4kDST_wrk.out2] ; // outr inl
%endif
fxch st1 ; // inl outr
go4kDST_func_mono:
%endif
fld dword [edx+go4kDST_val.drive] ; // drive in
%ifdef GO4K_USE_DST_MOD_DM
fadd dword [WRK+go4kDST_wrk.dm]
@ -701,6 +792,12 @@ go4kDST_func_do:
go4kDST_func_hold:
fstp st0 ; // in
fstp st0
%ifdef GO4K_USE_DST_STEREO
test al, byte STEREO ; // outr inl
jz short go4kDST_func_monohold
fld dword [WRK+go4kDST_wrk.out2] ; // out2
go4kDST_func_monohold:
%endif
fld dword [WRK+go4kDST_wrk.out] ; // out
ret
%endif
@ -953,26 +1050,22 @@ go4kFOP_func_mul:
jnz go4kFOP_func_addp2
fmul st1
ret
%ifdef GO4K_USE_FOP_LOADNOTE
go4kFOP_func_addp2:
dec eax
jnz go4kFOP_func_loadnote
faddp st2, st0
faddp st2, st0
ret
go4kFOP_func_loadnote:
go4kFOP_func_loadnote:
dec eax
jnz go4kFOP_func_mulp2
fild dword [ecx-4]
fmul dword [c_i128]
ret
%else
go4kFOP_func_addp2:
dec eax
jnz go4kFOP_func_dummy+1 ; // now this is no valid jump address (just to please the packer) but if we run in that case we're fucked up anyway
faddp st2, st0
go4kFOP_func_dummy:
faddp st2, st0
ret
%endif
go4kFOP_func_mulp2:
fmulp st2, st0
fmulp st2, st0
ret
%ifdef USE_SECTIONS
section .g4kcodh code align=1
@ -989,13 +1082,23 @@ section .text
; // DIRTY :
; //----------------------------------------------------------------------------------------
export_func go4kFST_func@0
push 2
push 1
call go4kTransformValues
fld dword [edx+go4kFST_val.amount]
fsub dword [c_0_5]
fadd st0
fmul st1
fstp dword [ecx+eax*4] ; // eax already contains the destination from the go4kTransformValues call
lodsw
and eax, 0x00003fff ; // eax is destination slot
test word [VAL-2], FST_ADD
jz go4kFST_func_set
fadd dword [ecx+eax*4]
go4kFST_func_set:
fstp dword [ecx+eax*4]
test word [VAL-2], FST_POP
jz go4kFST_func_done
fstp st0
go4kFST_func_done:
ret
%ifdef USE_SECTIONS
@ -1041,30 +1144,39 @@ section .text
; // DIRTY :
; //----------------------------------------------------------------------------------------
export_func go4kFSTG_func@0
push 5
push 1
call go4kTransformValues
%ifdef GO4K_USE_FSTG_CHECK
; check if current note still active
mov eax, dword [ecx-4]
test eax, eax
jne go4kFSTG_func_do
ret
lodsw
jmp go4kFSTG_func_testpop
go4kFSTG_func_do:
%endif
fld dword [edx+go4kFST_val.amount]
fsub dword [c_0_5]
fadd st0
fmul st1
mov eax, dword [VAL-4]
fmul st1
lodsw
and eax, 0x00003fff ; // eax is destination slot
test word [VAL-2], FST_ADD
jz go4kFSTG_func_set
fadd dword [go4k_synth_wrk+eax*4]
go4kFSTG_func_set:
%if MAX_VOICES > 1
fst dword [go4k_synth_wrk+eax]
fstp dword [go4k_synth_wrk+eax+go4k_instrument.size]
fst dword [go4k_synth_wrk+eax*4]
fstp dword [go4k_synth_wrk+eax*4+go4k_instrument.size]
%else
fstp dword [go4k_synth_wrk+eax]
%endif
ret
fstp dword [go4k_synth_wrk+eax*4]
%endif
go4kFSTG_func_testpop:
test word [VAL-2], FST_POP
jz go4kFSTG_func_done
fstp st0
go4kFSTG_func_done:
ret
%endif
%ifdef USE_SECTIONS
@ -1117,7 +1229,7 @@ export_func go4kOUT_func@0 ;// l r
push 2
call go4kTransformValues
pushad
lea edi, [ecx+256*4]
lea edi, [ecx+MAX_UNITS*MAX_UNIT_SLOTS*4]
fld st1 ;// r l r
fld st1 ;// l r l r
fld dword [edx+go4kOUT_val.auxsend] ;// as l r l r
@ -1158,13 +1270,13 @@ export_func go4kOUT_func@0 ;// l r
fadd dword [WRK+go4kOUT_wrk.gm] ;// gm l r
%endif
fmulp st1, st0 ;// l' r
fstp dword [ecx+256*4+0] ;// r
fstp dword [ecx+MAX_UNITS*MAX_UNIT_SLOTS*4+0] ;// r
fld dword [edx+go4kOUT_val.gain] ;// g r
%ifdef GO4K_USE_OUT_MOD_GM
fadd dword [WRK+go4kOUT_wrk.gm] ;// gm r
%endif
fmulp st1, st0 ;// r'
fstp dword [ecx+256*4+4] ;// -
fstp dword [ecx+MAX_UNITS*MAX_UNIT_SLOTS*4+4] ;// -
%endif
ret
@ -1248,7 +1360,7 @@ go4kUpdateInstrument_newNote:
%endif
pushad
xor eax, eax
mov ecx, (8+256*4)/4 ; // clear only relase, note and workspace
mov ecx, (8+MAX_UNITS*MAX_UNIT_SLOTS*4)/4 ; // clear only relase, note and workspace
rep stosd
popad
mov dword [edi+4], edx ; // set requested note as current note
@ -1476,6 +1588,9 @@ go4k_render_nogroove:
jl go4k_render_sampleloop
pop ecx
inc ecx
%ifdef AUTHORING
mov dword[__4klang_current_tick], ecx
%endif
cmp ecx, dword MAX_TICKS
jl go4k_render_tickloop
%ifdef GO4K_USE_BUFFER_RECORDINGS
@ -1507,7 +1622,7 @@ go4k_VM_process_loop:
test eax, eax
je go4k_VM_process_done ; // command byte = 0? so done
call dword [eax*4+go4k_synth_commands]
add WRK, MAX_WORKSPACE_SLOTS*4 ; // go to next workspace slot
add WRK, MAX_UNIT_SLOTS*4 ; // go to next workspace slot
jmp short go4k_VM_process_loop
go4k_VM_process_done:
add edi, go4k_instrument.size ; // go to next instrument voice

View File

@ -52,22 +52,24 @@
%define GO4K_USE_VCO_MOD_CM ; // removing this skips color modulation code
%define GO4K_USE_VCO_MOD_GM ; // removing this skips gain modulation code
%define GO4K_USE_VCO_MOD_SM ; // removing this skips shaping modulation code
%define GO4K_USE_VCO_STEREO ; // removing this skips stereo code
%define GO4K_USE_VCF_CHECK ; // removing this skips checks if processing is needed
%define GO4K_USE_VCF_MOD_FM ; // removing this skips frequency modulation code
%define GO4K_USE_VCF_MOD_RM ; // removing this skips resonance modulation code
%define GO4K_USE_VCF_HIGH ; // removing this skips code for high output
%define GO4K_USE_VCF_BAND ; // removing this skips code for band output
%define GO4K_USE_VCF_PEAK ; // removing this skips code for peak output
%define GO4K_USE_VCF_STEREO ; // removing this skips code for stereo filter output
%define GO4K_USE_DST_CHECK ; // removing this skips checks if processing is needed
%define GO4K_USE_DST_SH ; // removing this skips sample and hold code
%define GO4K_USE_DST_MOD_DM ; // removing this skips distortion modulation code
%define GO4K_USE_DST_MOD_SH ; // removing this skips sample and hold modulation code
%define GO4K_USE_DST_STEREO ; // removing this skips stereo processing
%define GO4K_USE_DLL_NOTE_SYNC ; // removing this will skip delay length adjusting code (karplus strong)
%define GO4K_USE_DLL_CHORUS ; // removing this will skip delay chorus/flanger code
%define GO4K_USE_DLL_CHORUS_CLAMP ; // removing this will skip chorus lfo phase clamping
%define GO4K_USE_DLL_DAMP ; // removing this will skip dll damping code
%define GO4K_USE_DLL_DC_FILTER ; // removing this will skip dll dc offset removal code
%define GO4K_USE_FOP_LOADNOTE ; // removing this will skip load note code
%define GO4K_USE_FSTG_CHECK ; // removing this skips checks if processing is needed
%define GO4K_USE_PAN_MOD ; // removing this will skip panning modulation code
%define GO4K_USE_OUT_MOD_AM ; // removing this skips output aux send modulation code
@ -86,11 +88,12 @@
; // synth defines
; //----------------------------------------------------------------------------------------
%define MAX_DELAY 65536
%define MAX_WORKSPACE_SLOTS 8
%define GO4K_BEGIN_CMDDEF(def_name)
%define GO4K_END_CMDDEF db 0
%define GO4K_BEGIN_PARAMDEF(def_name)
%define GO4K_END_PARAMDEF
%define MAX_UNITS 64
%define MAX_UNIT_SLOTS 16
%define GO4K_BEGIN_CMDDEF(def_name)
%define GO4K_END_CMDDEF db 0
%define GO4K_BEGIN_PARAMDEF(def_name)
%define GO4K_END_PARAMDEF
; //----------------------------------------------------------------------------------------
; // ENV structs
; //----------------------------------------------------------------------------------------
@ -168,6 +171,7 @@ GO4K_VCO_ID equ 2
%define NOISE 0x08
%define LFO 0x10
%define GATE 0x20
%define VCO_STEREO 0x40
struc go4kVCO_val
;// unit paramters
.transpose resd 1
@ -197,6 +201,8 @@ struc go4kVCO_wrk
.cm resd 1
.sm resd 1
.gm resd 1
;// stero variables
.phase2 resd 1
.size
endstruc
; //----------------------------------------------------------------------------------------
@ -214,6 +220,7 @@ GO4K_VCF_ID equ 3
%define BANDSTOP 0x3
%define ALLPASS 0x7
%define PEAK 0x8
%define STEREO 0x10
%define FREQUENCY(val) val
%define RESONANCE(val) val
%define VCFTYPE(val) val
@ -229,38 +236,54 @@ struc go4kVCF_wrk
.low resd 1
.high resd 1
.band resd 1
.freq resd 1
.freq resd 1 ;// unused but kept so modulation target offsets stay same
;// modulation targets
.fm resd 1
.rm resd 1
.rm resd 1
;// stereo variables
.low2 resd 1
.high2 resd 1
.band2 resd 1
.size
endstruc
; //----------------------------------------------------------------------------------------
; // DST structs
; //----------------------------------------------------------------------------------------
GO4K_DST_ID equ 4
%macro GO4K_DST 2
%macro GO4K_DST 3
db %1
%ifdef GO4K_USE_DST_SH
db %2
%endif
%ifdef GO4K_USE_DST_STEREO
db %3
%endif
%else
%ifdef GO4K_USE_DST_STEREO
db %3
%endif
%endif
%endmacro
%define DRIVE(val) val
%define SNHFREQ(val) val
%define FLAGS(val) val
struc go4kDST_val
;// unit paramters
.drive resd 1
%ifdef GO4K_USE_DST_SH
.snhfreq resd 1
%endif
.flags resd 1
.size
endstruc
struc go4kDST_wrk
;// work variables
.out resd 1
.snhphase resd 1
;// modulation targets
.dm resd 1
.sm resd 1
;// stereo variables
.out2 resd 1
.size
endstruc
; //----------------------------------------------------------------------------------------
@ -342,6 +365,7 @@ GO4K_FOP_ID equ 6
%define FOP_MUL 0x7
%define FOP_ADDP2 0x8
%define FOP_LOADNOTE 0x9
%define FOP_MULP2 0xa
struc go4kFOP_val
.flags resd 1
.size
@ -355,10 +379,13 @@ endstruc
GO4K_FST_ID equ 7
%macro GO4K_FST 2
db %1
db %2
dw %2
%endmacro
%define AMOUNT(val) val
%define DEST(val) val
%define FST_SET 0x0000
%define FST_ADD 0x4000
%define FST_POP 0x8000
struc go4kFST_val
.amount resd 1
.op1 resd 1
@ -455,7 +482,7 @@ endstruc
GO4K_FSTG_ID equ 12
%macro GO4K_FSTG 2
db %1
dd %2
dw %2
%endmacro
struc go4kFSTG_val
.amount resd 1
@ -472,7 +499,7 @@ endstruc
struc go4k_instrument
.release resd 1
.note resd 1
.workspace resd 256
.workspace resd MAX_UNITS*MAX_UNIT_SLOTS
.dlloutl resd 1
.dlloutr resd 1
.outl resd 1
@ -723,18 +750,18 @@ section .data
go4k_synth_parameter_values
GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_ENV ATTAC(72),DECAY(96),SUSTAIN(96),RELEASE(88),GAIN(128)
GO4K_FST AMOUNT(64),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(64),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(60),PHASE(32),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(PULSE)
GO4K_VCO TRANSPOSE(64),DETUNE(72),PHASE(32),GATES(0),COLOR(96),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(96),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(2*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(61),DEST(3*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(68),DEST(2*MAX_UNIT_SLOTS+2)
GO4K_FST AMOUNT(61),DEST(3*MAX_UNIT_SLOTS+2)
GO4K_FOP OP(FOP_POP)
GO4K_FOP OP(FOP_ADDP)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(26),RESONANCE(128),VCFTYPE(PEAK)
GO4K_VCF FREQUENCY(64),RESONANCE(64),VCFTYPE(LOWPASS)
GO4K_DST DRIVE(104), SNHFREQ(128)
GO4K_DST DRIVE(104), SNHFREQ(128), FLAGS(0)
GO4K_PAN PANNING(64)
GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1)
GO4K_FOP OP(FOP_XCH)
@ -744,18 +771,18 @@ GO4K_BEGIN_PARAMDEF(Instrument0)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument1)
GO4K_ENV ATTAC(72),DECAY(96),SUSTAIN(96),RELEASE(88),GAIN(128)
GO4K_FST AMOUNT(64),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(64),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(60),PHASE(32),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_VCO TRANSPOSE(64),DETUNE(72),PHASE(32),GATES(0),COLOR(96),SHAPE(112),GAIN(64),FLAGS(SINE)
GO4K_VCO TRANSPOSE(80),DETUNE(112),PHASE(0),GATES(0),COLOR(64),SHAPE(16),GAIN(128),FLAGS(PULSE|LFO)
GO4K_FST AMOUNT(68),DEST(2*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(68),DEST(2*MAX_UNIT_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_UNIT_SLOTS+2)
GO4K_FOP OP(FOP_POP)
GO4K_FOP OP(FOP_ADDP)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(80),RESONANCE(24),VCFTYPE(LOWPASS)
GO4K_VCF FREQUENCY(48),RESONANCE(24),VCFTYPE(HIGHPASS)
GO4K_DST DRIVE(64), SNHFREQ(128)
GO4K_DST DRIVE(64), SNHFREQ(128), FLAGS(0)
GO4K_PAN PANNING(64)
GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1)
GO4K_FOP OP(FOP_XCH)
@ -765,18 +792,18 @@ GO4K_BEGIN_PARAMDEF(Instrument1)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument2)
GO4K_ENV ATTAC(32),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(64)
GO4K_FST AMOUNT(120),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(120),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(32),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(PULSE)
GO4K_VCO TRANSPOSE(64),DETUNE(72),PHASE(32),GATES(0),COLOR(96),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(96),GAIN(128),FLAGS(SINE|LFO)
GO4K_FST AMOUNT(68),DEST(2*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(68),DEST(2*MAX_UNIT_SLOTS+2)
GO4K_FST AMOUNT(60),DEST(3*MAX_UNIT_SLOTS+2)
GO4K_FOP OP(FOP_POP)
GO4K_FOP OP(FOP_ADDP)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(18),RESONANCE(64),VCFTYPE(PEAK)
GO4K_VCF FREQUENCY(32),RESONANCE(48),VCFTYPE(LOWPASS)
GO4K_DST DRIVE(88), SNHFREQ(128)
GO4K_DST DRIVE(88), SNHFREQ(128), FLAGS(0)
GO4K_PAN PANNING(64)
GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1)
GO4K_FOP OP(FOP_XCH)
@ -786,7 +813,7 @@ GO4K_BEGIN_PARAMDEF(Instrument2)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument3)
GO4K_ENV ATTAC(0),DECAY(76),SUSTAIN(0),RELEASE(0),GAIN(32)
GO4K_FST AMOUNT(128),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(64),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(NOISE)
GO4K_FOP OP(FOP_MULP)
GO4K_VCF FREQUENCY(80),RESONANCE(128),VCFTYPE(LOWPASS)
@ -795,10 +822,10 @@ GO4K_BEGIN_PARAMDEF(Instrument3)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument4)
GO4K_ENV ATTAC(0),DECAY(64),SUSTAIN(96),RELEASE(64),GAIN(128)
GO4K_FST AMOUNT(128),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_ENV ATTAC(0),DECAY(70),SUSTAIN(0),RELEASE(0),GAIN(128)
GO4K_DST DRIVE(32), SNHFREQ(128)
GO4K_FST AMOUNT(80),DEST(6*MAX_WORKSPACE_SLOTS+1)
GO4K_DST DRIVE(32), SNHFREQ(128), FLAGS(0)
GO4K_FST AMOUNT(80),DEST(6*MAX_UNIT_SLOTS+1)
GO4K_FOP OP(FOP_POP)
GO4K_VCO TRANSPOSE(46),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW)
GO4K_FOP OP(FOP_MULP)
@ -819,10 +846,10 @@ GO4K_BEGIN_PARAMDEF(Instrument5)
GO4K_END_PARAMDEF
GO4K_BEGIN_PARAMDEF(Instrument6)
GO4K_ENV ATTAC(0),DECAY(72),SUSTAIN(0),RELEASE(72),GAIN(128)
GO4K_FST AMOUNT(128),DEST(0*MAX_WORKSPACE_SLOTS+2)
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2)
GO4K_ENV ATTAC(0),DECAY(56),SUSTAIN(0),RELEASE(0),GAIN(128)
GO4K_FST AMOUNT(108),DEST(6*MAX_WORKSPACE_SLOTS+1)
GO4K_FST AMOUNT(72),DEST(7*MAX_WORKSPACE_SLOTS+1)
GO4K_FST AMOUNT(108),DEST(6*MAX_UNIT_SLOTS+1)
GO4K_FST AMOUNT(72),DEST(7*MAX_UNIT_SLOTS+1)
GO4K_FOP OP(FOP_POP)
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(32),GAIN(64),FLAGS(SINE)
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(80),GAIN(64),FLAGS(SINE)
@ -850,8 +877,8 @@ GO4K_BEGIN_PARAMDEF(Instrument8)
GO4K_ENV ATTAC(0),DECAY(0),SUSTAIN(128),RELEASE(0),GAIN(128)
GO4K_VCO TRANSPOSE(48),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO)
GO4K_FOP OP(FOP_MULP)
GO4K_FSTG AMOUNT(72),DEST(2*go4k_instrument.size*MAX_VOICES+10*MAX_WORKSPACE_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FSTG AMOUNT(66),DEST(1*go4k_instrument.size*MAX_VOICES+10*MAX_WORKSPACE_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FSTG AMOUNT(72),DEST(2*go4k_instrument.size*MAX_VOICES+10*MAX_UNIT_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FSTG AMOUNT(66),DEST(1*go4k_instrument.size*MAX_VOICES+10*MAX_UNIT_SLOTS*4+4*4+go4k_instrument.workspace)
GO4K_FOP OP(FOP_POP)
GO4K_END_PARAMDEF
;// global parameters

View File

@ -16,10 +16,8 @@
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
@ -37,7 +35,7 @@ IDR_ASM_RES BINARY "4klang.bin"
IDD_GO4KVSTIDIALOG DIALOGEX 0, 0, 594, 341
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Alcatraz - 4klang Synth Plugin - Version 3.0.1"
CAPTION "Alcatraz - 4klang Synth Plugin - Version 3.11"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "Load Patch Data",IDC_LOAD_PATCH,13,13,70,14
@ -46,9 +44,9 @@ BEGIN
PUSHBUTTON "Load Instrument",IDC_LOAD_INSTRUMENT,13,31,70,14
PUSHBUTTON "Save Instrument",IDC_SAVE_INSTRUMENT,85,31,70,14
PUSHBUTTON "Reset Instrument",IDC_RESET_INSTRUMENT,157,31,70,14
LTEXT "Instrument Name",IDC_STATIC,242,33,56,8
LTEXT "Instrument Name",IDC_STATIC,242,31,56,8
LTEXT "Instrument",IDC_STATIC,242,17,36,8
EDITTEXT IDC_INSTRUMENT_NAME,301,30,84,14,ES_AUTOHSCROLL
EDITTEXT IDC_INSTRUMENT_NAME,301,28,84,14,ES_AUTOHSCROLL
COMBOBOX IDC_INSTRUMENT,301,14,85,184,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
LTEXT "0",IDC_VOICECOUNT1,333,322,14,12,0,WS_EX_STATICEDGE
LTEXT "0",IDC_VOICECOUNT2,349,322,14,12,0,WS_EX_STATICEDGE
@ -76,7 +74,7 @@ BEGIN
CONTROL "",IDC_MAINTAB,"SysTabControl32",0x0,7,53,266,281
GROUPBOX "Load/Save",IDC_STATIC,7,3,225,47
PUSHBUTTON "PANIC!",IDC_PANIC,278,288,309,29
GROUPBOX "Instrument Properties",IDC_STATIC,237,3,195,47
GROUPBOX "Instrument Properties",IDC_STATIC,237,3,195,57
COMBOBOX IDC_POLYPHONY,333,270,71,97,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
LTEXT "Polyphony",IDC_STATIC,278,272,34,8
LTEXT "Pattern",IDC_STATIC,450,41,25,8
@ -96,6 +94,8 @@ BEGIN
COMBOBOX IDC_PATTERN_QUANT,479,51,33,94,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
LTEXT "Quant.",IDC_STATIC,449,54,24,8
COMBOBOX IDC_OBJFORMAT,515,51,66,72,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
LTEXT "Link To",IDC_STATIC,241,47,23,8
COMBOBOX IDC_INSTRUMENTLINK,301,44,85,184,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
END
IDD_VCO DIALOGEX 0, 0, 300, 170
@ -126,6 +126,7 @@ BEGIN
CTEXT " ",IDC_VCO_SHAPE_VAL,242,112,48,12,SS_SUNKEN
CTEXT " ",IDC_VCO_GAIN_VAL,242,128,48,12,SS_SUNKEN
CONTROL "LFO",IDC_VCO_LFO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,262,29,29,10
CONTROL "Stereo",IDC_VCO_STEREO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,262,16,34,10
PUSHBUTTON "Gate",IDC_VCO_GATE,206,27,50,14
CONTROL " ",IDC_VCO_GATE1,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,43,147,8,10
CONTROL " ",IDC_VCO_GATE2,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,55,147,8,10
@ -151,12 +152,13 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Filter",IDC_STATIC,0,0,299,170
PUSHBUTTON "Low",IDC_VCF_LOW,24,59,42,14,WS_DISABLED
PUSHBUTTON "High",IDC_VCF_HIGH,66,59,41,14
PUSHBUTTON "Band",IDC_VCF_BAND,108,59,41,14
PUSHBUTTON "Notch",IDC_VCF_NOTCH,150,59,41,14
PUSHBUTTON "Peak",IDC_VCF_PEAK,192,59,41,14
PUSHBUTTON "All",IDC_VCF_ALL,234,59,41,14
PUSHBUTTON "Low",IDC_VCF_LOW,5,59,42,14,WS_DISABLED
PUSHBUTTON "High",IDC_VCF_HIGH,47,59,41,14
PUSHBUTTON "Band",IDC_VCF_BAND,89,59,41,14
PUSHBUTTON "Notch",IDC_VCF_NOTCH,131,59,41,14
PUSHBUTTON "Peak",IDC_VCF_PEAK,173,59,41,14
PUSHBUTTON "All",IDC_VCF_ALL,215,59,41,14
CONTROL "Stereo",IDC_VCF_STEREO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,258,62,37,10
CONTROL "",IDC_VCF_FREQUENCY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,79,200,15
CONTROL "",IDC_VCF_RESONANCE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,95,200,15
LTEXT "Frequency",IDC_STATIC,4,82,35,8
@ -232,9 +234,10 @@ BEGIN
CONTROL "",IDC_DST_SNH,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,85,200,15
CTEXT " ",IDC_DST_DRIVE_VAL,242,70,48,12,SS_SUNKEN
CTEXT " ",IDC_DST_SNH_VAL,242,86,48,12,SS_SUNKEN
CONTROL "Stereo",IDC_DST_STEREO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,126,105,37,10
END
IDD_INSTRUMENT_STACK DIALOGEX 0, 0, 247, 320
IDD_INSTRUMENT_STACK DIALOGEX 0, 0, 247, 640
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
@ -364,8 +367,136 @@ BEGIN
CTEXT "1",IDC_ISTACK_SIGNALCOUNT31,225,300,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK_UNIT32,15,310,83,10
PUSHBUTTON "Up",IDC_ISTACK_UP32,165,310,25,10
PUSHBUTTON "Down",IDC_ISTACK_DOWN32,191,310,25,10,NOT WS_VISIBLE
PUSHBUTTON "Down",IDC_ISTACK_DOWN32,191,310,25,10
CTEXT "1",IDC_ISTACK_SIGNALCOUNT32,225,310,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT1,15,320,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP1,165,320,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN1,191,320,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT1,225,320,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT2,15,330,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP2,165,330,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN2,191,330,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT2,225,330,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT3,15,340,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP3,165,340,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN3,191,340,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT3,225,340,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT4,15,350,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP4,165,350,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN4,191,350,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT4,225,350,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT5,15,360,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP5,165,360,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN5,191,360,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT5,225,360,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT6,15,370,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP6,165,370,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN6,191,370,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT6,225,370,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT7,15,380,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP7,165,380,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN7,191,380,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT7,225,380,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT8,15,390,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP8,165,390,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN8,191,390,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT8,225,390,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT9,15,400,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP9,165,400,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN9,191,400,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT9,225,400,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT10,15,410,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP10,165,410,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN10,191,410,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT10,225,410,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT11,15,420,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP11,165,420,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN11,191,420,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT11,225,420,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT12,15,430,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP12,165,430,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN12,191,430,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT12,225,430,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT13,15,440,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP13,165,440,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN13,191,440,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT13,225,440,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT14,15,450,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP14,165,450,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN14,191,450,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT14,225,450,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT15,15,460,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP15,165,460,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN15,191,460,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT15,225,460,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT16,15,470,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP16,165,470,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN16,191,470,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT16,225,470,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT17,15,480,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP17,165,480,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN17,191,480,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT17,225,480,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT18,15,490,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP18,165,490,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN18,191,490,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT18,225,490,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT19,15,500,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP19,165,500,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN19,191,500,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT19,225,500,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT20,15,510,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP20,165,510,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN20,191,510,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT20,225,510,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT21,15,520,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP21,165,520,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN21,191,520,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT21,225,520,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT22,15,530,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP22,165,530,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN22,191,530,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT22,225,530,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT23,15,540,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP23,165,540,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN23,191,540,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT23,225,540,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT24,15,550,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP24,165,550,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN24,191,550,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT24,225,550,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT25,15,560,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP25,165,560,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN25,191,560,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT25,225,560,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT26,15,570,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP26,165,570,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN26,191,570,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT26,225,570,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT27,15,580,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP27,165,580,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN27,191,580,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT27,225,580,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT28,15,590,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP28,165,590,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN28,191,590,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT28,225,590,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT29,15,600,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP29,165,600,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN29,191,600,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT29,225,600,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT30,15,610,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP30,165,610,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN30,191,610,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT30,225,610,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT31,15,620,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP31,165,620,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN31,191,620,25,10
CTEXT "1",IDC_ISTACK__SIGNALCOUNT31,225,620,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_ISTACK__UNIT32,15,630,83,10
PUSHBUTTON "Up",IDC_ISTACK__UP32,165,630,25,10
PUSHBUTTON "Down",IDC_ISTACK__DOWN32,191,630,25,10,NOT WS_VISIBLE
CTEXT "1",IDC_ISTACK__SIGNALCOUNT32,225,630,16,10,SS_SUNKEN
PUSHBUTTON "Set",IDC_ISTACK_SET1,106,0,25,10,NOT WS_VISIBLE
PUSHBUTTON "Clear",IDC_ISTACK_RESET1,132,0,25,10,NOT WS_VISIBLE
PUSHBUTTON "Set",IDC_ISTACK_SET2,106,10,25,10
@ -430,6 +561,70 @@ BEGIN
PUSHBUTTON "Clear",IDC_ISTACK_RESET31,132,300,25,10
PUSHBUTTON "Set",IDC_ISTACK_SET32,106,310,25,10
PUSHBUTTON "Clear",IDC_ISTACK_RESET32,132,310,25,10
PUSHBUTTON "Setl",IDC_ISTACK__SET1,106,320,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET1,132,320,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET2,106,330,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET2,132,330,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET3,106,340,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET3,132,340,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET4,106,350,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET4,132,350,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET5,106,360,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET5,132,360,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET6,106,370,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET6,132,370,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET7,106,380,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET7,132,380,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET8,106,390,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET8,132,390,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET9,106,400,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET9,132,400,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET10,106,410,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET10,132,410,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET11,106,420,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET11,132,420,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET12,106,430,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET12,132,430,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET13,106,440,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET13,132,440,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET14,106,450,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET14,132,450,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET15,106,460,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET15,132,460,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET16,106,470,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET16,132,470,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET17,106,480,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET17,132,480,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET18,106,490,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET18,132,490,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET19,106,500,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET19,132,500,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET20,106,510,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET20,132,510,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET21,106,520,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET21,132,520,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET22,106,530,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET22,132,530,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET23,106,540,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET23,132,540,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET24,106,550,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET24,132,550,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET25,106,560,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET25,132,560,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET26,106,570,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET26,132,570,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET27,106,580,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET27,132,580,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET28,106,590,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET28,132,590,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET29,106,600,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET29,132,600,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET30,106,610,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET30,132,610,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET31,106,620,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET31,132,620,25,10
PUSHBUTTON "Set",IDC_ISTACK__SET32,106,630,25,10
PUSHBUTTON "Clear",IDC_ISTACK__RESET32,132,630,25,10
LTEXT "1:",IDC_STATIC,2,1,10,8
LTEXT "2:",IDC_STATIC,2,11,10,8
LTEXT "3:",IDC_STATIC,2,21,10,8
@ -462,6 +657,38 @@ BEGIN
LTEXT "30:",IDC_STATIC,2,291,10,8
LTEXT "31:",IDC_STATIC,2,301,10,8
LTEXT "32:",IDC_STATIC,2,311,10,8
LTEXT "33:",IDC_STATIC,2,321,10,8
LTEXT "34:",IDC_STATIC,2,331,10,8
LTEXT "35:",IDC_STATIC,2,341,10,8
LTEXT "36:",IDC_STATIC,2,351,10,8
LTEXT "37:",IDC_STATIC,2,361,10,8
LTEXT "38:",IDC_STATIC,2,371,10,8
LTEXT "39:",IDC_STATIC,2,381,10,8
LTEXT "40:",IDC_STATIC,2,391,10,8
LTEXT "41:",IDC_STATIC,2,401,10,8
LTEXT "42:",IDC_STATIC,2,411,10,8
LTEXT "43:",IDC_STATIC,2,421,10,8
LTEXT "44:",IDC_STATIC,2,431,10,8
LTEXT "45:",IDC_STATIC,2,441,10,8
LTEXT "46:",IDC_STATIC,2,451,10,8
LTEXT "47:",IDC_STATIC,2,461,10,8
LTEXT "48:",IDC_STATIC,2,471,10,8
LTEXT "49:",IDC_STATIC,2,481,10,8
LTEXT "50:",IDC_STATIC,2,491,10,8
LTEXT "51:",IDC_STATIC,2,501,10,8
LTEXT "52:",IDC_STATIC,2,511,10,8
LTEXT "53:",IDC_STATIC,2,521,10,8
LTEXT "54:",IDC_STATIC,2,531,10,8
LTEXT "55:",IDC_STATIC,2,541,10,8
LTEXT "56:",IDC_STATIC,2,551,10,8
LTEXT "57:",IDC_STATIC,2,561,10,8
LTEXT "58:",IDC_STATIC,2,571,10,8
LTEXT "59:",IDC_STATIC,2,581,10,8
LTEXT "60:",IDC_STATIC,2,591,10,8
LTEXT "61:",IDC_STATIC,2,601,10,8
LTEXT "62:",IDC_STATIC,2,611,10,8
LTEXT "63:",IDC_STATIC,2,621,10,8
LTEXT "64:",IDC_STATIC,2,631,10,8
END
IDD_FOP DIALOGEX 0, 0, 300, 170
@ -469,30 +696,31 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Floating Point Operation",IDC_STATIC,0,0,299,170
PUSHBUTTON "POP",IDC_FOP_POP,3,50,42,14
PUSHBUTTON "PUSH",IDC_FOP_PUSH,3,33,42,14
PUSHBUTTON "XCH",IDC_FOP_XCH,3,67,42,14
PUSHBUTTON "+",IDC_FOP_ADD,3,84,42,14
PUSHBUTTON "+/POP",IDC_FOP_ADDP,3,101,42,14
PUSHBUTTON "*",IDC_FOP_MUL,3,118,42,14
PUSHBUTTON "*/POP",IDC_FOP_MULP,3,135,42,14
LTEXT "IN: a b c d -> OUT: a a b c d",IDC_STATIC,50,35,232,8
LTEXT "IN: a b c d -> OUT: b c d",IDC_STATIC,50,52,196,8
LTEXT "IN: a b c d -> OUT: b a c d",IDC_STATIC,50,69,214,8
LTEXT "IN: a b c d -> OUT: a+b b c d",IDC_STATIC,50,86,216,8
LTEXT "IN: a b c d -> OUT: a+b c d",IDC_STATIC,50,103,198,8
LTEXT "IN: a b c d -> OUT: a*b b c d",IDC_STATIC,50,120,216,8
LTEXT "IN: a b c d -> OUT: a*b c d",IDC_STATIC,50,137,198,8
PUSHBUTTON "2+/POP",IDC_FOP_ADDP2,3,152,42,14
LTEXT "IN: a b c d -> OUT: a+c b+d",IDC_STATIC,50,155,193,8
GROUPBOX "",IDC_STATIC,0,27,299,22
GROUPBOX "",IDC_STATIC,0,61,299,22
GROUPBOX "",IDC_STATIC,0,95,299,22
GROUPBOX "",IDC_STATIC,0,129,299,23
GROUPBOX "",IDC_STATIC,0,147,299,21
PUSHBUTTON "Load Note",IDC_FOP_LOADNOTE,3,16,42,14
LTEXT "IN: a b c d -> OUT: note a b c d",IDC_STATIC,50,18,233,8
GROUPBOX "",IDC_STATIC,0,10,299,22
PUSHBUTTON "Load Note",IDC_FOP_LOADNOTE,3,11,42,14
PUSHBUTTON "PUSH",IDC_FOP_PUSH,3,27,42,14
PUSHBUTTON "POP",IDC_FOP_POP,3,42,42,14
PUSHBUTTON "XCH",IDC_FOP_XCH,3,58,42,14
PUSHBUTTON "+",IDC_FOP_ADD,3,74,42,14
PUSHBUTTON "+/POP",IDC_FOP_ADDP,3,90,42,14
PUSHBUTTON "*",IDC_FOP_MUL,3,106,42,14
PUSHBUTTON "*/POP",IDC_FOP_MULP,3,122,42,14
PUSHBUTTON "2+/POP",IDC_FOP_ADDP2,3,138,42,14
PUSHBUTTON "2*/POP",IDC_FOP_MULP2,3,154,42,14
LTEXT "IN: a b c d -> OUT: note a b c d",IDC_STATIC,50,13,233,8
LTEXT "IN: a b c d -> OUT: a a b c d",IDC_STATIC,50,29,232,8
LTEXT "IN: a b c d -> OUT: b c d",IDC_STATIC,50,44,196,8
LTEXT "IN: a b c d -> OUT: b a c d",IDC_STATIC,50,60,214,8
LTEXT "IN: a b c d -> OUT: a+b b c d",IDC_STATIC,50,76,216,8
LTEXT "IN: a b c d -> OUT: a+b c d",IDC_STATIC,50,92,198,8
LTEXT "IN: a b c d -> OUT: a*b b c d",IDC_STATIC,50,108,216,8
LTEXT "IN: a b c d -> OUT: a*b c d",IDC_STATIC,50,124,198,8
LTEXT "IN: a b c d -> OUT: a+c b+d",IDC_STATIC,50,141,193,8
LTEXT "IN: a b c d -> OUT: a*c b*d",IDC_STATIC,50,156,193,8
GROUPBOX "",IDC_STATIC,0,133,299,20
GROUPBOX "",IDC_STATIC,0,101,299,20
GROUPBOX "",IDC_STATIC,1,69,299,20
GROUPBOX "",IDC_STATIC,0,37,299,20
GROUPBOX "",IDC_STATIC,0,6,299,20
END
IDD_FST DIALOGEX 0, 0, 300, 170
@ -509,6 +737,10 @@ BEGIN
LTEXT "Unit",IDC_STATIC,6,71,14,8
COMBOBOX IDC_FST_DESTINATION_SLOT,43,85,249,110,CBS_DROPDOWN | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
LTEXT "Slot",IDC_STATIC,5,87,13,8
PUSHBUTTON "Set",IDC_FST_SET,56,122,50,14
PUSHBUTTON "+",IDC_FST_ADD,106,122,50,14
CONTROL "Pop",IDC_FST_POP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,212,124,28,10
PUSHBUTTON "*",IDC_FST_MUL,156,122,50,14,NOT WS_VISIBLE
END
IDD_NONE DIALOGEX 0, 0, 300, 170
@ -532,7 +764,7 @@ BEGIN
CTEXT " ",IDC_OUT_AUXSEND_VAL,242,86,48,12,SS_SUNKEN
END
IDD_GLOBAL_STACK DIALOGEX 0, 0, 247, 320
IDD_GLOBAL_STACK DIALOGEX 0, 0, 247, 640
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
@ -662,8 +894,136 @@ BEGIN
CTEXT "1",IDC_GSTACK_SIGNALCOUNT31,225,300,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK_UNIT32,15,310,83,10
PUSHBUTTON "Up",IDC_GSTACK_UP32,165,310,25,10
PUSHBUTTON "Down",IDC_GSTACK_DOWN32,191,310,25,10,NOT WS_VISIBLE
PUSHBUTTON "Down",IDC_GSTACK_DOWN32,191,310,25,10
CTEXT "1",IDC_GSTACK_SIGNALCOUNT32,225,310,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT1,15,320,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP1,165,320,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN1,191,320,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT1,225,320,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT2,15,330,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP2,165,330,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN2,191,330,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT2,225,330,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT3,15,340,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP3,165,340,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN3,191,340,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT3,225,340,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT4,15,350,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP4,165,350,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN4,191,350,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT4,225,350,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT5,15,360,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP5,165,360,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN5,191,360,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT5,225,360,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT6,15,370,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP6,165,370,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN6,191,370,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT6,225,370,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT7,15,380,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP7,165,380,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN7,191,380,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT7,225,380,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT8,15,390,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP8,165,390,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN8,191,390,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT8,225,390,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT9,15,400,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP9,165,400,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN9,191,400,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT9,225,400,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT10,15,410,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP10,165,410,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN10,191,410,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT10,225,410,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT11,15,420,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP11,165,420,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN11,191,420,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT11,225,420,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT12,15,430,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP12,165,430,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN12,191,430,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT12,225,430,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT13,15,440,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP13,165,440,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN13,191,440,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT13,225,440,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT14,15,450,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP14,165,450,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN14,191,450,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT14,225,450,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT15,15,460,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP15,165,460,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN15,191,460,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT15,225,460,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT16,15,470,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP16,165,470,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN16,191,470,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT16,225,470,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT17,15,480,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP17,165,480,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN17,191,480,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT17,225,480,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT18,15,490,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP18,165,490,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN18,191,490,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT18,225,490,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT19,15,500,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP19,165,500,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN19,191,500,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT19,225,500,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT20,15,510,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP20,165,510,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN20,191,510,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT20,225,510,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT21,15,520,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP21,165,520,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN21,191,520,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT21,225,520,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT22,15,530,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP22,165,530,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN22,191,530,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT22,225,530,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT23,15,540,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP23,165,540,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN23,191,540,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT23,225,540,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT24,15,550,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP24,165,550,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN24,191,550,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT24,225,550,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT25,15,560,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP25,165,560,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN25,191,560,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT25,225,560,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT26,15,570,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP26,165,570,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN26,191,570,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT26,225,570,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT27,15,580,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP27,165,580,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN27,191,580,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT27,225,580,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT28,15,590,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP28,165,590,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN28,191,590,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT28,225,590,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT29,15,600,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP29,165,600,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN29,191,600,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT29,225,600,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT30,15,610,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP30,165,610,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN30,191,610,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT30,225,610,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT31,15,620,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP31,165,620,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN31,191,620,25,10
CTEXT "1",IDC_GSTACK__SIGNALCOUNT31,225,620,16,10,SS_SUNKEN
PUSHBUTTON " ",IDC_GSTACK__UNIT32,15,630,83,10
PUSHBUTTON "Up",IDC_GSTACK__UP32,165,630,25,10
PUSHBUTTON "Down",IDC_GSTACK__DOWN32,191,630,25,10,NOT WS_VISIBLE
CTEXT "1",IDC_GSTACK__SIGNALCOUNT32,225,630,16,10,SS_SUNKEN
PUSHBUTTON "Set",IDC_GSTACK_SET1,106,0,25,10
PUSHBUTTON "Clear",IDC_GSTACK_RESET1,132,0,25,10
PUSHBUTTON "Set",IDC_GSTACK_SET2,106,10,25,10
@ -728,6 +1088,70 @@ BEGIN
PUSHBUTTON "Clear",IDC_GSTACK_RESET31,132,300,25,10
PUSHBUTTON "Set",IDC_GSTACK_SET32,106,310,25,10
PUSHBUTTON "Clear",IDC_GSTACK_RESET32,132,310,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET1,106,320,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET1,132,320,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET2,106,330,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET2,132,330,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET3,106,340,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET3,132,340,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET4,106,350,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET4,132,350,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET5,106,360,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET5,132,360,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET6,106,370,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET6,132,370,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET7,106,380,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET7,132,380,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET8,106,390,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET8,132,390,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET9,106,400,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET9,132,400,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET10,106,410,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET10,132,410,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET11,106,420,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET11,132,420,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET12,106,430,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET12,132,430,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET13,106,440,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET13,132,440,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET14,106,450,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET14,132,450,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET15,106,460,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET15,132,460,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET16,106,470,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET16,132,470,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET17,106,480,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET17,132,480,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET18,106,490,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET18,132,490,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET19,106,500,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET19,132,500,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET20,106,510,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET20,132,510,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET21,106,520,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET21,132,520,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET22,106,530,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET22,132,530,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET23,106,540,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET23,132,540,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET24,106,550,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET24,132,550,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET25,106,560,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET25,132,560,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET26,106,570,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET26,132,570,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET27,106,580,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET27,132,580,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET28,106,590,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET28,132,590,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET29,106,600,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET29,132,600,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET30,106,610,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET30,132,610,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET31,106,620,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET31,132,620,25,10
PUSHBUTTON "Set",IDC_GSTACK__SET32,106,630,25,10
PUSHBUTTON "Clear",IDC_GSTACK__RESET32,132,630,25,10
LTEXT "1:",IDC_STATIC,2,1,10,8
LTEXT "2:",IDC_STATIC,2,11,10,8
LTEXT "3:",IDC_STATIC,2,21,10,8
@ -760,6 +1184,38 @@ BEGIN
LTEXT "30:",IDC_STATIC,2,291,10,8
LTEXT "31:",IDC_STATIC,2,301,10,8
LTEXT "32:",IDC_STATIC,2,311,10,8
LTEXT "33:",IDC_STATIC,2,321,10,8
LTEXT "34:",IDC_STATIC,2,331,10,8
LTEXT "35:",IDC_STATIC,2,341,10,8
LTEXT "36:",IDC_STATIC,2,351,10,8
LTEXT "37:",IDC_STATIC,2,361,10,8
LTEXT "38:",IDC_STATIC,2,371,10,8
LTEXT "39:",IDC_STATIC,2,381,10,8
LTEXT "40:",IDC_STATIC,2,391,10,8
LTEXT "41:",IDC_STATIC,2,401,10,8
LTEXT "42:",IDC_STATIC,2,411,10,8
LTEXT "43:",IDC_STATIC,2,421,10,8
LTEXT "44:",IDC_STATIC,2,431,10,8
LTEXT "45:",IDC_STATIC,2,441,10,8
LTEXT "46:",IDC_STATIC,2,451,10,8
LTEXT "47:",IDC_STATIC,2,461,10,8
LTEXT "48:",IDC_STATIC,2,471,10,8
LTEXT "49:",IDC_STATIC,2,481,10,8
LTEXT "50:",IDC_STATIC,2,491,10,8
LTEXT "51:",IDC_STATIC,2,501,10,8
LTEXT "52:",IDC_STATIC,2,511,10,8
LTEXT "53:",IDC_STATIC,2,521,10,8
LTEXT "54:",IDC_STATIC,2,531,10,8
LTEXT "55:",IDC_STATIC,2,541,10,8
LTEXT "56:",IDC_STATIC,2,551,10,8
LTEXT "57:",IDC_STATIC,2,561,10,8
LTEXT "58:",IDC_STATIC,2,571,10,8
LTEXT "59:",IDC_STATIC,2,581,10,8
LTEXT "60:",IDC_STATIC,2,591,10,8
LTEXT "61:",IDC_STATIC,2,601,10,8
LTEXT "62:",IDC_STATIC,2,611,10,8
LTEXT "63:",IDC_STATIC,2,621,10,8
LTEXT "64:",IDC_STATIC,2,631,10,8
END
IDD_PAN DIALOGEX 0, 0, 300, 170
@ -816,7 +1272,7 @@ END
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
GUIDELINES DESIGNINFO
BEGIN
IDD_GO4KVSTIDIALOG, DIALOG
BEGIN
@ -826,6 +1282,22 @@ BEGIN
BOTTOMMARGIN, 334
END
IDD_VCO, DIALOG
BEGIN
END
IDD_VCF, DIALOG
BEGIN
END
IDD_DST, DIALOG
BEGIN
END
IDD_FST, DIALOG
BEGIN
END
IDD_SET_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
@ -868,13 +1340,11 @@ END
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
@ -901,7 +1371,7 @@ END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -1,6 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "4klang", "Go4kVSTi.vcproj", "{107757EA-2FE1-4C5E-964F-DE7E482E253F}"
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "4klang", "Go4kVSTi.vcxproj", "{107757EA-2FE1-4C5E-964F-DE7E482E253F}"
EndProject
Project("{D3783134-2AE6-4F36-A599-989377222068}") = "4klang2", "Go4kVSTi2.vcxproj", "{FA790F08-0B8E-43D9-A4B4-519AB01B820C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -12,6 +14,10 @@ Global
{107757EA-2FE1-4C5E-964F-DE7E482E253F}.Debug|Win32.Build.0 = Debug|Win32
{107757EA-2FE1-4C5E-964F-DE7E482E253F}.Release|Win32.ActiveCfg = Release|Win32
{107757EA-2FE1-4C5E-964F-DE7E482E253F}.Release|Win32.Build.0 = Release|Win32
{FA790F08-0B8E-43D9-A4B4-519AB01B820C}.Debug|Win32.ActiveCfg = Debug|Win32
{FA790F08-0B8E-43D9-A4B4-519AB01B820C}.Debug|Win32.Build.0 = Debug|Win32
{FA790F08-0B8E-43D9-A4B4-519AB01B820C}.Release|Win32.ActiveCfg = Release|Win32
{FA790F08-0B8E-43D9-A4B4-519AB01B820C}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>4klang</ProjectName>
<ProjectGuid>{107757EA-2FE1-4C5E-964F-DE7E482E253F}</ProjectGuid>
<RootNamespace>Go4kVSTi</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\vsyasm.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\$(ProjectName)\Debug\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\$(ProjectName)\Debug\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\$(ProjectName)\Release\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\$(ProjectName)\Release\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
<EmbedManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</EmbedManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>.\Debug/vstxsynth.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\source\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<StructMemberAlignment>1Byte</StructMemberAlignment>
<BufferSecurityCheck>true</BufferSecurityCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<PrecompiledHeader>
</PrecompiledHeader>
<AssemblerOutput>
</AssemblerOutput>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\Go4kVSTi.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
<PostBuildEvent>
<Command>copy /Y $(TargetPath) C:\VST</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>.\Release/vstxsynth.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\source\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<StructMemberAlignment>1Byte</StructMemberAlignment>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<FloatingPointModel>Fast</FloatingPointModel>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader>
</PrecompiledHeader>
<AssemblerOutput>
</AssemblerOutput>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<CallingConvention>Cdecl</CallingConvention>
<CompileAs>Default</CompileAs>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\Go4kVSTi.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
<PostBuildEvent>
<Command>copy /Y $(TargetPath) C:\VST</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\source\common\AudioEffect.cpp" />
<ClCompile Include="..\source\common\audioeffectx.cpp" />
<ClCompile Include="..\source\GoSynth\Go4kVSTi.cpp" />
<ClCompile Include="..\source\GoSynth\Go4kVSTiCore.cpp">
<CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiGUI.cpp">
<CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTimain.cpp" />
<ClCompile Include="..\source\GoSynth\Go4kVSTiproc.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Go4kVSTi.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\source\common\AEffect.h" />
<ClInclude Include="..\source\common\aeffectx.h" />
<ClInclude Include="..\source\common\AEffEditor.hpp" />
<ClInclude Include="..\source\common\AudioEffect.hpp" />
<ClInclude Include="..\source\common\audioeffectx.h" />
<ClInclude Include="..\source\GoSynth\Go4kVSTi.h" />
<ClInclude Include="..\source\GoSynth\Go4kVSTiCore.h" />
<ClInclude Include="..\source\GoSynth\Go4kVSTiGUI.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<None Include="4klang.bin" />
<None Include="4klang.inc" />
<None Include="nasmw.bin" />
</ItemGroup>
<ItemGroup>
<YASM Include="4klang.asm">
<Debug Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</Debug>
</YASM>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath)\BuildCustomizations\vsyasm.targets" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{1cf4fa67-2860-48e5-9e8b-29b87a918b97}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{8c759cfb-040e-43f2-a0c5-3f00eb100142}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\source\common\AudioEffect.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\common\audioeffectx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiCore.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiGUI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTimain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiproc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Go4kVSTi.rc">
<Filter>Source Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\source\common\AEffect.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\aeffectx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\AEffEditor.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\AudioEffect.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\audioeffectx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\GoSynth\Go4kVSTi.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\GoSynth\Go4kVSTiCore.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\GoSynth\Go4kVSTiGUI.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="4klang.bin" />
<None Include="4klang.inc" />
<None Include="nasmw.bin" />
</ItemGroup>
<ItemGroup>
<YASM Include="4klang.asm" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,2 @@
LIBRARY 8klang
EXPORTS main

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,197 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectName>8klang</ProjectName>
<ProjectGuid>{FA790F08-0B8E-43D9-A4B4-519AB01B820C}</ProjectGuid>
<RootNamespace>Go4kVSTi2</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<WholeProgramOptimization>false</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\vsyasm.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\$(ProjectName)\Debug\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\$(ProjectName)\Debug\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\$(ProjectName)\Release\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\$(ProjectName)\Release\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
<EmbedManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</EmbedManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>.\Debug/vstxsynth.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\source\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_8KLANG;WIN32;_DEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>Sync</ExceptionHandling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<StructMemberAlignment>1Byte</StructMemberAlignment>
<BufferSecurityCheck>true</BufferSecurityCheck>
<FloatingPointModel>Fast</FloatingPointModel>
<PrecompiledHeader>
</PrecompiledHeader>
<AssemblerOutput>
</AssemblerOutput>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\Go4kVSTi2.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
<PostBuildEvent>
<Command>copy /Y $(TargetPath) C:\VST</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>.\Release/vstxsynth.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\source\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_8KLANG;WIN32;NDEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<StructMemberAlignment>1Byte</StructMemberAlignment>
<BufferSecurityCheck>false</BufferSecurityCheck>
<FunctionLevelLinking>false</FunctionLevelLinking>
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<FloatingPointModel>Fast</FloatingPointModel>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader>
</PrecompiledHeader>
<AssemblerOutput>
</AssemblerOutput>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<CallingConvention>Cdecl</CallingConvention>
<CompileAs>Default</CompileAs>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SuppressStartupBanner>true</SuppressStartupBanner>
<ModuleDefinitionFile>.\Go4kVSTi2.def</ModuleDefinitionFile>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
</Link>
<PostBuildEvent>
<Command>copy /Y $(TargetPath) C:\VST</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\source\common\AudioEffect.cpp" />
<ClCompile Include="..\source\common\audioeffectx.cpp" />
<ClCompile Include="..\source\GoSynth\Go4kVSTi.cpp" />
<ClCompile Include="..\source\GoSynth\Go4kVSTiCore.cpp">
<CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiGUI.cpp">
<CallingConvention Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Cdecl</CallingConvention>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTimain.cpp" />
<ClCompile Include="..\source\GoSynth\Go4kVSTiproc.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\source\common\AEffect.h" />
<ClInclude Include="..\source\common\aeffectx.h" />
<ClInclude Include="..\source\common\AEffEditor.hpp" />
<ClInclude Include="..\source\common\AudioEffect.hpp" />
<ClInclude Include="..\source\common\audioeffectx.h" />
<ClInclude Include="..\source\GoSynth\Go4kVSTi.h" />
<ClInclude Include="..\source\GoSynth\Go4kVSTiCore.h" />
<ClInclude Include="..\source\GoSynth\Go4kVSTiGUI.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<None Include="4klang.bin" />
<None Include="4klang.inc" />
<None Include="nasmw.bin" />
</ItemGroup>
<ItemGroup>
<YASM Include="4klang.asm">
<Debug Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</Debug>
</YASM>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Go4kVSTi2.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath)\BuildCustomizations\vsyasm.targets" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{1cf4fa67-2860-48e5-9e8b-29b87a918b97}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{8c759cfb-040e-43f2-a0c5-3f00eb100142}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\source\common\AudioEffect.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\common\audioeffectx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiCore.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiGUI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTimain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\source\GoSynth\Go4kVSTiproc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\source\common\AEffect.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\aeffectx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\AEffEditor.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\AudioEffect.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\common\audioeffectx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\GoSynth\Go4kVSTi.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\GoSynth\Go4kVSTiCore.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\source\GoSynth\Go4kVSTiGUI.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="4klang.bin" />
<None Include="4klang.inc" />
<None Include="nasmw.bin" />
</ItemGroup>
<ItemGroup>
<YASM Include="4klang.asm" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Go4kVSTi2.rc">
<Filter>Source Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@ -64,6 +64,7 @@
#define IDC_ISTACK_VALID 1040
#define IDC_GSTACK_VALID 1041
#define IDC_PATTERN_QUANT 1042
#define IDC_INSTRUMENTLINK 1043
#define IDC_UNIT_RESET 1050
#define IDC_UNIT_COPY 1051
#define IDC_UNIT_PASTE 1052
@ -89,6 +90,7 @@
#define IDC_VCO_PULSE 1152
#define IDC_VCO_NOISE 1153
#define IDC_VCO_GATE 1154
#define IDC_VCO_STEREO 1155
#define IDC_VCO_TRANSPOSE 1160
#define IDC_VCO_TRANSPOSE_VAL 1161
#define IDC_VCO_TRANSPOSE_QUANT 1162
@ -137,6 +139,7 @@
#define IDC_VCF_RESONANCE 1210
#define IDC_VCF_RESONANCE_VAL 1211
#define IDC_VCF_RESONANCE_QUANT 1212
#define IDC_VCF_STEREO 1213
#define IDC_DST_DRIVE 1250
#define IDC_DST_DRIVE_VAL 1251
#define IDC_DST_DRIVE_QUANT 1252
@ -177,12 +180,17 @@
#define IDC_FOP_MUL 1357
#define IDC_FOP_ADDP2 1358
#define IDC_FOP_LOADNOTE 1359
#define IDC_FOP_MULP2 1360
#define IDC_FST_AMOUNT 1400
#define IDC_FST_AMOUNT_VAL 1401
#define IDC_FST_AMOUNT_QUANT 1402
#define IDC_FST_DESTINATION_INSTRUMENT 1403
#define IDC_FST_DESTINATION_UNIT 1404
#define IDC_FST_DESTINATION_SLOT 1405
#define IDC_FST_SET 1410
#define IDC_FST_ADD 1411
#define IDC_FST_MUL 1412
#define IDC_FST_POP 1413
#define IDC_PAN_PANNING 1450
#define IDC_PAN_PANNING_VAL 1451
#define IDC_PAN_PANNING_QUANT 1452
@ -195,8 +203,8 @@
#define IDC_ACC_OUT 1550
#define IDC_ACC_AUX 1551
#define IDC_FLD_VALUE 1552
#define IDC_FLD_VALUE_VAL 1553
#define IDC_FLD_VALUE_QUANT 1554
#define IDC_FLD_VALUE_VAL 1553
#define IDC_FLD_VALUE_QUANT 1554
#define IDC_ISTACK_UNIT1 1600
#define IDC_ISTACK_UP1 1601
#define IDC_ISTACK_DOWN1 1602
@ -389,6 +397,198 @@
#define IDC_ISTACK_SIGNALCOUNT32 1789
#define IDC_ISTACK_SET32 1790
#define IDC_ISTACK_RESET32 1791
#define IDC_ISTACK__UNIT1 1792
#define IDC_ISTACK__UP1 1793
#define IDC_ISTACK__DOWN1 1794
#define IDC_ISTACK__SIGNALCOUNT1 1795
#define IDC_ISTACK__SET1 1796
#define IDC_ISTACK__RESET1 1797
#define IDC_ISTACK__UNIT2 1798
#define IDC_ISTACK__UP2 1799
#define IDC_ISTACK__DOWN2 1800
#define IDC_ISTACK__SIGNALCOUNT2 1801
#define IDC_ISTACK__SET2 1802
#define IDC_ISTACK__RESET2 1803
#define IDC_ISTACK__UNIT3 1804
#define IDC_ISTACK__UP3 1805
#define IDC_ISTACK__DOWN3 1806
#define IDC_ISTACK__SIGNALCOUNT3 1807
#define IDC_ISTACK__SET3 1808
#define IDC_ISTACK__RESET3 1809
#define IDC_ISTACK__UNIT4 1810
#define IDC_ISTACK__UP4 1811
#define IDC_ISTACK__DOWN4 1812
#define IDC_ISTACK__SIGNALCOUNT4 1813
#define IDC_ISTACK__SET4 1814
#define IDC_ISTACK__RESET4 1815
#define IDC_ISTACK__UNIT5 1816
#define IDC_ISTACK__UP5 1817
#define IDC_ISTACK__DOWN5 1818
#define IDC_ISTACK__SIGNALCOUNT5 1819
#define IDC_ISTACK__SET5 1820
#define IDC_ISTACK__RESET5 1821
#define IDC_ISTACK__UNIT6 1822
#define IDC_ISTACK__UP6 1823
#define IDC_ISTACK__DOWN6 1824
#define IDC_ISTACK__SIGNALCOUNT6 1825
#define IDC_ISTACK__SET6 1826
#define IDC_ISTACK__RESET6 1827
#define IDC_ISTACK__UNIT7 1828
#define IDC_ISTACK__UP7 1829
#define IDC_ISTACK__DOWN7 1830
#define IDC_ISTACK__SIGNALCOUNT7 1831
#define IDC_ISTACK__SET7 1832
#define IDC_ISTACK__RESET7 1833
#define IDC_ISTACK__UNIT8 1834
#define IDC_ISTACK__UP8 1835
#define IDC_ISTACK__DOWN8 1836
#define IDC_ISTACK__SIGNALCOUNT8 1837
#define IDC_ISTACK__SET8 1838
#define IDC_ISTACK__RESET8 1839
#define IDC_ISTACK__UNIT9 1840
#define IDC_ISTACK__UP9 1841
#define IDC_ISTACK__DOWN9 1842
#define IDC_ISTACK__SIGNALCOUNT9 1843
#define IDC_ISTACK__SET9 1844
#define IDC_ISTACK__RESET9 1845
#define IDC_ISTACK__UNIT10 1846
#define IDC_ISTACK__UP10 1847
#define IDC_ISTACK__DOWN10 1848
#define IDC_ISTACK__SIGNALCOUNT10 1849
#define IDC_ISTACK__SET10 1850
#define IDC_ISTACK__RESET10 1851
#define IDC_ISTACK__UNIT11 1852
#define IDC_ISTACK__UP11 1853
#define IDC_ISTACK__DOWN11 1854
#define IDC_ISTACK__SIGNALCOUNT11 1855
#define IDC_ISTACK__SET11 1856
#define IDC_ISTACK__RESET11 1857
#define IDC_ISTACK__UNIT12 1858
#define IDC_ISTACK__UP12 1859
#define IDC_ISTACK__DOWN12 1860
#define IDC_ISTACK__SIGNALCOUNT12 1861
#define IDC_ISTACK__SET12 1862
#define IDC_ISTACK__RESET12 1863
#define IDC_ISTACK__UNIT13 1864
#define IDC_ISTACK__UP13 1865
#define IDC_ISTACK__DOWN13 1866
#define IDC_ISTACK__SIGNALCOUNT13 1867
#define IDC_ISTACK__SET13 1868
#define IDC_ISTACK__RESET13 1869
#define IDC_ISTACK__UNIT14 1870
#define IDC_ISTACK__UP14 1871
#define IDC_ISTACK__DOWN14 1872
#define IDC_ISTACK__SIGNALCOUNT14 1873
#define IDC_ISTACK__SET14 1874
#define IDC_ISTACK__RESET14 1875
#define IDC_ISTACK__UNIT15 1876
#define IDC_ISTACK__UP15 1877
#define IDC_ISTACK__DOWN15 1878
#define IDC_ISTACK__SIGNALCOUNT15 1879
#define IDC_ISTACK__SET15 1880
#define IDC_ISTACK__RESET15 1881
#define IDC_ISTACK__UNIT16 1882
#define IDC_ISTACK__UP16 1883
#define IDC_ISTACK__DOWN16 1884
#define IDC_ISTACK__SIGNALCOUNT16 1885
#define IDC_ISTACK__SET16 1886
#define IDC_ISTACK__RESET16 1887
#define IDC_ISTACK__UNIT17 1888
#define IDC_ISTACK__UP17 1889
#define IDC_ISTACK__DOWN17 1890
#define IDC_ISTACK__SIGNALCOUNT17 1891
#define IDC_ISTACK__SET17 1892
#define IDC_ISTACK__RESET17 1893
#define IDC_ISTACK__UNIT18 1894
#define IDC_ISTACK__UP18 1895
#define IDC_ISTACK__DOWN18 1896
#define IDC_ISTACK__SIGNALCOUNT18 1897
#define IDC_ISTACK__SET18 1898
#define IDC_ISTACK__RESET18 1899
#define IDC_ISTACK__UNIT19 1900
#define IDC_ISTACK__UP19 1901
#define IDC_ISTACK__DOWN19 1902
#define IDC_ISTACK__SIGNALCOUNT19 1903
#define IDC_ISTACK__SET19 1904
#define IDC_ISTACK__RESET19 1905
#define IDC_ISTACK__UNIT20 1906
#define IDC_ISTACK__UP20 1907
#define IDC_ISTACK__DOWN20 1908
#define IDC_ISTACK__SIGNALCOUNT20 1909
#define IDC_ISTACK__SET20 1910
#define IDC_ISTACK__RESET20 1911
#define IDC_ISTACK__UNIT21 1912
#define IDC_ISTACK__UP21 1913
#define IDC_ISTACK__DOWN21 1914
#define IDC_ISTACK__SIGNALCOUNT21 1915
#define IDC_ISTACK__SET21 1916
#define IDC_ISTACK__RESET21 1917
#define IDC_ISTACK__UNIT22 1918
#define IDC_ISTACK__UP22 1919
#define IDC_ISTACK__DOWN22 1920
#define IDC_ISTACK__SIGNALCOUNT22 1921
#define IDC_ISTACK__SET22 1922
#define IDC_ISTACK__RESET22 1923
#define IDC_ISTACK__UNIT23 1924
#define IDC_ISTACK__UP23 1925
#define IDC_ISTACK__DOWN23 1926
#define IDC_ISTACK__SIGNALCOUNT23 1927
#define IDC_ISTACK__SET23 1928
#define IDC_ISTACK__RESET23 1929
#define IDC_ISTACK__UNIT24 1930
#define IDC_ISTACK__UP24 1931
#define IDC_ISTACK__DOWN24 1932
#define IDC_ISTACK__SIGNALCOUNT24 1933
#define IDC_ISTACK__SET24 1934
#define IDC_ISTACK__RESET24 1935
#define IDC_ISTACK__UNIT25 1936
#define IDC_ISTACK__UP25 1937
#define IDC_ISTACK__DOWN25 1938
#define IDC_ISTACK__SIGNALCOUNT25 1939
#define IDC_ISTACK__SET25 1940
#define IDC_ISTACK__RESET25 1941
#define IDC_ISTACK__UNIT26 1942
#define IDC_ISTACK__UP26 1943
#define IDC_ISTACK__DOWN26 1944
#define IDC_ISTACK__SIGNALCOUNT26 1945
#define IDC_ISTACK__SET26 1946
#define IDC_ISTACK__RESET26 1947
#define IDC_ISTACK__UNIT27 1948
#define IDC_ISTACK__UP27 1949
#define IDC_ISTACK__DOWN27 1950
#define IDC_ISTACK__SIGNALCOUNT27 1951
#define IDC_ISTACK__SET27 1952
#define IDC_ISTACK__RESET27 1953
#define IDC_ISTACK__UNIT28 1954
#define IDC_ISTACK__UP28 1955
#define IDC_ISTACK__DOWN28 1956
#define IDC_ISTACK__SIGNALCOUNT28 1957
#define IDC_ISTACK__SET28 1958
#define IDC_ISTACK__RESET28 1959
#define IDC_ISTACK__UNIT29 1960
#define IDC_ISTACK__UP29 1961
#define IDC_ISTACK__DOWN29 1962
#define IDC_ISTACK__SIGNALCOUNT29 1963
#define IDC_ISTACK__SET29 1964
#define IDC_ISTACK__RESET29 1965
#define IDC_ISTACK__UNIT30 1966
#define IDC_ISTACK__UP30 1967
#define IDC_ISTACK__DOWN30 1968
#define IDC_ISTACK__SIGNALCOUNT30 1969
#define IDC_ISTACK__SET30 1970
#define IDC_ISTACK__RESET30 1971
#define IDC_ISTACK__UNIT31 1972
#define IDC_ISTACK__UP31 1973
#define IDC_ISTACK__DOWN31 1974
#define IDC_ISTACK__SIGNALCOUNT31 1975
#define IDC_ISTACK__SET31 1976
#define IDC_ISTACK__RESET31 1977
#define IDC_ISTACK__UNIT32 1978
#define IDC_ISTACK__UP32 1979
#define IDC_ISTACK__DOWN32 1980
#define IDC_ISTACK__SIGNALCOUNT32 1981
#define IDC_ISTACK__SET32 1982
#define IDC_ISTACK__RESET32 1983
#define IDC_GSTACK_UNIT1 3600
#define IDC_GSTACK_UP1 3601
#define IDC_GSTACK_DOWN1 3602
@ -581,6 +781,199 @@
#define IDC_GSTACK_SIGNALCOUNT32 3789
#define IDC_GSTACK_SET32 3790
#define IDC_GSTACK_RESET32 3791
#define IDC_GSTACK__UNIT1 3792
#define IDC_GSTACK__UP1 3793
#define IDC_GSTACK__DOWN1 3794
#define IDC_GSTACK__SIGNALCOUNT1 3795
#define IDC_GSTACK__SET1 3796
#define IDC_GSTACK__RESET1 3797
#define IDC_GSTACK__UNIT2 3798
#define IDC_GSTACK__UP2 3799
#define IDC_GSTACK__DOWN2 3800
#define IDC_GSTACK__SIGNALCOUNT2 3801
#define IDC_GSTACK__SET2 3802
#define IDC_GSTACK__RESET2 3803
#define IDC_GSTACK__UNIT3 3804
#define IDC_GSTACK__UP3 3805
#define IDC_GSTACK__DOWN3 3806
#define IDC_GSTACK__SIGNALCOUNT3 3807
#define IDC_GSTACK__SET3 3808
#define IDC_GSTACK__RESET3 3809
#define IDC_GSTACK__UNIT4 3810
#define IDC_GSTACK__UP4 3811
#define IDC_GSTACK__DOWN4 3812
#define IDC_GSTACK__SIGNALCOUNT4 3813
#define IDC_GSTACK__SET4 3814
#define IDC_GSTACK__RESET4 3815
#define IDC_GSTACK__UNIT5 3816
#define IDC_GSTACK__UP5 3817
#define IDC_GSTACK__DOWN5 3818
#define IDC_GSTACK__SIGNALCOUNT5 3819
#define IDC_GSTACK__SET5 3820
#define IDC_GSTACK__RESET5 3821
#define IDC_GSTACK__UNIT6 3822
#define IDC_GSTACK__UP6 3823
#define IDC_GSTACK__DOWN6 3824
#define IDC_GSTACK__SIGNALCOUNT6 3825
#define IDC_GSTACK__SET6 3826
#define IDC_GSTACK__RESET6 3827
#define IDC_GSTACK__UNIT7 3828
#define IDC_GSTACK__UP7 3829
#define IDC_GSTACK__DOWN7 3830
#define IDC_GSTACK__SIGNALCOUNT7 3831
#define IDC_GSTACK__SET7 3832
#define IDC_GSTACK__RESET7 3833
#define IDC_GSTACK__UNIT8 3834
#define IDC_GSTACK__UP8 3835
#define IDC_GSTACK__DOWN8 3836
#define IDC_GSTACK__SIGNALCOUNT8 3837
#define IDC_GSTACK__SET8 3838
#define IDC_GSTACK__RESET8 3839
#define IDC_GSTACK__UNIT9 3840
#define IDC_GSTACK__UP9 3841
#define IDC_GSTACK__DOWN9 3842
#define IDC_GSTACK__SIGNALCOUNT9 3843
#define IDC_GSTACK__SET9 3844
#define IDC_GSTACK__RESET9 3845
#define IDC_GSTACK__UNIT10 3846
#define IDC_GSTACK__UP10 3847
#define IDC_GSTACK__DOWN10 3848
#define IDC_GSTACK__SIGNALCOUNT10 3849
#define IDC_GSTACK__SET10 3850
#define IDC_GSTACK__RESET10 3851
#define IDC_GSTACK__UNIT11 3852
#define IDC_GSTACK__UP11 3853
#define IDC_GSTACK__DOWN11 3854
#define IDC_GSTACK__SIGNALCOUNT11 3855
#define IDC_GSTACK__SET11 3856
#define IDC_GSTACK__RESET11 3857
#define IDC_GSTACK__UNIT12 3858
#define IDC_GSTACK__UP12 3859
#define IDC_GSTACK__DOWN12 3860
#define IDC_GSTACK__SIGNALCOUNT12 3861
#define IDC_GSTACK__SET12 3862
#define IDC_GSTACK__RESET12 3863
#define IDC_GSTACK__UNIT13 3864
#define IDC_GSTACK__UP13 3865
#define IDC_GSTACK__DOWN13 3866
#define IDC_GSTACK__SIGNALCOUNT13 3867
#define IDC_GSTACK__SET13 3868
#define IDC_GSTACK__RESET13 3869
#define IDC_GSTACK__UNIT14 3870
#define IDC_GSTACK__UP14 3871
#define IDC_GSTACK__DOWN14 3872
#define IDC_GSTACK__SIGNALCOUNT14 3873
#define IDC_GSTACK__SET14 3874
#define IDC_GSTACK__RESET14 3875
#define IDC_GSTACK__UNIT15 3876
#define IDC_GSTACK__UP15 3877
#define IDC_GSTACK__DOWN15 3878
#define IDC_GSTACK__SIGNALCOUNT15 3879
#define IDC_GSTACK__SET15 3880
#define IDC_GSTACK__RESET15 3881
#define IDC_GSTACK__UNIT16 3882
#define IDC_GSTACK__UP16 3883
#define IDC_GSTACK__DOWN16 3884
#define IDC_GSTACK__SIGNALCOUNT16 3885
#define IDC_GSTACK__SET16 3886
#define IDC_GSTACK__RESET16 3887
#define IDC_GSTACK__UNIT17 3888
#define IDC_GSTACK__UP17 3889
#define IDC_GSTACK__DOWN17 3890
#define IDC_GSTACK__SIGNALCOUNT17 3891
#define IDC_GSTACK__SET17 3892
#define IDC_GSTACK__RESET17 3893
#define IDC_GSTACK__UNIT18 3894
#define IDC_GSTACK__UP18 3895
#define IDC_GSTACK__DOWN18 3896
#define IDC_GSTACK__SIGNALCOUNT18 3897
#define IDC_GSTACK__SET18 3898
#define IDC_GSTACK__RESET18 3899
#define IDC_GSTACK__UNIT19 3900
#define IDC_GSTACK__UP19 3901
#define IDC_GSTACK__DOWN19 3902
#define IDC_GSTACK__SIGNALCOUNT19 3903
#define IDC_GSTACK__SET19 3904
#define IDC_GSTACK__RESET19 3905
#define IDC_GSTACK__UNIT20 3906
#define IDC_GSTACK__UP20 3907
#define IDC_GSTACK__DOWN20 3908
#define IDC_GSTACK__SIGNALCOUNT20 3909
#define IDC_GSTACK__SET20 3910
#define IDC_GSTACK__RESET20 3911
#define IDC_GSTACK__UNIT21 3912
#define IDC_GSTACK__UP21 3913
#define IDC_GSTACK__DOWN21 3914
#define IDC_GSTACK__SIGNALCOUNT21 3915
#define IDC_GSTACK__SET21 3916
#define IDC_GSTACK__RESET21 3917
#define IDC_GSTACK__UNIT22 3918
#define IDC_GSTACK__UP22 3919
#define IDC_GSTACK__DOWN22 3920
#define IDC_GSTACK__SIGNALCOUNT22 3921
#define IDC_GSTACK__SET22 3922
#define IDC_GSTACK__RESET22 3923
#define IDC_GSTACK__UNIT23 3924
#define IDC_GSTACK__UP23 3925
#define IDC_GSTACK__DOWN23 3926
#define IDC_GSTACK__SIGNALCOUNT23 3927
#define IDC_GSTACK__SET23 3928
#define IDC_GSTACK__RESET23 3929
#define IDC_GSTACK__UNIT24 3930
#define IDC_GSTACK__UP24 3931
#define IDC_GSTACK__DOWN24 3932
#define IDC_GSTACK__SIGNALCOUNT24 3933
#define IDC_GSTACK__SET24 3934
#define IDC_GSTACK__RESET24 3935
#define IDC_GSTACK__UNIT25 3936
#define IDC_GSTACK__UP25 3937
#define IDC_GSTACK__DOWN25 3938
#define IDC_GSTACK__SIGNALCOUNT25 3939
#define IDC_GSTACK__SET25 3940
#define IDC_GSTACK__RESET25 3941
#define IDC_GSTACK__UNIT26 3942
#define IDC_GSTACK__UP26 3943
#define IDC_GSTACK__DOWN26 3944
#define IDC_GSTACK__SIGNALCOUNT26 3945
#define IDC_GSTACK__SET26 3946
#define IDC_GSTACK__RESET26 3947
#define IDC_GSTACK__UNIT27 3948
#define IDC_GSTACK__UP27 3949
#define IDC_GSTACK__DOWN27 3950
#define IDC_GSTACK__SIGNALCOUNT27 3951
#define IDC_GSTACK__SET27 3952
#define IDC_GSTACK__RESET27 3953
#define IDC_GSTACK__UNIT28 3954
#define IDC_GSTACK__UP28 3955
#define IDC_GSTACK__DOWN28 3956
#define IDC_GSTACK__SIGNALCOUNT28 3957
#define IDC_GSTACK__SET28 3958
#define IDC_GSTACK__RESET28 3959
#define IDC_GSTACK__UNIT29 3960
#define IDC_GSTACK__UP29 3961
#define IDC_GSTACK__DOWN29 3962
#define IDC_GSTACK__SIGNALCOUNT29 3963
#define IDC_GSTACK__SET29 3964
#define IDC_GSTACK__RESET29 3965
#define IDC_GSTACK__UNIT30 3966
#define IDC_GSTACK__UP30 3967
#define IDC_GSTACK__DOWN30 3968
#define IDC_GSTACK__SIGNALCOUNT30 3969
#define IDC_GSTACK__SET30 3970
#define IDC_GSTACK__RESET30 3971
#define IDC_GSTACK__UNIT31 3972
#define IDC_GSTACK__UP31 3973
#define IDC_GSTACK__DOWN31 3974
#define IDC_GSTACK__SIGNALCOUNT31 3975
#define IDC_GSTACK__SET31 3976
#define IDC_GSTACK__RESET31 3977
#define IDC_GSTACK__UNIT32 3978
#define IDC_GSTACK__UP32 3979
#define IDC_GSTACK__DOWN32 3980
#define IDC_GSTACK__SIGNALCOUNT32 3981
#define IDC_GSTACK__SET32 3982
#define IDC_GSTACK__RESET32 3983
#define IDC_DST_STEREO 5004
// Next default values for new objects
//
@ -588,7 +981,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 124
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 5000
#define _APS_NEXT_CONTROL_VALUE 5005
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif