%macro export_func 1 global _%1 _%1: %endmacro %define SAMPLE_RATE 44100 %define MAX_INSTRUMENTS 4 %define MAX_VOICES 1 %define HLD 1 %define BPM 120.000000 %define MAX_PATTERNS 84 %define PATTERN_SIZE_SHIFT 4 %define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT) %define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE) %define SAMPLES_PER_TICK 5512 %define DEF_LFO_NORMALIZE 0.0000453515 %define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS) %define GO4K_USE_16BIT_OUTPUT ;%define GO4K_USE_GROOVE_PATTERN ;%define GO4K_USE_ENVELOPE_RECORDINGS ;%define GO4K_USE_NOTE_RECORDINGS %define GO4K_CLIP_OUTPUT %define GO4K_USE_DST %define GO4K_USE_DLL %define GO4K_USE_GLOBAL_DLL %define GO4K_USE_ENV_CHECK %define GO4K_USE_VCO_CHECK %define GO4K_USE_VCO_PHASE_OFFSET %define GO4K_USE_VCO_GATE %define GO4K_USE_VCO_MOD_DM %define GO4K_USE_VCO_MOD_CM %define GO4K_USE_VCF_CHECK %define GO4K_USE_VCF_MOD_FM %define GO4K_USE_VCF_MOD_RM %define GO4K_USE_VCF_HIGH %define GO4K_USE_VCF_BAND %define GO4K_USE_VCF_PEAK %define GO4K_USE_DST_CHECK %define GO4K_USE_DST_SH %define GO4K_USE_DLL_CHORUS_CLAMP %define GO4K_USE_DLL_DAMP %define GO4K_USE_DLL_DC_FILTER %define GO4K_USE_FSTG_CHECK %define GO4K_USE_WAVESHAPER_CLIP %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 GO4K_ENV_ID equ 1 %macro GO4K_ENV 5 db %1 db %2 db %3 db %4 db %5 %endmacro %define ATTAC(val) val %define DECAY(val) val %define SUSTAIN(val) val %define RELEASE(val) val %define GAIN(val) val struc go4kENV_val .attac resd 1 .decay resd 1 .sustain resd 1 .release resd 1 .gain resd 1 .size endstruc struc go4kENV_wrk .state resd 1 .level resd 1 .gm resd 1 .am resd 1 .dm resd 1 .sm resd 1 .rm resd 1 .size endstruc %define ENV_STATE_ATTAC 0 %define ENV_STATE_DECAY 1 %define ENV_STATE_SUSTAIN 2 %define ENV_STATE_RELEASE 3 %define ENV_STATE_OFF 4 GO4K_VCO_ID equ 2 %macro GO4K_VCO 8 db %1 db %2 %ifdef GO4K_USE_VCO_PHASE_OFFSET db %3 %endif %ifdef GO4K_USE_VCO_GATE db %4 %endif db %5 %ifdef GO4K_USE_VCO_SHAPE db %6 %endif db %7 db %8 %endmacro %define TRANSPOSE(val) val %define DETUNE(val) val %define PHASE(val) val %define GATES(val) val %define COLOR(val) val %define SHAPE(val) val %define FLAGS(val) val %define SINE 0x01 %define TRISAW 0x02 %define PULSE 0x04 %define NOISE 0x08 %define LFO 0x10 %define GATE 0x20 struc go4kVCO_val .transpose resd 1 .detune resd 1 %ifdef GO4K_USE_VCO_PHASE_OFFSET .phaseofs resd 1 %endif %ifdef GO4K_USE_VCO_GATE .gate resd 1 %endif .color resd 1 %ifdef GO4K_USE_VCO_SHAPE .shape resd 1 %endif .gain resd 1 .flags resd 1 .size endstruc struc go4kVCO_wrk .phase resd 1 .tm resd 1 .dm resd 1 .fm resd 1 .pm resd 1 .cm resd 1 .sm resd 1 .gm resd 1 .size endstruc GO4K_VCF_ID equ 3 %macro GO4K_VCF 3 db %1 db %2 db %3 %endmacro %define LOWPASS 0x1 %define HIGHPASS 0x2 %define BANDPASS 0x4 %define BANDSTOP 0x3 %define ALLPASS 0x7 %define PEAK 0x8 %define FREQUENCY(val) val %define RESONANCE(val) val %define VCFTYPE(val) val struc go4kVCF_val .freq resd 1 .res resd 1 .type resd 1 .size endstruc struc go4kVCF_wrk .low resd 1 .high resd 1 .band resd 1 .freq resd 1 .fm resd 1 .rm resd 1 .size endstruc GO4K_DST_ID equ 4 %macro GO4K_DST 2 db %1 %ifdef GO4K_USE_DST_SH db %2 %endif %endmacro %define DRIVE(val) val %define SNHFREQ(val) val struc go4kDST_val .drive resd 1 %ifdef GO4K_USE_DST_SH .snhfreq resd 1 %endif .size endstruc struc go4kDST_wrk %ifdef GO4K_USE_DST_SH .out resd 1 .snhphase resd 1 %endif .dm resd 1 .sm resd 1 .size endstruc GO4K_DLL_ID equ 5 %macro GO4K_DLL 8 db %1 db %2 db %3 %ifdef GO4K_USE_DLL_DAMP db %4 %endif %ifdef GO4K_USE_DLL_CHORUS db %5 db %6 %endif db %7 db %8 %endmacro %define PREGAIN(val) val %define DRY(val) val %define FEEDBACK(val) val %define DEPTH(val) val %define DAMP(val) val %define DELAY(val) val %define COUNT(val) val struc go4kDLL_val .pregain resd 1 .dry resd 1 .feedback resd 1 %ifdef GO4K_USE_DLL_DAMP .damp resd 1 %endif %ifdef GO4K_USE_DLL_CHORUS .freq resd 1 .depth %endif .delay resd 1 .count resd 1 .size endstruc struc go4kDLL_wrk .index resd 1 .store resd 1 .dcin resd 1 .dcout resd 1 %ifdef GO4K_USE_DLL_CHORUS .phase resd 1 %endif .buffer resd MAX_DELAY .size endstruc struc go4kDLL_wrk2 .pm resd 1 .fm resd 1 .im resd 1 .dm resd 1 .sm resd 1 .am resd 1 .size endstruc GO4K_FOP_ID equ 6 %macro GO4K_FOP 1 db %1 %endmacro %define OP(val) val %define FOP_POP 0x1 %define FOP_ADDP 0x2 %define FOP_MULP 0x3 %define FOP_PUSH 0x4 %define FOP_XCH 0x5 %define FOP_ADD 0x6 %define FOP_MUL 0x7 %define FOP_ADDP2 0x8 %define FOP_LOADNOTE 0x9 struc go4kFOP_val .flags resd 1 .size endstruc struc go4kFOP_wrk .size endstruc GO4K_FST_ID equ 7 %macro GO4K_FST 2 db %1 db %2 %endmacro %define AMOUNT(val) val %define DEST(val) val struc go4kFST_val .amount resd 1 .op1 resd 1 .size endstruc struc go4kFST_wrk .size endstruc GO4K_PAN_ID equ 8 %macro GO4K_PAN 1 %ifdef GO4K_USE_PAN db %1 %endif %endmacro %define PANNING(val) val struc go4kPAN_val %ifdef GO4K_USE_PAN .panning resd 1 %endif .size endstruc struc go4kPAN_wrk .pm resd 1 .size endstruc GO4K_OUT_ID equ 9 %macro GO4K_OUT 2 db %1 %ifdef GO4K_USE_GLOBAL_DLL db %2 %endif %endmacro %define AUXSEND(val) val struc go4kOUT_val .gain resd 1 %ifdef GO4K_USE_GLOBAL_DLL .auxsend resd 1 %endif .size endstruc struc go4kOUT_wrk .am resd 1 .gm resd 1 .size endstruc GO4K_ACC_ID equ 10 %macro GO4K_ACC 1 db %1 %endmacro %define OUTPUT 0 %define AUX 8 %define ACCTYPE(val) val struc go4kACC_val .acctype resd 1 .size endstruc struc go4kACC_wrk .size endstruc %ifdef GO4K_USE_FLD GO4K_FLD_ID equ 11 %macro GO4K_FLD 1 db %endmacro %define VALUE(val) val struc go4kFLD_val .value resd 1 .size endstruc struc go4kFLD_wrk .vm resd 1 .size endstruc %endif %ifdef GO4K_USE_FSTG GO4K_FSTG_ID equ 12 %macro GO4K_FSTG 2 db %1 dd %2 %endmacro struc go4kFSTG_val .amount resd 1 .op1 resd 1 .size endstruc struc go4kFSTG_wrk .size endstruc %endif struc go4k_instrument .release resd 1 .note resd 1 .workspace resd 256 .dlloutl resd 1 .dlloutr resd 1 .outl resd 1 .outr resd 1 .size endstruc struc go4k_synth .instruments resb go4k_instrument.size * MAX_INSTRUMENTS * MAX_VOICES .global resb go4k_instrument.size * MAX_VOICES .size endstruc %ifdef USE_SECTIONS section .g4kmuc1 data align=1 %else section .data align=1 %endif go4k_patterns db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, db 0, 0, 0, 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, db 0, 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 0, 43, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 50, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 41, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, db 0, 0, 0, 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, HLD, HLD, HLD, db 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, db 43, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 50, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 41, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, HLD, HLD, db 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, db 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, HLD, db HLD, 0, 0, 0, 0, 0, 0, 0, 0, 50, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, 0, 0, 0, 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 41, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, HLD, HLD, HLD, db 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, HLD, HLD, HLD, HLD, HLD, HLD, db 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 50, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 59, 0, 57, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 60, 0, 59, 0, 57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 48, 0, 48, 48, 48, 47, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 59, 60, 0, 0, 59, 0, db 57, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 47, db 0, 48, 0, 47, 0, 45, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 48, 0, 47, 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 60, 60, db 60, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 60, 57, 0, 59, 0, 55, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 57, 0, 59, db 0, 55, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 60, 57, 0, 59, 0, 55, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, db 0, 48, 0, 48, 48, 48, 47, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, db 0, 0, 0, 0, 60, 0, 59, 60, 0, 0, 59, 0, 57, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 59, 0, db 57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 60, 0, 59, 0, 57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 47, 45, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 60, 57, 0, 59, 0, 55, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 60, 0, 59, 60, 0, 0, 59, 0, 57, HLD, HLD, HLD, HLD, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 52, 0, 53, 52, HLD, 0, db 50, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, db HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 57, HLD, HLD, HLD, HLD, HLD, HLD, 0, db 0, 0, 60, 0, 60, 0, 60, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 60, 0, 60, 0, 60, HLD, HLD, HLD, HLD, HLD, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, db 60, 0, 60, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 60, 0, 60, HLD, db HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, go4k_patterns_end %ifdef USE_SECTIONS section .g4kmuc2 data align=1 %else section .data %endif go4k_pattern_lists Instrument0List db 1, 2, 3, 2, 4, 5, 6, 5, 7, 8, 9, 10, 5, 11, 5, 12, 5, 13, 5, 14, 15, 5, 14, 8, 7, 16, 5, 17, 5, 14, 18, 0, 19, 5, 20, 5, 21, 5, 22, 5, 23, 24, 5, 23, 25, 23, 26, 5, 27, 5, 28, 29, 30, 5, 5, 31, 5, 32, 5, 33, 5, 34, 35, 5, 34, 36, 28, 37, 2, 38, 5, 34, 39, 40, 5, 5, 41, 5, 42, 0, 0, 0, 0, 0, Instrument1List db 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 45, 0, 46, 0, 47, 48, 49, 50, 0, 51, 0, 52, 53, 0, 54, 0, 55, 56, 0, 47, 48, 0, 57, 58, 0, 45, 0, 43, 44, 49, 59, 0, 45, 0, 46, 0, 55, 56, 0, 60, 0, 61, 9, 0, 54, 0, 62, 63, 0, 64, 0, 65, 44, 52, 53, 0, 45, 0, 66, 67, 0, 68, 0, 66, 67, 0, 69, 70, 0, 0, 0, 0, 0, 0, Instrument2List db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 73, 5, 74, 5, 72, 5, 75, 0, 0, 0, 0, 0, Instrument3List db 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 77, 9, 0, 0, 78, 79, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, go4k_pattern_lists_end %ifdef USE_SECTIONS section .g4kmuc3 data align=1 %else section .data %endif go4k_synth_instructions GO4K_BEGIN_CMDDEF(Instrument0) db GO4K_ENV_ID db GO4K_ENV_ID db GO4K_FST_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_FST_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_VCO_ID db GO4K_VCO_ID db GO4K_FOP_ID db GO4K_FOP_ID db GO4K_VCF_ID db GO4K_VCF_ID db GO4K_FOP_ID db GO4K_PAN_ID db GO4K_DLL_ID db GO4K_FOP_ID db GO4K_DLL_ID db GO4K_FOP_ID db GO4K_OUT_ID GO4K_END_CMDDEF GO4K_BEGIN_CMDDEF(Instrument1) db GO4K_ENV_ID db GO4K_VCO_ID db GO4K_DST_ID db GO4K_VCO_ID db GO4K_FOP_ID db GO4K_FST_ID db GO4K_FST_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_VCO_ID db GO4K_VCF_ID db GO4K_FOP_ID db GO4K_FOP_ID db GO4K_VCF_ID db GO4K_FOP_ID db GO4K_VCF_ID db GO4K_FOP_ID db GO4K_FOP_ID db GO4K_DLL_ID db GO4K_PAN_ID db GO4K_OUT_ID GO4K_END_CMDDEF GO4K_BEGIN_CMDDEF(Instrument2) db GO4K_ENV_ID db GO4K_ENV_ID db GO4K_FST_ID db GO4K_FST_ID db GO4K_FST_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_FST_ID db GO4K_FST_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_FST_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_VCO_ID db GO4K_VCO_ID db GO4K_FOP_ID db GO4K_FOP_ID db GO4K_VCF_ID db GO4K_FOP_ID db GO4K_VCO_ID db GO4K_FOP_ID db GO4K_DLL_ID db GO4K_PAN_ID db GO4K_DLL_ID db GO4K_OUT_ID GO4K_END_CMDDEF GO4K_BEGIN_CMDDEF(Instrument3) db GO4K_ENV_ID db GO4K_VCO_ID db GO4K_FOP_ID db GO4K_VCF_ID db GO4K_PAN_ID db GO4K_DLL_ID db GO4K_FOP_ID db GO4K_DLL_ID db GO4K_FOP_ID db GO4K_OUT_ID GO4K_END_CMDDEF GO4K_BEGIN_CMDDEF(Global) db GO4K_ACC_ID db GO4K_DLL_ID db GO4K_FOP_ID db GO4K_DLL_ID db GO4K_FOP_ID db GO4K_ACC_ID db GO4K_FOP_ID db GO4K_OUT_ID GO4K_END_CMDDEF go4k_synth_instructions_end %ifdef USE_SECTIONS section .g4kmuc4 data align=1 %else section .data %endif go4k_synth_parameter_values GO4K_BEGIN_PARAMDEF(Instrument0) GO4K_ENV ATTAC(74),DECAY(96),SUSTAIN(96),RELEASE(96),GAIN(128) GO4K_ENV ATTAC(96),DECAY(104),SUSTAIN(104),RELEASE(96),GAIN(64) GO4K_FST AMOUNT(128),DEST(13*MAX_WORKSPACE_SLOTS+4) GO4K_FOP OP(FOP_POP) GO4K_VCO TRANSPOSE(28),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO) GO4K_FST AMOUNT(96),DEST(12*MAX_WORKSPACE_SLOTS+4) GO4K_FOP OP(FOP_POP) GO4K_VCO TRANSPOSE(64),DETUNE(80),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW) GO4K_VCO TRANSPOSE(64),DETUNE(56),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW) GO4K_VCO TRANSPOSE(52),DETUNE(64),PHASE(0),GATES(85),COLOR(32),SHAPE(64),GAIN(128),FLAGS(TRISAW) GO4K_FOP OP(FOP_ADDP) GO4K_FOP OP(FOP_ADDP) GO4K_VCF FREQUENCY(53),RESONANCE(128),VCFTYPE(BANDSTOP) GO4K_VCF FREQUENCY(16),RESONANCE(48),VCFTYPE(LOWPASS) GO4K_FOP OP(FOP_MULP) GO4K_PAN PANNING(64) GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1) GO4K_FOP OP(FOP_XCH) GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1) GO4K_FOP OP(FOP_XCH) GO4K_OUT GAIN(64), AUXSEND(64) GO4K_END_PARAMDEF GO4K_BEGIN_PARAMDEF(Instrument1) GO4K_ENV ATTAC(48),DECAY(80),SUSTAIN(64),RELEASE(64),GAIN(128) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(64),FLAGS(NOISE) GO4K_DST DRIVE(64), SNHFREQ(0) GO4K_VCO TRANSPOSE(16),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO) GO4K_FOP OP(FOP_ADDP) GO4K_FST AMOUNT(40),DEST(10*MAX_WORKSPACE_SLOTS+4) GO4K_FST AMOUNT(58),DEST(10*MAX_WORKSPACE_SLOTS+5) GO4K_FOP OP(FOP_POP) GO4K_VCO TRANSPOSE(88),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(SINE) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(64),GATES(85),COLOR(64),SHAPE(64),GAIN(5),FLAGS(NOISE) GO4K_VCF FREQUENCY(77),RESONANCE(24),VCFTYPE(BANDPASS) GO4K_FOP OP(FOP_ADDP) GO4K_FOP OP(FOP_PUSH) GO4K_VCF FREQUENCY(32),RESONANCE(128),VCFTYPE(BANDPASS) GO4K_FOP OP(FOP_XCH) GO4K_VCF FREQUENCY(96),RESONANCE(128),VCFTYPE(BANDPASS) GO4K_FOP OP(FOP_ADDP) GO4K_FOP OP(FOP_MULP) GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1) GO4K_PAN PANNING(64) GO4K_OUT GAIN(64), AUXSEND(64) GO4K_END_PARAMDEF GO4K_BEGIN_PARAMDEF(Instrument2) GO4K_ENV ATTAC(48),DECAY(64),SUSTAIN(80),RELEASE(80),GAIN(128) GO4K_ENV ATTAC(0),DECAY(88),SUSTAIN(64),RELEASE(88),GAIN(128) GO4K_FST AMOUNT(96),DEST(13*MAX_WORKSPACE_SLOTS+5) GO4K_FST AMOUNT(96),DEST(14*MAX_WORKSPACE_SLOTS+5) GO4K_FST AMOUNT(96),DEST(15*MAX_WORKSPACE_SLOTS+5) GO4K_FOP OP(FOP_POP) GO4K_VCO TRANSPOSE(72),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) GO4K_FST AMOUNT(56),DEST(13*MAX_WORKSPACE_SLOTS+2) GO4K_FST AMOUNT(77),DEST(15*MAX_WORKSPACE_SLOTS+2) GO4K_FOP OP(FOP_POP) GO4K_VCO TRANSPOSE(48),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(SINE|LFO) GO4K_FST AMOUNT(72),DEST(14*MAX_WORKSPACE_SLOTS+2) GO4K_FOP OP(FOP_POP) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(PULSE) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(64),FLAGS(PULSE) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(64),GAIN(96),FLAGS(PULSE) GO4K_FOP OP(FOP_ADDP) GO4K_FOP OP(FOP_ADDP) GO4K_VCF FREQUENCY(88),RESONANCE(128),VCFTYPE(LOWPASS) GO4K_FOP OP(FOP_MULP) GO4K_VCO TRANSPOSE(52),DETUNE(64),PHASE(0),GATES(93),COLOR(87),SHAPE(64),GAIN(128),FLAGS(GATE|LFO) GO4K_FOP OP(FOP_MULP) GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(18),COUNT(1) GO4K_PAN PANNING(64) GO4K_DLL PREGAIN(128),DRY(0),FEEDBACK(0),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(19),COUNT(1) GO4K_OUT GAIN(64), AUXSEND(32) GO4K_END_PARAMDEF GO4K_BEGIN_PARAMDEF(Instrument3) GO4K_ENV ATTAC(0),DECAY(64),SUSTAIN(0),RELEASE(0),GAIN(128) GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(64),GATES(85),COLOR(64),SHAPE(64),GAIN(128),FLAGS(NOISE) GO4K_FOP OP(FOP_MULP) GO4K_VCF FREQUENCY(128),RESONANCE(128),VCFTYPE(BANDPASS) GO4K_PAN PANNING(64) GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(96),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1) GO4K_FOP OP(FOP_XCH) GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(16),COUNT(1) GO4K_FOP OP(FOP_XCH) GO4K_OUT GAIN(64), AUXSEND(0) GO4K_END_PARAMDEF GO4K_BEGIN_PARAMDEF(Global) GO4K_ACC ACCTYPE(AUX) GO4K_DLL PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(0),COUNT(8) GO4K_FOP OP(FOP_XCH) GO4K_DLL PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(8),COUNT(8) GO4K_FOP OP(FOP_XCH) GO4K_ACC ACCTYPE(OUTPUT) GO4K_FOP OP(FOP_ADDP2) GO4K_OUT GAIN(64), AUXSEND(0) GO4K_END_PARAMDEF go4k_synth_parameter_values_end %ifdef USE_SECTIONS section .g4kmuc5 data align=1 %else section .data %endif %ifdef GO4K_USE_DLL global _go4k_delay_times _go4k_delay_times dw 1116 dw 1188 dw 1276 dw 1356 dw 1422 dw 1492 dw 1556 dw 1618 dw 1140 dw 1212 dw 1300 dw 1380 dw 1446 dw 1516 dw 1580 dw 1642 dw 22050 dw 11025 dw 44100 dw 512 %endif