retro commit for released version 3.11

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

Binary file not shown.

BIN
4klang_VSTi/8klang.dll Normal file

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

@ -86,7 +86,27 @@ same with the patch and song data. the more repetitive parameter values and the
apart from that, try understanding what each unit effectively does before doing really fancy stuff with ist :) start simple and get more complex over time (especially when doing cross modulations from one instrument to another).
-----------------------------
Info for version 3.11
-----------------------------
this is a more or less experimental version mainly for use in 8k context.
version 3.11 also introduces a new file format to enable the new features. autoconvert again should happen automagically
biggest change is the existence of a second plugin called 8klang. it basically is a second 4klang plugin just that ich can be used to have additional 16 instruments.
you can only have modulations across channels within each plugin (so not across the plugins).
when you record a song with both plugins active, be sure to stop recording on the 4klang plugin first, then on the 8klang plugin.
the 8klang plugin will then try to merge things (thats the experimental part, it did work for us in 8ks so far, but you never know :))
also a couple of new features are available:
- extension to 64 slots for each instrument.
- stereo flags for some nodes where possible (oscillator, filter, distortion)
- some additions to the arithmetic unit
- instrument link option, so when you have the same instrument loaded in several channels for e.g. playing chords you can now change one instrument and the others will apply the same changes.
a nice tutorial for some of those features and sound design in general can be found here (thank you wayfinder):
https://www.youtube.com/watch?v=wP__g_9FT4M
for questions, bug reports, rants ... mail to: atz4klangATuntergrundDOTnet
or catch us on IRC (#atz on IRCNet)