BITS 32 %define KZG_CHANNELS 1 %define KZG_BYTES_PER_SAMPLE 2 %define KZG_SAMPLING_FREQUENCY 44100 %define NOTE (5512) %define PATT (NOTE*16) %define ROWS (4) %define SIZE (PATT*ROWS) %define MACH 10 %define KZG_COMPILE_DELAY %define KZG_COMPILE_DISTO %define KZG_COMPILE_MIX %include "kzg_!core.asm" %include "Win32.nh" section .bss align=64 bits 32 floatdata00 resd SIZE floatdata01 resd SIZE floatdata02 resd SIZE floatdata03 resd SIZE global _KZG_RenderedWave _KZG_RenderedWave: worddata resw SIZE section .text bits 32 global _KZG_RenderMusic@0 _KZG_RenderMusic@0: pushad mov esi,paramz mov ecx,MACH machineloop: push ecx xor eax,eax lodsb mov ebp, esi add esi, eax lodsd xchg edx,eax lodsd xchg edi,eax lodsd xchg ecx,eax lodsd pushad mov esi,edx call eax popad pop ecx loop machineloop popad mov eax,SIZE ret ; ********************************************* ; * DATA ; ********************************************* section paramz data align=1 bits 32 paramz: ; ============================================= ; = GENERATORS ; --------------------------------------------- ; - drum (Type: drum) ID: # 10 index: # 1 .gen_drum_0000000A db 3*4 dd 0.00391 dd 0.233 dd 0.600 dd sequence03 dd floatdata00 dd 2752 dd _KZG_drum_proxy ; --------------------------------------------- ; - drum (Type: drum) ID: # 5 index: # 5 .gen_drum_00000005 db 3*4 dd 0.00100 dd 0.765 dd 1.000 dd sequence02 dd floatdata01 dd 2752 dd _KZG_drum_proxy ; --------------------------------------------- ; - 303 (Type: 303) ID: # 2 index: # 7 .gen_303_00000002 db 4*8 dd 100 dd 200 dd 5512 dd 1.000 dd 0.500 dd 100.000 dd 5000.000 dd 0.500 dd sequence01 dd floatdata02 dd ROWS dd _KZG_303_proxy ; --------------------------------------------- ; - 303 (Type: 303) ID: # 1 index: # 8 .gen_303_00000001 db 4*8 dd 100 dd 114 dd 7316 dd 1.000 dd 1.000 dd 100.000 dd 10499.386 dd 0.718 dd sequence00 dd floatdata03 dd ROWS dd _KZG_303_proxy ; ============================================= ; = EFFECTS ; ============================================= ; --------------------------------------------- ; - delay (Type: delay) ID: # 8 index: # 0 .fx_delay_00000008 db 4*3 dd 1 dd 14822 dd 0.600 dd floatdata03 dd floatdata03 dd SIZE dd _KZG_delay@0 ; --------------------------------------------- ; - mix (Type: mix) ID: # 3 index: # 1 .fx_mix_00000003 db 2*4 dd 0.500 dd 0.405 dd floatdata03 dd floatdata02 dd SIZE dd _KZG_mix@0 ; --------------------------------------------- ; - disto (Type: disto) ID: # 9 index: # 2 .fx_disto_00000009 db 2*4 dd 10.243 dd 0.802 dd floatdata01 dd floatdata01 dd SIZE dd _KZG_disto@0 ; --------------------------------------------- ; - mix (Type: mix) ID: # 11 index: # 3 .fx_mix_0000000B db 2*4 dd 0.500 dd 0.500 dd floatdata01 dd floatdata00 dd SIZE dd _KZG_mix@0 ; --------------------------------------------- ; - mix (Type: mix) ID: # 7 index: # 4 .fx_mix_00000007 db 2*4 dd 0.500 dd 0.500 dd floatdata03 dd floatdata01 dd SIZE dd _KZG_mix@0 ; --------------------------------------------- ; - MASTER (Type: MASTER) ID: # 0 index: # 5 .fx_MASTER_00000000 ; ============================================= ; = CLIP/MIX ; ============================================= db 0 dd floatdata03 dd worddata dd SIZE dd _KZG_clip@0 ; ============================================= ; = SEQUENCE DATA ; ============================================= section sequence data align=1 sequence00 ; 303 db 1, 1, 1, 1, sequence01 ; 303 db 2, 2, 2, 2, sequence02 ; drum db 1, 1, 1, 1, sequence03 ; drum db 2, 2, 2, 2, ; ============================================= ; = MELODY DATA ; ============================================= section melody data align=1 melodypatterns db 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, ; empty db 36, 0, 0, 0, 38, 0, 0, 0, 41, 0, 0, 0, 38, 0, 0, 0, ; 0 ( 1) db 0, 0, 36, 38, 0, 0, 36, 38, 0, 0, 36, 38, 0, 0, 36, 38, ; 1 ( 2) ; ============================================= ; = DRUM DATA ; ============================================= section drum data align=1 drumpatterns dw 0 ; empty dw 1000100010001010b ; 2 ( 1) dw 0010001000100010b ; 3 ( 2)