diff --git a/.gitignore b/.gitignore
index 3e2d4f1..e5fc080 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,8 @@
[Bb]in/
[Oo]bj/
+# CMake
+build/
+# Project specific
+old/
\ No newline at end of file
diff --git a/4klang_VSTi/4klang.dll b/4klang_VSTi/4klang.dll
deleted file mode 100644
index 529add8..0000000
Binary files a/4klang_VSTi/4klang.dll and /dev/null differ
diff --git a/4klang_VSTi/8klang.dll b/4klang_VSTi/8klang.dll
deleted file mode 100644
index 62de083..0000000
Binary files a/4klang_VSTi/8klang.dll and /dev/null differ
diff --git a/4klang_source/4klang.asm b/4klang_source/4klang.asm
deleted file mode 100644
index 6ade397..0000000
--- a/4klang_source/4klang.asm
+++ /dev/null
@@ -1,1766 +0,0 @@
-bits 32
-
-%define WRK ebp ; // alias for unit workspace
-%define VAL esi ; // alias for unit values (transformed/untransformed)
-%define COM ebx ; // alias for instrument opcodes
-
-%include "4klang.inc"
-
-;// conditional defines
-
-%ifdef GO4K_USE_VCO_SHAPE
- %define INCLUDE_WAVESHAPER
-%endif
-%ifdef GO4K_USE_DST
- %define INCLUDE_WAVESHAPER
-%endif
-
-%ifdef GO4K_USE_VCO_MOD_PM
- %define PHASE_RENORMALIZE
-%endif
-%ifdef GO4K_USE_VCO_PHASE_OFFSET
- %define PHASE_RENORMALIZE
-%endif
-
-%ifdef GO4K_USE_ENVELOPE_RECORDINGS
- %define GO4K_USE_BUFFER_RECORDINGS
-%endif
-%ifdef GO4K_USE_NOTE_RECORDINGS
- %define GO4K_USE_BUFFER_RECORDINGS
-%endif
-
-; //========================================================================================
-; // .bss section
-; //========================================================================================
-%ifdef USE_SECTIONS
-section .g4kbss1 bss align=1
-%else
-section .bss
-%endif
-
-; // the one and only synth object
-%if MAX_VOICES > 1
-go4k_voiceindex resd 16
-%endif
-go4k_transformed_values resd 16
-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 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
-__4klang_envelope_buffer resd ((MAX_SAMPLES)/8) ; // samples every 256 samples and stores 16*2 = 32 values
-%endif
-%ifdef GO4K_USE_NOTE_RECORDINGS
-global __4klang_note_buffer
-__4klang_note_buffer resd ((MAX_SAMPLES)/8) ; // samples every 256 samples and stores 16*2 = 32 values
-%endif
-
-; //========================================================================================
-; // .g4kdat section (initialized data for go4k)
-; //========================================================================================
-%ifdef USE_SECTIONS
-section .g4kdat1 data align=1
-%else
-section .data
-%endif
-
-; // some synth constants
-go4k_synth_commands dd 0
- dd _go4kENV_func@0
- dd _go4kVCO_func@0
- dd _go4kVCF_func@0
- dd _go4kDST_func@0
- dd _go4kDLL_func@0
- dd _go4kFOP_func@0
- dd _go4kFST_func@0
- dd _go4kPAN_func@0
- dd _go4kOUT_func@0
- dd _go4kACC_func@0
- dd _go4kFLD_func@0
-%ifdef GO4K_USE_GLITCH
- dd _go4kGLITCH_func@0
-%endif ; Peter Salomonsen removed the else _go4kFLD_func@0 for backwards compatibility with songs not using the GLITCH func
-%ifdef GO4K_USE_FSTG
- dd _go4kFSTG_func@0
-%endif
-
-%ifdef USE_SECTIONS
-section .g4kdat2 data align=1
-%else
-section .data
-%endif
-
-%ifdef GO4K_USE_16BIT_OUTPUT
-c_32767 dd 32767.0
-%endif
-c_i128 dd 0.0078125
-c_RandDiv dd 65536*32768
-c_0_5 dd 0.5
-%ifdef GO4K_USE_VCO_GATE
-c_16 dd 16.0
-%endif
-%ifdef GO4K_USE_DLL_CHORUS
-DLL_DEPTH dd 1024.0
-%endif
-%ifdef GO4K_USE_DLL_DC_FILTER
-c_dc_const dd 0.99609375 ; R = 1 - (pi*2 * frequency /samplerate)
-%else
- %ifdef GO4K_USE_VCO_GATE
-c_dc_const dd 0.99609375 ; R = 1 - (pi*2 * frequency /samplerate)
- %endif
-%endif
-global _RandSeed
-_RandSeed dd 1
-c_24 dd 24
-c_i12 dd 0x3DAAAAAA
-FREQ_NORMALIZE dd 0.000092696138 ; // 220.0/(2^(69/12)) / 44100.0
-global _LFO_NORMALIZE
-_LFO_NORMALIZE dd DEF_LFO_NORMALIZE
-%ifdef GO4K_USE_GROOVE_PATTERN
-go4k_groove_pattern dw 0011100111001110b
-%endif
-
-; //========================================================================================
-; // .crtemui section (emulates crt functions)
-; //========================================================================================
-%ifdef USE_SECTIONS
-section .crtemui code align=1
-%else
-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
-
-; //========================================================================================
-; // .g4kcod* sections (code for go4k)
-; //========================================================================================
-
-%ifdef INCLUDE_WAVESHAPER
-
-%ifdef USE_SECTIONS
-section .g4kcod2 code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // Waveshaper function
-; //----------------------------------------------------------------------------------------
-; // Input : st0 : shaping coeff
-; // st1 : input
-; // Output: st0 : result
-; //----------------------------------------------------------------------------------------
-
-go4kWaveshaper:
-%ifdef GO4K_USE_WAVESHAPER_CLIP
- fxch
- fld1 ; // 1 val
- fucomi st1 ; // 1 val
- jbe short go4kWaveshaper_clip
- fchs ; // -1 val
- fucomi st1 ; // -1 val
- fcmovb st0, st1 ; // val -1 (if val > -1)
-go4kWaveshaper_clip:
- fstp st1 ; // newval
- fxch
-%endif
- fsub dword [c_0_5]
- fadd st0
- fst dword [esp-4] ; // amnt in
- fadd st0 ; // 2*amnt in
- fld1 ; // 1 2*amnt in
- fsub dword [esp-4] ; // 1-amnt 2*amnt in
- fdivp st1, st0 ; // k in
- fld st1 ; // sin k in
- fabs ; // a(in) k in
- fmul st1 ; // k*a(in) k in
- fld1
- faddp st1, st0 ; // 1+k*a(in) k in
- fxch st1 ; // k 1+k*a(in) in
- fld1
- faddp st1, st0 ; // 1+k 1+k*a(in) in
- fmulp st2 ; // 1+k*a(in) (1+k)*in
- fdivp st1, st0 ; // out
- ret
-
-%endif
-
-%ifdef USE_SECTIONS
-section .g4kcod3 code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // unit values preparation/transform
-; //----------------------------------------------------------------------------------------
-go4kTransformValues:
- push ecx
- xor ecx, ecx
- xor eax, eax
- mov edx, go4k_transformed_values
-go4kTransformValues_loop:
- lodsb
- push eax
- fild dword [esp]
- fmul dword [c_i128]
- fstp dword [edx+ecx*4]
- pop eax
- inc ecx
- cmp ecx, dword [esp+8]
- jl go4kTransformValues_loop
- pop ecx
- ret 4
-
-%ifdef USE_SECTIONS
-section .g4kcod4 code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // Envelope param mapping
-; //----------------------------------------------------------------------------------------
-go4kENVMap:
- fld dword [edx+eax*4]
-%ifdef GO4K_USE_ENV_MOD_ADR
- fadd dword [WRK+go4kENV_wrk.am+eax*4]
-%endif
- fimul dword [c_24]
- fchs
-; //----------------------------------------------------------------------------------------
-; // Power function (2^x)
-; //----------------------------------------------------------------------------------------
-; // Input : st0 : base
-; // st1 : exponent
-; // Output: st0 : result
-; //----------------------------------------------------------------------------------------
-export_func Power@0 ; // base exp
- fld1
- fadd st0
- fyl2x ; // log2_base
- fld1 ; // 1 log2_base
- fld st1 ; // log2_base 1 log2_base
- fprem ; // (frac)log2_base 1 log2_base
- f2xm1 ; // 2 ^ '' - 1 1 log2_base
- faddp st1, st0 ; // 2 ^ '' (int)log2_base
- fscale
- fstp st1
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcoda code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // ENV Tick
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-export_func go4kENV_func@0
- push 5
- call go4kTransformValues
-%ifdef GO4K_USE_ENV_CHECK
-; check if current note still active
- mov eax, dword [ecx-4]
- test eax, eax
- jne go4kENV_func_do
- fldz
- ret
-%endif
-go4kENV_func_do:
- mov eax, dword [ecx-8] ; // is the instrument in release mode (note off)?
- test eax, eax
- je go4kENV_func_process
- 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 -
-; // check for sustain state
- cmp al, ENV_STATE_SUSTAIN
- je short go4kENV_func_leave2
-go4kENV_func_attac:
- cmp al, ENV_STATE_ATTAC
- jne short go4kENV_func_decay
- call go4kENVMap ; // newval
- faddp st1, st0
-; // check for end of attac
- fld1 ; // 1 newval
- fucomi st1 ; // 1 newval
- fcmovnb st0, st1 ; // newval 1 (if newval < 1)
- jbe short go4kENV_func_statechange
-go4kENV_func_decay:
- cmp al, ENV_STATE_DECAY
- jne short go4kENV_func_release
- call go4kENVMap ; // newval
- fsubp st1, st0
-; // check for end of decay
- fld dword [edx+go4kENV_val.sustain] ; // sustain newval
- fucomi st1 ; // sustain newval
- fcmovb st0, st1 ; // newval sustain (if newval > sustain)
- jnc short go4kENV_func_statechange
-go4kENV_func_release:
-; // release state?
- cmp al, ENV_STATE_RELEASE
- jne short go4kENV_func_leave
- call go4kENVMap ; // newval
- fsubp st1, st0
-; // check for end of release
- fldz ; // 0 newval
- fucomi st1 ; // 0 newval
- fcmovb st0, st1 ; // newval 0 (if newval > 0)
- jc short go4kENV_func_leave
-go4kENV_func_statechange: ; // newval
- inc dword [WRK+go4kENV_wrk.state]
-go4kENV_func_leave: ; // newval bla
- fstp st1
-; // store new env value
- fst dword [WRK+go4kENV_wrk.level]
-go4kENV_func_leave2:
-; // mul by gain
-%ifdef GO4K_USE_ENV_MOD_GM
- fld dword [edx+go4kENV_val.gain]
- fadd dword [WRK+go4kENV_wrk.gm]
- fmulp st1, st0
-%else
- fmul dword [edx+go4kENV_val.gain]
-%endif
- ret
-
-
-; //----------------------------------------------------------------------------------------
-; // VCO Tick
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-section .g4kcodp code align=1
-%else
-section .text
-%endif
-go4kVCO_pulse:
- fucomi st1 ; // c p
- fld1
- jnc short go4kVCO_func_pulse_up ; // +1 c p
- fchs ; // -1 c p
-go4kVCO_func_pulse_up:
- fstp st1 ; // +-1 p
- fstp st1 ; // +-1
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodt code align=1
-%else
-section .text
-%endif
-go4kVCO_trisaw:
- fucomi st1 ; // c p
- jnc short go4kVCO_func_trisaw_up
- fld1 ; // 1 c p
- fsubr st2, st0 ; // 1 c 1-p
- fsubrp st1, st0 ; // 1-c 1-p
-go4kVCO_func_trisaw_up:
- fdivp st1, st0 ; // tp'/tc
- fadd st0 ; // 2*''
- fld1 ; // 1 2*''
- fsubp st1, st0 ; // 2*''-1
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcods code align=1
-%else
-section .text
-%endif
-go4kVCO_sine:
- 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
- fsin ; // sin(2*pi*p)
- ret
-
-%ifdef GO4K_USE_VCO_GATE
-%ifdef USE_SECTIONS
-section .g4kcodq code align=1
-%else
-section .text
-%endif
-go4kVCO_gate:
- fxch ; // p c
- fstp st1 ; // p
- fmul dword [c_16] ; // p'
- push eax
- push eax
- fistp dword [esp] ; // -
- fld1 ; // 1
- pop eax
- and al, 0xf
- bt word [VAL-5],ax
- jc go4kVCO_gate_bit
- fsub st0, st0 ; // 0
-go4kVCO_gate_bit:
- fld dword [WRK+go4kVCO_wrk.cm] ; // f x
- fsub st1 ; // f-x x
- fmul dword [c_dc_const] ; // c(f-x) x
- faddp st1, st0 ; // x'
- fst dword [WRK+go4kVCO_wrk.cm]
- pop eax
- ret
-%endif
-
-%ifdef USE_SECTIONS
-section .g4kcodb code align=1
-%else
-section .text
-%endif
-export_func go4kVCO_func@0
-%ifdef GO4K_USE_VCO_PHASE_OFFSET
- %ifdef GO4K_USE_VCO_SHAPE
- %ifdef GO4K_USE_VCO_GATE
- push 8
- %else
- push 7
- %endif
- %else
- %ifdef GO4K_USE_VCO_GATE
- push 7
- %else
- push 6
- %endif
- %endif
-%else
- %ifdef GO4K_USE_VCO_SHAPE
- %ifdef GO4K_USE_VCO_GATE
- push 7
- %else
- push 6
- %endif
- %else
- %ifdef GO4K_USE_VCO_GATE
- push 6
- %else
- push 5
- %endif
- %endif
-%endif
- call go4kTransformValues
-%ifdef GO4K_USE_VCO_CHECK
-; check if current note still active
- 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
- fadd dword [WRK+go4kVCO_wrk.tm]
-%endif
- fdiv dword [c_i128]
- 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]
-%endif
- ; // st0 now contains the transpose+detune offset
- test al, byte LFO
- jnz go4kVCO_func_skipnote
- fiadd dword [ecx-4] ; // st0 is note, st1 is t+d offset
-go4kVCO_func_skipnote:
- fmul dword [c_i12]
- call _Power@0
- test al, byte LFO
- jz short go4kVCO_func_normalize_note
- fmul dword [_LFO_NORMALIZE] ; // st0 is now frequency for lfo
- jmp short go4kVCO_func_normalized
-go4kVCO_func_normalize_note:
- fmul dword [FREQ_NORMALIZE] ; // st0 is now frequency
-go4kVCO_func_normalized:
- fadd dword [WRK+go4kVCO_wrk.phase]
-%ifdef GO4K_USE_VCO_MOD_FM
- fadd dword [WRK+go4kVCO_wrk.fm]
-%endif
- fld1
- fadd st1, st0
- fxch
- fprem
- fstp st1
- fst dword [WRK+go4kVCO_wrk.phase]
-%ifdef GO4K_USE_VCO_MOD_PM
- fadd dword [WRK+go4kVCO_wrk.pm]
-%endif
-%ifdef GO4K_USE_VCO_PHASE_OFFSET
- fadd dword [edx+go4kVCO_val.phaseofs]
-%endif
-%ifdef PHASE_RENORMALIZE
- fld1
- fadd st1, st0
- fxch
- fprem
- fstp st1 ; // p
-%endif
- fld dword [edx+go4kVCO_val.color] ; // c p
-%ifdef GO4K_USE_VCO_MOD_CM
- fadd dword [WRK+go4kVCO_wrk.cm] ; // c p
-%endif
-go4kVCO_func_sine:
- test al, byte SINE
- jz short go4kVCO_func_trisaw
- call go4kVCO_sine
-go4kVCO_func_trisaw:
- test al, byte TRISAW
- jz short go4kVCO_func_pulse
- call go4kVCO_trisaw
-go4kVCO_func_pulse:
- test al, byte PULSE
-%ifdef GO4K_USE_VCO_GATE
- jz short go4kVCO_func_gate
-%else
- jz short go4kVCO_func_noise
-%endif
- call go4kVCO_pulse
-%ifdef GO4K_USE_VCO_GATE
-go4kVCO_func_gate:
- test al, byte GATE
- jz short go4kVCO_func_noise
- call go4kVCO_gate
-%endif
-go4kVCO_func_noise:
- test al, byte NOISE
- jz short go4kVCO_func_end
- call _FloatRandomNumber@0
- fstp st1
- fstp st1
-go4kVCO_func_end:
-%ifdef GO4K_USE_VCO_SHAPE
- fld dword [edx+go4kVCO_val.shape]
-%ifdef GO4K_USE_VCO_MOD_SM
- fadd dword [WRK+go4kVCO_wrk.sm]
-%endif
- call go4kWaveshaper
-%endif
- fld dword [edx+go4kVCO_val.gain]
-%ifdef GO4K_USE_VCO_MOD_GM
- 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
-section .g4kcodc code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // VCF Tick
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-export_func go4kVCF_func@0
- push 3
- call go4kTransformValues
-%ifdef GO4K_USE_VCF_CHECK
-; check if current note still active
- mov eax, dword [ecx-4]
- test eax, eax
- jne go4kVCF_func_do
- ret
-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
- 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
- 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
- fsubp st2, st0 ; // r in-l'
- fmul dword [WRK+go4kVCF_wrk.band] ; // r*b in-l'
- fsubp st1, st0 ; // h'
- fst dword [WRK+go4kVCF_wrk.high] ; // h'
- fmul dword [esp-4] ; // h'*f
- fadd dword [WRK+go4kVCF_wrk.band] ; // b'
- fstp dword [WRK+go4kVCF_wrk.band]
- fldz
-go4kVCF_func_low:
- test al, byte LOWPASS
- jz short go4kVCF_func_high
- fadd dword [WRK+go4kVCF_wrk.low]
-go4kVCF_func_high:
-%ifdef GO4K_USE_VCF_HIGH
- test al, byte HIGHPASS
- jz short go4kVCF_func_band
- fadd dword [WRK+go4kVCF_wrk.high]
-%endif
-go4kVCF_func_band:
-%ifdef GO4K_USE_VCF_BAND
- test al, byte BANDPASS
- jz short go4kVCF_func_peak
- fadd dword [WRK+go4kVCF_wrk.band]
-%endif
-go4kVCF_func_peak:
-%ifdef GO4K_USE_VCF_PEAK
- test al, byte PEAK
- 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 - - - -
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodd code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // DST Tick
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-export_func go4kDST_func@0
-%ifdef GO4K_USE_DST
-%ifdef GO4K_USE_DST_SH
- %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
- mov eax, dword [ecx-4]
- test eax, eax
- jne go4kDST_func_do
- 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 (inr)
-%ifdef GO4K_USE_DST_MOD_SH
- fadd dword [WRK+go4kDST_wrk.sm] ; // snh' in (inr)
-%endif
- fmul st0, st0 ; // square the input so we never get negative and also have a smoother behaviour in the lower frequencies
- fchs
- fadd dword [WRK+go4kDST_wrk.snhphase]; // snh' in (inr)
- fst dword [WRK+go4kDST_wrk.snhphase]
- fldz ; // 0 snh' in (inr)
- fucomip st1 ; // snh' in (inr)
- fstp dword [esp-4] ; // in (inr)
- jc short go4kDST_func_hold
- fld1 ; // 1 in (inr)
- fadd dword [esp-4] ; // 1+snh' in (inr)
- fstp dword [WRK+go4kDST_wrk.snhphase]; // in (inr)
-%endif
-; // calc pregain and postgain
-%ifdef GO4K_USE_DST_STEREO
- test al, byte STEREO
- 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 (outr)
-%ifdef GO4K_USE_DST_MOD_DM
- fadd dword [WRK+go4kDST_wrk.dm]
-%endif
- call go4kWaveshaper ; // out (outr)
-%ifdef GO4K_USE_DST_SH
- fst dword [WRK+go4kDST_wrk.out] ; // out' (outr)
-%endif
- ret ; // out' (outr)
-%ifdef GO4K_USE_DST_SH
-go4kDST_func_hold: ; // in (inr)
- fstp st0 ; // (inr)
-%ifdef GO4K_USE_DST_STEREO
- test al, byte STEREO
- jz short go4kDST_func_monohold ; // (inr)
- fstp st0 ; //
- fld dword [WRK+go4kDST_wrk.out2] ; // outr
-go4kDST_func_monohold:
-%endif
- fld dword [WRK+go4kDST_wrk.out] ; // out (outr)
- ret
-%endif
-
-%endif
-
-%ifdef USE_SECTIONS
-section .g4kcodf code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // DLL Tick
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-export_func go4kDLL_func@0
-%ifdef GO4K_USE_DLL
-%ifdef GO4K_USE_DLL_CHORUS
- %ifdef GO4K_USE_DLL_DAMP
- push 8
- %else
- push 7
- %endif
-%else
- %ifdef GO4K_USE_DLL_DAMP
- push 6
- %else
- push 5
- %endif
-%endif
- call go4kTransformValues
- pushad
- movzx ebx, byte [VAL-(go4kDLL_val.size-go4kDLL_val.delay)/4] ;// delay length index
-%ifdef GO4K_USE_DLL_NOTE_SYNC
- test ebx, ebx
- jne go4kDLL_func_process
- fld1
- fild dword [ecx-4] ; // load note freq
- fmul dword [c_i12]
- call _Power@0
- fmul dword [FREQ_NORMALIZE] ; // normalize
- fdivp st1, st0 ; // invert to get numer of samples
- fistp word [_go4k_delay_times+ebx*2] ; store current comb size
-%endif
-go4kDLL_func_process:
- mov ecx, eax ;// ecx is delay counter
-%ifdef GO4K_USE_DLL_MOD
- mov edi, WRK ;// edi is modulation workspace
-%endif
- mov WRK, dword [_go4k_delay_buffer_ofs] ;// ebp is current delay
- fld st0 ;// in in
-%ifdef GO4K_USE_DLL_MOD_IM
- fld dword [edx+go4kDLL_val.dry] ;// dry in in
- fadd dword [edi+go4kDLL_wrk2.im] ;// dry' in in
- fmulp st1, st0 ;// out in
-%else
- fmul dword [edx+go4kDLL_val.dry] ;// out in
-%endif
- fxch ;// in out
-%ifdef GO4K_USE_DLL_MOD_PM
- fld dword [edx+go4kDLL_val.pregain] ;// pg in out
- fadd dword [edi+go4kDLL_wrk2.pm] ;// pg' in out
- fmul st0, st0 ;// pg'' in out
- fmulp st1, st0 ;// in' out
-%else
- fmul dword [edx+go4kDLL_val.pregain] ;// in' out
- fmul dword [edx+go4kDLL_val.pregain] ;// in' out
-%endif
-
-%ifdef GO4K_USE_DLL_CHORUS
-;// update saw lfo for chorus/flanger
- fld dword [edx+go4kDLL_val.freq] ;// f in' out
-%ifdef GO4K_USE_DLL_MOD_SM
- fadd dword [edi+go4kDLL_wrk2.sm] ;// f' in' out
-%endif
- fmul st0, st0
- fmul st0, st0
- fdiv dword [DLL_DEPTH]
- fadd dword [WRK+go4kDLL_wrk.phase] ;// p' in' out
-;// clamp phase to 0,1 (only in editor, since delay can be active quite long)
-%ifdef GO4K_USE_DLL_CHORUS_CLAMP
- fld1 ;// 1 p' in' out
- fadd st1, st0 ;// 1 1+p' in' out
- fxch ;// 1+p' 1 in' out
- fprem ;// p'' 1 in' out
- fstp st1 ;// p'' in' out
-%endif
- fst dword [WRK+go4kDLL_wrk.phase]
-;// get current sine value
- fldpi ; // pi p in' out
- fadd st0 ; // 2*pi p in' out
- fmulp st1, st0 ; // 2*pi*p in' out
- fsin ; // sin in' out
- fld1 ; // 1 sin in' out
- faddp st1, st0 ; // 1+sin in' out
-;// mul with depth and convert to samples
- fld dword [edx+go4kDLL_val.depth] ; // d 1+sin in' out
-%ifdef GO4K_USE_DLL_MOD_AM
- fadd dword [edi+go4kDLL_wrk2.am] ; // d' 1+sin in' out
-%endif
- fmul st0, st0
- fmul st0, st0
- fmul dword [DLL_DEPTH]
- fmulp st1, st0
- fistp dword [esp-4] ; // in' out
-%endif
-
-go4kDLL_func_loop:
- movzx esi, word [_go4k_delay_times+ebx*2] ; fetch comb size
- mov eax, dword [WRK+go4kDLL_wrk.index] ;// eax is current comb index
-
-%ifdef GO4K_USE_DLL_CHORUS
- ;// add lfo offset and wrap buffer
- add eax, dword [esp-4]
- cmp eax, esi
- jl short go4kDLL_func_buffer_nowrap1
- sub eax, esi
-go4kDLL_func_buffer_nowrap1:
-%endif
-
- fld dword [WRK+eax*4+go4kDLL_wrk.buffer];// cout in' out
-
-%ifdef GO4K_USE_DLL_CHORUS
- mov eax, dword [WRK+go4kDLL_wrk.index]
-%endif
-
- ;// add comb output to current output
- fadd st2, st0 ;// cout in' out'
-%ifdef GO4K_USE_DLL_DAMP
- fld1 ;// 1 cout in' out'
- fsub dword [edx+go4kDLL_val.damp] ;// 1-damp cout in' out'
-%ifdef GO4K_USE_DLL_MOD_DM
- fsub dword [edi+go4kDLL_wrk2.dm] ;// 1-damp' cout in' out'
-%endif
- fmulp st1, st0 ;// cout*d2 in' out'
- fld dword [edx+go4kDLL_val.damp] ;// d1 cout*d2 in' out'
-%ifdef GO4K_USE_DLL_MOD_DM
- fadd dword [edi+go4kDLL_wrk2.dm] ;// d1' cout*d2 in' out'
-%endif
- fmul dword [WRK+go4kDLL_wrk.store] ;// store*d1 cout*d2 in' out'
- faddp st1, st0 ;// store' in' out'
- fst dword [WRK+go4kDLL_wrk.store] ;// store' in' out'
-%endif
-%ifdef GO4K_USE_DLL_MOD_FM
- fld dword [edx+go4kDLL_val.feedback] ;// fb cout in' out'
- fadd dword [edi+go4kDLL_wrk2.fm] ;// fb' cout in' out'
- fmulp st1, st0 ;// cout*fb' in' out'
-%else
- fmul dword [edx+go4kDLL_val.feedback] ;// cout*fb in' out'
-%endif
-%ifdef GO4K_USE_DLL_DC_FILTER
- fadd st0, st1 ;// store in' out'
- fstp dword [WRK+eax*4+go4kDLL_wrk.buffer];// in' out'
-%else
- fsub st0, st1 ;// store in' out'
- fstp dword [WRK+eax*4+go4kDLL_wrk.buffer];// in' out'
- fneg
-%endif
- ;// wrap comb buffer pos
- inc eax
- cmp eax, esi
- jl short go4kDLL_func_buffer_nowrap2
-%ifdef GO4K_USE_DLL_CHORUS
- sub eax, esi
-%else
- xor eax, eax
-%endif
-go4kDLL_func_buffer_nowrap2:
- mov dword [WRK+go4kDLL_wrk.index], eax
- ;// increment buffer pointer to next buffer
- inc ebx ;// go to next delay length index
- add WRK, go4kDLL_wrk.size ;// go to next delay
- mov dword [_go4k_delay_buffer_ofs], WRK ;// store next delay offset
- loopne go4kDLL_func_loop
- fstp st0 ;// out'
- ;// process a dc filter to prevent heavy offsets in reverb
-%ifdef GO4K_USE_DLL_DC_FILTER
-; y(n) = x(n) - x(n-1) + R * y(n-1)
- sub WRK, go4kDLL_wrk.size
- fld dword [WRK+go4kDLL_wrk.dcout] ;// dco out'
- fmul dword [c_dc_const] ;// dcc*dco out'
- fsub dword [WRK+go4kDLL_wrk.dcin] ;// dcc*dco-dci out'
- fxch ;// out' dcc*dco-dci
- fst dword [WRK+go4kDLL_wrk.dcin] ;// out' dcc*dco-dci
- faddp st1 ;// out'
-%ifdef GO4K_USE_UNDENORMALIZE
- fadd dword [c_0_5] ;// add and sub small offset to prevent denormalization
- fsub dword [c_0_5]
-%endif
- fst dword [WRK+go4kDLL_wrk.dcout]
-%endif
- popad
- ret
-%endif
-
-
-%ifdef USE_SECTIONS
-section .g4kcodu code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // GLITCH Tick
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-export_func go4kGLITCH_func@0
-%ifdef GO4K_USE_GLITCH
- push 5
- call go4kTransformValues
- pushad
-
- mov edi, WRK
- mov WRK, dword [_go4k_delay_buffer_ofs] ;// ebp is current delay
-
-; mov eax, dword [edx+go4kGLITCH_val.active]
-; or eax, dword [edi+go4kGLITCH_wrk2.am]
-; test eax, eax
-; je go4kGLITCH_func_notactive ;// out
-
- fld dword [edx+go4kGLITCH_val.active] ;// a in
- fadd dword [edi+go4kGLITCH_wrk2.am] ;// a' in
- ; // check for activity
- fldz ;// 0 a' in
- fucomip st1 ;// a' in
- fstp st0 ;// in
- jnc go4kGLITCH_func_notactive ;// out
-
- ;// check for first call and init if so init (using slizesize slot)
- mov eax, dword [WRK+go4kGLITCH_wrk.slizesize]
- and eax, eax
- jnz go4kGLITCH_func_process
- mov dword [WRK+go4kGLITCH_wrk.index], eax
- mov dword [WRK+go4kGLITCH_wrk.store], eax
- movzx ebx, byte [VAL-(go4kGLITCH_val.size-go4kGLITCH_val.slicesize)/4] ;// slicesize index
- movzx eax, word [_go4k_delay_times+ebx*2] ;// fetch slicesize
- push eax
- fld1
- fild dword [esp]
- fstp dword [WRK+go4kGLITCH_wrk.slizesize]
- fstp dword [WRK+go4kGLITCH_wrk.slicepitch]
- pop eax
-go4kGLITCH_func_process:
- ;// fill buffer until full
- mov eax, dword [WRK+go4kGLITCH_wrk.store]
- cmp eax, MAX_DELAY
- jae go4kGLITCH_func_filldone
- fst dword [WRK+eax*4+go4kDLL_wrk.buffer] ;// in
- inc dword [WRK+go4kGLITCH_wrk.store]
-go4kGLITCH_func_filldone:
- ;// save input
- push eax
- fstp dword [esp] ;// -
-
- ;// read from buffer
- push eax
- fld dword [WRK+go4kGLITCH_wrk.index] ;// idx
- fist dword [esp]
- pop eax
- fld dword [WRK+eax*4+go4kDLL_wrk.buffer] ;// out idx
- fxch ;// idx out
- ;// progress readindex with current play speed
- fadd dword [WRK+go4kGLITCH_wrk.slicepitch] ;// idx' out
- fst dword [WRK+go4kGLITCH_wrk.index]
-
- ;// check for slice done
- fld dword [WRK+go4kGLITCH_wrk.slizesize] ;// size idx' out
- fxch ;// idx' size out
- fucomip st1 ;// idx' out
- fstp st0 ;// out
- jc go4kGLITCH_func_process_done
- ;// reinit for next loop
- xor eax, eax
- mov dword [WRK+go4kGLITCH_wrk.index], eax
-
- fld dword [edx+go4kGLITCH_val.dsize]
- fadd dword [edi+go4kGLITCH_wrk2.sm]
- fsub dword [c_0_5]
- fmul dword [c_0_5]
- call _Power@0
- fmul dword [WRK+go4kGLITCH_wrk.slizesize]
- fstp dword [WRK+go4kGLITCH_wrk.slizesize]
-
- fld dword [edx+go4kGLITCH_val.dpitch]
- fadd dword [edi+go4kGLITCH_wrk2.pm]
- fsub dword [c_0_5]
- fmul dword [c_0_5]
- call _Power@0
- fmul dword [WRK+go4kGLITCH_wrk.slicepitch]
- fstp dword [WRK+go4kGLITCH_wrk.slicepitch]
-go4kGLITCH_func_process_done:
-
- ;// dry wet mix
- fld dword [edx+go4kGLITCH_val.dry] ;// dry out
- fadd dword [edi+go4kGLITCH_wrk2.dm] ;// dry' out
- fld1 ;// 1 dry' out
- fsub st1 ;// 1-dry' dry' out
- fmulp st2 ;// dry' out'
- fmul dword [esp] ;// in' out'
- faddp st1, st0 ;// out'
-
- pop eax
- jmp go4kGLITCH_func_leave
-go4kGLITCH_func_notactive:
- ;// mark as uninitialized again (using slizesize slot)
- xor eax,eax
- mov dword [WRK+go4kGLITCH_wrk.slizesize], eax
-go4kGLITCH_func_leave:
- add WRK, go4kDLL_wrk.size ;// go to next delay
- mov dword [_go4k_delay_buffer_ofs], WRK ;// store next delay offset
- popad
- ret
-%endif
-
-%ifdef USE_SECTIONS
-section .g4kcodg code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // FOP Tick (various fp stack based operations)
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-export_func go4kFOP_func@0
- push 1
- call go4kTransformValues
-go4kFOP_func_pop:
- dec eax
- jnz go4kFOP_func_addp
- fstp st0
- ret
-go4kFOP_func_addp:
- dec eax
- jnz go4kFOP_func_mulp
- faddp st1, st0
- ret
-go4kFOP_func_mulp:
- dec eax
- jnz go4kFOP_func_push
- fmulp st1, st0
- ret
-go4kFOP_func_push:
- dec eax
- jnz go4kFOP_func_xch
- fld st0
- ret
-go4kFOP_func_xch:
- dec eax
- jnz go4kFOP_func_add
- fxch
- ret
-go4kFOP_func_add:
- dec eax
- jnz go4kFOP_func_mul
- fadd st1
- ret
-go4kFOP_func_mul:
- dec eax
- jnz go4kFOP_func_addp2
- fmul st1
- ret
-go4kFOP_func_addp2:
- dec eax
- jnz go4kFOP_func_loadnote
- faddp st2, st0
- faddp st2, st0
- ret
-go4kFOP_func_loadnote:
- dec eax
- jnz go4kFOP_func_mulp2
- fild dword [ecx-4]
- fmul dword [c_i128]
- ret
-go4kFOP_func_mulp2:
- fmulp st2, st0
- fmulp st2, st0
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodh code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // FST Tick (stores a value somewhere in the local workspace)
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-export_func go4kFST_func@0
- push 1
- call go4kTransformValues
- fld dword [edx+go4kFST_val.amount]
- fsub dword [c_0_5]
- fadd st0
- fmul st1
- 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
-section .g4kcodm code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // FLD Tick (load a value on stack, optionally add a modulation signal beforehand)
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT : signal-signal*pan , signal*pan
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-export_func go4kFLD_func@0 ;// in main env
-%ifdef GO4K_USE_FLD
- push 1
- call go4kTransformValues
- fld dword [edx+go4kFLD_val.value] ;// value in
- fsub dword [c_0_5]
- fadd st0
-%ifdef GO4K_USE_FLD_MOD_VM
- fadd dword [WRK+go4kFLD_wrk.vm] ;// value' in
-%endif
-%endif
- ret
-
-%ifdef GO4K_USE_FSTG
-%ifdef USE_SECTIONS
-section .g4kcodi code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // FSTG Tick (stores a value anywhere in the synth (and in each voice))
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-export_func go4kFSTG_func@0
- 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
- lodsw
- jmp go4kFSTG_func_testpop
-go4kFSTG_func_do:
-%endif
- fld dword [edx+go4kFST_val.amount]
- fsub dword [c_0_5]
- fadd st0
- 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*4]
- fstp dword [go4k_synth_wrk+eax*4+go4k_instrument.size]
-%else
- 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
-section .g4kcodj code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // PAN Tick (multiplies signal with main envelope and converts to stereo)
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT : signal-signal*pan , signal*pan
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-export_func go4kPAN_func@0 ;// in main env
-%ifdef GO4K_USE_PAN
- push 1
- call go4kTransformValues
- fld dword [edx+go4kPAN_val.panning] ;// pan in
-%ifdef GO4K_USE_PAN_MOD
- fadd dword [WRK+go4kPAN_wrk.pm] ;// pan in
-%endif
- fmul st1 ;// r in
- fsub st1, st0 ;// r l
- fxch ;// l r
-%else
- fmul dword [c_0_5]
- fld st0
-%endif
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodk code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // OUT Tick ( stores stereo signal pair in temp buffers of the instrument)
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-export_func go4kOUT_func@0 ;// l r
-%ifdef GO4K_USE_GLOBAL_DLL
- push 2
- call go4kTransformValues
- pushad
- 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
-%ifdef GO4K_USE_OUT_MOD_AM
- fadd dword [WRK+go4kOUT_wrk.am] ;// am l r l r
-%endif
- fmulp st1, st0 ;// l' r l r
- fstp dword [edi] ;// r l r
- scasd
- fld dword [edx+go4kOUT_val.auxsend] ;// as r l r
-%ifdef GO4K_USE_OUT_MOD_AM
- fadd dword [WRK+go4kOUT_wrk.am] ;// am r l r
-%endif
- fmulp st1, st0 ;// r' l r
- fstp dword [edi] ;// l r
- scasd
- fld dword [edx+go4kOUT_val.gain] ;// g l r
-%ifdef GO4K_USE_OUT_MOD_GM
- fadd dword [WRK+go4kOUT_wrk.gm] ;// gm l r
-%endif
- fmulp st1, st0 ;// l' r
- fstp dword [edi] ;// r
- scasd
- 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 [edi] ;// -
- scasd
- popad
-%else
- push 1
- call go4kTransformValues
-
- fld dword [edx+go4kOUT_val.gain] ;// g l r
-%ifdef GO4K_USE_OUT_MOD_GM
- fadd dword [WRK+go4kOUT_wrk.gm] ;// gm l r
-%endif
- fmulp st1, st0 ;// l' 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+MAX_UNITS*MAX_UNIT_SLOTS*4+4] ;// -
-
-%endif
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodl code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // ACC Tick (stereo signal accumulation for synth commands only -> dont use in instrument commands)
-; //----------------------------------------------------------------------------------------
-; // IN : WRK = unit workspace
-; // IN : VAL = unit values
-; // IN : ecx = global workspace
-; // OUT :
-; // DIRTY : eax
-; //----------------------------------------------------------------------------------------
-export_func go4kACC_func@0
- push 1
- call go4kTransformValues
- pushad
- mov edi, go4k_synth_wrk
- add edi, go4k_instrument.size
- sub edi, eax ; // eax already contains the accumulation offset from the go4kTransformValues call
- mov cl, MAX_INSTRUMENTS*MAX_VOICES
- fldz ;// 0
- fldz ;// 0 0
-go4kACC_func_loop:
- fadd dword [edi-8] ;// l 0
- fxch ;// 0 l
- fadd dword [edi-4] ;// r l
- fxch ;// l r
- add edi, go4k_instrument.size
- dec cl
- jnz go4kACC_func_loop
- popad
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodw code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // Update Instrument (allocate voices, set voice to release)
-; //----------------------------------------------------------------------------------------
-; // IN :
-; // IN :
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-go4kUpdateInstrument:
-; // get new note
- mov eax, dword [esp+4+4] ; // eax = current tick
- shr eax, PATTERN_SIZE_SHIFT ; // eax = current pattern
- imul edx, ecx, dword MAX_PATTERNS ; // edx = instrument pattern list index
- movzx edx, byte [edx+eax+go4k_pattern_lists] ; // edx = pattern index
- mov eax, dword [esp+4+4] ; // eax = current tick
- shl edx, PATTERN_SIZE_SHIFT
- and eax, PATTERN_SIZE-1
- movzx edx, byte [edx+eax+go4k_patterns] ; // edx = requested note in new patterntick
-; // apply note changes
- cmp dl, HLD ; // anything but hold causes action
- je short go4kUpdateInstrument_done
- inc dword [edi] ; // set release flag if needed
-%if MAX_VOICES > 1
- inc dword [edi+go4k_instrument.size] ; // set release flag if needed
-%endif
- cmp dl, HLD ; // check for new note
- jl short go4kUpdateInstrument_done
-%if MAX_VOICES > 1
- pushad
- xchg eax, dword [go4k_voiceindex + ecx*4]
- test eax, eax
- je go4kUpdateInstrument_newNote
- add edi, go4k_instrument.size
-go4kUpdateInstrument_newNote:
- xor al,1
- xchg dword [go4k_voiceindex + ecx*4], eax
-%endif
- pushad
- xor eax, eax
- 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
-%if MAX_VOICES > 1
- popad
-%endif
- jmp short go4kUpdateInstrument_done
-go4kUpdateInstrument_done:
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcodx code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // Render Voices
-; //----------------------------------------------------------------------------------------
-; // IN :
-; // IN :
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-go4kRenderVoices:
- push ecx ; // save current instrument counter
-%if MAX_VOICES > 1
- push COM ; // save current instrument command index
- push VAL ; // save current instrument values index
-%endif
- call go4k_VM_process ; // call synth vm for instrument voices
- mov eax, dword [ecx+go4kENV_wrk.state]
- cmp al, byte ENV_STATE_OFF
- jne go4kRenderVoices_next
- xor eax, eax
- mov dword [ecx-4], eax ; // kill note if voice is done
-go4kRenderVoices_next:
-%if MAX_VOICES > 1
- pop VAL ; // restore instrument value index
- pop COM ; // restore instrument command index
-%endif
-
-%ifdef GO4K_USE_BUFFER_RECORDINGS
- mov eax, dword [esp+16] ; // get current tick
- shr eax, 8 ; // every 256th sample = ~ 172 hz
- shl eax, 5 ; // for 16 instruments a 2 voices
- add eax, dword [esp]
- add eax, dword [esp] ; // + 2*currentinstrument+0
-%ifdef GO4K_USE_ENVELOPE_RECORDINGS
- mov edx, dword [ecx+go4kENV_wrk.level]
- mov dword [__4klang_envelope_buffer+eax*4], edx
-%endif
-%ifdef GO4K_USE_NOTE_RECORDINGS
- mov edx, dword [ecx-4]
- mov dword [__4klang_note_buffer+eax*4], edx
-%endif
-%endif
-
-%if MAX_VOICES > 1
- call go4k_VM_process ; // call synth vm for instrument voices
- mov eax, dword [ecx+go4kENV_wrk.state]
- cmp al, byte ENV_STATE_OFF
- jne go4k_render_instrument_next2
- xor eax, eax
- mov dword [ecx-4], eax ; // kill note if voice is done
-go4k_render_instrument_next2:
-
-%ifdef GO4K_USE_BUFFER_RECORDINGS
- mov eax, dword [esp+16] ; // get current tick
- shr eax, 8 ; // every 256th sample = ~ 172 hz
- shl eax, 5 ; // for 16 instruments a 2 voices
- add eax, dword [esp]
- add eax, dword [esp] ; // + 2*currentinstrument+0
-%ifdef GO4K_USE_ENVELOPE_RECORDINGS
- mov edx, dword [ecx+go4kENV_wrk.level]
- mov dword [__4klang_envelope_buffer+eax*4+4], edx
-%endif
-%ifdef GO4K_USE_NOTE_RECORDINGS
- mov edx, dword [ecx-4]
- mov dword [__4klang_note_buffer+eax*4+4], edx
-%endif
-%endif
-
-%endif
- pop ecx ; // restore instrument counter
- ret
-
-%ifdef USE_SECTIONS
-section .g4kcody code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // the entry point for the synth
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-export_func _4klang_render@4
-%else
-export_func _4klang_render
-%endif
- pushad
-%ifdef SINGLE_TICK_RENDERING
- mov ecx, dword[__4klang_current_tick] ; get stored current tick
-%else
- xor ecx, ecx
-%endif
-%ifdef GO4K_USE_BUFFER_RECORDINGS
- push ecx
-%endif
-; loop all ticks
-go4k_render_tickloop:
- push ecx
- xor ecx, ecx
-; loop all samples per tick
-go4k_render_sampleloop:
- push ecx
- xor ecx, ecx
- mov ebx, go4k_synth_instructions ; // ebx = instrument command index
- mov VAL, go4k_synth_parameter_values; // VAL = instrument values index
- mov edi, _go4k_delay_buffer ; // get offset of first delay buffer
- mov dword [_go4k_delay_buffer_ofs], edi ; // store offset in delaybuffer offset variable
- mov edi, go4k_synth_wrk ; // edi = first instrument
-; loop all instruments
-go4k_render_instrumentloop:
- mov eax, dword [esp] ; // eax = current tick sample
- and eax, eax
- jnz go4k_render_instrument_process ; // tick change? (first sample in current tick)
- call go4kUpdateInstrument ; // update instrument state
-; process instrument
-go4k_render_instrument_process:
- call go4kRenderVoices
- inc ecx
- cmp cl, byte MAX_INSTRUMENTS
- jl go4k_render_instrumentloop
- mov dword [edi+4], ecx ; // move a value != 0 into note slot, so processing will be done
- call go4k_VM_process ; // call synth vm for synth
-go4k_render_output_sample:
-%ifdef GO4K_USE_BUFFER_RECORDINGS
- inc dword [esp+8]
- xchg esi, dword [esp+48] ; // edx = destbuffer
-%else
- xchg esi, dword [esp+44] ; // edx = destbuffer
-%endif
-%ifdef GO4K_CLIP_OUTPUT
- fld dword [edi-8]
- fld1 ; // 1 val
- fucomi st1 ; // 1 val
- jbe short go4k_render_clip1
- fchs ; // -1 val
- fucomi st1 ; // -1 val
- fcmovb st0, st1 ; // val -1 (if val > -1)
-go4k_render_clip1:
- fstp st1 ; // newval
-%ifdef GO4K_USE_16BIT_OUTPUT
- push eax
- fmul dword [c_32767]
- fistp dword [esp]
- pop eax
- mov word [esi],ax ; // store integer converted left sample
- lodsw
-%else
- fstp dword [esi] ; // store left sample
- lodsd
-%endif
- fld dword [edi-4]
- fld1 ; // 1 val
- fucomi st1 ; // 1 val
- jbe short go4k_render_clip2
- fchs ; // -1 val
- fucomi st1 ; // -1 val
- fcmovb st0, st1 ; // val -1 (if val > -1)
-go4k_render_clip2:
- fstp st1 ; // newval
-%ifdef GO4K_USE_16BIT_OUTPUT
- push eax
- fmul dword [c_32767]
- fistp dword [esp]
- pop eax
- mov word [esi],ax ; // store integer converted right sample
- lodsw
-%else
- fstp dword [esi] ; // store right sample
- lodsd
-%endif
-%else
- fld dword [edi-8]
-%ifdef GO4K_USE_16BIT_OUTPUT
- push eax
- fmul dword [c_32767]
- fistp dword [esp]
- pop eax
- mov word [esi],ax ; // store integer converted left sample
- lodsw
-%else
- fstp dword [esi] ; // store left sample
- lodsd
-%endif
- fld dword [edi-4]
-%ifdef GO4K_USE_16BIT_OUTPUT
- push eax
- fmul dword [c_32767]
- fistp dword [esp]
- pop eax
- mov word [esi],ax ; // store integer converted right sample
- lodsw
-%else
- fstp dword [esi] ; // store right sample
- lodsd
-%endif
-%endif
-%ifdef GO4K_USE_BUFFER_RECORDINGS
- xchg esi, dword [esp+48]
-%else
- xchg esi, dword [esp+44]
-%endif
- pop ecx
- inc ecx
-%ifdef GO4K_USE_GROOVE_PATTERN
- mov ebx, dword SAMPLES_PER_TICK
- mov eax, dword [esp]
- and eax, 0x0f
- bt dword [go4k_groove_pattern],eax
- jnc go4k_render_nogroove
- sub ebx, dword 3000
-go4k_render_nogroove:
- cmp ecx, ebx
-%else
- cmp ecx, dword SAMPLES_PER_TICK
-%endif
- jl go4k_render_sampleloop
- pop ecx
- inc ecx
-%ifdef AUTHORING
- mov dword[__4klang_current_tick], ecx
-%endif
- cmp ecx, dword MAX_TICKS
-%ifdef SINGLE_TICK_RENDERING
- jl no_loop_yet
- mov dword[__4klang_current_tick], 0 ; loop if at MAX_TICKS
-no_loop_yet:
-%else
- jl go4k_render_tickloop
-%endif
-%ifdef GO4K_USE_BUFFER_RECORDINGS
- pop ecx
-%endif
- popad
- ret 4
-
-%ifdef USE_SECTIONS
-section .g4kcodz code align=1
-%else
-section .text
-%endif
-; //----------------------------------------------------------------------------------------
-; // the magic behind it :)
-; //----------------------------------------------------------------------------------------
-; // IN : edi = instrument pointer
-; // IN : esi = instrumet values
-; // IN : ebx = instrument instructions
-; // OUT :
-; // DIRTY :
-; //----------------------------------------------------------------------------------------
-go4k_VM_process:
- lea WRK, [edi+8] ; // get current workspace pointer
- mov ecx, WRK ; // ecx = workspace start
-go4k_VM_process_loop:
- movzx eax, byte [ebx] ; // get command byte
- inc ebx
- test eax, eax
- je go4k_VM_process_done ; // command byte = 0? so done
- call dword [eax*4+go4k_synth_commands]
- 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
- ret
\ No newline at end of file
diff --git a/4klang_source/Go4kVSTi/win/4klang.inc b/4klang_source/Go4kVSTi/win/4klang.inc
deleted file mode 100644
index 1208a3f..0000000
--- a/4klang_source/Go4kVSTi/win/4klang.inc
+++ /dev/null
@@ -1,971 +0,0 @@
-; //----------------------------------------------------------------------------------------
-; // useful macros
-; //----------------------------------------------------------------------------------------
-; // export function (make it accessable from main.cpp)
-; //----------------------------------------------------------------------------------------
-%macro export_func 1
- global _%1
- _%1:
-%endmacro
-;%define USE_SECTIONS
-; //----------------------------------------------------------------------------------------
-; // basic defines for the song/synth
-; //----------------------------------------------------------------------------------------
-%define SAMPLE_RATE 44100
-%define MAX_INSTRUMENTS 9
-%define MAX_VOICES 1
-%define HLD 1 ; // can be adjusted to give crinkler some other possibilities
-%define BPM 100
-%define MAX_PATTERNS 62
-%define PATTERN_SIZE_SHIFT 4
-%define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT)
-%define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE)
-%define SAMPLES_PER_TICK (SAMPLE_RATE*4*60/(BPM*16))
-%define DEF_LFO_NORMALIZE 0.000038
-%define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS)
-; //----------------------------------------------------------------------------------------
-; // some defines for unit usage, which reduce synth code size
-; //----------------------------------------------------------------------------------------
-;%define GO4K_USE_16BIT_OUTPUT ; // removing this will output to 32bit floating point buffer
-;%define GO4K_USE_GROOVE_PATTERN ; // removing this skips groove pattern code
-;%define GO4K_USE_ENVELOPE_RECORDINGS ; // removing this skips envelope recording code
-;%define GO4K_USE_NOTE_RECORDINGS ; // removing this skips note recording code
-%define GO4K_USE_UNDENORMALIZE ; // removing this skips denormalization code in the units
-%define GO4K_CLIP_OUTPUT ; // removing this skips clipping code for the final output
-%define GO4K_USE_DST ; // removing this will skip DST unit
-%define GO4K_USE_DLL ; // removing this will skip DLL unit
-%define GO4K_USE_PAN ; // removing this will skip PAN unit
-%define GO4K_USE_GLOBAL_DLL ; // removing this will skip global dll processing
-%define GO4K_USE_FSTG ; // removing this will skip global store unit
-%define GO4K_USE_FLD ; // removing this will skip float load unit
-%define GO4K_USE_GLITCH ; // removing this will skip GLITCH unit
-%define GO4K_USE_ENV_CHECK ; // removing this skips checks if processing is needed
-%define GO4K_USE_ENV_MOD_GM ; // removing this will skip env gain modulation code
-%define GO4K_USE_ENV_MOD_ADR ; // removing this will skip env attack/decay/release modulation code
-%define GO4K_USE_VCO_CHECK ; // removing this skips checks if processing is needed
-%define GO4K_USE_VCO_PHASE_OFFSET ; // removing this will skip initial phase offset code
-%define GO4K_USE_VCO_SHAPE ; // removing this skips waveshaping code
-%define GO4K_USE_VCO_GATE ; // removing this skips gate code
-%define GO4K_USE_VCO_MOD_FM ; // removing this skips frequency modulation code
-%define GO4K_USE_VCO_MOD_PM ; // removing this skips phase modulation code
-%define GO4K_USE_VCO_MOD_TM ; // removing this skips transpose modulation code
-%define GO4K_USE_VCO_MOD_DM ; // removing this skips detune modulation code
-%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_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
-%define GO4K_USE_OUT_MOD_GM ; // removing this skips output gain modulation code
-%define GO4K_USE_WAVESHAPER_CLIP ; // removing this will skip clipping code
-%define GO4K_USE_FLD_MOD_VM ; // removing this will skip float load modulation code
-%define GO4K_USE_DLL_MOD ; // define this to enable modulations for delay line
-%define GO4K_USE_DLL_MOD_PM ; // define this to enable pregain modulation for delay line
-%define GO4K_USE_DLL_MOD_FM ; // define this to enable feebback modulation for delay line
-%define GO4K_USE_DLL_MOD_IM ; // define this to enable dry modulation for delay line
-%define GO4K_USE_DLL_MOD_DM ; // define this to enable damping modulation for delay line
-%define GO4K_USE_DLL_MOD_SM ; // define this to enable lfo freq modulation for delay line
-%define GO4K_USE_DLL_MOD_AM ; // define this to enable lfo depth modulation for delay line
-
-; //----------------------------------------------------------------------------------------
-; // synth defines
-; //----------------------------------------------------------------------------------------
-%define MAX_DELAY 65536
-%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
-; //----------------------------------------------------------------------------------------
-GO4K_ENV_ID equ 1
-%macro GO4K_ENV 5
- db %1
- db %2
- db %3
- db %4
- db %5
-%endmacro
-%define ATTAC(val) val
-%define DECAY(val) val
-%define SUSTAIN(val) val
-%define RELEASE(val) val
-%define GAIN(val) val
-struc go4kENV_val
-;// unit paramters
- .attac resd 1
- .decay resd 1
- .sustain resd 1
- .release resd 1
- .gain resd 1
- .size
-endstruc
-struc go4kENV_wrk
-;// work variables
- .state resd 1
- .level resd 1
-;// modulation targets
- .gm resd 1
- .am resd 1
- .dm resd 1
- .sm resd 1
- .rm resd 1
- .size
-endstruc
-%define ENV_STATE_ATTAC 0
-%define ENV_STATE_DECAY 1
-%define ENV_STATE_SUSTAIN 2
-%define ENV_STATE_RELEASE 3
-%define ENV_STATE_OFF 4
-; //----------------------------------------------------------------------------------------
-; // VCO structs
-; //----------------------------------------------------------------------------------------
-GO4K_VCO_ID equ 2
-
-%macro GO4K_VCO 8
- db %1
- db %2
-%ifdef GO4K_USE_VCO_PHASE_OFFSET
- db %3
-%endif
-%ifdef GO4K_USE_VCO_GATE
- db %4
-%endif
- db %5
-%ifdef GO4K_USE_VCO_SHAPE
- db %6
-%else
-%endif
- db %7
- db %8
-%endmacro
-%define TRANSPOSE(val) val
-%define DETUNE(val) val
-%define PHASE(val) val
-%define GATES(val) val
-%define COLOR(val) val
-%define SHAPE(val) val
-%define FLAGS(val) val
-%define SINE 0x01
-%define TRISAW 0x02
-%define PULSE 0x04
-%define NOISE 0x08
-%define LFO 0x10
-%define GATE 0x20
-%define VCO_STEREO 0x40
-struc go4kVCO_val
-;// unit paramters
- .transpose resd 1
- .detune resd 1
-%ifdef GO4K_USE_VCO_PHASE_OFFSET
- .phaseofs resd 1
-%endif
-%ifdef GO4K_USE_VCO_GATE
- .gate resd 1
-%endif
- .color resd 1
-%ifdef GO4K_USE_VCO_SHAPE
- .shape resd 1
-%endif
- .gain resd 1
- .flags resd 1
- .size
-endstruc
-struc go4kVCO_wrk
-;// work variables
- .phase resd 1
-;// modulation targets
- .tm resd 1
- .dm resd 1
- .fm resd 1
- .pm resd 1
- .cm resd 1
- .sm resd 1
- .gm resd 1
-;// stero variables
- .phase2 resd 1
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // VCF structs
-; //----------------------------------------------------------------------------------------
-GO4K_VCF_ID equ 3
-%macro GO4K_VCF 3
- db %1
- db %2
- db %3
-%endmacro
-%define LOWPASS 0x1
-%define HIGHPASS 0x2
-%define BANDPASS 0x4
-%define BANDSTOP 0x3
-%define ALLPASS 0x7
-%define PEAK 0x8
-%define STEREO 0x10
-%define FREQUENCY(val) val
-%define RESONANCE(val) val
-%define VCFTYPE(val) val
-struc go4kVCF_val
-;// unit paramters
- .freq resd 1
- .res resd 1
- .type resd 1
- .size
-endstruc
-struc go4kVCF_wrk
-;// work variables
- .low resd 1
- .high resd 1
- .band resd 1
- .freq resd 1 ;// unused but kept so modulation target offsets stay same
-;// modulation targets
- .fm 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 3
- db %1
-%ifdef GO4K_USE_DST_SH
- db %2
- %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
-; //----------------------------------------------------------------------------------------
-; // DLL structs
-; //----------------------------------------------------------------------------------------
-GO4K_DLL_ID equ 5
-%macro GO4K_DLL 8
- db %1
- db %2
- db %3
-%ifdef GO4K_USE_DLL_DAMP
- db %4
-%endif
-%ifdef GO4K_USE_DLL_CHORUS
- db %5
- db %6
-%endif
- db %7
- db %8
-%endmacro
-%define PREGAIN(val) val
-%define DRY(val) val
-%define FEEDBACK(val) val
-%define DEPTH(val) val
-%define DAMP(val) val
-%define DELAY(val) val
-%define COUNT(val) val
-struc go4kDLL_val
-;// unit paramters
- .pregain resd 1
- .dry resd 1
- .feedback resd 1
-%ifdef GO4K_USE_DLL_DAMP
- .damp resd 1
-%endif
-%ifdef GO4K_USE_DLL_CHORUS
- .freq resd 1
- .depth
-%endif
- .delay resd 1
- .count resd 1
- .size
-endstruc
-struc go4kDLL_wrk
-;// work variables
- .index resd 1
- .store resd 1
- .dcin resd 1
- .dcout resd 1
- .phase resd 1
-;// the delay buffer
- .buffer resd MAX_DELAY
- .size
-endstruc
-struc go4kDLL_wrk2
-;// modulation targets
- .pm resd 1
- .fm resd 1
- .im resd 1
- .dm resd 1
- .sm resd 1
- .am resd 1
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // FOP structs
-; //----------------------------------------------------------------------------------------
-GO4K_FOP_ID equ 6
-%macro GO4K_FOP 1
- db %1
-%endmacro
-%define OP(val) val
-%define FOP_POP 0x1
-%define FOP_ADDP 0x2
-%define FOP_MULP 0x3
-%define FOP_PUSH 0x4
-%define FOP_XCH 0x5
-%define FOP_ADD 0x6
-%define FOP_MUL 0x7
-%define FOP_ADDP2 0x8
-%define FOP_LOADNOTE 0x9
-%define FOP_MULP2 0xa
-struc go4kFOP_val
- .flags resd 1
- .size
-endstruc
-struc go4kFOP_wrk
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // FST structs
-; //----------------------------------------------------------------------------------------
-GO4K_FST_ID equ 7
-%macro GO4K_FST 2
- db %1
- 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
- .size
-endstruc
-struc go4kFST_wrk
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // PAN structs
-; //----------------------------------------------------------------------------------------
-GO4K_PAN_ID equ 8
-%macro GO4K_PAN 1
-%ifdef GO4K_USE_PAN
- db %1
-%endif
-%endmacro
-%define PANNING(val) val
-struc go4kPAN_val
-%ifdef GO4K_USE_PAN
- .panning resd 1
-%endif
- .size
-endstruc
-struc go4kPAN_wrk
-;// modulation targets
- .pm resd 1
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // OUT structs
-; //----------------------------------------------------------------------------------------
-GO4K_OUT_ID equ 9
-%macro GO4K_OUT 2
- db %1
-%ifdef GO4K_USE_GLOBAL_DLL
- db %2
-%endif
-%endmacro
-%define AUXSEND(val) val
-struc go4kOUT_val
- .gain resd 1
-%ifdef GO4K_USE_GLOBAL_DLL
- .auxsend resd 1
-%endif
- .size
-endstruc
-struc go4kOUT_wrk
-;// modulation targets
- .am resd 1
- .gm resd 1
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // ACC structs (this is for the synth def only)
-; //----------------------------------------------------------------------------------------
-GO4K_ACC_ID equ 10
-%macro GO4K_ACC 1
- db %1
-%endmacro
-%define OUTPUT 0
-%define AUX 8
-%define ACCTYPE(val) val
-struc go4kACC_val
- .acctype resd 1
- .size
-endstruc
-struc go4kACC_wrk
- .size
-endstruc
-%ifdef GO4K_USE_FLD
-; //----------------------------------------------------------------------------------------
-; // FLD structs
-; //----------------------------------------------------------------------------------------
-GO4K_FLD_ID equ 11
-%macro GO4K_FLD 1
- db %1
-%endmacro
-%define VALUE(val) val
-struc go4kFLD_val
- .value resd 1
- .size
-endstruc
-struc go4kFLD_wrk
-;// modulation targets
- .vm resd 1
- .size
-endstruc
-%endif
-%ifdef GO4K_USE_GLITCH
-; //----------------------------------------------------------------------------------------
-; // GLITCH structs
-; //----------------------------------------------------------------------------------------
-GO4K_GLITCH_ID equ 12
-%macro GO4K_GLITCH 5
- db %1
- db %2
- db %3
- db %4
- db %5
-%endmacro
-%define ACTIVE(val) val
-%define SLICEFACTOR(val)val
-%define PITCHFACTOR(val)val
-%define SLICESIZE(val) val
-struc go4kGLITCH_val
-;// unit paramters
- .active resd 1
- .dry resd 1
- .dsize resd 1
- .dpitch resd 1
- .slicesize resd 1
- .size
-endstruc
-struc go4kGLITCH_wrk
-;// work variables
- .index resd 1
- .store resd 1
- .slizesize resd 1
- .slicepitch resd 1
- .unused resd 1
-;// the delay buffer
- .buffer resd MAX_DELAY
- .size
-endstruc
-struc go4kGLITCH_wrk2
-;// modulation targets
- .am resd 1
- .dm resd 1
- .sm resd 1
- .pm resd 1
- .size
-endstruc
-%endif
-%ifdef GO4K_USE_FSTG
-; //----------------------------------------------------------------------------------------
-; // FSTG structs
-; //----------------------------------------------------------------------------------------
-GO4K_FSTG_ID equ 13
-%macro GO4K_FSTG 2
- db %1
- dw %2
-%endmacro
-struc go4kFSTG_val
- .amount resd 1
- .op1 resd 1
- .size
-endstruc
-struc go4kFSTG_wrk
- .size
-endstruc
-%endif
-; //----------------------------------------------------------------------------------------
-; // Voice struct
-; //----------------------------------------------------------------------------------------
-struc go4k_instrument
- .release resd 1
- .note resd 1
- .workspace resd MAX_UNITS*MAX_UNIT_SLOTS
- .dlloutl resd 1
- .dlloutr resd 1
- .outl resd 1
- .outr resd 1
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // Synth struct
-; //----------------------------------------------------------------------------------------
-struc go4k_synth
- .instruments resb go4k_instrument.size * MAX_INSTRUMENTS * MAX_VOICES
- .global resb go4k_instrument.size * MAX_VOICES
- .size
-endstruc
-; //----------------------------------------------------------------------------------------
-; // Pattern Data, reduced by 967 patterns
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-section .g4kmuc1 data align=1
-%else
-section .data align=1
-%endif
-go4k_patterns
- db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- db 76, HLD, HLD, HLD, 0, 0, 0, 0, 79, HLD, HLD, HLD, 0, 0, 0, 0,
- db 69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
- db 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 81, HLD, HLD, HLD, 0, 0, 0, 0, 79, HLD, HLD, HLD, 0, 0, 0, 0,
- db 84, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
- db 76, HLD, HLD, HLD, 0, 0, 0, 0, 88, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0,
- db 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
- db 52, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 40, 52, HLD, 64, HLD, 40, 52, 64, 52, HLD, HLD, HLD, 0, 0, 0, 0,
- db 57, 0, 0, 57, 0, 0, 69, 0, 0, 69, 0, 0, 57, HLD, HLD, HLD,
- db 52, 64, 0, 57, 0, 69, 48, 0, 48, HLD, HLD, HLD, 0, 0, 0, 0,
- db 40, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
- db 40, 52, HLD, 40, HLD, 40, 40, 40, 52, HLD, HLD, HLD, 0, 0, 0, 0,
- db 40, 0, 0, 52, 0, 0, 40, 0, 52, 40, 0, 52, 0, 40, 0, 0,
- db 45, 0, 0, 57, 0, 0, 45, 0, 57, 45, 0, 57, 0, 45, 0, 0,
- db 48, 0, 0, 60, 0, 0, 48, 0, 60, 48, 0, 60, 0, 48, 0, 0,
- db 40, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0,
- db 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0,
- db 36, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0,
- db 0, 0, 0, 0, 60, HLD, 0, 0, 0, 0, 0, 0, 60, HLD, 0, 0,
- db 60, HLD, 0, 0, 0, 0, 60, HLD, 0, 0, 60, HLD, 60, HLD, 0, 0,
- db 0, 0, 0, 0, 60, HLD, 0, 0, 0, 0, 0, 0, 60, HLD, 60, HLD,
- db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, HLD, 0, 0,
- db 60, HLD, 60, HLD, 0, 0, 60, HLD, 0, 0, 0, 0, 60, HLD, 0, 0,
- db 0, 0, 60, HLD, 0, 0, 0, 0, 60, HLD, 0, 0, 0, 0, 0, 0,
- db 0, 0, 60, HLD, 0, 0, 0, 0, 60, HLD, 0, 0, 60, HLD, 0, 0,
- db 0, 0, 0, 60, HLD, 0, 0, 0, 0, 0, 0, 0, 60, HLD, 0, 0,
- db 0, 0, 0, 60, HLD, 0, 0, 0, 0, 60, HLD, 60, 60, HLD, 0, 0,
- db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0,
- db 91, 0, 0, 88, 0, 0, 76, 0, 81, 0, 0, 0, 0, 0, 0, 0,
- db 81, 0, 0, 84, 0, 0, 86, 0, 88, 0, 0, 0, 0, 0, 0, 0,
- db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0,
- db 81, 0, 0, 84, 0, 0, 86, 0, 81, 0, 0, 0, 0, 0, 0, 0,
- db 84, 0, 0, 86, 0, 0, 88, 0, 0, 91, 0, 0, 84, 0, 0, 0,
- db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
-go4k_patterns_end
-; //----------------------------------------------------------------------------------------
-; // Pattern Index List
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-section .g4kmuc2 data align=1
-%else
-section .data
-%endif
-go4k_pattern_lists
-Instrument0List db 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 6, 7, 1, 2, 3, 0, 4, 5, 6, 7, 8, 2, 9, 0, 0, 0,
-Instrument1List db 9, 7, 10, 7, 11, 7, 12, 7, 9, 7, 10, 7, 11, 7, 12, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 13, 7, 14, 7, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 7, 0, 0,
-Instrument2List db 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 16, 0, 17, 0, 18, 0, 20, 20, 21, 21, 22, 22, 20, 20, 20, 20, 21, 21, 22, 22, 20, 20, 23, 15, 24, 16, 25, 17, 18, 0, 20, 20, 21, 21, 22, 22, 20, 20, 20, 20, 21, 21, 22, 22, 20, 20, 20, 20, 0, 0, 0, 0,
-Instrument3List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0,
-Instrument4List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 26, 27, 26, 27, 26, 27, 28, 27, 26, 27, 26, 27, 26, 27, 28, 27, 29, 27, 29, 27, 29, 27, 29, 27, 26, 27, 26, 27, 26, 27, 28, 27, 26, 27, 26, 27, 26, 27, 28, 27, 26, 27, 0, 0, 0,
-Instrument5List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 0, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 32, 30, 31, 30, 32, 0, 0,
-Instrument6List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 33, 34, 33, 33, 0, 0, 0, 0,
-Instrument7List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 0, 37, 38, 36, 0, 39, 35, 36, 0, 37, 38, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-Instrument8List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 11, 41, 41, 41, 41, 0,
-go4k_pattern_lists_end
-; //----------------------------------------------------------------------------------------
-; // Instrument Commands
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-section .g4kmuc3 data align=1
-%else
-section .data
-%endif
-go4k_synth_instructions
-GO4K_BEGIN_CMDDEF(Instrument0)
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_FST_ID
- db GO4K_FST_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_VCF_ID
- db GO4K_VCF_ID
- db GO4K_DST_ID
- db GO4K_PAN_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument1)
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_FST_ID
- db GO4K_FST_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_VCF_ID
- db GO4K_VCF_ID
- db GO4K_DST_ID
- db GO4K_PAN_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument2)
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_FST_ID
- db GO4K_FST_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_VCF_ID
- db GO4K_VCF_ID
- db GO4K_DST_ID
- db GO4K_PAN_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument3)
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_VCO_ID
- db GO4K_FOP_ID
- db GO4K_VCF_ID
- db GO4K_PAN_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument4)
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_ENV_ID
- db GO4K_DST_ID
- db GO4K_FST_ID
- db GO4K_FOP_ID
- db GO4K_VCO_ID
- db GO4K_FOP_ID
- db GO4K_PAN_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument5)
- db GO4K_ENV_ID
- db GO4K_VCO_ID
- db GO4K_FOP_ID
- db GO4K_VCF_ID
- db GO4K_PAN_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument6)
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_ENV_ID
- db GO4K_FST_ID
- db GO4K_FST_ID
- db GO4K_FOP_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_VCO_ID
- db GO4K_VCF_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_FOP_ID
- db GO4K_VCF_ID
- db GO4K_PAN_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument7)
- db GO4K_ENV_ID
- db GO4K_VCO_ID
- db GO4K_FOP_ID
- db GO4K_PAN_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-GO4K_BEGIN_CMDDEF(Instrument8)
- db GO4K_ENV_ID
- db GO4K_VCO_ID
- db GO4K_FOP_ID
- db GO4K_FSTG_ID
- db GO4K_FSTG_ID
- db GO4K_FOP_ID
-GO4K_END_CMDDEF
-;// global commands
-GO4K_BEGIN_CMDDEF(Global)
- db GO4K_ACC_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_DLL_ID
- db GO4K_FOP_ID
- db GO4K_ACC_ID
- db GO4K_FOP_ID
- db GO4K_OUT_ID
-GO4K_END_CMDDEF
-go4k_synth_instructions_end
-; //----------------------------------------------------------------------------------------
-; // Intrument Data
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-section .g4kmuc4 data align=1
-%else
-section .data
-%endif
-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_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_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), 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)
- GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1)
- GO4K_FOP OP(FOP_XCH)
- GO4K_OUT GAIN(0), AUXSEND(32)
-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_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_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), 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)
- GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1)
- GO4K_FOP OP(FOP_XCH)
- GO4K_OUT GAIN(0), AUXSEND(32)
-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_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_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), 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)
- GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1)
- GO4K_FOP OP(FOP_XCH)
- GO4K_OUT GAIN(64), AUXSEND(64)
-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_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)
- GO4K_PAN PANNING(64)
- GO4K_OUT GAIN(64), AUXSEND(0)
-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_UNIT_SLOTS+2)
- GO4K_ENV ATTAC(0),DECAY(70),SUSTAIN(0),RELEASE(0),GAIN(128)
- 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)
- GO4K_PAN PANNING(64)
- GO4K_OUT GAIN(128), AUXSEND(0)
-GO4K_END_PARAMDEF
-GO4K_BEGIN_PARAMDEF(Instrument5)
- GO4K_ENV ATTAC(0),DECAY(64),SUSTAIN(0),RELEASE(0),GAIN(128)
- 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(128),RESONANCE(128),VCFTYPE(BANDPASS)
- 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)
- GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1)
- GO4K_FOP OP(FOP_XCH)
- GO4K_OUT GAIN(64), AUXSEND(0)
-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_UNIT_SLOTS+2)
- GO4K_ENV ATTAC(0),DECAY(56),SUSTAIN(0),RELEASE(0),GAIN(128)
- 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)
- GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(64),FLAGS(NOISE)
- GO4K_VCF FREQUENCY(104),RESONANCE(128),VCFTYPE(LOWPASS)
- GO4K_FOP OP(FOP_ADDP)
- GO4K_FOP OP(FOP_ADDP)
- GO4K_FOP OP(FOP_MULP)
- GO4K_VCF FREQUENCY(22),RESONANCE(32),VCFTYPE(HIGHPASS)
- GO4K_PAN PANNING(64)
- GO4K_OUT GAIN(64), AUXSEND(0)
-GO4K_END_PARAMDEF
-GO4K_BEGIN_PARAMDEF(Instrument7)
- GO4K_ENV ATTAC(0),DECAY(0),SUSTAIN(96),RELEASE(32),GAIN(128)
- GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(80),SHAPE(64),GAIN(128),FLAGS(PULSE)
- GO4K_FOP OP(FOP_MULP)
- 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)
- GO4K_DLL PREGAIN(96),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1)
- GO4K_FOP OP(FOP_XCH)
- GO4K_OUT GAIN(0), AUXSEND(64)
-GO4K_END_PARAMDEF
-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_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
-GO4K_BEGIN_PARAMDEF(Global)
- GO4K_ACC ACCTYPE(AUX)
- GO4K_DLL PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(0),COUNT(8)
- GO4K_FOP OP(FOP_XCH)
- GO4K_DLL PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(8),COUNT(8)
- GO4K_FOP OP(FOP_XCH)
- GO4K_ACC ACCTYPE(OUTPUT)
- GO4K_FOP OP(FOP_ADDP2)
- GO4K_OUT GAIN(64), AUXSEND(0)
-GO4K_END_PARAMDEF
-go4k_synth_parameter_values_end
-; //----------------------------------------------------------------------------------------
-; // Delay/Reverb Times
-; //----------------------------------------------------------------------------------------
-%ifdef USE_SECTIONS
-section .g4kmuc5 data align=1
-%else
-section .data
-%endif
-%ifdef GO4K_USE_DLL
-global _go4k_delay_times
-_go4k_delay_times
- dw 0
- dw 1116
- dw 1188
- dw 1276
- dw 1356
- dw 1422
- dw 1492
- dw 1556
- dw 1618
- dw 1140
- dw 1212
- dw 1300
- dw 1380
- dw 1446
- dw 1516
- dw 1580
- dw 1642
- times 100 dw 0
-%endif
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi.sln b/4klang_source/Go4kVSTi/win/Go4kVSTi.sln
deleted file mode 100644
index b2034b1..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-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
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {107757EA-2FE1-4C5E-964F-DE7E482E253F}.Debug|Win32.ActiveCfg = Debug|Win32
- {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
- EndGlobalSection
-EndGlobal
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi.vcproj b/4klang_source/Go4kVSTi/win/Go4kVSTi.vcproj
deleted file mode 100644
index 884876e..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi.vcproj
+++ /dev/null
@@ -1,361 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi.vcxproj b/4klang_source/Go4kVSTi/win/Go4kVSTi.vcxproj
deleted file mode 100644
index b600542..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi.vcxproj
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
-
- 4klang
- {107757EA-2FE1-4C5E-964F-DE7E482E253F}
- Go4kVSTi
- 8.1
-
-
-
- DynamicLibrary
- false
- false
- v140
-
-
- DynamicLibrary
- false
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.40219.1
- .\$(ProjectName)\Debug\
- .\$(ProjectName)\Debug\
- true
- .\$(ProjectName)\Release\
- .\$(ProjectName)\Release\
- false
- false
- false
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
-
-
-
- _DEBUG;%(PreprocessorDefinitions)
- true
- true
- Win32
- .\Debug/vstxsynth.tlb
-
-
- Disabled
- ..\source\common;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)
- Sync
- EnableFastChecks
- MultiThreadedDebug
- 1Byte
- true
- Fast
-
-
-
-
- Level3
- true
- ProgramDatabase
- Default
-
-
- _DEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)
- true
- .\Go4kVSTi.def
- true
- Windows
- false
-
-
-
-
- copy /Y $(TargetPath) C:\VST
-
-
-
-
- NDEBUG;%(PreprocessorDefinitions)
- true
- true
- Win32
- .\Release/vstxsynth.tlb
-
-
- Disabled
- AnySuitable
- true
- Speed
- false
- ..\source\common;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)
- true
- Sync
- MultiThreaded
- 1Byte
- false
- false
- NotSet
- Fast
- true
-
-
-
-
- Level3
- true
-
-
- Cdecl
- Default
-
-
- NDEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)
- true
- .\Go4kVSTi.def
- Windows
- false
-
-
-
-
- copy /Y $(TargetPath) C:\VST
-
-
-
-
-
-
-
- Cdecl
-
-
- Cdecl
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi.vcxproj.filters b/4klang_source/Go4kVSTi/win/Go4kVSTi.vcxproj.filters
deleted file mode 100644
index 41cc7d4..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi.vcxproj.filters
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
- {1cf4fa67-2860-48e5-9e8b-29b87a918b97}
- cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
-
-
- {8c759cfb-040e-43f2-a0c5-3f00eb100142}
- h;hpp;hxx;hm;inl
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
-
-
- Source Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi2.rc b/4klang_source/Go4kVSTi/win/Go4kVSTi2.rc
deleted file mode 100644
index 65a314d..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi2.rc
+++ /dev/null
@@ -1,1432 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "WinResrc.h"
-#define IDC_STATIC -1
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// German (Germany) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
-LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
-#pragma code_page(1252)
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// BINARY
-//
-
-IDR_COMP_RES BINARY "nasmw.bin"
-IDR_ASM_RES BINARY "4klang.bin"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-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 - 8klang Synth Plugin (4klang addon) - Version 3.2.2"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- PUSHBUTTON "Load Patch Data",IDC_LOAD_PATCH,13,13,70,14
- PUSHBUTTON "Save Patch Data",IDC_SAVE_PATCH,85,13,70,14
- PUSHBUTTON "Reset Patch Data",IDC_RESET_PATCH,157,13,70,14
- 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,31,56,8
- LTEXT "Instrument",IDC_STATIC,242,17,36,8
- 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
- LTEXT "0",IDC_VOICECOUNT3,365,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT4,381,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT5,397,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT6,413,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT7,429,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT8,445,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT9,461,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT10,477,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT11,493,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT12,509,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT13,525,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT14,541,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT15,557,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "0",IDC_VOICECOUNT16,573,322,14,12,0,WS_EX_STATICEDGE
- LTEXT "Activated Voices",IDC_STATIC,278,324,54,8
- PUSHBUTTON "Record",IDC_RECORD_BUTTON,449,10,62,14
- PUSHBUTTON "Stop",IDC_STOP_BUTTON,449,24,62,14,WS_DISABLED
- CONTROL "Solo",IDC_SOLO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,398,24,29,10
- GROUPBOX "4k Export",IDC_STATIC,437,0,150,66
- COMBOBOX IDC_PATTERN_SIZE,479,38,33,94,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
- GROUPBOX "Current Unit",IDC_MODULE_SETTINGS,277,61,310,202
- 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,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
- PUSHBUTTON "Reset",IDC_UNIT_RESET,303,72,50,14
- PUSHBUTTON "Copy",IDC_UNIT_COPY,355,72,50,14
- PUSHBUTTON "Paste",IDC_UNIT_PASTE,407,72,50,14
- PUSHBUTTON "Load",IDC_UNIT_LOAD,459,72,50,14
- PUSHBUTTON "Save",IDC_UNIT_SAVE,511,72,50,14
- CONTROL "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,527,267,64,20
- CONTROL "Record Notes",IDC_NOTEVALUES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,32,57,10
- CONTROL "Undenormalize",IDC_UNDENORMALIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,14,61,10
- CONTROL "Clip Output",IDC_CLIPOUTPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,5,52,10
- CONTROL "Record Envs",IDC_ENVLEVELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,23,57,10
- CONTROL "16Bit Output",IDC_16BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,41,57,10
- CTEXT "Static",IDC_ISTACK_VALID,11,321,241,9
- CTEXT "Static",IDC_GSTACK_VALID,11,321,241,9
- 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
- CONTROL "Stayalive Noise while Recording",IDC_RECORDBUSYSIGNAL,
- "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,431,267,64,21
-END
-
-IDD_VCO DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Oscillator",IDC_STATIC,0,0,300,170
- PUSHBUTTON "Sine",IDC_VCO_SINE,6,27,50,14,WS_DISABLED
- PUSHBUTTON "Tri/Saw",IDC_VCO_TRISAW,56,27,50,14
- PUSHBUTTON "Pulse",IDC_VCO_PULSE,106,27,50,14
- PUSHBUTTON "Noise",IDC_VCO_NOISE,156,27,50,14
- CONTROL "",IDC_VCO_GAIN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,127,200,15
- CONTROL "",IDC_VCO_TRANSPOSE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,47,200,15
- CONTROL "",IDC_VCO_DETUNE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,63,200,15
- CONTROL "",IDC_VCO_PHASE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,79,200,15
- CONTROL "",IDC_VCO_COLOR,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,95,200,15
- LTEXT "Transpose",IDC_STATIC,4,51,34,8
- LTEXT "Phase",IDC_STATIC,4,82,20,8
- LTEXT "Detune",IDC_STATIC,4,67,24,8
- LTEXT "Color",IDC_STATIC,4,98,18,8
- LTEXT "Gain",IDC_STATIC,4,130,15,8
- CONTROL "",IDC_VCO_SHAPE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,111,200,15
- LTEXT "Shape",IDC_STATIC,4,114,21,8
- CTEXT " ",IDC_VCO_TRANSPOSE_VAL,242,48,48,12,SS_SUNKEN
- CTEXT " ",IDC_VCO_DETUNE_VAL,242,64,48,12,SS_SUNKEN
- CTEXT " ",IDC_VCO_PHASE_VAL,242,80,48,12,SS_SUNKEN
- CTEXT " ",IDC_VCO_COLOR_VAL,242,96,48,12,SS_SUNKEN
- 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
- CONTROL " ",IDC_VCO_GATE3,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,67,147,8,10
- CONTROL " ",IDC_VCO_GATE4,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,79,147,8,10
- CONTROL " ",IDC_VCO_GATE5,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,91,147,8,10
- CONTROL " ",IDC_VCO_GATE6,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,103,147,8,10
- CONTROL " ",IDC_VCO_GATE7,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,115,147,8,10
- CONTROL " ",IDC_VCO_GATE8,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,127,147,8,10
- CONTROL " ",IDC_VCO_GATE9,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,139,147,8,10
- CONTROL " ",IDC_VCO_GATE10,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,151,147,8,10
- CONTROL " ",IDC_VCO_GATE11,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,163,147,8,10
- CONTROL " ",IDC_VCO_GATE12,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,175,147,8,10
- CONTROL " ",IDC_VCO_GATE13,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,187,147,8,10
- CONTROL " ",IDC_VCO_GATE14,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,199,147,8,10
- CONTROL " ",IDC_VCO_GATE15,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,211,147,8,10
- CONTROL " ",IDC_VCO_GATE16,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,223,147,8,10
- LTEXT "Gate",IDC_STATIC,4,147,16,8
-END
-
-IDD_VCF DIALOGEX 0, 0, 300, 170
-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,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
- LTEXT "Resonance",IDC_STATIC,4,99,36,8
- CTEXT " ",IDC_VCF_FREQUENCY_VAL,242,80,48,12,SS_SUNKEN
- CTEXT " ",IDC_VCF_RESONANCE_VAL,242,96,48,12,SS_SUNKEN
-END
-
-IDD_ENV DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Envelope",IDC_STATIC,0,0,300,170
- CONTROL "",IDC_ENV_GAIN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,109,200,15
- CONTROL "",IDC_ENV_ATTACK,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,46,200,15
- CONTROL "",IDC_ENV_DECAY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,61,200,15
- CONTROL "",IDC_ENV_SUSTAIN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,77,200,15
- CONTROL "",IDC_ENV_RELEASE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,93,200,15
- LTEXT "Attack",IDC_STATIC,4,49,22,8
- LTEXT "Sustain",IDC_STATIC,4,80,24,8
- LTEXT "Decay",IDC_STATIC,4,65,21,8
- LTEXT "Release",IDC_STATIC,4,96,26,8
- LTEXT "Gain",IDC_STATIC,4,112,15,8
- CTEXT " ",IDC_ENV_ATTACK_VAL,242,46,48,12,SS_SUNKEN
- CTEXT " ",IDC_ENV_DECAY_VAL,242,62,48,12,SS_SUNKEN
- CTEXT " ",IDC_ENV_SUSTAIN_VAL,242,78,48,12,SS_SUNKEN
- CTEXT " ",IDC_ENV_RELEASE_VAL,242,94,48,12,SS_SUNKEN
- CTEXT " ",IDC_ENV_GAIN_VAL,242,110,48,12,SS_SUNKEN
-END
-
-IDD_DLL DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Delay/Reverb",IDC_STATIC,0,0,300,170
- CONTROL "",IDC_DLL_DRY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,73,200,15
- CONTROL "",IDC_DLL_PREGAIN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,42,200,15
- CONTROL "",IDC_DLL_FEEDBACK,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,57,200,15
- LTEXT "Pregain",IDC_STATIC,4,45,25,8
- LTEXT "Feedback",IDC_STATIC,4,61,32,8
- LTEXT "Dry",IDC_STATIC,4,76,12,8
- CTEXT " ",IDC_DLL_PREGAIN_VAL,242,42,48,12,SS_SUNKEN
- CTEXT " ",IDC_DLL_FEEDBACK_VAL,242,58,48,12,SS_SUNKEN
- CTEXT " ",IDC_DLL_DRY_VAL,242,74,48,12,SS_SUNKEN
- CONTROL "",IDC_DLL_DAMP,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,90,200,15
- LTEXT "Damp",IDC_STATIC,4,93,19,8
- CTEXT " ",IDC_DLL_DAMP_VAL,242,90,48,12,SS_SUNKEN
- PUSHBUTTON "Delay",IDC_DLL_DELAY,134,13,50,14
- PUSHBUTTON "Reverb",IDC_DLL_REVERB,184,13,50,14
- CONTROL "",IDC_DLL_DTIME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,106,200,15
- LTEXT "Delay",IDC_STATIC,4,110,19,8
- PUSHBUTTON "BPM",IDC_DLL_BPMSYNC,47,15,40,10
- PUSHBUTTON "Note",IDC_DLL_NOTESYNC,87,15,40,10
- CTEXT " ",IDC_DLL_DTIME_VAL,242,106,48,12,SS_SUNKEN
- CONTROL "Left Reverb",IDC_DLL_LEFTREVERB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,16,54,10
- PUSHBUTTON "No Sync",IDC_DLL_NOSYNC,7,15,40,10
- CONTROL "",IDC_DLL_FREQUENCY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,122,200,15
- LTEXT "Frequency",IDC_STATIC,4,127,35,8
- CTEXT " ",IDC_DLL_FREQUENCY_VAL,242,122,48,12,SS_SUNKEN
- CONTROL "",IDC_DLL_DEPTH,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,138,200,15
- LTEXT "Depth",IDC_STATIC,4,143,20,8
- CTEXT " ",IDC_DLL_DEPTH_VAL,242,138,48,12,SS_SUNKEN
-END
-
-IDD_DST DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Distortion",IDC_STATIC,0,0,299,170
- CONTROL "",IDC_DST_DRIVE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,69,200,15
- LTEXT "Drive",IDC_STATIC,4,73,18,8
- LTEXT "S&&H",IDC_STATIC,4,89,14,8
- 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, 640
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN | WS_SYSMENU
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- PUSHBUTTON " ",IDC_ISTACK_UNIT1,15,0,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP1,165,0,25,10,NOT WS_VISIBLE
- PUSHBUTTON "Down",IDC_ISTACK_DOWN1,191,0,25,10,NOT WS_VISIBLE
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT1,225,0,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT2,15,10,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP2,165,10,25,10,NOT WS_VISIBLE
- PUSHBUTTON "Down",IDC_ISTACK_DOWN2,191,10,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT2,225,10,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT3,15,20,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP3,165,20,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN3,191,20,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT3,225,20,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT4,15,30,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP4,165,30,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN4,191,30,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT4,225,30,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT5,15,40,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP5,165,40,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN5,191,40,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT5,225,40,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT6,15,50,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP6,165,50,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN6,191,50,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT6,225,50,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT7,15,60,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP7,165,60,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN7,191,60,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT7,225,60,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT8,15,70,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP8,165,70,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN8,191,70,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT8,225,70,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT9,15,80,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP9,165,80,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN9,191,80,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT9,225,80,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT10,15,90,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP10,165,90,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN10,191,90,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT10,225,90,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT11,15,100,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP11,165,100,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN11,191,100,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT11,225,100,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT12,15,110,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP12,165,110,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN12,191,110,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT12,225,110,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT13,15,120,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP13,165,120,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN13,191,120,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT13,225,120,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT14,15,130,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP14,165,130,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN14,191,130,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT14,225,130,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT15,15,140,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP15,165,140,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN15,191,140,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT15,225,140,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT16,15,150,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP16,165,150,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN16,191,150,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT16,225,150,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT17,15,160,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP17,165,160,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN17,191,160,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT17,225,160,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT18,15,170,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP18,165,170,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN18,191,170,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT18,225,170,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT19,15,180,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP19,165,180,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN19,191,180,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT19,225,180,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT20,15,190,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP20,165,190,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN20,191,190,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT20,225,190,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT21,15,200,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP21,165,200,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN21,191,200,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT21,225,200,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT22,15,210,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP22,165,210,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN22,191,210,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT22,225,210,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT23,15,220,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP23,165,220,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN23,191,220,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT23,225,220,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT24,15,230,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP24,165,230,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN24,191,230,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT24,225,230,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT25,15,240,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP25,165,240,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN25,191,240,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT25,225,240,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT26,15,250,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP26,165,250,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN26,191,250,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT26,225,250,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT27,15,260,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP27,165,260,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN27,191,260,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT27,225,260,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT28,15,270,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP28,165,270,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN28,191,270,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT28,225,270,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT29,15,280,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP29,165,280,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN29,191,280,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT29,225,280,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT30,15,290,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP30,165,290,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN30,191,290,25,10
- CTEXT "1",IDC_ISTACK_SIGNALCOUNT30,225,290,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_ISTACK_UNIT31,15,300,83,10
- PUSHBUTTON "Up",IDC_ISTACK_UP31,165,300,25,10
- PUSHBUTTON "Down",IDC_ISTACK_DOWN31,191,300,25,10
- 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
- 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
- PUSHBUTTON "Clear",IDC_ISTACK_RESET2,132,10,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET3,106,20,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET3,132,20,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET4,106,30,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET4,132,30,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET5,106,40,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET5,132,40,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET6,106,50,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET6,132,50,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET7,106,60,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET7,132,60,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET8,106,70,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET8,132,70,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET9,106,80,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET9,132,80,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET10,106,90,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET10,132,90,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET11,106,100,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET11,132,100,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET12,106,110,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET12,132,110,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET13,106,120,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET13,132,120,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET14,106,130,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET14,132,130,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET15,106,140,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET15,132,140,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET16,106,150,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET16,132,150,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET17,106,160,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET17,132,160,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET18,106,170,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET18,132,170,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET19,106,180,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET19,132,180,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET20,106,190,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET20,132,190,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET21,106,200,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET21,132,200,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET22,106,210,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET22,132,210,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET23,106,220,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET23,132,220,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET24,106,230,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET24,132,230,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET25,106,240,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET25,132,240,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET26,106,250,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET26,132,250,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET27,106,260,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET27,132,260,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET28,106,270,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET28,132,270,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET29,106,280,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET29,132,280,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET30,106,290,25,10
- PUSHBUTTON "Clear",IDC_ISTACK_RESET30,132,290,25,10
- PUSHBUTTON "Set",IDC_ISTACK_SET31,106,300,25,10
- 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
- LTEXT "4:",IDC_STATIC,2,31,10,8
- LTEXT "5:",IDC_STATIC,2,41,10,8
- LTEXT "6:",IDC_STATIC,2,51,10,8
- LTEXT "7:",IDC_STATIC,2,61,10,8
- LTEXT "8:",IDC_STATIC,2,71,10,8
- LTEXT "9:",IDC_STATIC,2,81,10,8
- LTEXT "10:",IDC_STATIC,2,91,10,8
- LTEXT "11:",IDC_STATIC,2,101,10,8
- LTEXT "12:",IDC_STATIC,2,111,10,8
- LTEXT "13:",IDC_STATIC,2,121,10,8
- LTEXT "14:",IDC_STATIC,2,131,10,8
- LTEXT "15:",IDC_STATIC,2,141,10,8
- LTEXT "16:",IDC_STATIC,2,151,10,8
- LTEXT "17:",IDC_STATIC,2,161,10,8
- LTEXT "18:",IDC_STATIC,2,171,10,8
- LTEXT "19:",IDC_STATIC,2,181,10,8
- LTEXT "20:",IDC_STATIC,2,191,10,8
- LTEXT "21:",IDC_STATIC,2,201,10,8
- LTEXT "22:",IDC_STATIC,2,211,10,8
- LTEXT "23:",IDC_STATIC,2,221,10,8
- LTEXT "24:",IDC_STATIC,2,231,10,8
- LTEXT "25:",IDC_STATIC,2,241,10,8
- LTEXT "26:",IDC_STATIC,2,251,10,8
- LTEXT "27:",IDC_STATIC,2,261,10,8
- LTEXT "28:",IDC_STATIC,2,271,10,8
- LTEXT "29:",IDC_STATIC,2,281,10,8
- 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
-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 "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
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Store Signal",IDC_STATIC,0,0,299,170
- CONTROL "",IDC_FST_AMOUNT,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,36,101,200,15
- LTEXT "Amount",IDC_STATIC,3,104,26,8
- CTEXT " ",IDC_FST_AMOUNT_VAL,242,102,48,12,SS_SUNKEN
- COMBOBOX IDC_FST_DESTINATION_INSTRUMENT,43,53,249,177,CBS_DROPDOWN | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
- LTEXT "Stack",IDC_STATIC,5,55,18,8
- COMBOBOX IDC_FST_DESTINATION_UNIT,43,69,249,157,CBS_DROPDOWN | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
- 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
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "",-1,0,0,299,170
- LTEXT "Nothing selected",-1,123,80,54,8
-END
-
-IDD_OUT DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Instrument Output",IDC_STATIC,0,0,299,170
- CONTROL "",IDC_OUT_GAIN,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,37,70,200,15
- LTEXT "Gain",IDC_STATIC,6,73,15,8
- LTEXT "AUX Send",IDC_STATIC,6,89,32,8
- CONTROL "",IDC_OUT_AUXSEND,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,37,85,200,15
- CTEXT " ",IDC_OUT_GAIN_VAL,242,70,48,12,SS_SUNKEN
- CTEXT " ",IDC_OUT_AUXSEND_VAL,242,86,48,12,SS_SUNKEN
-END
-
-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
- PUSHBUTTON " ",IDC_GSTACK_UNIT1,15,0,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP1,165,0,25,10,NOT WS_VISIBLE
- PUSHBUTTON "Down",IDC_GSTACK_DOWN1,191,0,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT1,225,0,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT2,15,10,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP2,165,10,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN2,191,10,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT2,225,10,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT3,15,20,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP3,165,20,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN3,191,20,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT3,225,20,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT4,15,30,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP4,165,30,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN4,191,30,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT4,225,30,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT5,15,40,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP5,165,40,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN5,191,40,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT5,225,40,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT6,15,50,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP6,165,50,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN6,191,50,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT6,225,50,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT7,15,60,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP7,165,60,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN7,191,60,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT7,225,60,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT8,15,70,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP8,165,70,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN8,191,70,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT8,225,70,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT9,15,80,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP9,165,80,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN9,191,80,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT9,225,80,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT10,15,90,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP10,165,90,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN10,191,90,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT10,225,90,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT11,15,100,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP11,165,100,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN11,191,100,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT11,225,100,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT12,15,110,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP12,165,110,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN12,191,110,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT12,225,110,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT13,15,120,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP13,165,120,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN13,191,120,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT13,225,120,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT14,15,130,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP14,165,130,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN14,191,130,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT14,225,130,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT15,15,140,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP15,165,140,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN15,191,140,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT15,225,140,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT16,15,150,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP16,165,150,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN16,191,150,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT16,225,150,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT17,15,160,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP17,165,160,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN17,191,160,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT17,225,160,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT18,15,170,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP18,165,170,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN18,191,170,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT18,225,170,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT19,15,180,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP19,165,180,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN19,191,180,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT19,225,180,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT20,15,190,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP20,165,190,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN20,191,190,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT20,225,190,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT21,15,200,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP21,165,200,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN21,191,200,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT21,225,200,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT22,15,210,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP22,165,210,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN22,191,210,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT22,225,210,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT23,15,220,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP23,165,220,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN23,191,220,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT23,225,220,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT24,15,230,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP24,165,230,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN24,191,230,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT24,225,230,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT25,15,240,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP25,165,240,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN25,191,240,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT25,225,240,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT26,15,250,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP26,165,250,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN26,191,250,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT26,225,250,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT27,15,260,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP27,165,260,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN27,191,260,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT27,225,260,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT28,15,270,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP28,165,270,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN28,191,270,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT28,225,270,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT29,15,280,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP29,165,280,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN29,191,280,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT29,225,280,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT30,15,290,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP30,165,290,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN30,191,290,25,10
- CTEXT "1",IDC_GSTACK_SIGNALCOUNT30,225,290,16,10,SS_SUNKEN
- PUSHBUTTON " ",IDC_GSTACK_UNIT31,15,300,83,10
- PUSHBUTTON "Up",IDC_GSTACK_UP31,165,300,25,10
- PUSHBUTTON "Down",IDC_GSTACK_DOWN31,191,300,25,10
- 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
- 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
- PUSHBUTTON "Clear",IDC_GSTACK_RESET2,132,10,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET3,106,20,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET3,132,20,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET4,106,30,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET4,132,30,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET5,106,40,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET5,132,40,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET6,106,50,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET6,132,50,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET7,106,60,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET7,132,60,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET8,106,70,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET8,132,70,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET9,106,80,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET9,132,80,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET10,106,90,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET10,132,90,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET11,106,100,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET11,132,100,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET12,106,110,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET12,132,110,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET13,106,120,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET13,132,120,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET14,106,130,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET14,132,130,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET15,106,140,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET15,132,140,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET16,106,150,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET16,132,150,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET17,106,160,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET17,132,160,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET18,106,170,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET18,132,170,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET19,106,180,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET19,132,180,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET20,106,190,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET20,132,190,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET21,106,200,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET21,132,200,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET22,106,210,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET22,132,210,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET23,106,220,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET23,132,220,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET24,106,230,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET24,132,230,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET25,106,240,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET25,132,240,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET26,106,250,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET26,132,250,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET27,106,260,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET27,132,260,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET28,106,270,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET28,132,270,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET29,106,280,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET29,132,280,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET30,106,290,25,10
- PUSHBUTTON "Clear",IDC_GSTACK_RESET30,132,290,25,10
- PUSHBUTTON "Set",IDC_GSTACK_SET31,106,300,25,10
- 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
- LTEXT "4:",IDC_STATIC,2,31,10,8
- LTEXT "5:",IDC_STATIC,2,41,10,8
- LTEXT "6:",IDC_STATIC,2,51,10,8
- LTEXT "7:",IDC_STATIC,2,61,10,8
- LTEXT "8:",IDC_STATIC,2,71,10,8
- LTEXT "9:",IDC_STATIC,2,81,10,8
- LTEXT "10:",IDC_STATIC,2,91,10,8
- LTEXT "11:",IDC_STATIC,2,101,10,8
- LTEXT "12:",IDC_STATIC,2,111,10,8
- LTEXT "13:",IDC_STATIC,2,121,10,8
- LTEXT "14:",IDC_STATIC,2,131,10,8
- LTEXT "15:",IDC_STATIC,2,141,10,8
- LTEXT "16:",IDC_STATIC,2,151,10,8
- LTEXT "17:",IDC_STATIC,2,161,10,8
- LTEXT "18:",IDC_STATIC,2,171,10,8
- LTEXT "19:",IDC_STATIC,2,181,10,8
- LTEXT "20:",IDC_STATIC,2,191,10,8
- LTEXT "21:",IDC_STATIC,2,201,10,8
- LTEXT "22:",IDC_STATIC,2,211,10,8
- LTEXT "23:",IDC_STATIC,2,221,10,8
- LTEXT "24:",IDC_STATIC,2,231,10,8
- LTEXT "25:",IDC_STATIC,2,241,10,8
- LTEXT "26:",IDC_STATIC,2,251,10,8
- LTEXT "27:",IDC_STATIC,2,261,10,8
- LTEXT "28:",IDC_STATIC,2,271,10,8
- LTEXT "29:",IDC_STATIC,2,281,10,8
- 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
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Panning",-1,0,0,299,170
- CONTROL "",IDC_PAN_PANNING,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,77,200,15
- LTEXT "Panning",-1,6,80,26,8
- CTEXT " ",IDC_PAN_PANNING_VAL,242,77,48,12,SS_SUNKEN
-END
-
-IDD_SET_DIALOG DIALOGEX 0, 0, 186, 44
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Set"
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,129,7,50,14
- PUSHBUTTON "Cancel",IDCANCEL,129,21,50,14
- COMBOBOX IDC_SET_UNIT,7,23,92,121,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
- LTEXT "Select Unit",IDC_STATIC,7,7,36,8
-END
-
-IDD_ACC DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Accumulate Signals",-1,0,0,299,170
- PUSHBUTTON "Output",IDC_ACC_OUT,99,77,50,14,WS_DISABLED
- PUSHBUTTON "AUX",IDC_ACC_AUX,149,77,50,14
-END
-
-IDD_FLD DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Load Signal",-1,0,0,299,170
- CONTROL "",IDC_FLD_VALUE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,77,200,15
- LTEXT "Value",-1,6,80,26,8
- CTEXT " ",IDC_FLD_VALUE_VAL,242,77,48,12,SS_SUNKEN
-END
-
-IDD_SCROLLWINDOW DIALOGEX 0, 0, 263, 258
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_SYSMENU
-EXSTYLE WS_EX_CLIENTEDGE
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
-END
-
-IDD_GLITCH DIALOGEX 0, 0, 300, 170
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
-BEGIN
- GROUPBOX "Glitch",IDC_STATIC,0,0,300,170
- CONTROL "",IDC_GLITCH_DRY,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,65,200,15
- CONTROL "",IDC_GLITCH_ACTIVE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,49,200,15
- LTEXT "Active",IDC_STATIC,4,53,21,8
- LTEXT "Dry",IDC_STATIC,4,68,12,8
- CTEXT " ",IDC_GLITCH_ACTIVE_VAL,242,50,48,12,SS_SUNKEN
- CTEXT " ",IDC_GLITCH_DRY_VAL,242,66,48,12,SS_SUNKEN
- CONTROL "",IDC_GLITCH_DSIZE,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,97,200,15
- LTEXT "DSize",IDC_STATIC,4,100,18,8
- CTEXT " ",IDC_GLITCH_DSIZE_VAL,242,97,48,12,SS_SUNKEN
- CONTROL "",IDC_GLITCH_DPITCH,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,113,200,15
- LTEXT "DPitch",IDC_STATIC,4,117,21,8
- CTEXT " ",IDC_GLITCH_DPITCH_VAL,242,113,48,12,SS_SUNKEN
- CONTROL "",IDC_GLITCH_DTIME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,38,81,200,15
- LTEXT "Delay",IDC_STATIC,4,85,19,8
- CTEXT " ",IDC_GLITCH_DTIME_VAL,242,81,48,12,SS_SUNKEN
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
- IDD_GO4KVSTIDIALOG, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 587
- TOPMARGIN, 7
- BOTTOMMARGIN, 334
- END
-
- IDD_VCO, DIALOG
- BEGIN
- END
-
- IDD_VCF, DIALOG
- BEGIN
- END
-
- IDD_DLL, DIALOG
- BEGIN
- END
-
- IDD_DST, DIALOG
- BEGIN
- END
-
- IDD_FST, DIALOG
- BEGIN
- END
-
- IDD_SET_DIALOG, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 179
- TOPMARGIN, 7
- BOTTOMMARGIN, 35
- END
-
- IDD_GLITCH, DIALOG
- BEGIN
- END
-END
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog Info
-//
-
-IDD_GO4KVSTIDIALOG DLGINIT
-BEGIN
- IDC_PATTERN_SIZE, 0x403, 12, 0
-0x6538, 0x2072, 0x6150, 0x7474, 0x7265, 0x006e,
- IDC_PATTERN_SIZE, 0x403, 13, 0
-0x3631, 0x7265, 0x5020, 0x7461, 0x6574, 0x6e72, "\000"
- IDC_PATTERN_SIZE, 0x403, 13, 0
-0x3233, 0x7265, 0x5020, 0x7461, 0x6574, 0x6e72, "\000"
- IDC_PATTERN_SIZE, 0x403, 13, 0
-0x3436, 0x7265, 0x5020, 0x7461, 0x6574, 0x6e72, "\000"
- IDC_PATTERN_QUANT, 0x403, 12, 0
-0x6538, 0x2072, 0x6150, 0x7474, 0x7265, 0x006e,
- IDC_PATTERN_QUANT, 0x403, 13, 0
-0x3631, 0x7265, 0x5020, 0x7461, 0x6574, 0x6e72, "\000"
- IDC_PATTERN_QUANT, 0x403, 13, 0
-0x3233, 0x7265, 0x5020, 0x7461, 0x6574, 0x6e72, "\000"
- IDC_PATTERN_QUANT, 0x403, 13, 0
-0x3436, 0x7265, 0x5020, 0x7461, 0x6574, 0x6e72, "\000"
- 0
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// AFX_DIALOG_LAYOUT
-//
-
-IDD_GO4KVSTIDIALOG AFX_DIALOG_LAYOUT
-BEGIN
- 0
-END
-
-#endif // German (Germany) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// English (United States) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-#endif // English (United States) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi2.vcxproj b/4klang_source/Go4kVSTi/win/Go4kVSTi2.vcxproj
deleted file mode 100644
index cd4a1bb..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi2.vcxproj
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
-
- 8klang
- {FA790F08-0B8E-43D9-A4B4-519AB01B820C}
- Go4kVSTi2
- 8.1
-
-
-
- DynamicLibrary
- false
- false
- v140
-
-
- DynamicLibrary
- false
- v140
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.40219.1
- .\$(ProjectName)\Debug\
- .\$(ProjectName)\Debug\
- true
- .\$(ProjectName)\Release\
- .\$(ProjectName)\Release\
- false
- false
- false
- AllRules.ruleset
-
-
- AllRules.ruleset
-
-
-
-
-
- _DEBUG;%(PreprocessorDefinitions)
- true
- true
- Win32
- .\Debug/vstxsynth.tlb
-
-
- Disabled
- ..\source\common;%(AdditionalIncludeDirectories)
- _8KLANG;WIN32;_DEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)
- Sync
- EnableFastChecks
- MultiThreadedDebug
- 1Byte
- true
- Fast
-
-
-
-
- Level3
- true
- ProgramDatabase
- Default
-
-
- _DEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)
- true
- .\Go4kVSTi2.def
- true
- Windows
- false
-
-
-
-
- copy /Y $(TargetPath) C:\VST
-
-
-
-
- NDEBUG;%(PreprocessorDefinitions)
- true
- true
- Win32
- .\Release/vstxsynth.tlb
-
-
- Disabled
- AnySuitable
- true
- Speed
- false
- ..\source\common;%(AdditionalIncludeDirectories)
- _8KLANG;WIN32;NDEBUG;_WINDOWS;WINDOWS=1;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)
- true
- Sync
- MultiThreaded
- 1Byte
- false
- false
- NotSet
- Fast
- true
-
-
-
-
- Level3
- true
-
-
- Cdecl
- Default
-
-
- NDEBUG;%(PreprocessorDefinitions)
- 0x0409
-
-
- odbc32.lib;odbccp32.lib;comctl32.lib;%(AdditionalDependencies)
- true
- .\Go4kVSTi2.def
- Windows
- false
-
-
-
-
- copy /Y $(TargetPath) C:\VST
-
-
-
-
-
-
-
- Cdecl
-
-
- Cdecl
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/4klang_source/Go4kVSTi/win/Go4kVSTi2.vcxproj.filters b/4klang_source/Go4kVSTi/win/Go4kVSTi2.vcxproj.filters
deleted file mode 100644
index 3f1018f..0000000
--- a/4klang_source/Go4kVSTi/win/Go4kVSTi2.vcxproj.filters
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
- {1cf4fa67-2860-48e5-9e8b-29b87a918b97}
- cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
-
-
- {8c759cfb-040e-43f2-a0c5-3f00eb100142}
- h;hpp;hxx;hm;inl
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
-
-
-
-
-
-
-
-
-
-
- Source Files
-
-
-
\ No newline at end of file
diff --git a/4klang_source/Go4kVSTi/win/SimpleCrypt.exe b/4klang_source/Go4kVSTi/win/SimpleCrypt.exe
deleted file mode 100644
index a6d352f..0000000
Binary files a/4klang_source/Go4kVSTi/win/SimpleCrypt.exe and /dev/null differ
diff --git a/4klang_source/Go4kVSTi/win/cryptfiles.bat b/4klang_source/Go4kVSTi/win/cryptfiles.bat
deleted file mode 100644
index c514151..0000000
--- a/4klang_source/Go4kVSTi/win/cryptfiles.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-SimpleCrypt.exe 4klang.asm 4klang.bin
-SimpleCrypt.exe nasmw.exe nasmw.bin
\ No newline at end of file
diff --git a/4klang_source/Go4kVSTi/win/nasmw.exe b/4klang_source/Go4kVSTi/win/nasmw.exe
deleted file mode 100644
index 8d72cc7..0000000
Binary files a/4klang_source/Go4kVSTi/win/nasmw.exe and /dev/null differ
diff --git a/4klang_source/Go4kVSTi/win/shell.bat b/4klang_source/Go4kVSTi/win/shell.bat
deleted file mode 100644
index 6e07473..0000000
--- a/4klang_source/Go4kVSTi/win/shell.bat
+++ /dev/null
@@ -1 +0,0 @@
-cmd.exe
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..128e472
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,37 @@
+cmake_minimum_required(VERSION 3.14)
+
+# This policy is needed so that we can set the MSVC_RUNTIME to statically linked
+# i.e. set_property(TARGET 4klang PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>")
+cmake_policy(SET CMP0091 NEW)
+
+project(4klang
+ VERSION 3.3.2
+ DESCRIPTION "A modular synthesizer for 4k/8k intros"
+ LANGUAGES C CXX)
+
+# Only do these if this is the main project, and not if it is included through add_subdirectory
+if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
+ # Let's ensure -std=c++xx instead of -std=g++xx
+ set(CMAKE_CXX_EXTENSIONS OFF)
+
+ # Let's nicely support folders in IDE's
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+ # Testing only available if this is the main app
+ # Note this needs to be done in the main CMakeLists
+ # since it calls enable_testing, which must be in the
+ # main CMakeLists.
+ include(CTest)
+endif()
+
+enable_language(ASM_NASM)
+
+# The normal NASM compile object does not include
+# By putting them there, we can pass the same compile definitions to C and ASM
+set(CMAKE_ASM_NASM_COMPILE_OBJECT " -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o