sample testailuja
This commit is contained in:
389
4klang.asm
389
4klang.asm
@ -1,6 +1,6 @@
|
|||||||
%define SU_LENGTH_IN_SAMPLES 3335488
|
%define SU_LENGTH_IN_SAMPLES 1550944
|
||||||
%define SU_SAMPLE_RATE 44100
|
%define SU_SAMPLE_RATE 44100
|
||||||
%define SU_BPM 165.
|
%define SU_BPM 116.
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; unit struct
|
; unit struct
|
||||||
@ -61,7 +61,7 @@ endstruc
|
|||||||
section .synth_object bss align=256
|
section .synth_object bss align=256
|
||||||
su_synth_obj:
|
su_synth_obj:
|
||||||
resb su_synthworkspace.size
|
resb su_synthworkspace.size
|
||||||
resb 34*su_delayline_wrk.size
|
resb 20*su_delayline_wrk.size
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
@ -76,23 +76,26 @@ global _su_render_song@4
|
|||||||
_su_render_song@4:
|
_su_render_song@4:
|
||||||
pushad ; Stack: edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pushad ; Stack: edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
push 1 ; Stack: RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
push 16 ; Stack: VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
push eax ; Stack: GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
push 1 ; Stack: RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
|
push eax ; Stack: GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
su_render_rowloop: ; loop through every row in the song
|
su_render_rowloop: ; loop through every row in the song
|
||||||
push eax ; Stack: Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
push eax ; Stack: Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
call su_update_voices ; update instruments for the new row
|
call su_update_voices ; update instruments for the new row
|
||||||
xor eax, eax ; ecx is the current sample within row
|
xor eax, eax ; ecx is the current sample within row
|
||||||
su_render_sampleloop: ; loop through every sample in the row
|
su_render_sampleloop: ; loop through every sample in the row
|
||||||
push eax ; Stack: Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
push eax ; Stack: Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
push 7 ; Stack: VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
push 8 ; Stack: PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr ; does the next voice reuse the current opcodes?
|
||||||
|
push 8 ; Stack: VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
mov edx, dword su_synth_obj ; edx points to the synth object
|
mov edx, dword su_synth_obj ; edx points to the synth object
|
||||||
mov ebx, dword su_patch_opcodes ; COM points to vm code
|
mov ebx, dword su_patch_opcodes ; COM points to vm code
|
||||||
mov esi, dword su_patch_operands ; VAL points to unit params
|
mov esi, dword su_patch_operands ; VAL points to unit params
|
||||||
mov ecx, dword su_synth_obj + su_synthworkspace.size - su_delayline_wrk.filtstate
|
mov ecx, dword su_synth_obj + su_synthworkspace.size - su_delayline_wrk.filtstate
|
||||||
lea ebp, [edx + su_synthworkspace.voices] ; WRK points to the first voice
|
lea ebp, [edx + su_synthworkspace.voices] ; WRK points to the first voice
|
||||||
call su_run_vm ; run through the VM code
|
call su_run_vm ; run through the VM code
|
||||||
pop eax ; eax = VoicesRemain, Stack: Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pop eax ; eax = VoicesRemain, Stack: PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
mov esi, [esp + 52] ; esi points to the output buffer
|
pop eax ; eax = PolyphonyBitmask, Stack: Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
|
mov esi, [esp + 56] ; esi points to the output buffer
|
||||||
mov edi, dword su_synth_obj+su_synthworkspace.left
|
mov edi, dword su_synth_obj+su_synthworkspace.left
|
||||||
mov ecx, 2
|
mov ecx, 2
|
||||||
output_sound16bit_loop: ; loop over two channels, left & right
|
output_sound16bit_loop: ; loop over two channels, left & right
|
||||||
@ -107,19 +110,20 @@ su_render_sampleloop: ; loop through every sample in the row
|
|||||||
stosd
|
stosd
|
||||||
add esi,2
|
add esi,2
|
||||||
loop output_sound16bit_loop
|
loop output_sound16bit_loop
|
||||||
mov [esp + 52], esi ; save esi back to stack ; *ptr++ = left, *ptr++ = right
|
mov [esp + 56], esi ; save esi back to stack ; *ptr++ = left, *ptr++ = right
|
||||||
pop eax ; eax = Sample, Stack: Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pop eax ; eax = Sample, Stack: Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
inc dword [esp + 4] ; increment global time, used by delays
|
inc dword [esp + 4] ; increment global time, used by delays
|
||||||
inc eax
|
inc eax
|
||||||
cmp eax, 4009
|
cmp eax, 5702
|
||||||
jl su_render_sampleloop
|
jl su_render_sampleloop
|
||||||
pop eax ; eax = Row, Stack: GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr ; Stack: pushad ptr
|
pop eax ; eax = Row, Stack: GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr ; Stack: pushad ptr
|
||||||
inc eax
|
inc eax
|
||||||
cmp eax, 832
|
cmp eax, 272
|
||||||
jl su_render_rowloop
|
jl su_render_rowloop
|
||||||
; rewind the stack the entropy of multiple pop eax is probably lower than add
|
; rewind the stack the entropy of multiple pop eax is probably lower than add
|
||||||
pop eax ; eax = GlobalTick, Stack: RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pop eax ; eax = GlobalTick, Stack: RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
pop eax ; eax = RandSeed, Stack: edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pop eax ; eax = RandSeed, Stack: VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
|
pop eax ; eax = VoiceTrackBitmask, Stack: edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
popad ; Popped: eax, ecx, edx, ebx, esp, ebp, esi, edi. Stack: retaddr_su_render_song, OutputBufPtr
|
popad ; Popped: eax, ecx, edx, ebx, esp, ebp, esi, edi. Stack: retaddr_su_render_song, OutputBufPtr
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
@ -131,35 +135,58 @@ su_render_sampleloop: ; loop through every sample in the row
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_update_voices code align=1
|
section .su_update_voices code align=1
|
||||||
su_update_voices:
|
su_update_voices:
|
||||||
; The simple implementation: each track triggers always the same voice
|
; The more complicated implementation: one track can trigger multiple voices
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
xor ebx, ebx
|
mov ebx, 16 ; we could do xor ebx,ebx; mov bl,PATTERN_SIZE, but that would limit patternsize to 256...
|
||||||
mov bl, 16 ; rows per pattern
|
|
||||||
div ebx ; eax = current pattern, edx = current row in pattern
|
div ebx ; eax = current pattern, edx = current row in pattern
|
||||||
|
|
||||||
lea esi, [su_tracks+eax] ; esi points to the pattern data for current track
|
lea esi, [su_tracks+eax] ; esi points to the pattern data for current track
|
||||||
mov edi, dword su_synth_obj+su_synthworkspace.voices
|
xor eax, eax ; eax is the first voice of next track
|
||||||
mov bl, 6 ; MAX_TRACKS is always <= 32 so this is ok
|
xor ebx, ebx ; ebx is the first voice of current track
|
||||||
|
mov ebp, dword su_synth_obj ; ebp points to the current_voiceno array
|
||||||
su_update_voices_trackloop:
|
su_update_voices_trackloop:
|
||||||
movzx eax, byte [esi] ; eax = current pattern
|
movzx eax, byte [esi] ; eax = current pattern
|
||||||
imul eax, 16 ; multiply by rows per pattern, eax = offset to current pattern data
|
imul eax, 16 ; eax = offset to current pattern data
|
||||||
movzx eax, byte [su_patterns + eax + edx] ; ecx = note
|
movzx eax,byte [su_patterns + eax + edx] ; eax = note
|
||||||
|
push edx ; Stack: ptrnrow
|
||||||
|
xor edx, edx ; edx=0
|
||||||
|
mov ecx, ebx ; ecx=first voice of the track to be done
|
||||||
|
su_calculate_voices_loop: ; do {
|
||||||
|
bt dword [esp + 16 + 4],ecx ; test voicetrack_bitmask// notice that the incs don't set carry
|
||||||
|
inc edx ; edx++ // edx=numvoices
|
||||||
|
inc ecx ; ecx++ // ecx=the first voice of next track
|
||||||
|
jc su_calculate_voices_loop ; } while bit ecx-1 of bitmask is on
|
||||||
|
push ecx ; Stack: next_instr ptrnrow
|
||||||
cmp al, 1 ; anything but hold causes action
|
cmp al, 1 ; anything but hold causes action
|
||||||
je short su_update_voices_nexttrack
|
je short su_update_voices_nexttrack
|
||||||
mov dword [edi+su_voice.sustain], eax ; set the voice currently active to release
|
mov cl, byte [ebp]
|
||||||
jb su_update_voices_nexttrack ; if cl < HLD (no new note triggered) goto nexttrack
|
mov edi, ecx
|
||||||
su_update_voices_retrigger:
|
add edi, ebx
|
||||||
|
shl edi, 12 ; each unit = 64 bytes and there are 1<<MAX_UNITS_SHIFT units + small header
|
||||||
|
and dword [su_synth_obj + su_synthworkspace.voices + su_voice.sustain + edi], 0 ; set the voice currently active to release; notice that it could increment any number of times
|
||||||
|
cmp al, 1 ; if cl < HLD (no new note triggered)
|
||||||
|
jl su_update_voices_nexttrack ; goto nexttrack
|
||||||
|
inc ecx ; curvoice++
|
||||||
|
cmp ecx, edx ; if (curvoice >= num_voices)
|
||||||
|
jl su_update_voices_skipreset
|
||||||
|
xor ecx,ecx ; curvoice = 0
|
||||||
|
su_update_voices_skipreset:
|
||||||
|
mov byte [ebp],cl
|
||||||
|
add ecx, ebx
|
||||||
|
shl ecx, 12 ; each unit = 64 bytes and there are 1<<6 units + small header
|
||||||
|
lea edi,[su_synth_obj + su_synthworkspace.voices + ecx]
|
||||||
stosd ; save note
|
stosd ; save note
|
||||||
stosd ; save sustain
|
stosd ; save release
|
||||||
mov ecx, (su_voice.size - su_voice.inputs)/4 ; could be xor ecx, ecx; mov ch,...>>8, but will it actually be smaller after compression?
|
mov ecx, (su_voice.size - su_voice.inputs)/4
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
rep stosd ; clear the workspace of the new voice, retriggering oscillators
|
rep stosd ; clear the workspace of the new voice, retriggering oscillators
|
||||||
jmp short su_update_voices_skipadd
|
|
||||||
su_update_voices_nexttrack:
|
su_update_voices_nexttrack:
|
||||||
add edi, su_voice.size
|
pop ebx ; ebx=first voice of next instrument, Stack: ptrnrow
|
||||||
su_update_voices_skipadd:
|
pop edx ; edx=patrnrow
|
||||||
add esi, 52
|
add esi, 17
|
||||||
dec ebx
|
inc ebp
|
||||||
jnz short su_update_voices_trackloop
|
cmp ebp,su_synth_obj + 6
|
||||||
|
jl su_update_voices_trackloop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
@ -178,7 +205,7 @@ su_update_voices_skipadd:
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_run_vm code align=1
|
section .su_run_vm code align=1
|
||||||
su_run_vm:
|
su_run_vm:
|
||||||
pushad ; Stack: edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pushad ; Stack: edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
su_run_vm_loop: ; loop until all voices done
|
su_run_vm_loop: ; loop until all voices done
|
||||||
movzx edi, byte [ebx] ; edi = command byte
|
movzx edi, byte [ebx] ; edi = command byte
|
||||||
inc ebx ; move to next instruction
|
inc ebx ; move to next instruction
|
||||||
@ -209,12 +236,22 @@ su_transform_operands_out:
|
|||||||
call [su_vm_jumptable-4+edi*4] ; call the function corresponding to the instruction
|
call [su_vm_jumptable-4+edi*4] ; call the function corresponding to the instruction
|
||||||
jmp su_run_vm_loop
|
jmp su_run_vm_loop
|
||||||
su_run_vm_advance:
|
su_run_vm_advance:
|
||||||
mov ebp, dword [esp + 8] ; load pointer to voice to register
|
mov ebp, [esp + 8] ; WRK points to start of current voice
|
||||||
add ebp, su_voice.size ; shift it to point to following voice
|
add ebp, su_voice.size ; move to next voice
|
||||||
mov dword [esp + 8], ebp ; save back to stack
|
mov [esp + 8], ebp ; update the pointer in the stack to point to the new voice
|
||||||
dec dword [esp + 36] ; voices--
|
mov ecx, [esp + 36] ; ecx = how many voices remain to process
|
||||||
jne su_run_vm_loop ; if there's more voices to process, goto vm_loop
|
dec ecx ; decrement number of voices to process
|
||||||
popad ; Popped: eax, ecx = DelayWorkSpace, edx = Synth, ebx = OpcodeStream, esp, ebp = Voice, esi = OperandStream, edi. Stack: retaddr_su_run_vm, VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
bt dword [esp + 40], ecx ; if voice bit of su_polyphonism not set
|
||||||
|
jnc su_op_advance_next_instrument ; goto next_instrument
|
||||||
|
mov esi, [esp + 4] ; if it was set, then repeat the opcodes for the current voice
|
||||||
|
mov ebx, [esp + 16]
|
||||||
|
su_op_advance_next_instrument:
|
||||||
|
mov [esp + 4], esi ; save current VAL as a checkpoint
|
||||||
|
mov [esp + 16], ebx ; save current COM as a checkpoint
|
||||||
|
su_op_advance_finish:
|
||||||
|
mov [esp + 36], ecx
|
||||||
|
jne su_run_vm_loop ; ZF was set by dec ecx
|
||||||
|
popad ; Popped: eax, ecx = DelayWorkSpace, edx = Synth, ebx = OpcodeStream, esp, ebp = Voice, esi = OperandStream, edi. Stack: retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
ret
|
ret
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; ADDP opcode: add the two top most signals on the stack and pop
|
; ADDP opcode: add the two top most signals on the stack and pop
|
||||||
@ -224,11 +261,6 @@ su_run_vm_advance:
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_op_addp code align=1
|
section .su_op_addp code align=1
|
||||||
su_op_addp:
|
su_op_addp:
|
||||||
jnc su_op_addp_mono
|
|
||||||
faddp st2, st0
|
|
||||||
faddp st2, st0
|
|
||||||
ret
|
|
||||||
su_op_addp_mono:
|
|
||||||
faddp st1, st0
|
faddp st1, st0
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -248,44 +280,6 @@ su_op_mulp_mono:
|
|||||||
fmulp st1
|
fmulp st1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
; XCH opcode: exchange the signals on the stack
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
; Mono: a b -> b a
|
|
||||||
; stereo: a b c d -> c d a b
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
section .su_op_xch code align=1
|
|
||||||
su_op_xch:
|
|
||||||
fxch st0, st1
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
; HOLD opcode: sample and hold the signal, reducing sample rate
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
; Mono version: holds the signal at a rate defined by the freq parameter
|
|
||||||
; Stereo version: holds both channels
|
|
||||||
;-------------------------------------------------------------------------------
|
|
||||||
section .su_op_hold code align=1
|
|
||||||
su_op_hold:
|
|
||||||
fld dword [edx] ; f x
|
|
||||||
fmul st0, st0 ; f^2 x
|
|
||||||
fchs ; -f^2 x
|
|
||||||
fadd dword [ebp] ; p-f^2 x
|
|
||||||
fst dword [ebp] ; p <- p-f^2
|
|
||||||
fldz ; 0 p x
|
|
||||||
fucomip st1 ; p x
|
|
||||||
fstp dword [esp-4] ; t=p, x
|
|
||||||
jc short su_op_hold_holding ; if (0 < p) goto holding
|
|
||||||
fld1 ; 1 x
|
|
||||||
fadd dword [esp-4] ; 1+t x
|
|
||||||
fstp dword [ebp] ; x
|
|
||||||
fst dword [ebp+4] ; save holded value
|
|
||||||
ret ; x
|
|
||||||
su_op_hold_holding:
|
|
||||||
fstp st0 ;
|
|
||||||
fld dword [ebp+4] ; x
|
|
||||||
ret
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; FILTER opcode: perform low/high/band-pass/notch etc. filtering on the signal
|
; FILTER opcode: perform low/high/band-pass/notch etc. filtering on the signal
|
||||||
@ -316,10 +310,6 @@ su_op_filter:
|
|||||||
jz short su_op_filter_skiplowpass
|
jz short su_op_filter_skiplowpass
|
||||||
fadd dword [ebp]
|
fadd dword [ebp]
|
||||||
su_op_filter_skiplowpass:
|
su_op_filter_skiplowpass:
|
||||||
test al, byte 0x20
|
|
||||||
jz short su_op_filter_skipbandpass
|
|
||||||
fadd dword [ebp+8]
|
|
||||||
su_op_filter_skipbandpass:
|
|
||||||
test al, byte 0x10
|
test al, byte 0x10
|
||||||
jz short su_op_filter_skiphighpass
|
jz short su_op_filter_skiphighpass
|
||||||
fadd dword [ebp+4]
|
fadd dword [ebp+4]
|
||||||
@ -343,12 +333,14 @@ su_op_filter_skipneghighpass:
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_op_pan code align=1
|
section .su_op_pan code align=1
|
||||||
su_op_pan:
|
su_op_pan:
|
||||||
fld dword [edx] ; p s
|
jc su_op_pan_do ; this time, if this is mono op...
|
||||||
fmul st1 ; p*s s
|
fld st0 ; ...we duplicate the mono into stereo first
|
||||||
fsub st1, st0 ; p*s s-p*s
|
su_op_pan_do:
|
||||||
; Equal to
|
fld dword [edx] ; p l r
|
||||||
; s*p s*(1-p)
|
fld1 ; 1 p l r
|
||||||
fxch ; s*(1-p) s*p SHOULD PROBABLY DELETE, WHY BOTHER
|
fsub st1 ; 1-p p l r
|
||||||
|
fmulp st2 ; p (1-p)*l r
|
||||||
|
fmulp st2 ; (1-p)*l p*r
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
@ -363,10 +355,10 @@ su_op_pan:
|
|||||||
section .su_op_delay code align=1
|
section .su_op_delay code align=1
|
||||||
su_op_delay:
|
su_op_delay:
|
||||||
lodsw ; al = delay index, ah = delay count
|
lodsw ; al = delay index, ah = delay count
|
||||||
pushad ; Stack: edi, DelayVal, ebp, esp, DelayCom, edx, ecx, eax, retaddr_su_op_delay, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pushad ; Stack: edi, DelayVal, ebp, esp, DelayCom, edx, ecx, eax, retaddr_su_op_delay, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
movzx ebx, al
|
movzx ebx, al
|
||||||
lea ebx,[su_delay_times + ebx*2] ; BX now points to the right position within delay time table
|
lea ebx,[su_delay_times + ebx*2] ; BX now points to the right position within delay time table
|
||||||
movzx esi, word [esp + 84] ; notice that we load word, so we wrap at 65536
|
movzx esi, word [esp + 88] ; notice that we load word, so we wrap at 65536
|
||||||
mov ecx, dword [esp + 60] ; ebp is now the separate delay workspace, as they require a lot more space
|
mov ecx, dword [esp + 60] ; ebp is now the separate delay workspace, as they require a lot more space
|
||||||
jnc su_op_delay_mono
|
jnc su_op_delay_mono
|
||||||
push eax ; save _ah (delay count)
|
push eax ; save _ah (delay count)
|
||||||
@ -377,7 +369,7 @@ su_op_delay:
|
|||||||
su_op_delay_mono: ; flow into mono delay
|
su_op_delay_mono: ; flow into mono delay
|
||||||
call su_op_delay_do ; when stereo delay is not enabled, we could inline this to save 5 bytes, but I expect stereo delay to be farely popular so maybe not worth the hassle
|
call su_op_delay_do ; when stereo delay is not enabled, we could inline this to save 5 bytes, but I expect stereo delay to be farely popular so maybe not worth the hassle
|
||||||
mov dword [esp + 60],ecx ; move delay workspace pointer back to stack.
|
mov dword [esp + 60],ecx ; move delay workspace pointer back to stack.
|
||||||
popad ; Popped: eax, ecx, edx, ebx = DelayCom, esp, ebp, esi = DelayVal, edi. Stack: retaddr_su_op_delay, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
popad ; Popped: eax, ecx, edx, ebx = DelayCom, esp, ebp, esi = DelayVal, edi. Stack: retaddr_su_op_delay, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
@ -445,10 +437,6 @@ section .su_op_compressor code align=1
|
|||||||
su_op_compressor:
|
su_op_compressor:
|
||||||
fld st0 ; x x
|
fld st0 ; x x
|
||||||
fmul st0, st0 ; x^2 x
|
fmul st0, st0 ; x^2 x
|
||||||
fld st2 ; r x^2 l r
|
|
||||||
fst st3 ; y x^2 l r
|
|
||||||
fmul st0, st0 ; y^2 x^2 l r
|
|
||||||
faddp st1, st0 ; y^2+x^2 l r
|
|
||||||
fld dword [ebp] ; l x^2 x
|
fld dword [ebp] ; l x^2 x
|
||||||
fucomi st0, st1
|
fucomi st0, st1
|
||||||
setnb al ; if (st0 >= st1) al = 1; else al = 0;
|
setnb al ; if (st0 >= st1) al = 1; else al = 0;
|
||||||
@ -477,7 +465,6 @@ su_op_compressor:
|
|||||||
; if ratio is at minimum => p=0 => 1 x
|
; if ratio is at minimum => p=0 => 1 x
|
||||||
; if ratio is at maximum => p=0.5 => t/x => t/x*x=t
|
; if ratio is at maximum => p=0.5 => t/x => t/x*x=t
|
||||||
fdiv dword [edx + 8]; this used to be pregain but that ran into problems with getting back up to 0 dB so postgain should be better at that
|
fdiv dword [edx + 8]; this used to be pregain but that ran into problems with getting back up to 0 dB so postgain should be better at that
|
||||||
fld st0 ; and return the computed gain two times, ready for MULP STEREO
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
@ -528,12 +515,6 @@ section .su_op_send code align=1
|
|||||||
su_op_send:
|
su_op_send:
|
||||||
lodsw
|
lodsw
|
||||||
mov ecx, [esp + 12] ; load pointer to voice
|
mov ecx, [esp + 12] ; load pointer to voice
|
||||||
pushf ; uh ugly: we save the flags just for the stereo carry bit. Doing the .CX loading later crashed the synth for stereo sends as loading the synth address from stack was f'd up by the "call su_op_send_mono"
|
|
||||||
test ah, 0x80
|
|
||||||
jz su_op_send_skipglobal
|
|
||||||
mov ecx, [esp + 24 + 4]
|
|
||||||
su_op_send_skipglobal:
|
|
||||||
popf
|
|
||||||
test al, 0x8 ; if the SEND_POP bit is not set
|
test al, 0x8 ; if the SEND_POP bit is not set
|
||||||
jnz su_op_send_skippush
|
jnz su_op_send_skippush
|
||||||
fld st0 ; duplicate the signal on stack: s s
|
fld st0 ; duplicate the signal on stack: s s
|
||||||
@ -615,7 +596,7 @@ su_op_envelope_leave2:
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_op_noise code align=1
|
section .su_op_noise code align=1
|
||||||
su_op_noise:
|
su_op_noise:
|
||||||
lea ecx,[esp + 56]
|
lea ecx,[esp + 60]
|
||||||
imul eax, [ecx],16007
|
imul eax, [ecx],16007
|
||||||
mov [ecx],eax
|
mov [ecx],eax
|
||||||
fild dword [ecx]
|
fild dword [ecx]
|
||||||
@ -646,7 +627,7 @@ su_op_oscillator:
|
|||||||
fchs ; -d r, negate the detune for second round
|
fchs ; -d r, negate the detune for second round
|
||||||
su_op_oscillat_mono:
|
su_op_oscillat_mono:
|
||||||
|
|
||||||
pushad ; Stack: edi, esi, OscWRK, esp, ebx, edx, ecx, , retaddr_su_op_oscillator, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
pushad ; Stack: edi, esi, OscWRK, esp, ebx, edx, ecx, , retaddr_su_op_oscillator, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
fldz ; 0 d
|
fldz ; 0 d
|
||||||
fxch ; d a=0, "accumulated signal"
|
fxch ; d a=0, "accumulated signal"
|
||||||
su_op_oscillat_unison_loop:
|
su_op_oscillat_unison_loop:
|
||||||
@ -668,39 +649,31 @@ su_op_oscillat_unison_loop:
|
|||||||
jmp short su_op_oscillat_unison_loop
|
jmp short su_op_oscillat_unison_loop
|
||||||
su_op_oscillat_unison_out:
|
su_op_oscillat_unison_out:
|
||||||
|
|
||||||
popad ; Popped: eax = , ecx, edx, ebx, esp, ebp = OscWRK, esi, edi. Stack: retaddr_su_op_oscillator, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, Sample, Row, GlobalTick, RandSeed, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
popad ; Popped: eax = , ecx, edx, ebx, esp, ebp = OscWRK, esi, edi. Stack: retaddr_su_op_oscillator, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
ret
|
ret
|
||||||
su_op_oscillat_single:
|
su_op_oscillat_single:
|
||||||
fld dword [edx]
|
fld dword [edx]
|
||||||
fsub dword [FCONST_0_500000]
|
fsub dword [FCONST_0_500000]
|
||||||
fdiv dword [FCONST_0_00781250]
|
fdiv dword [FCONST_0_00781250]
|
||||||
faddp st1
|
faddp st1
|
||||||
test al, byte 0x08
|
|
||||||
jnz su_op_oscillat_skipnote
|
|
||||||
fiadd dword [edx-su_voice.inputs+su_voice.note] ; // st0 is note, st1 is t+d offset
|
fiadd dword [edx-su_voice.inputs+su_voice.note] ; // st0 is note, st1 is t+d offset
|
||||||
su_op_oscillat_skipnote:
|
|
||||||
fmul dword [ICONST_1034594986]
|
fmul dword [ICONST_1034594986]
|
||||||
call su_power
|
call su_power
|
||||||
test al, byte 0x08
|
|
||||||
jz short su_op_oscillat_normalize_note
|
|
||||||
fmul dword [FCONST_3_80000em05] ; // st0 is now frequency for lfo
|
|
||||||
jmp short su_op_oscillat_normalized
|
|
||||||
su_op_oscillat_normalize_note:
|
|
||||||
fmul dword [FCONST_9_269614em05] ; // st0 is now frequency
|
fmul dword [FCONST_9_269614em05] ; // st0 is now frequency
|
||||||
su_op_oscillat_normalized:
|
su_op_oscillat_normalized:
|
||||||
fadd dword [ebp]
|
fadd dword [ebp]
|
||||||
|
test al, byte 0x80
|
||||||
|
jz short su_op_oscillat_not_sample
|
||||||
|
fst dword [ebp] ; for samples, we store the phase without mod(p,1)
|
||||||
|
call su_oscillat_sample
|
||||||
|
jmp su_op_oscillat_shaping ; skip the rest to avoid color phase normalization and colorloading
|
||||||
|
su_op_oscillat_not_sample:
|
||||||
fld1 ; we need to take mod(p,1) so the frequency does not drift as the float
|
fld1 ; we need to take mod(p,1) so the frequency does not drift as the float
|
||||||
fadd st1, st0 ; make no mistake: without this, there is audible drifts in oscillator pitch
|
fadd st1, st0 ; make no mistake: without this, there is audible drifts in oscillator pitch
|
||||||
fxch ; as the actual period changes once the phase becomes too big
|
fxch ; as the actual period changes once the phase becomes too big
|
||||||
fprem ; we actually computed mod(p+1,1) instead of mod(p,1) as the fprem takes mod
|
fprem ; we actually computed mod(p+1,1) instead of mod(p,1) as the fprem takes mod
|
||||||
fstp st1 ; towards zero
|
fstp st1 ; towards zero
|
||||||
fst dword [ebp] ; store back the updated phase
|
fst dword [ebp] ; store back the updated phase
|
||||||
fadd dword [edx + 8]
|
|
||||||
fld1 ; this is a bit stupid, but we need to take mod(x,1) again after phase modulations
|
|
||||||
fadd st1, st0 ; as the actual oscillator functions expect x in [0,1]
|
|
||||||
fxch
|
|
||||||
fprem
|
|
||||||
fstp st1
|
|
||||||
fld dword [edx + 12] ; // c p
|
fld dword [edx + 12] ; // c p
|
||||||
; every oscillator test included if needed
|
; every oscillator test included if needed
|
||||||
test al, byte 0x40
|
test al, byte 0x40
|
||||||
@ -711,6 +684,10 @@ su_op_oscillat_notsine:
|
|||||||
jz short su_op_oscillat_not_trisaw
|
jz short su_op_oscillat_not_trisaw
|
||||||
call su_oscillat_trisaw
|
call su_oscillat_trisaw
|
||||||
su_op_oscillat_not_trisaw:
|
su_op_oscillat_not_trisaw:
|
||||||
|
test al, byte 0x10
|
||||||
|
jz short su_op_oscillat_not_pulse
|
||||||
|
call su_oscillat_pulse
|
||||||
|
su_op_oscillat_not_pulse:
|
||||||
su_op_oscillat_shaping:
|
su_op_oscillat_shaping:
|
||||||
; finally, shape the oscillator and apply gain
|
; finally, shape the oscillator and apply gain
|
||||||
fld dword [edx + 16]
|
fld dword [edx + 16]
|
||||||
@ -719,6 +696,17 @@ su_op_oscillat_gain:
|
|||||||
fmul dword [edx + 20]
|
fmul dword [edx + 20]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
section .su_oscillat_pulse code align=1
|
||||||
|
su_oscillat_pulse:
|
||||||
|
fucomi st1 ; // c p
|
||||||
|
fld1
|
||||||
|
jnc short su_oscillat_pulse_up ; // +1 c p
|
||||||
|
fchs ; // -1 c p
|
||||||
|
su_oscillat_pulse_up:
|
||||||
|
fstp st1 ; // +-1 p
|
||||||
|
fstp st1 ; // +-1
|
||||||
|
ret
|
||||||
|
|
||||||
section .su_oscillat_trisaw code align=1
|
section .su_oscillat_trisaw code align=1
|
||||||
su_oscillat_trisaw:
|
su_oscillat_trisaw:
|
||||||
fucomi st1 ; // c p
|
fucomi st1 ; // c p
|
||||||
@ -748,6 +736,30 @@ su_oscillat_sine_do:
|
|||||||
fsin ; // sin(2*pi*p)
|
fsin ; // sin(2*pi*p)
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
section .su_oscillat_sample code align=1
|
||||||
|
su_oscillat_sample:
|
||||||
|
pushad ; Stack: SampleDi, esi, ebp, esp, SampleBx, SampleDx, SampleCx, SampleAx, retaddr_su_oscillat_sample, retaddr_su_op_oscillator, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr ; edx must be saved, eax & ecx if this is stereo osc
|
||||||
|
push eax
|
||||||
|
mov al, byte [esi-4] ; reuse "color" as the sample number
|
||||||
|
lea edi, [su_sample_offsets + eax*8]; edi points now to the sample table entry
|
||||||
|
fmul dword [FCONST_84_28075] ; p*r
|
||||||
|
fistp dword [esp]
|
||||||
|
pop edx ; edx is now the sample number
|
||||||
|
movzx ebx, word [edi + 4] ; ecx = loopstart
|
||||||
|
sub edx, ebx ; if sample number < loop start
|
||||||
|
jl su_oscillat_sample_not_looping ; then we're not looping yet
|
||||||
|
mov eax, edx ; eax = sample number
|
||||||
|
movzx ecx, word [edi + 6] ; edi is now the loop length
|
||||||
|
xor edx, edx ; div wants edx to be empty
|
||||||
|
div ecx ; edx is now the remainder
|
||||||
|
su_oscillat_sample_not_looping:
|
||||||
|
add edx, ebx ; sampleno += loopstart
|
||||||
|
add edx, dword [edi]
|
||||||
|
fild word [su_sample_table + edx*2]
|
||||||
|
fdiv dword [FCONST_32767_0]
|
||||||
|
popad ; Popped: eax = SampleAx, ecx = SampleCx, edx = SampleDx, ebx = SampleBx, esp, ebp, esi, edi = SampleDi. Stack: retaddr_su_oscillat_sample, retaddr_su_op_oscillator, edi, OperandStream, Voice, esp, OpcodeStream, Synth, DelayWorkSpace, eax, retaddr_su_run_vm, VoicesRemain, PolyphonyBitmask, Sample, Row, GlobalTick, RandSeed, VoiceTrackBitmask, edi, esi, ebp, esp, ebx, edx, ecx, eax, retaddr_su_render_song, OutputBufPtr
|
||||||
|
ret
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; IN opcode: inputs and clears a global port
|
; IN opcode: inputs and clears a global port
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
@ -766,6 +778,37 @@ su_op_in:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
section .su_load_gmdls code align=1
|
||||||
|
global _su_load_gmdls@0
|
||||||
|
_su_load_gmdls@0:
|
||||||
|
mov eax, su_sample_table
|
||||||
|
; these are the arguments for ReadFile
|
||||||
|
push 0 ; NULL
|
||||||
|
push eax ; &bytes_read, reusing sample table again; it does not matter that the first four bytes are trashed
|
||||||
|
push 3440660 ; number of bytes to read
|
||||||
|
push eax ; here we actually pass the sample table to readfile
|
||||||
|
; these are for OpenFile
|
||||||
|
push 0 ; OF_READ
|
||||||
|
push eax ; &ofstruct, blatantly reuse the sample table
|
||||||
|
push su_gmdls_path1 ; path
|
||||||
|
call dword [__imp__OpenFile@12]; eax = OpenFile(path,&ofstruct,OF_READ)
|
||||||
|
push eax ; handle to file
|
||||||
|
call dword [__imp__ReadFile@20] ; Readfile(handle,&su_sample_table,SAMPLE_TABLE_SIZE,&bytes_read,NULL)
|
||||||
|
ret
|
||||||
|
extern __imp__OpenFile@12 ; requires windows
|
||||||
|
extern __imp__ReadFile@20
|
||||||
|
; requires windows
|
||||||
|
|
||||||
|
|
||||||
|
section .su_gmdls_path1 data align=1
|
||||||
|
su_gmdls_path1:
|
||||||
|
db 'drivers/gm.dls',0
|
||||||
|
|
||||||
|
|
||||||
|
section .susamtable bss align=256
|
||||||
|
su_sample_table:
|
||||||
|
resb 3440660 ; size of gmdls.
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; su_nonlinear_map function: returns 2^(-24*x) of parameter number _AX
|
; su_nonlinear_map function: returns 2^(-24*x) of parameter number _AX
|
||||||
@ -813,7 +856,7 @@ su_power:
|
|||||||
; best way to do this
|
; best way to do this
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_op_distort code align=1
|
section .su_op_distort code align=1
|
||||||
su_op_distort:call su_effects_stereohelper
|
su_op_distort:
|
||||||
fld dword [edx]
|
fld dword [edx]
|
||||||
|
|
||||||
su_waveshaper:
|
su_waveshaper:
|
||||||
@ -869,17 +912,15 @@ section .su_vm_jumptable data align=1
|
|||||||
su_vm_jumptable:
|
su_vm_jumptable:
|
||||||
dd su_op_envelope
|
dd su_op_envelope
|
||||||
dd su_op_oscillator
|
dd su_op_oscillator
|
||||||
dd su_op_distort
|
|
||||||
dd su_op_hold
|
|
||||||
dd su_op_mulp
|
dd su_op_mulp
|
||||||
dd su_op_noise
|
dd su_op_noise
|
||||||
dd su_op_filter
|
dd su_op_filter
|
||||||
dd su_op_addp
|
dd su_op_addp
|
||||||
dd su_op_pan
|
dd su_op_pan
|
||||||
dd su_op_delay
|
|
||||||
dd su_op_xch
|
|
||||||
dd su_op_outaux
|
dd su_op_outaux
|
||||||
dd su_op_send
|
dd su_op_send
|
||||||
|
dd su_op_distort
|
||||||
|
dd su_op_delay
|
||||||
dd su_op_compressor
|
dd su_op_compressor
|
||||||
dd su_op_in
|
dd su_op_in
|
||||||
dd su_op_out
|
dd su_op_out
|
||||||
@ -891,17 +932,15 @@ section .su_vm_transformcounts data align=1
|
|||||||
su_vm_transformcounts:
|
su_vm_transformcounts:
|
||||||
db 5
|
db 5
|
||||||
db 6
|
db 6
|
||||||
db 1
|
|
||||||
db 1
|
|
||||||
db 0
|
db 0
|
||||||
db 2
|
db 2
|
||||||
db 2
|
db 2
|
||||||
db 0
|
db 0
|
||||||
db 1
|
db 1
|
||||||
|
db 2
|
||||||
|
db 1
|
||||||
|
db 1
|
||||||
db 4
|
db 4
|
||||||
db 0
|
|
||||||
db 2
|
|
||||||
db 1
|
|
||||||
db 5
|
db 5
|
||||||
db 0
|
db 0
|
||||||
db 1
|
db 1
|
||||||
@ -913,55 +952,53 @@ su_vm_transformcounts:
|
|||||||
section .su_patterns data align=1
|
section .su_patterns data align=1
|
||||||
su_patterns:
|
su_patterns:
|
||||||
db 0,0,0,0,0,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,0,0,0
|
||||||
db 0,0,0,0,0,0,0,0,57,1,1,1,57,1,1,1
|
db 48,1,1,1,48,1,1,1,48,1,1,1,48,1,1,1
|
||||||
db 1,1,1,1,57,1,1,1,1,1,1,1,57,1,1,1
|
db 48,1,1,1,48,1,1,1,48,1,1,1,48,1,48,1
|
||||||
db 1,1,1,1,57,1,1,1,1,1,1,57,57,1,1,1
|
|
||||||
db 1,1,1,1,57,57,57,57,1,1,1,1,57,1,1,1
|
|
||||||
db 1,1,1,1,57,1,1,1,57,57,1,1,57,1,1,1
|
|
||||||
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
db 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
|
db 1,1,1,1,58,1,1,1,1,1,1,1,58,1,1,1
|
||||||
db 0,0,0,0,0,0,0,0,0,0,46,1,1,1,46,1
|
db 1,1,1,1,72,1,1,1,1,1,1,1,72,1,1,1
|
||||||
db 46,1,1,1,1,1,1,1,1,1,46,1,1,1,1,1
|
db 74,1,0,0,74,1,77,70,1,0,70,1,0,70,1,0
|
||||||
db 46,1,1,1,1,1,1,1,46,1,46,1,1,1,1,1
|
db 74,1,0,0,74,1,77,70,1,0,70,1,0,0,72,1
|
||||||
db 46,1,1,1,1,1,1,1,46,46,46,46,1,1,1,1
|
db 74,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
db 46,1,1,1,1,1,1,1,1,1,46,46,1,1,1,1
|
db 60,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
db 48,1,48,1,1,1,48,1,48,1,48,1,1,1,48,1
|
db 1,1,53,1,1,1,53,1,1,1,53,1,1,1,53,1
|
||||||
db 50,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
db 1,1,53,1,1,1,53,1,1,1,53,1,1,1,53,53
|
||||||
db 48,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|
||||||
db 46,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|
||||||
db 1,1,1,1,1,1,1,1,1,1,48,1,50,1,53,1
|
|
||||||
db 43,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|
||||||
db 1,1,1,1,1,1,1,1,43,1,45,1,46,1,48,1
|
|
||||||
db 1,1,1,1,1,1,1,1,1,1,1,1,48,1,50,1
|
|
||||||
db 52,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|
||||||
db 45,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|
||||||
db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
|
|
||||||
db 62,0,64,0,65,0,69,0,65,0,64,0,62,0,64,0
|
|
||||||
db 65,0,72,0,65,0,64,0,62,0,64,0,65,0,71,0
|
|
||||||
db 65,0,69,0,65,0,64,0,62,0,64,0,65,0,72,0
|
|
||||||
db 50,0,50,1,50,0,50,1,50,0,50,1,50,0,50,1
|
|
||||||
db 48,0,48,1,48,0,48,1,48,0,48,1,48,0,48,1
|
|
||||||
db 46,0,46,1,46,0,46,1,46,0,46,1,46,0,46,1
|
|
||||||
db 43,0,43,1,43,0,43,1,43,0,43,1,43,0,43,1
|
|
||||||
db 43,0,43,1,43,0,43,1,43,0,43,1,43,0,43,0
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; Tracks
|
; Tracks
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_tracks data align=1
|
section .su_tracks data align=1
|
||||||
su_tracks:
|
su_tracks:
|
||||||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,2,3,2,2,2,4,2,2,2,2,2,2,2,5,2,2,2,3,2,2,2,4,2,2,2,2,2,2,2,5,6,6,7,0
|
db 0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,3
|
||||||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,9,9,10,9,9,9,11,9,9,9,10,9,9,9,12,9,9,9,10,9,9,9,11,9,9,9,10,9,9,9,12,6,6,7,0
|
db 0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,3
|
||||||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,6,6,7,0
|
db 0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,3
|
||||||
db 14,6,15,6,16,17,18,19,16,20,21,22,14,6,6,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
db 6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,8
|
||||||
db 24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,24,25,24,26,0,0,0,0
|
db 0,0,0,0,9,3,3,3,9,3,3,3,3,3,3,3,3
|
||||||
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,28,28,29,29,30,30,27,27,28,28,29,29,30,30,27,27,28,28,29,29,30,30,27,27,28,28,29,29,30,31,0,0,0,0
|
db 0,0,0,0,10,11,10,10,10,10,10,10,10,10,10,10,3
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
; Sample offsets
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
section .su_sample_offsets data align=1
|
||||||
|
su_sample_offsets:
|
||||||
|
dd 560606
|
||||||
|
dw 4276
|
||||||
|
dw 1
|
||||||
|
dd 641780
|
||||||
|
dw 2423
|
||||||
|
dw 1
|
||||||
|
dd 433554
|
||||||
|
dw 2615
|
||||||
|
dw 5676
|
||||||
|
dd 367477
|
||||||
|
dw 1343
|
||||||
|
dw 1
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; Delay times
|
; Delay times
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_delay_times data align=1
|
section .su_delay_times data align=1
|
||||||
su_delay_times:
|
su_delay_times:
|
||||||
dw 1116,1188,1276,1356,1422,1492,1556,1618,1140,1212,1300,1380,1446,1516,1580,1642,21381,12027
|
dw 1395,350,1744,1744,1116,1188,1276,1356,1422,1492,1556,1618,1140,1212,1300,1380,1446,1516,1580,1642
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
@ -969,14 +1006,14 @@ su_delay_times:
|
|||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_patch_opcodes data align=1
|
section .su_patch_opcodes data align=1
|
||||||
su_patch_opcodes:
|
su_patch_opcodes:
|
||||||
db 2,4,6,8,10,2,12,10,14,14,16,14,14,14,14,14,6,8,18,20,22,20,22,25,2,26,2,26,2,26,0,2,26,4,6,8,10,2,12,14,14,10,16,14,14,14,14,18,25,2,2,10,26,0,2,12,10,14,14,14,18,25,0,5,5,17,5,17,15,14,22,14,7,15,3,11,25,4,26,4,26,26,4,26,4,26,4,26,0,2,4,4,16,10,18,20,22,20,25,0,2,26,26,2,4,4,16,10,14,14,18,7,29,11,25,0,31,21,33,0
|
db 2,4,6,2,8,10,10,6,12,10,10,10,10,14,17,2,2,6,18,0,2,4,20,6,2,8,6,10,10,12,14,17,2,18,2,18,0,2,22,8,6,2,22,8,6,12,2,4,6,12,10,20,14,17,0,2,4,4,12,6,10,10,20,2,8,6,10,12,24,6,20,14,17,2,18,0,3,3,7,5,7,15,17,0,3,5,7,11,11,15,17,0,27,23,29,0
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; The parameters / inputs to each opcode
|
; The parameters / inputs to each opcode
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
section .su_patch_operands data align=1
|
section .su_patch_operands data align=1
|
||||||
su_patch_operands:
|
su_patch_operands:
|
||||||
db 22,64,0,0,38,77,64,19,128,66,70,64,78,128,0,68,0,0,70,2,128,97,128,68,108,128,68,100,128,68,19,98,16,15,128,80,40,74,80,23,42,16,97,128,59,27,128,112,0,0,15,27,128,112,0,8,15,128,0,38,49,0,0,128,70,40,0,47,54,0,0,128,19,152,0,54,68,70,0,128,26,200,0,39,71,0,0,128,7,0,149,88,64,42,115,114,54,33,58,100,28,45,0,0,128,84,102,93,63,68,75,87,64,11,66,68,53,128,80,7,76,16,13,54,16,64,128,0,71,128,74,0,128,49,71,121,0,128,0,56,0,4,53,0,0,128,102,128,87,128,16,95,128,80,89,71,32,61,45,0,64,87,64,128,65,128,34,64,60,87,128,64,128,35,64,69,0,128,106,128,66,62,91,64,103,26,88,85,31,88,96,12,128,88,25,59,106,60,64,29,21,64,64,4,128,64,128,40,52,25,0,41,42,55,54,63,128,72,75,33,0,59,43,0,74,64,0,128,64,128,72,69,73,0,40,64,0,128,64,128,72,71,120,0,40,64,0,128,64,128,72,86,152,0,39,62,0,30,71,88,62,14,53,27,72,64,88,66,64,113,64,128,64,64,71,128,86,0,16,1,73,128,90,0,17,1,84,52,39,81,0,0,128,87,144,0,90,107,0,33,57,67,57,128,76,64,0,98,64,101,64,64,48,85,78,97,64,35,39,82,64,15,128,68,64,80,48,56,87,46,54,85,35,2,50,128,114,77,0,15,128
|
db 18,65,0,0,60,94,57,0,128,63,79,66,0,43,0,0,128,67,81,87,35,68,100,62,64,9,75,68,53,128,80,10,85,16,10,49,16,64,57,0,62,128,0,0,128,39,61,34,0,128,0,40,0,0,76,0,0,96,86,116,0,0,114,37,130,95,0,68,0,0,83,3,107,57,67,68,128,78,64,71,84,10,47,54,0,0,128,19,136,0,54,68,70,0,128,26,255,255,0,53,0,0,128,64,128,0,0,0,3,97,0,0,54,0,0,128,64,6,0,0,2,3,79,128,0,62,0,0,42,64,64,0,1,64,125,128,39,76,68,114,70,50,12,46,74,36,39,77,40,48,0,84,50,128,35,71,64,0,64,64,64,16,3,128,64,94,128,64,83,32,53,0,0,64,52,59,91,102,72,37,65,87,47,102,59,64,98,23,0,72,47,45,76,128,104,0,8,90,0,0,128,21,78,0,85,64,77,64,0,2,64,111,128,73,49,78,50,60,0,0,128,82,64,0,3,64,127,128,78,128,76,109,128,64,57,84,0,2,40,128,120,42,4,15,128
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; Constants
|
; Constants
|
||||||
@ -986,8 +1023,8 @@ FCONST_32767_0 dd 0x46fffe00
|
|||||||
FCONST_0_00781250 dd 0x3c000000
|
FCONST_0_00781250 dd 0x3c000000
|
||||||
FCONST_0_500000 dd 0x3f000000
|
FCONST_0_500000 dd 0x3f000000
|
||||||
FCONST_0_99609375 dd 0x3f7f0000
|
FCONST_0_99609375 dd 0x3f7f0000
|
||||||
FCONST_3_80000em05 dd 0x381f6230
|
|
||||||
FCONST_9_269614em05 dd 0x38c265dc
|
FCONST_9_269614em05 dd 0x38c265dc
|
||||||
|
FCONST_84_28075 dd 0x42a88fbe
|
||||||
ICONST_2147483648 dd 0x80000000
|
ICONST_2147483648 dd 0x80000000
|
||||||
ICONST_1034594986 dd 0x3daaaaaa
|
ICONST_1034594986 dd 0x3daaaaaa
|
||||||
ICONST_24 dd 0x18
|
ICONST_24 dd 0x18
|
||||||
|
|||||||
8
4klang.h
8
4klang.h
@ -3,14 +3,14 @@
|
|||||||
#define SU_RENDER_H
|
#define SU_RENDER_H
|
||||||
|
|
||||||
#define SU_CHANNEL_COUNT 2
|
#define SU_CHANNEL_COUNT 2
|
||||||
#define SU_LENGTH_IN_SAMPLES 3335488
|
#define SU_LENGTH_IN_SAMPLES 1550944
|
||||||
#define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT)
|
#define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT)
|
||||||
|
|
||||||
#define SU_SAMPLE_RATE 44100
|
#define SU_SAMPLE_RATE 44100
|
||||||
#define SU_BPM 165
|
#define SU_BPM 116
|
||||||
#define SU_ROWS_PER_BEAT 4
|
#define SU_ROWS_PER_BEAT 4
|
||||||
#define SU_ROWS_PER_PATTERN 16
|
#define SU_ROWS_PER_PATTERN 16
|
||||||
#define SU_LENGTH_IN_PATTERNS 52
|
#define SU_LENGTH_IN_PATTERNS 17
|
||||||
#define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE)
|
#define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE)
|
||||||
#define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT))
|
#define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT))
|
||||||
|
|
||||||
@ -34,6 +34,8 @@ typedef short SUsample;
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
void SU_CALLCONV su_render_song(SUsample *buffer);
|
void SU_CALLCONV su_render_song(SUsample *buffer);
|
||||||
|
void SU_CALLCONV su_load_gmdls();
|
||||||
|
#define SU_LOAD_GMDLS
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -3,14 +3,14 @@
|
|||||||
%define PLAYER_INC
|
%define PLAYER_INC
|
||||||
|
|
||||||
%define SU_CHANNEL_COUNT 2
|
%define SU_CHANNEL_COUNT 2
|
||||||
%define SU_LENGTH_IN_SAMPLES 3335488
|
%define SU_LENGTH_IN_SAMPLES 1550944
|
||||||
%define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT)
|
%define SU_BUFFER_LENGTH (SU_LENGTH_IN_SAMPLES*SU_CHANNEL_COUNT)
|
||||||
|
|
||||||
%define SU_SAMPLE_RATE 44100
|
%define SU_SAMPLE_RATE 44100
|
||||||
%define SU_BPM 165
|
%define SU_BPM 116
|
||||||
%define SU_ROWS_PER_BEAT 4
|
%define SU_ROWS_PER_BEAT 4
|
||||||
%define SU_ROWS_PER_PATTERN 16
|
%define SU_ROWS_PER_PATTERN 16
|
||||||
%define SU_LENGTH_IN_PATTERNS 52
|
%define SU_LENGTH_IN_PATTERNS 17
|
||||||
%define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE)
|
%define SU_LENGTH_IN_ROWS (SU_LENGTH_IN_PATTERNS*SU_PATTERN_SIZE)
|
||||||
%define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT))
|
%define SU_SAMPLES_PER_ROW (SU_SAMPLE_RATE*60/(SU_BPM*SU_ROWS_PER_BEAT))
|
||||||
%define SU_SAMPLE_SIZE 2
|
%define SU_SAMPLE_SIZE 2
|
||||||
@ -23,5 +23,7 @@ _su_symbols:
|
|||||||
%else ; MANGLED
|
%else ; MANGLED
|
||||||
extern su_render_song
|
extern su_render_song
|
||||||
%endif ; MANGLED
|
%endif ; MANGLED
|
||||||
|
extern _su_load_gmdls
|
||||||
|
%define SU_LOAD_GMDLS
|
||||||
|
|
||||||
%endif ; PLAYER_INC
|
%endif ; PLAYER_INC
|
||||||
|
|||||||
533
4klang.yml
533
4klang.yml
@ -1,156 +1,53 @@
|
|||||||
bpm: 165
|
bpm: 116
|
||||||
rowsperbeat: 4
|
rowsperbeat: 4
|
||||||
score:
|
score:
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, -1, -1, 5, -1]
|
order: [-1, -1, -1, -1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, -1]
|
||||||
patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 57, 57, 1, 1, 1], [1, 1, 1, 1, 57, 57, 57, 57, 1, 1, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 57, 1, 1, 1, 57, 57, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]]
|
patterns: [[48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 1, 1], [48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 48, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 4, -1, -1, 5, -1]
|
order: [-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1]
|
||||||
patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 46, 1], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 46, 1, 46, 1, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]]
|
patterns: [[1, 1, 1, 1, 58, 1, 1, 1, 1, 1, 1, 1, 58, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1]
|
order: [-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]
|
||||||
patterns: [[48, 1, 48, 1, 1, 1, 48, 1, 48, 1, 48, 1, 1, 1, 48, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]]
|
patterns: [[1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [0, -1, 1, -1, 2, 3, 4, 5, 2, 6, 7, 8, 0, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
|
order: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2]
|
||||||
patterns: [[50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 50, 1, 53, 1], [43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 45, 1, 46, 1, 48, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 50, 1], [52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1]]
|
patterns: [[74, 1, 0, 1, 74, 1, 77, 70, 1, 0, 70, 1, 0, 70, 1, 0], [74, 1, 0, 1, 74, 1, 77, 70, 1, 0, 70, 1, 0, 1, 72, 1], [74, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
|
||||||
|
- numvoices: 2
|
||||||
|
order: [-1, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1]
|
||||||
|
patterns: [[60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, -1, -1, -1, -1]
|
order: [-1, -1, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]
|
||||||
patterns: [[62, 0, 64, 0, 65, 0, 69, 0, 65, 0, 64, 0, 62, 0, 64, 0], [65, 0, 72, 0, 65, 0, 64, 0, 62, 0, 64, 0, 65, 0, 71, 0], [65, 0, 69, 0, 65, 0, 64, 0, 62, 0, 64, 0, 65, 0, 72, 0]]
|
patterns: [[1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 1], [1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 53]]
|
||||||
- numvoices: 1
|
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 4, -1, -1, -1, -1]
|
|
||||||
patterns: [[50, 0, 50, 1, 50, 0, 50, 1, 50, 0, 50, 1, 50, 0, 50, 1], [48, 0, 48, 1, 48, 0, 48, 1, 48, 0, 48, 1, 48, 0, 48, 1], [46, 0, 46, 1, 46, 0, 46, 1, 46, 0, 46, 1, 46, 0, 46, 1], [43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1], [43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 0]]
|
|
||||||
rowsperpattern: 16
|
rowsperpattern: 16
|
||||||
length: 52
|
length: 17
|
||||||
patch:
|
patch:
|
||||||
- name: snare
|
- name: kick edm 2
|
||||||
numvoices: 1
|
comment: Suggested note to play G-2 to C-3
|
||||||
units:
|
|
||||||
- type: envelope
|
|
||||||
id: 1
|
|
||||||
parameters: {attack: 22, decay: 64, gain: 38, release: 0, stereo: 0, sustain: 0}
|
|
||||||
- type: oscillator
|
|
||||||
id: 2
|
|
||||||
parameters: {color: 128, detune: 64, gain: 70, lfo: 0, phase: 19, shape: 66, stereo: 0, transpose: 77, type: 0}
|
|
||||||
- type: distort
|
|
||||||
id: 3
|
|
||||||
parameters: {drive: 78, stereo: 0}
|
|
||||||
- type: hold
|
|
||||||
id: 4
|
|
||||||
parameters: {damp: 0, dry: 128, feedback: 96, holdfreq: 128, notetracking: 2, pregain: 40, stereo: 0}
|
|
||||||
- type: mulp
|
|
||||||
id: 5
|
|
||||||
parameters: {panning: 64, stereo: 0}
|
|
||||||
- type: envelope
|
|
||||||
id: 6
|
|
||||||
parameters: {attack: 0, auxgain: 64, decay: 68, gain: 70, outgain: 64, release: 0, stereo: 0, sustain: 0}
|
|
||||||
- type: noise
|
|
||||||
id: 81
|
|
||||||
parameters: {gain: 128, shape: 2, stereo: 0}
|
|
||||||
- type: mulp
|
|
||||||
id: 82
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 83
|
|
||||||
parameters: {bandpass: 0, frequency: 97, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 84
|
|
||||||
parameters: {bandpass: 0, frequency: 108, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0}
|
|
||||||
- type: addp
|
|
||||||
id: 85
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 86
|
|
||||||
parameters: {bandpass: 0, frequency: 100, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 87
|
|
||||||
parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 98, stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 88
|
|
||||||
parameters: {bandpass: 0, frequency: 15, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 89
|
|
||||||
parameters: {bandpass: 0, frequency: 40, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 74, stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 90
|
|
||||||
parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 42, stereo: 0}
|
|
||||||
- type: distort
|
|
||||||
id: 91
|
|
||||||
parameters: {drive: 97, stereo: 0}
|
|
||||||
- type: hold
|
|
||||||
id: 92
|
|
||||||
parameters: {holdfreq: 128, stereo: 0}
|
|
||||||
- type: pan
|
|
||||||
id: 93
|
|
||||||
parameters: {panning: 59, stereo: 0}
|
|
||||||
- type: delay
|
|
||||||
id: 94
|
|
||||||
parameters: {damp: 0, dry: 128, feedback: 112, notetracking: 0, pregain: 27, stereo: 0}
|
|
||||||
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618]
|
|
||||||
- type: xch
|
|
||||||
id: 95
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: delay
|
|
||||||
id: 96
|
|
||||||
parameters: {damp: 0, dry: 128, feedback: 112, notetracking: 0, pregain: 27, stereo: 0}
|
|
||||||
varargs: [1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
|
||||||
- type: xch
|
|
||||||
id: 97
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: outaux
|
|
||||||
id: 98
|
|
||||||
parameters: {auxgain: 0, outgain: 128, stereo: 1}
|
|
||||||
- type: envelope
|
|
||||||
id: 99
|
|
||||||
parameters: {attack: 38, decay: 49, gain: 128, release: 0, stereo: 0, sustain: 0}
|
|
||||||
- type: send
|
|
||||||
id: 100
|
|
||||||
parameters: {amount: 70, port: 0, sendpop: 1, target: 2}
|
|
||||||
- type: envelope
|
|
||||||
id: 101
|
|
||||||
parameters: {attack: 47, decay: 54, gain: 128, release: 0, stereo: 0, sustain: 0}
|
|
||||||
- type: send
|
|
||||||
id: 102
|
|
||||||
parameters: {amount: 19, port: 0, sendpop: 1, target: 83}
|
|
||||||
- type: envelope
|
|
||||||
id: 103
|
|
||||||
parameters: {attack: 54, decay: 68, gain: 128, release: 0, stereo: 0, sustain: 70}
|
|
||||||
- type: send
|
|
||||||
id: 104
|
|
||||||
parameters: {amount: 26, port: 0, sendpop: 1, target: 86}
|
|
||||||
- name: kick
|
|
||||||
numvoices: 1
|
numvoices: 1
|
||||||
units:
|
units:
|
||||||
- type: envelope
|
- type: envelope
|
||||||
id: 105
|
id: 105
|
||||||
parameters: {attack: 39, channel: 2, decay: 71, gain: 128, release: 0, stereo: 0, sustain: 0}
|
parameters: {attack: 18, channel: 2, decay: 65, gain: 60, release: 0, stereo: 0, sustain: 0}
|
||||||
- type: send
|
|
||||||
id: 205
|
|
||||||
parameters: {amount: 7, damp: 64, dry: 128, feedback: 125, notetracking: 0, port: 0, pregain: 40, sendpop: 0, stereo: 0, target: 184, unit: 0, voice: 0}
|
|
||||||
- type: oscillator
|
- type: oscillator
|
||||||
id: 106
|
id: 106
|
||||||
parameters: {color: 115, detune: 64, gain: 54, lfo: 0, phase: 42, shape: 114, stereo: 0, transpose: 88, type: 1, unison: 1}
|
parameters: {color: 128, detune: 57, gain: 79, lfo: 0, phase: 0, shape: 63, stereo: 0, transpose: 94, type: 0, unison: 2}
|
||||||
- type: distort
|
|
||||||
id: 107
|
|
||||||
parameters: {drive: 58, stereo: 0}
|
|
||||||
- type: hold
|
|
||||||
id: 108
|
|
||||||
parameters: {holdfreq: 100, stereo: 0}
|
|
||||||
- type: mulp
|
- type: mulp
|
||||||
id: 126
|
id: 126
|
||||||
parameters: {stereo: 0}
|
parameters: {stereo: 0}
|
||||||
- type: envelope
|
- type: envelope
|
||||||
id: 110
|
id: 110
|
||||||
parameters: {attack: 28, decay: 45, gain: 128, release: 0, stereo: 0, sustain: 0}
|
parameters: {attack: 0, decay: 43, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
- type: noise
|
- type: noise
|
||||||
id: 111
|
id: 111
|
||||||
parameters: {gain: 102, shape: 84, stereo: 0}
|
parameters: {gain: 81, shape: 67, stereo: 0}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 112
|
id: 112
|
||||||
parameters: {bandpass: 0, frequency: 93, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 63, stereo: 0}
|
parameters: {bandpass: 0, frequency: 87, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 35, stereo: 0}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 113
|
id: 113
|
||||||
parameters: {bandpass: 0, frequency: 75, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 87, stereo: 0}
|
parameters: {bandpass: 0, frequency: 100, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 62, stereo: 0}
|
||||||
- type: mulp
|
- type: mulp
|
||||||
id: 10
|
id: 10
|
||||||
parameters: {stereo: 0}
|
parameters: {stereo: 0}
|
||||||
@ -159,222 +56,236 @@ patch:
|
|||||||
parameters: {stereo: 0}
|
parameters: {stereo: 0}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 12
|
id: 12
|
||||||
parameters: {bandpass: 0, frequency: 11, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 66, stereo: 0}
|
parameters: {bandpass: 0, frequency: 9, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 75, stereo: 0}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 13
|
id: 13
|
||||||
parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 14
|
id: 14
|
||||||
parameters: {bandpass: 0, frequency: 7, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 76, stereo: 0}
|
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 85, stereo: 0}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 15
|
id: 15
|
||||||
parameters: {bandpass: 0, frequency: 13, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 54, stereo: 0}
|
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 49, stereo: 0}
|
||||||
- type: pan
|
- type: pan
|
||||||
id: 114
|
id: 114
|
||||||
parameters: {panning: 64, stereo: 0}
|
parameters: {panning: 64, stereo: 0}
|
||||||
- type: outaux
|
- type: outaux
|
||||||
id: 118
|
id: 118
|
||||||
parameters: {auxgain: 0, outgain: 128, stereo: 1}
|
parameters: {auxgain: 0, outgain: 57, stereo: 1}
|
||||||
- type: envelope
|
- type: envelope
|
||||||
id: 119
|
id: 119
|
||||||
parameters: {attack: 71, decay: 128, gain: 128, release: 0, stereo: 0, sustain: 74}
|
parameters: {attack: 62, decay: 128, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
- type: envelope
|
- type: envelope
|
||||||
id: 120
|
id: 120
|
||||||
parameters: {attack: 49, decay: 71, gain: 128, release: 0, stereo: 0, sustain: 121}
|
parameters: {attack: 39, decay: 61, gain: 128, release: 0, stereo: 0, sustain: 34}
|
||||||
- type: mulp
|
- type: mulp
|
||||||
id: 121
|
id: 121
|
||||||
parameters: {stereo: 0}
|
parameters: {stereo: 0}
|
||||||
- type: send
|
- type: send
|
||||||
id: 122
|
id: 122
|
||||||
parameters: {amount: 0, port: 0, sendpop: 1, target: 106}
|
parameters: {amount: 0, port: 0, sendpop: 1, target: 106}
|
||||||
|
- name: snare edm 2 (sample)
|
||||||
|
comment: 'Suggested range: E-2 to C-3'
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 0, decay: 76, gain: 96, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 200
|
||||||
|
parameters: {color: 64, detune: 116, gain: 37, lfo: 0, looplength: 1, loopstart: 4276, phase: 0, samplestart: 560606, shape: 114, stereo: 0, transpose: 86, type: 4, unison: 2}
|
||||||
|
- type: distort
|
||||||
|
parameters: {drive: 95, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
parameters: {panning: 64, stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 0, auxgain: 64, decay: 68, gain: 83, outgain: 64, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
parameters: {gain: 107, shape: 3, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 201
|
||||||
|
parameters: {bandpass: 0, frequency: 57, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 67, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
parameters: {bandpass: 0, frequency: 128, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 78, stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
parameters: {panning: 71, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
parameters: {auxgain: 10, outgain: 84, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 47, decay: 54, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: send
|
||||||
|
parameters: {amount: 19, port: 0, sendpop: 1, target: 201}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 54, decay: 68, gain: 128, release: 0, stereo: 0, sustain: 70}
|
||||||
|
- type: send
|
||||||
|
parameters: {amount: 26, port: 0, sendpop: 1, target: 202}
|
||||||
|
- name: clap
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 0, decay: 53, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: delay
|
||||||
|
id: 162
|
||||||
|
parameters: {damp: 0, dry: 128, feedback: 0, notetracking: 0, pregain: 64, stereo: 0}
|
||||||
|
varargs: [1395, 350]
|
||||||
|
- type: noise
|
||||||
|
id: 3
|
||||||
|
parameters: {gain: 0, shape: 97, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 4
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 163
|
||||||
|
parameters: {attack: 0, decay: 54, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: delay
|
||||||
|
id: 164
|
||||||
|
parameters: {damp: 0, dry: 6, feedback: 0, notetracking: 0, pregain: 64, stereo: 0}
|
||||||
|
varargs: [1744, 1744]
|
||||||
|
- type: noise
|
||||||
|
id: 165
|
||||||
|
parameters: {gain: 128, shape: 79, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 171
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 235
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 233
|
||||||
|
parameters: {attack: 0, decay: 62, gain: 42, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 234
|
||||||
|
parameters: {color: 64, detune: 64, gain: 125, looplength: 1, loopstart: 2423, phase: 0, samplestart: 641780, shape: 64, stereo: 0, transpose: 64, type: 4}
|
||||||
|
- type: mulp
|
||||||
|
id: 236
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 173
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 5
|
||||||
|
parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 76, stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
parameters: {drive: 114, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 174
|
||||||
|
parameters: {panning: 70, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 161
|
||||||
|
parameters: {auxgain: 12, outgain: 50, stereo: 1}
|
||||||
|
- name: House Bass Organ
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 207
|
||||||
|
parameters: {attack: 46, decay: 74, gain: 77, release: 39, stereo: 0, sustain: 36}
|
||||||
|
- type: oscillator
|
||||||
|
id: 208
|
||||||
|
parameters: {color: 84, detune: 48, gain: 128, phase: 0, shape: 50, stereo: 0, transpose: 40, type: 1, unison: 3}
|
||||||
|
- type: oscillator
|
||||||
|
id: 213
|
||||||
|
parameters: {color: 64, detune: 64, gain: 64, phase: 0, shape: 64, stereo: 0, transpose: 71, type: 2, unison: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 214
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 209
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 218
|
||||||
|
parameters: {bandpass: 0, frequency: 3, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 219
|
||||||
|
parameters: {bandpass: 0, frequency: 94, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 215
|
||||||
|
parameters: {drive: 83, stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 221
|
||||||
|
parameters: {attack: 32, decay: 53, gain: 64, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
id: 222
|
||||||
|
parameters: {gain: 59, shape: 52, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 223
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 225
|
||||||
|
parameters: {bandpass: 0, frequency: 91, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 102, stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 224
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: compressor
|
||||||
|
id: 229
|
||||||
|
parameters: {attack: 37, invgain: 87, ratio: 102, release: 65, stereo: 0, threshold: 47}
|
||||||
|
- type: mulp
|
||||||
|
id: 230
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 228
|
||||||
|
parameters: {drive: 59, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 211
|
||||||
|
parameters: {panning: 64, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 212
|
||||||
|
parameters: {auxgain: 23, outgain: 98, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 220
|
||||||
|
parameters: {attack: 0, decay: 72, gain: 76, release: 45, stereo: 0, sustain: 47}
|
||||||
|
- type: send
|
||||||
|
id: 217
|
||||||
|
parameters: {amount: 128, port: 0, sendpop: 1, stereo: 0, target: 218, unit: 0, voice: 0}
|
||||||
|
- name: Crash909
|
||||||
|
numvoices: 2
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 8, decay: 90, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 231
|
||||||
|
parameters: {attack: 21, decay: 78, gain: 64, release: 85, stereo: 1, sustain: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 232
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: oscillator
|
||||||
|
id: 2
|
||||||
|
parameters: {color: 64, detune: 64, gain: 111, looplength: 5676, loopstart: 2615, phase: 0, samplestart: 433554, shape: 64, stereo: 1, transpose: 77, type: 4, unison: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 3
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
id: 5
|
||||||
|
parameters: {damp: 0, dry: 128, feedback: 96, notetracking: 2, panning: 73, pregain: 40, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 6
|
||||||
|
parameters: {auxgain: 78, outgain: 49, panning: 64, stereo: 1}
|
||||||
- name: hihat
|
- name: hihat
|
||||||
numvoices: 1
|
numvoices: 1
|
||||||
units:
|
units:
|
||||||
- type: envelope
|
- type: envelope
|
||||||
id: 128
|
id: 1
|
||||||
parameters: {attack: 4, decay: 53, gain: 128, release: 0, stereo: 0, sustain: 0}
|
parameters: {attack: 50, decay: 60, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
- type: noise
|
- type: oscillator
|
||||||
id: 129
|
parameters: {color: 64, detune: 64, gain: 127, looplength: 1, loopstart: 1343, phase: 0, samplestart: 367477, shape: 64, stereo: 1, transpose: 82, type: 4}
|
||||||
parameters: {gain: 128, shape: 102, stereo: 0}
|
|
||||||
- type: mulp
|
- type: mulp
|
||||||
id: 130
|
id: 239
|
||||||
parameters: {stereo: 0}
|
parameters: {stereo: 1}
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 131
|
parameters: {bandpass: 0, frequency: 78, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 1, resonance: 128, stereo: 1}
|
||||||
parameters: {bandpass: 0, frequency: 87, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
|
||||||
- type: filter
|
- type: filter
|
||||||
id: 132
|
id: 240
|
||||||
parameters: {bandpass: 0, frequency: 95, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
parameters: {bandpass: 0, frequency: 109, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1}
|
||||||
- type: filter
|
|
||||||
id: 133
|
|
||||||
parameters: {bandpass: 1, frequency: 89, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 71, stereo: 0}
|
|
||||||
- type: pan
|
- type: pan
|
||||||
id: 134
|
id: 7
|
||||||
parameters: {panning: 61, stereo: 0}
|
parameters: {panning: 57, stereo: 1}
|
||||||
- type: outaux
|
- type: outaux
|
||||||
id: 11
|
id: 11
|
||||||
parameters: {auxgain: 0, outgain: 45, stereo: 1}
|
parameters: {auxgain: 0, outgain: 84, stereo: 1}
|
||||||
- name: ba_reese
|
|
||||||
numvoices: 1
|
|
||||||
units:
|
|
||||||
- type: oscillator
|
|
||||||
id: 159
|
|
||||||
parameters: {color: 128, detune: 87, gain: 128, lfo: 0, phase: 64, shape: 65, stereo: 1, transpose: 64, type: 1, unison: 2}
|
|
||||||
- type: oscillator
|
|
||||||
id: 160
|
|
||||||
parameters: {color: 128, detune: 60, gain: 128, lfo: 0, phase: 87, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 3}
|
|
||||||
- type: addp
|
|
||||||
id: 162
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: oscillator
|
|
||||||
id: 161
|
|
||||||
parameters: {color: 128, detune: 69, gain: 128, lfo: 0, phase: 0, shape: 106, stereo: 1, transpose: 64, type: 0, unison: 2}
|
|
||||||
- type: addp
|
|
||||||
id: 16
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 17
|
|
||||||
parameters: {bandpass: 0, frequency: 62, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 91, stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 190
|
|
||||||
parameters: {bandpass: 0, frequency: 103, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 26, stereo: 0}
|
|
||||||
- type: xch
|
|
||||||
id: 195
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 196
|
|
||||||
parameters: {bandpass: 0, frequency: 85, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 31, stereo: 0}
|
|
||||||
- type: distort
|
|
||||||
id: 193
|
|
||||||
parameters: {drive: 96, stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 194
|
|
||||||
parameters: {bandpass: 0, frequency: 12, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 1}
|
|
||||||
- type: envelope
|
|
||||||
id: 189
|
|
||||||
parameters: {attack: 25, decay: 59, gain: 64, release: 60, stereo: 1, sustain: 106}
|
|
||||||
- type: mulp
|
|
||||||
id: 206
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: outaux
|
|
||||||
id: 21
|
|
||||||
parameters: {auxgain: 21, outgain: 29, stereo: 1}
|
|
||||||
- type: oscillator
|
|
||||||
id: 149
|
|
||||||
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 4, shape: 64, stereo: 0, transpose: 64, type: 1}
|
|
||||||
- type: send
|
|
||||||
id: 150
|
|
||||||
parameters: {amount: 52, port: 1, sendpop: 1, stereo: 0, target: 159}
|
|
||||||
- type: oscillator
|
|
||||||
id: 152
|
|
||||||
parameters: {color: 54, detune: 42, gain: 128, lfo: 1, phase: 55, shape: 63, stereo: 0, transpose: 41, type: 0}
|
|
||||||
- type: send
|
|
||||||
id: 153
|
|
||||||
parameters: {amount: 75, port: 1, sendpop: 0, stereo: 0, target: 160}
|
|
||||||
- type: send
|
|
||||||
id: 154
|
|
||||||
parameters: {amount: 59, port: 3, sendpop: 1, stereo: 0, target: 160}
|
|
||||||
- type: oscillator
|
|
||||||
id: 156
|
|
||||||
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 74, type: 0}
|
|
||||||
- type: send
|
|
||||||
id: 157
|
|
||||||
parameters: {amount: 69, port: 1, sendpop: 1, stereo: 0, target: 161}
|
|
||||||
- type: oscillator
|
|
||||||
id: 191
|
|
||||||
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 40, type: 0, unison: 0}
|
|
||||||
- type: send
|
|
||||||
id: 192
|
|
||||||
parameters: {amount: 71, port: 0, sendpop: 1, stereo: 0, target: 190, unit: 0, voice: 0}
|
|
||||||
- type: oscillator
|
|
||||||
id: 197
|
|
||||||
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 40, type: 0}
|
|
||||||
- type: send
|
|
||||||
id: 198
|
|
||||||
parameters: {amount: 86, port: 0, sendpop: 1, stereo: 0, target: 196, unit: 0, voice: 0}
|
|
||||||
- name: ky_sine
|
|
||||||
numvoices: 1
|
|
||||||
units:
|
|
||||||
- type: envelope
|
|
||||||
id: 163
|
|
||||||
parameters: {attack: 39, decay: 62, gain: 71, release: 30, stereo: 0, sustain: 0}
|
|
||||||
- type: oscillator
|
|
||||||
id: 164
|
|
||||||
parameters: {color: 53, detune: 62, gain: 72, lfo: 0, phase: 14, shape: 27, stereo: 0, transpose: 88, type: 0}
|
|
||||||
- type: oscillator
|
|
||||||
id: 165
|
|
||||||
parameters: {color: 113, detune: 66, gain: 128, lfo: 0, phase: 64, shape: 64, stereo: 0, transpose: 88, type: 0}
|
|
||||||
- type: addp
|
|
||||||
id: 166
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: mulp
|
|
||||||
id: 167
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: pan
|
|
||||||
id: 168
|
|
||||||
parameters: {panning: 64, stereo: 0}
|
|
||||||
- type: delay
|
|
||||||
id: 169
|
|
||||||
parameters: {damp: 0, dry: 128, feedback: 86, notetracking: 2, pregain: 71, stereo: 0}
|
|
||||||
varargs: [64]
|
|
||||||
- type: xch
|
|
||||||
id: 170
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: delay
|
|
||||||
id: 171
|
|
||||||
parameters: {damp: 0, dry: 128, feedback: 90, notetracking: 2, pregain: 73, stereo: 0}
|
|
||||||
varargs: [36]
|
|
||||||
- type: outaux
|
|
||||||
id: 172
|
|
||||||
parameters: {auxgain: 52, outgain: 84, stereo: 1}
|
|
||||||
- name: ba_trana
|
|
||||||
numvoices: 1
|
|
||||||
units:
|
|
||||||
- type: envelope
|
|
||||||
id: 173
|
|
||||||
parameters: {attack: 39, decay: 81, gain: 128, release: 0, stereo: 0, sustain: 0}
|
|
||||||
- type: send
|
|
||||||
id: 174
|
|
||||||
parameters: {amount: 87, port: 0, sendpop: 0, target: 181}
|
|
||||||
- type: send
|
|
||||||
id: 175
|
|
||||||
parameters: {amount: 90, port: 3, sendpop: 1, target: 179}
|
|
||||||
- type: envelope
|
|
||||||
id: 176
|
|
||||||
parameters: {attack: 33, decay: 57, gain: 128, release: 57, stereo: 0, sustain: 67}
|
|
||||||
- type: oscillator
|
|
||||||
id: 177
|
|
||||||
parameters: {color: 98, detune: 64, gain: 101, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 76, type: 0, unison: 0}
|
|
||||||
- type: oscillator
|
|
||||||
id: 179
|
|
||||||
parameters: {color: 78, detune: 48, gain: 64, lfo: 0, phase: 85, shape: 97, stereo: 0, transpose: 64, type: 1, unison: 3}
|
|
||||||
- type: addp
|
|
||||||
id: 178
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: mulp
|
|
||||||
id: 185
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 181
|
|
||||||
parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 82, stereo: 0}
|
|
||||||
- type: filter
|
|
||||||
id: 182
|
|
||||||
parameters: {bandpass: 0, frequency: 15, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0}
|
|
||||||
- type: pan
|
|
||||||
id: 183
|
|
||||||
parameters: {panning: 64, stereo: 0}
|
|
||||||
- type: distort
|
|
||||||
id: 200
|
|
||||||
parameters: {drive: 80, stereo: 1}
|
|
||||||
- type: compressor
|
|
||||||
id: 186
|
|
||||||
parameters: {attack: 48, invgain: 87, ratio: 54, release: 56, stereo: 1, threshold: 46}
|
|
||||||
- type: mulp
|
|
||||||
id: 187
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: outaux
|
|
||||||
id: 184
|
|
||||||
parameters: {auxgain: 35, outgain: 85, stereo: 1}
|
|
||||||
- name: Global
|
- name: Global
|
||||||
numvoices: 1
|
numvoices: 1
|
||||||
units:
|
units:
|
||||||
@ -383,7 +294,7 @@ patch:
|
|||||||
parameters: {channel: 2, stereo: 1}
|
parameters: {channel: 2, stereo: 1}
|
||||||
- type: delay
|
- type: delay
|
||||||
id: 8
|
id: 8
|
||||||
parameters: {damp: 77, dry: 128, feedback: 114, notetracking: 0, pregain: 50, stereo: 1}
|
parameters: {damp: 42, dry: 128, feedback: 120, notetracking: 0, pregain: 40, stereo: 1}
|
||||||
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618, 1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618, 1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
||||||
- type: out
|
- type: out
|
||||||
id: 9
|
id: 9
|
||||||
|
|||||||
301
4klang_st.yml
Normal file
301
4klang_st.yml
Normal file
@ -0,0 +1,301 @@
|
|||||||
|
bpm: 116
|
||||||
|
rowsperbeat: 4
|
||||||
|
score:
|
||||||
|
tracks:
|
||||||
|
- numvoices: 1
|
||||||
|
order: [-1, -1, -1, -1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, -1]
|
||||||
|
patterns: [[48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 1, 1], [48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 1, 1, 48, 1, 48, 1]]
|
||||||
|
- numvoices: 1
|
||||||
|
order: [-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1]
|
||||||
|
patterns: [[1, 1, 1, 1, 58, 1, 1, 1, 1, 1, 1, 1, 58, 1, 1, 1]]
|
||||||
|
- numvoices: 1
|
||||||
|
order: [-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]
|
||||||
|
patterns: [[1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1]]
|
||||||
|
- numvoices: 1
|
||||||
|
order: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2]
|
||||||
|
patterns: [[74, 1, 0, 1, 74, 1, 77, 70, 1, 0, 70, 1, 0, 70, 1, 0], [74, 1, 0, 1, 74, 1, 77, 70, 1, 0, 70, 1, 0, 1, 72, 1], [74, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
|
||||||
|
- numvoices: 2
|
||||||
|
order: [-1, -1, -1, -1, 0, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1]
|
||||||
|
patterns: [[60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
|
||||||
|
- numvoices: 1
|
||||||
|
order: [-1, -1, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]
|
||||||
|
patterns: [[1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 1], [1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 1, 1, 1, 53, 53]]
|
||||||
|
rowsperpattern: 16
|
||||||
|
length: 17
|
||||||
|
patch:
|
||||||
|
- name: kick edm 2
|
||||||
|
comment: Suggested note to play G-2 to C-3
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 105
|
||||||
|
parameters: {attack: 18, channel: 2, decay: 65, gain: 60, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 106
|
||||||
|
parameters: {color: 128, detune: 57, gain: 79, lfo: 0, phase: 0, shape: 63, stereo: 0, transpose: 94, type: 0, unison: 2}
|
||||||
|
- type: mulp
|
||||||
|
id: 126
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 110
|
||||||
|
parameters: {attack: 0, decay: 43, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
id: 111
|
||||||
|
parameters: {gain: 81, shape: 67, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 112
|
||||||
|
parameters: {bandpass: 0, frequency: 87, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 35, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 113
|
||||||
|
parameters: {bandpass: 0, frequency: 100, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 62, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 10
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 127
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 12
|
||||||
|
parameters: {bandpass: 0, frequency: 9, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 75, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 13
|
||||||
|
parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 14
|
||||||
|
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 85, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 15
|
||||||
|
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 49, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 114
|
||||||
|
parameters: {panning: 64, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 118
|
||||||
|
parameters: {auxgain: 0, outgain: 57, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 119
|
||||||
|
parameters: {attack: 62, decay: 128, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 120
|
||||||
|
parameters: {attack: 39, decay: 61, gain: 128, release: 0, stereo: 0, sustain: 34}
|
||||||
|
- type: mulp
|
||||||
|
id: 121
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: send
|
||||||
|
id: 122
|
||||||
|
parameters: {amount: 0, port: 0, sendpop: 1, target: 106}
|
||||||
|
- name: snare edm 2 (sample)
|
||||||
|
comment: 'Suggested range: E-2 to C-3'
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 0, decay: 76, gain: 96, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 200
|
||||||
|
parameters: {color: 64, detune: 116, gain: 37, lfo: 0, looplength: 1, loopstart: 4276, phase: 0, samplestart: 560606, shape: 114, stereo: 1, transpose: 86, type: 4, unison: 2}
|
||||||
|
- type: distort
|
||||||
|
parameters: {drive: 95, stereo: 1}
|
||||||
|
- type: mulp
|
||||||
|
parameters: {panning: 64, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 0, auxgain: 64, decay: 68, gain: 83, outgain: 64, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
parameters: {gain: 107, shape: 3, stereo: 1}
|
||||||
|
- type: mulp
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 201
|
||||||
|
parameters: {bandpass: 0, frequency: 57, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 67, stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
parameters: {bandpass: 0, frequency: 128, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 78, stereo: 1}
|
||||||
|
- type: addp
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
parameters: {panning: 64, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
parameters: {auxgain: 0, outgain: 78, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 47, decay: 54, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: send
|
||||||
|
parameters: {amount: 19, port: 0, sendpop: 1, target: 201}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 54, decay: 68, gain: 128, release: 0, stereo: 0, sustain: 70}
|
||||||
|
- type: send
|
||||||
|
parameters: {amount: 26, port: 0, sendpop: 1, target: 202}
|
||||||
|
- name: clap
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 0, decay: 53, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: delay
|
||||||
|
id: 162
|
||||||
|
parameters: {damp: 0, dry: 128, feedback: 0, notetracking: 0, pregain: 64, stereo: 0}
|
||||||
|
varargs: [1395, 350]
|
||||||
|
- type: noise
|
||||||
|
id: 3
|
||||||
|
parameters: {gain: 0, shape: 97, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 4
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 163
|
||||||
|
parameters: {attack: 0, decay: 54, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: delay
|
||||||
|
id: 164
|
||||||
|
parameters: {damp: 0, dry: 6, feedback: 0, notetracking: 0, pregain: 64, stereo: 0}
|
||||||
|
varargs: [1744, 1744]
|
||||||
|
- type: noise
|
||||||
|
id: 165
|
||||||
|
parameters: {gain: 128, shape: 79, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 171
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 235
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 233
|
||||||
|
parameters: {attack: 0, decay: 62, gain: 42, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 234
|
||||||
|
parameters: {color: 64, detune: 64, gain: 125, looplength: 1, loopstart: 2423, phase: 0, samplestart: 641780, shape: 64, stereo: 0, transpose: 64, type: 4}
|
||||||
|
- type: mulp
|
||||||
|
id: 236
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 173
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 5
|
||||||
|
parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 76, stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
parameters: {drive: 114, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 174
|
||||||
|
parameters: {panning: 70, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 161
|
||||||
|
parameters: {auxgain: 12, outgain: 50, stereo: 1}
|
||||||
|
- name: House Bass Organ
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 207
|
||||||
|
parameters: {attack: 46, decay: 74, gain: 77, release: 39, stereo: 0, sustain: 36}
|
||||||
|
- type: oscillator
|
||||||
|
id: 208
|
||||||
|
parameters: {color: 84, detune: 48, gain: 128, phase: 0, shape: 50, stereo: 0, transpose: 40, type: 1, unison: 3}
|
||||||
|
- type: oscillator
|
||||||
|
id: 213
|
||||||
|
parameters: {color: 64, detune: 64, gain: 64, phase: 0, shape: 64, stereo: 0, transpose: 71, type: 2, unison: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 214
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 209
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 218
|
||||||
|
parameters: {bandpass: 0, frequency: 3, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 219
|
||||||
|
parameters: {bandpass: 0, frequency: 94, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 215
|
||||||
|
parameters: {drive: 83, stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 221
|
||||||
|
parameters: {attack: 32, decay: 53, gain: 64, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
id: 222
|
||||||
|
parameters: {gain: 59, shape: 52, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 223
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 225
|
||||||
|
parameters: {bandpass: 0, frequency: 91, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 102, stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 224
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: compressor
|
||||||
|
id: 229
|
||||||
|
parameters: {attack: 37, invgain: 87, ratio: 102, release: 65, stereo: 0, threshold: 47}
|
||||||
|
- type: mulp
|
||||||
|
id: 230
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 228
|
||||||
|
parameters: {drive: 59, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 211
|
||||||
|
parameters: {panning: 64, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 212
|
||||||
|
parameters: {auxgain: 23, outgain: 98, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 220
|
||||||
|
parameters: {attack: 0, decay: 72, gain: 76, release: 45, stereo: 0, sustain: 47}
|
||||||
|
- type: send
|
||||||
|
id: 217
|
||||||
|
parameters: {amount: 128, port: 0, sendpop: 1, stereo: 0, target: 218, unit: 0, voice: 0}
|
||||||
|
- name: Crash909
|
||||||
|
numvoices: 2
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 8, decay: 90, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 231
|
||||||
|
parameters: {attack: 21, decay: 78, gain: 64, release: 85, stereo: 1, sustain: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 232
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: oscillator
|
||||||
|
id: 2
|
||||||
|
parameters: {color: 64, detune: 64, gain: 111, looplength: 5676, loopstart: 2615, phase: 0, samplestart: 433554, shape: 64, stereo: 1, transpose: 77, type: 4, unison: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 3
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
id: 5
|
||||||
|
parameters: {damp: 0, dry: 128, feedback: 96, notetracking: 2, panning: 73, pregain: 40, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 6
|
||||||
|
parameters: {auxgain: 78, outgain: 49, panning: 64, stereo: 1}
|
||||||
|
- name: hihat
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 50, decay: 60, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
parameters: {color: 64, detune: 64, gain: 127, looplength: 1, loopstart: 1343, phase: 0, samplestart: 367477, shape: 64, stereo: 1, transpose: 82, type: 4}
|
||||||
|
- type: mulp
|
||||||
|
id: 239
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
parameters: {bandpass: 0, frequency: 78, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 1, resonance: 128, stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 240
|
||||||
|
parameters: {bandpass: 0, frequency: 109, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
id: 7
|
||||||
|
parameters: {panning: 57, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 11
|
||||||
|
parameters: {auxgain: 0, outgain: 84, stereo: 1}
|
||||||
|
- name: Global
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: in
|
||||||
|
id: 7
|
||||||
|
parameters: {channel: 2, stereo: 1}
|
||||||
|
- type: delay
|
||||||
|
id: 8
|
||||||
|
parameters: {damp: 42, dry: 128, feedback: 120, notetracking: 0, pregain: 40, stereo: 1}
|
||||||
|
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618, 1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
||||||
|
- type: out
|
||||||
|
id: 9
|
||||||
|
parameters: {gain: 128, stereo: 1}
|
||||||
@ -3,23 +3,23 @@ rowsperbeat: 4
|
|||||||
score:
|
score:
|
||||||
tracks:
|
tracks:
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, -1, -1, 5]
|
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, -1, -1, 5, -1]
|
||||||
patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 57], [1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1, 57], [1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 57, 57], [1, 1, 1, 1, 57, 57, 57, 57, 1, 1, 1, 1, 57], [1, 1, 1, 1, 57, 1, 1, 1, 57, 57, 1, 1, 57], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]]
|
patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 57, 57, 1, 1, 1], [1, 1, 1, 1, 57, 57, 57, 57, 1, 1, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 57, 1, 1, 1, 57, 57, 1, 1, 57, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 4, -1, -1, 5]
|
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 4, -1, -1, 5, -1]
|
||||||
patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 46], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46], [46, 1, 1, 1, 1, 1, 1, 1, 46, 1, 46], [46, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]]
|
patterns: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 46, 1], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 46, 1, 46, 1, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1]
|
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1]
|
||||||
patterns: [[48, 1, 48, 1, 1, 1, 48, 1, 48, 1, 48, 1, 1, 1, 48], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]]
|
patterns: [[48, 1, 48, 1, 1, 1, 48, 1, 48, 1, 48, 1, 1, 1, 48, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [0, -1, 1, -1, 2, 3, 4, 5, 2, 6, 7, 8, 0, -1, -1, 9]
|
order: [0, -1, 1, -1, 2, 3, 4, 5, 2, 6, 7, 8, 0, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
|
||||||
patterns: [[50], [48], [46], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 50, 1, 53], [43], [1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 45, 1, 46, 1, 48], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 50], [52], [45], [1, 1, 1, 1, 1, 1, 1, 1, 0]]
|
patterns: [[50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 50, 1, 53, 1], [43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 45, 1, 46, 1, 48, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 50, 1], [52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2]
|
order: [0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, 0, 1, 0, 2, -1, -1, -1, -1]
|
||||||
patterns: [[62, 0, 64, 0, 65, 0, 69, 0, 65, 0, 64, 0, 62, 0, 64, 0], [65, 0, 72, 0, 65, 0, 64, 0, 62, 0, 64, 0, 65, 0, 71, 0], [65, 0, 69, 0, 65, 0, 64, 0, 62, 0, 64, 0, 65, 0, 72, 0]]
|
patterns: [[62, 0, 64, 0, 65, 0, 69, 0, 65, 0, 64, 0, 62, 0, 64, 0], [65, 0, 72, 0, 65, 0, 64, 0, 62, 0, 64, 0, 65, 0, 71, 0], [65, 0, 69, 0, 65, 0, 64, 0, 62, 0, 64, 0, 65, 0, 72, 0]]
|
||||||
- numvoices: 1
|
- numvoices: 1
|
||||||
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 4]
|
order: [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 4, -1, -1, -1, -1]
|
||||||
patterns: [[50, 0, 50, 1, 50, 0, 50, 1, 50, 0, 50, 1, 50, 0, 50], [48, 0, 48, 1, 48, 0, 48, 1, 48, 0, 48, 1, 48, 0, 48], [46, 0, 46, 1, 46, 0, 46, 1, 46, 0, 46, 1, 46, 0, 46], [43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43], [43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 0]]
|
patterns: [[50, 0, 50, 1, 50, 0, 50, 1, 50, 0, 50, 1, 50, 0, 50, 1], [48, 0, 48, 1, 48, 0, 48, 1, 48, 0, 48, 1, 48, 0, 48, 1], [46, 0, 46, 1, 46, 0, 46, 1, 46, 0, 46, 1, 46, 0, 46, 1], [43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1], [43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 1, 43, 0, 43, 0]]
|
||||||
rowsperpattern: 16
|
rowsperpattern: 16
|
||||||
length: 52
|
length: 52
|
||||||
patch:
|
patch:
|
||||||
@ -172,17 +172,6 @@ patch:
|
|||||||
- type: pan
|
- type: pan
|
||||||
id: 114
|
id: 114
|
||||||
parameters: {panning: 64, stereo: 0}
|
parameters: {panning: 64, stereo: 0}
|
||||||
- type: delay
|
|
||||||
id: 115
|
|
||||||
parameters: {damp: 128, dry: 128, feedback: 20, notetracking: 0, pregain: 21, stereo: 0}
|
|
||||||
varargs: [1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
|
||||||
- type: xch
|
|
||||||
id: 116
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: delay
|
|
||||||
id: 117
|
|
||||||
parameters: {damp: 128, dry: 128, feedback: 20, notetracking: 0, pregain: 20, stereo: 0}
|
|
||||||
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618]
|
|
||||||
- type: outaux
|
- type: outaux
|
||||||
id: 118
|
id: 118
|
||||||
parameters: {auxgain: 0, outgain: 128, stereo: 1}
|
parameters: {auxgain: 0, outgain: 128, stereo: 1}
|
||||||
@ -222,23 +211,54 @@ patch:
|
|||||||
- type: pan
|
- type: pan
|
||||||
id: 134
|
id: 134
|
||||||
parameters: {panning: 61, stereo: 0}
|
parameters: {panning: 61, stereo: 0}
|
||||||
- type: delay
|
|
||||||
id: 135
|
|
||||||
parameters: {damp: 29, dry: 128, feedback: 50, notetracking: 0, pregain: 28, stereo: 0}
|
|
||||||
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618]
|
|
||||||
- type: xch
|
|
||||||
id: 136
|
|
||||||
parameters: {stereo: 0}
|
|
||||||
- type: delay
|
|
||||||
id: 137
|
|
||||||
parameters: {damp: 0, dry: 128, feedback: 40, notetracking: 0, pregain: 32, stereo: 0}
|
|
||||||
varargs: [1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
|
||||||
- type: outaux
|
- type: outaux
|
||||||
id: 11
|
id: 11
|
||||||
parameters: {auxgain: 0, outgain: 45, stereo: 1}
|
parameters: {auxgain: 0, outgain: 45, stereo: 1}
|
||||||
- name: ba_reese
|
- name: ba_reese
|
||||||
numvoices: 1
|
numvoices: 1
|
||||||
units:
|
units:
|
||||||
|
- type: oscillator
|
||||||
|
id: 159
|
||||||
|
parameters: {color: 128, detune: 87, gain: 128, lfo: 0, phase: 64, shape: 65, stereo: 1, transpose: 64, type: 1, unison: 2}
|
||||||
|
- type: oscillator
|
||||||
|
id: 160
|
||||||
|
parameters: {color: 128, detune: 60, gain: 128, lfo: 0, phase: 87, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 3}
|
||||||
|
- type: addp
|
||||||
|
id: 162
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: oscillator
|
||||||
|
id: 161
|
||||||
|
parameters: {color: 128, detune: 69, gain: 128, lfo: 0, phase: 0, shape: 106, stereo: 1, transpose: 64, type: 0, unison: 2}
|
||||||
|
- type: addp
|
||||||
|
id: 16
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 17
|
||||||
|
parameters: {bandpass: 0, frequency: 62, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 91, stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 190
|
||||||
|
parameters: {bandpass: 0, frequency: 103, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 26, stereo: 0}
|
||||||
|
- type: xch
|
||||||
|
id: 195
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 196
|
||||||
|
parameters: {bandpass: 0, frequency: 85, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 31, stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 193
|
||||||
|
parameters: {drive: 96, stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 194
|
||||||
|
parameters: {bandpass: 0, frequency: 12, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 189
|
||||||
|
parameters: {attack: 25, decay: 59, gain: 64, release: 60, stereo: 1, sustain: 106}
|
||||||
|
- type: mulp
|
||||||
|
id: 206
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 21
|
||||||
|
parameters: {auxgain: 21, outgain: 29, stereo: 1}
|
||||||
- type: oscillator
|
- type: oscillator
|
||||||
id: 149
|
id: 149
|
||||||
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 4, shape: 64, stereo: 0, transpose: 64, type: 1}
|
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 4, shape: 64, stereo: 0, transpose: 64, type: 1}
|
||||||
@ -260,48 +280,6 @@ patch:
|
|||||||
- type: send
|
- type: send
|
||||||
id: 157
|
id: 157
|
||||||
parameters: {amount: 69, port: 1, sendpop: 1, stereo: 0, target: 161}
|
parameters: {amount: 69, port: 1, sendpop: 1, stereo: 0, target: 161}
|
||||||
- type: envelope
|
|
||||||
id: 189
|
|
||||||
parameters: {attack: 22, decay: 54, gain: 64, release: 64, stereo: 1, sustain: 64}
|
|
||||||
- type: oscillator
|
|
||||||
id: 159
|
|
||||||
parameters: {color: 128, detune: 87, gain: 128, lfo: 0, phase: 64, shape: 65, stereo: 1, transpose: 64, type: 1, unison: 3}
|
|
||||||
- type: oscillator
|
|
||||||
id: 160
|
|
||||||
parameters: {color: 128, detune: 60, gain: 128, lfo: 0, phase: 87, shape: 64, stereo: 1, transpose: 64, type: 1, unison: 2}
|
|
||||||
- type: oscillator
|
|
||||||
id: 161
|
|
||||||
parameters: {color: 128, detune: 69, gain: 128, lfo: 0, phase: 0, shape: 106, stereo: 1, transpose: 64, type: 0, unison: 2}
|
|
||||||
- type: addp
|
|
||||||
id: 162
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: addp
|
|
||||||
id: 16
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 17
|
|
||||||
parameters: {bandpass: 0, frequency: 62, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 91, stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 190
|
|
||||||
parameters: {bandpass: 0, frequency: 93, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 74, stereo: 1}
|
|
||||||
- type: xch
|
|
||||||
id: 195
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 196
|
|
||||||
parameters: {bandpass: 0, frequency: 94, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 78, stereo: 1}
|
|
||||||
- type: mulp
|
|
||||||
id: 19
|
|
||||||
parameters: {stereo: 1}
|
|
||||||
- type: distort
|
|
||||||
id: 193
|
|
||||||
parameters: {drive: 96, stereo: 1}
|
|
||||||
- type: filter
|
|
||||||
id: 194
|
|
||||||
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 1}
|
|
||||||
- type: outaux
|
|
||||||
id: 21
|
|
||||||
parameters: {auxgain: 21, outgain: 29, stereo: 1}
|
|
||||||
- type: oscillator
|
- type: oscillator
|
||||||
id: 191
|
id: 191
|
||||||
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 40, type: 0, unison: 0}
|
parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 40, type: 0, unison: 0}
|
||||||
10
base.config
10
base.config
@ -43,11 +43,11 @@ USE_WIDECHAR_TEXTS=1
|
|||||||
|
|
||||||
########### Time base ###########
|
########### Time base ###########
|
||||||
USE_TIME_DIVIDER_IN_X86_CODE=1
|
USE_TIME_DIVIDER_IN_X86_CODE=1
|
||||||
TIME_DIVIDER=64145.453
|
TIME_DIVIDER=91241.383
|
||||||
TIME_BASE=bars
|
TIME_BASE=bars
|
||||||
|
|
||||||
AUDIO_DELAY=2048
|
AUDIO_DELAY=2048
|
||||||
PROD_END_TIME=3337536
|
PROD_END_TIME=1552992
|
||||||
|
|
||||||
|
|
||||||
########### Final product ###########
|
########### Final product ###########
|
||||||
@ -59,11 +59,11 @@ EXE_LINKER_PROGRAM=GNU ld
|
|||||||
|
|
||||||
QUOTE=\"
|
QUOTE=\"
|
||||||
|
|
||||||
CRINKLER_ORDERTRIES=400
|
CRINKLER_ORDERTRIES=4000
|
||||||
|
|
||||||
AUDIO_BUFFER_ALLOCATED_LENGTH=3337536
|
AUDIO_BUFFER_ALLOCATED_LENGTH=1552992
|
||||||
AUDIO_SAMPLING_RATE=44100
|
AUDIO_SAMPLING_RATE=44100
|
||||||
LOOP_END=5.0
|
LOOP_END=5.0
|
||||||
LOOP_START=3.0
|
LOOP_START=3.0
|
||||||
LOOP_ENABLED=0
|
LOOP_ENABLED=0
|
||||||
TIME_DIVIDER_INT=64145
|
TIME_DIVIDER_INT=91241
|
||||||
|
|||||||
@ -132,6 +132,7 @@ section .text
|
|||||||
; the __imp__ versions refer to the corresponding import address table entries
|
; the __imp__ versions refer to the corresponding import address table entries
|
||||||
|
|
||||||
; 4klang
|
; 4klang
|
||||||
|
|
||||||
extern _su_render_song@4
|
extern _su_render_song@4
|
||||||
|
|
||||||
; General Windows stuff
|
; General Windows stuff
|
||||||
@ -183,6 +184,8 @@ StartAudioRendererThread:
|
|||||||
push 0
|
push 0
|
||||||
push 0
|
push 0
|
||||||
push dword [rendered_audio_buffer_ptr]
|
push dword [rendered_audio_buffer_ptr]
|
||||||
|
extern _su_load_gmdls@0
|
||||||
|
call _su_load_gmdls@0
|
||||||
push _su_render_song@4
|
push _su_render_song@4
|
||||||
push 0
|
push 0
|
||||||
push 0
|
push 0
|
||||||
|
|||||||
@ -389,6 +389,8 @@ main:
|
|||||||
push 0
|
push 0
|
||||||
push 0
|
push 0
|
||||||
push rendered_audio_data + (AUDIO_DELAY * 4)
|
push rendered_audio_data + (AUDIO_DELAY * 4)
|
||||||
|
extern _su_load_gmdls@0
|
||||||
|
call _su_load_gmdls@0
|
||||||
push _su_render_song@4
|
push _su_render_song@4
|
||||||
push 0
|
push 0
|
||||||
push 0
|
push 0
|
||||||
|
|||||||
@ -7,11 +7,11 @@ include $(PARENT_CONFIG)
|
|||||||
|
|
||||||
|
|
||||||
# Visuals
|
# Visuals
|
||||||
EXE_LINKER_PROGRAM=GNU ld
|
EXE_LINKER_PROGRAM=Crinkler
|
||||||
CRINKLER_ORDERTRIES=4000
|
CRINKLER_ORDERTRIES=4000
|
||||||
SHADER_FILE=shader_minified.h
|
SHADER_FILE=shader_minified.h
|
||||||
TIME_UNIFORM_NAME='n'
|
TIME_UNIFORM_NAME='f'
|
||||||
RESOLUTION_UNIFORM_NAME='r'
|
RESOLUTION_UNIFORM_NAME='v'
|
||||||
TEXTS_UNIFORM_NAME='k'
|
TEXTS_UNIFORM_NAME='k'
|
||||||
USE_WIDECHAR_TEXTS=1
|
USE_WIDECHAR_TEXTS=1
|
||||||
TIME_DIVIDER=44100.000
|
TIME_DIVIDER=44100.000
|
||||||
|
|||||||
BIN
music/4k_house.xrns
Normal file
BIN
music/4k_house.xrns
Normal file
Binary file not shown.
Binary file not shown.
286
music/sointu_house.yml
Normal file
286
music/sointu_house.yml
Normal file
@ -0,0 +1,286 @@
|
|||||||
|
bpm: 100
|
||||||
|
rowsperbeat: 4
|
||||||
|
score:
|
||||||
|
tracks:
|
||||||
|
- numvoices: 1
|
||||||
|
order: [0]
|
||||||
|
patterns: [[72, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72]]
|
||||||
|
rowsperpattern: 16
|
||||||
|
length: 1
|
||||||
|
patch:
|
||||||
|
- name: kick edm 2
|
||||||
|
comment: Suggested note to play G-2 to C-3
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 105
|
||||||
|
parameters: {attack: 18, channel: 2, decay: 65, gain: 60, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 106
|
||||||
|
parameters: {color: 128, detune: 57, gain: 79, lfo: 0, phase: 0, shape: 63, stereo: 0, transpose: 94, type: 0, unison: 2}
|
||||||
|
- type: mulp
|
||||||
|
id: 126
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 110
|
||||||
|
parameters: {attack: 0, decay: 43, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
id: 111
|
||||||
|
parameters: {gain: 81, shape: 67, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 112
|
||||||
|
parameters: {bandpass: 0, frequency: 87, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 35, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 113
|
||||||
|
parameters: {bandpass: 0, frequency: 100, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 62, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 10
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 127
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 12
|
||||||
|
parameters: {bandpass: 0, frequency: 9, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 75, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 13
|
||||||
|
parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 14
|
||||||
|
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 85, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 15
|
||||||
|
parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 49, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 114
|
||||||
|
parameters: {panning: 64, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 118
|
||||||
|
parameters: {auxgain: 0, outgain: 57, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 119
|
||||||
|
parameters: {attack: 62, decay: 128, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 120
|
||||||
|
parameters: {attack: 39, decay: 61, gain: 128, release: 0, stereo: 0, sustain: 34}
|
||||||
|
- type: mulp
|
||||||
|
id: 121
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: send
|
||||||
|
id: 122
|
||||||
|
parameters: {amount: 0, port: 0, sendpop: 1, target: 106}
|
||||||
|
- name: snare edm 2 (sample)
|
||||||
|
comment: 'Suggested range: E-2 to C-3'
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 0, decay: 76, gain: 96, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 200
|
||||||
|
parameters: {color: 64, detune: 116, gain: 37, lfo: 0, looplength: 1, loopstart: 4276, phase: 0, samplestart: 560606, shape: 114, stereo: 1, transpose: 86, type: 4, unison: 2}
|
||||||
|
- type: distort
|
||||||
|
parameters: {drive: 95, stereo: 1}
|
||||||
|
- type: mulp
|
||||||
|
parameters: {panning: 64, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 0, auxgain: 64, decay: 68, gain: 83, outgain: 64, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
parameters: {gain: 107, shape: 3, stereo: 1}
|
||||||
|
- type: mulp
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 201
|
||||||
|
parameters: {bandpass: 0, frequency: 57, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 67, stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
parameters: {bandpass: 0, frequency: 128, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 78, stereo: 1}
|
||||||
|
- type: addp
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
parameters: {panning: 64, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
parameters: {auxgain: 0, outgain: 78, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 47, decay: 54, gain: 128, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: send
|
||||||
|
parameters: {amount: 19, port: 0, sendpop: 1, target: 201}
|
||||||
|
- type: envelope
|
||||||
|
parameters: {attack: 54, decay: 68, gain: 128, release: 0, stereo: 0, sustain: 70}
|
||||||
|
- type: send
|
||||||
|
parameters: {amount: 26, port: 0, sendpop: 1, target: 202}
|
||||||
|
- name: clap
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 0, decay: 53, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: delay
|
||||||
|
id: 162
|
||||||
|
parameters: {damp: 0, dry: 128, feedback: 0, notetracking: 0, pregain: 64, stereo: 1}
|
||||||
|
varargs: [1395, 350]
|
||||||
|
- type: noise
|
||||||
|
id: 3
|
||||||
|
parameters: {gain: 0, shape: 97, stereo: 1}
|
||||||
|
- type: mulp
|
||||||
|
id: 4
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 163
|
||||||
|
parameters: {attack: 0, decay: 54, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: delay
|
||||||
|
id: 164
|
||||||
|
parameters: {damp: 0, dry: 6, feedback: 0, notetracking: 0, pregain: 64, stereo: 1}
|
||||||
|
varargs: [1744, 1744]
|
||||||
|
- type: noise
|
||||||
|
id: 165
|
||||||
|
parameters: {gain: 128, shape: 79, stereo: 1}
|
||||||
|
- type: mulp
|
||||||
|
id: 171
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: addp
|
||||||
|
id: 235
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 233
|
||||||
|
parameters: {attack: 0, decay: 62, gain: 42, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
id: 234
|
||||||
|
parameters: {color: 64, detune: 64, gain: 125, looplength: 1, loopstart: 2423, phase: 0, samplestart: 641780, shape: 64, stereo: 1, transpose: 64, type: 4}
|
||||||
|
- type: mulp
|
||||||
|
id: 236
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: addp
|
||||||
|
id: 173
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 5
|
||||||
|
parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 76, stereo: 1}
|
||||||
|
- type: distort
|
||||||
|
parameters: {drive: 114, stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
id: 174
|
||||||
|
parameters: {panning: 80, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 161
|
||||||
|
parameters: {auxgain: 12, outgain: 50, stereo: 1}
|
||||||
|
- name: House Bass Organ
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 207
|
||||||
|
parameters: {attack: 46, decay: 74, gain: 77, release: 39, stereo: 0, sustain: 36}
|
||||||
|
- type: oscillator
|
||||||
|
id: 208
|
||||||
|
parameters: {color: 84, detune: 48, gain: 128, phase: 0, shape: 50, stereo: 0, transpose: 40, type: 1, unison: 3}
|
||||||
|
- type: oscillator
|
||||||
|
id: 213
|
||||||
|
parameters: {color: 64, detune: 64, gain: 64, phase: 0, shape: 64, stereo: 0, transpose: 71, type: 2, unison: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 214
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 209
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 218
|
||||||
|
parameters: {bandpass: 0, frequency: 3, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 219
|
||||||
|
parameters: {bandpass: 0, frequency: 94, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 215
|
||||||
|
parameters: {drive: 83, stereo: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 221
|
||||||
|
parameters: {attack: 32, decay: 53, gain: 64, release: 0, stereo: 0, sustain: 0}
|
||||||
|
- type: noise
|
||||||
|
id: 222
|
||||||
|
parameters: {gain: 59, shape: 52, stereo: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 223
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: filter
|
||||||
|
id: 225
|
||||||
|
parameters: {bandpass: 0, frequency: 91, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 102, stereo: 0}
|
||||||
|
- type: addp
|
||||||
|
id: 224
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: compressor
|
||||||
|
id: 229
|
||||||
|
parameters: {attack: 37, invgain: 87, ratio: 102, release: 65, stereo: 0, threshold: 47}
|
||||||
|
- type: mulp
|
||||||
|
id: 230
|
||||||
|
parameters: {stereo: 0}
|
||||||
|
- type: distort
|
||||||
|
id: 228
|
||||||
|
parameters: {drive: 59, stereo: 0}
|
||||||
|
- type: pan
|
||||||
|
id: 211
|
||||||
|
parameters: {panning: 64, stereo: 0}
|
||||||
|
- type: outaux
|
||||||
|
id: 212
|
||||||
|
parameters: {auxgain: 23, outgain: 98, stereo: 1}
|
||||||
|
- type: envelope
|
||||||
|
id: 220
|
||||||
|
parameters: {attack: 0, decay: 72, gain: 76, release: 45, stereo: 0, sustain: 47}
|
||||||
|
- type: send
|
||||||
|
id: 217
|
||||||
|
parameters: {amount: 128, port: 0, sendpop: 1, stereo: 0, target: 218, unit: 0, voice: 0}
|
||||||
|
- name: Crash909
|
||||||
|
numvoices: 2
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 8, decay: 90, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: envelope
|
||||||
|
id: 231
|
||||||
|
parameters: {attack: 21, decay: 78, gain: 64, release: 85, stereo: 1, sustain: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 232
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: oscillator
|
||||||
|
id: 2
|
||||||
|
parameters: {color: 64, detune: 64, gain: 111, looplength: 5676, loopstart: 2615, phase: 0, samplestart: 433554, shape: 64, stereo: 1, transpose: 77, type: 4, unison: 0}
|
||||||
|
- type: mulp
|
||||||
|
id: 3
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
id: 5
|
||||||
|
parameters: {damp: 0, dry: 128, feedback: 96, notetracking: 2, panning: 73, pregain: 40, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 6
|
||||||
|
parameters: {auxgain: 78, outgain: 49, panning: 64, stereo: 1}
|
||||||
|
- name: hihat
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: envelope
|
||||||
|
id: 1
|
||||||
|
parameters: {attack: 50, decay: 60, gain: 128, release: 0, stereo: 1, sustain: 0}
|
||||||
|
- type: oscillator
|
||||||
|
parameters: {color: 64, detune: 64, gain: 127, looplength: 1, loopstart: 1343, phase: 0, samplestart: 367477, shape: 64, stereo: 1, transpose: 82, type: 4}
|
||||||
|
- type: mulp
|
||||||
|
id: 239
|
||||||
|
parameters: {stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
parameters: {bandpass: 0, frequency: 78, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 1, resonance: 128, stereo: 1}
|
||||||
|
- type: filter
|
||||||
|
id: 240
|
||||||
|
parameters: {bandpass: 0, frequency: 109, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1}
|
||||||
|
- type: pan
|
||||||
|
id: 7
|
||||||
|
parameters: {panning: 57, stereo: 1}
|
||||||
|
- type: outaux
|
||||||
|
id: 11
|
||||||
|
parameters: {auxgain: 0, outgain: 84, stereo: 1}
|
||||||
|
- name: Global
|
||||||
|
numvoices: 1
|
||||||
|
units:
|
||||||
|
- type: in
|
||||||
|
id: 7
|
||||||
|
parameters: {channel: 2, stereo: 1}
|
||||||
|
- type: delay
|
||||||
|
id: 8
|
||||||
|
parameters: {damp: 42, dry: 128, feedback: 120, notetracking: 0, pregain: 40, stereo: 1}
|
||||||
|
varargs: [1116, 1188, 1276, 1356, 1422, 1492, 1556, 1618, 1140, 1212, 1300, 1380, 1446, 1516, 1580, 1642]
|
||||||
|
- type: out
|
||||||
|
id: 9
|
||||||
|
parameters: {gain: 128, stereo: 1}
|
||||||
35
shader.glsl
35
shader.glsl
@ -9,6 +9,12 @@ struct Ray {
|
|||||||
vec3 dir;
|
vec3 dir;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vec2 getUV(vec2 offset) {
|
||||||
|
vec2 uv = 2.0 *((gl_FragCoord.xy + offset*0.5)/u_resolution.xy - 0.5);
|
||||||
|
uv.x *= u_resolution.x/u_resolution.y; // Correct for aspect ratio
|
||||||
|
return uv;
|
||||||
|
}
|
||||||
|
|
||||||
mat2 scale(vec2 scale){
|
mat2 scale(vec2 scale){
|
||||||
return mat2(1. / scale.x, 0.0, 0.0, 1./scale.y);
|
return mat2(1. / scale.x, 0.0, 0.0, 1./scale.y);
|
||||||
}
|
}
|
||||||
@ -618,7 +624,19 @@ float sdCog(vec3 pos, float angle) {
|
|||||||
pos.xy *= Rot(angle);
|
pos.xy *= Rot(angle);
|
||||||
float d1 = opExtrusion(pos, sdCog2d(pos.xy), 0.05);
|
float d1 = opExtrusion(pos, sdCog2d(pos.xy), 0.05);
|
||||||
float d2 = fCapsule(pos, vec3(0., 0.0, 0.), vec3(0., 0., 1.), 0.2);
|
float d2 = fCapsule(pos, vec3(0., 0.0, 0.), vec3(0., 0., 1.), 0.2);
|
||||||
return 0.8 * fOpDifferenceRound(d1,d2,0.05)-0.003;}
|
return 0.8 * fOpDifferenceRound(d1,d2,0.05)-0.003;
|
||||||
|
}
|
||||||
|
|
||||||
|
float sdText(vec3 pos, float angle) {
|
||||||
|
//pos.xy *= Rot(angle);
|
||||||
|
vec3 color = texture2D(texts, getUV(vec2( 0.,0.))).rgb;
|
||||||
|
|
||||||
|
//gl_FragColor = vec4(vec3(color), 1.);
|
||||||
|
|
||||||
|
//float d1 = opExtrusion(pos, , 0.1);
|
||||||
|
return 0.;
|
||||||
|
// return d1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
float sdHex(vec3 pos, float i, float angle) {
|
float sdHex(vec3 pos, float i, float angle) {
|
||||||
@ -655,10 +673,11 @@ vec2 mapScene(in vec3 p) {
|
|||||||
if (d == a) mat = 1. + mod(i,3.);
|
if (d == a) mat = 1. + mod(i,3.);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*float c2 = sdCog(p, u_time);
|
|
||||||
d = min(d, c2);
|
//float c2 = sdText(p, u_time);
|
||||||
if ( d == c2) mat = 4.;
|
//d = min(d, c2);
|
||||||
*/
|
//if ( d == c2) mat = 4.;
|
||||||
|
|
||||||
// float c3 = fBox(p+vec3(0.5, .87, 0.), vec3(1., 1.,1.));
|
// float c3 = fBox(p+vec3(0.5, .87, 0.), vec3(1., 1.,1.));
|
||||||
// d = min(d, c3);
|
// d = min(d, c3);
|
||||||
|
|
||||||
@ -963,11 +982,7 @@ vec3 render(vec2 uv) {
|
|||||||
|
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
vec2 getUV(vec2 offset) {
|
|
||||||
vec2 uv = 2.0 *((gl_FragCoord.xy + offset*0.5)/u_resolution.xy - 0.5);
|
|
||||||
uv.x *= u_resolution.x/u_resolution.y; // Correct for aspect ratio
|
|
||||||
return uv;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,18 +1,228 @@
|
|||||||
// Generated with Shader Minifier 1.3.6 (https://github.com/laurentlb/Shader_Minifier/)
|
// Generated with Shader Minifier 1.3.6 (https://github.com/laurentlb/Shader_Minifier/)
|
||||||
#ifndef SHADER_MINIFIED_H_
|
#ifndef SHADER_MINIFIED_H_
|
||||||
# define SHADER_MINIFIED_H_
|
# define SHADER_MINIFIED_H_
|
||||||
# define VAR_my_fragColor "v"
|
# define VAR_texts "k"
|
||||||
# define VAR_u_resolution "r"
|
# define VAR_texture_sampler "m"
|
||||||
# define VAR_u_time "n"
|
# define VAR_u_resolution "v"
|
||||||
|
# define VAR_u_time "f"
|
||||||
|
|
||||||
const char *__temp_cleaned_shader_glsl =
|
const char *__temp_cleaned_shader_glsl =
|
||||||
"#version 330\n"
|
"uniform vec2 v;"
|
||||||
"uniform float n;"
|
"uniform float f;"
|
||||||
"uniform vec2 r;"
|
"uniform sampler2D m,k;struct Ray{vec3 rd;vec3 dir;};"
|
||||||
"layout(location=1) out vec4 v;struct Light{vec3 position;float intensity;vec3 color;};struct Surface{float dist;vec3 position;vec3 baseColor;vec3 normal;vec3 emissiveColor;};struct Hit{Surface surface;Surface near;};"
|
"mat2 n()"
|
||||||
|
"{"
|
||||||
|
"vec2 v=vec2(1.3);"
|
||||||
|
"return mat2(1./v.x,0.,0.,1./v.y);"
|
||||||
|
"}"
|
||||||
|
"const float i=2.*acos(-1.),s=sqrt(5.)*.5+.5;"
|
||||||
|
"float n(vec3 v,vec2 x)"
|
||||||
|
"{"
|
||||||
|
"vec3 f=abs(v);"
|
||||||
|
"return max(f.y-x.y,max(f.x*sqrt(3.)*.5+f.z*.5,f.z)-x.x);"
|
||||||
|
"}"
|
||||||
|
"void n(inout vec2 v)"
|
||||||
|
"{"
|
||||||
|
"float f=acos(-1.)/2.;"
|
||||||
|
"v=cos(f)*v+sin(f)*vec2(v.y,-v.x);"
|
||||||
|
"}"
|
||||||
|
"float x(float v,float f)"
|
||||||
|
"{"
|
||||||
|
"return min(-.1,max(v,f))+length(max(vec2(.1+v,.1+f),vec2(0)));"
|
||||||
|
"}"
|
||||||
|
"float t(vec2 v,float f)"
|
||||||
|
"{"
|
||||||
|
"return fract(tan(distance(v*s,v)*f)*v.x);"
|
||||||
|
"}"
|
||||||
|
"mat2 t(float v)"
|
||||||
|
"{"
|
||||||
|
"float f=sin(v),x=cos(v);"
|
||||||
|
"return mat2(x,-f,f,x);"
|
||||||
|
"}"
|
||||||
|
"float n(vec3 v,float f,float i)"
|
||||||
|
"{"
|
||||||
|
"vec3 r=v;"
|
||||||
|
"r.xz*=t(i);"
|
||||||
|
"r.yz*=t(i);"
|
||||||
|
"n(r.yz);"
|
||||||
|
"float m=n(r,vec2(.5+f,.1)),y=n(r,vec2(.2+f,.1));"
|
||||||
|
"return x(m,-y);"
|
||||||
|
"}"
|
||||||
|
"vec2 x(vec3 v)"
|
||||||
|
"{"
|
||||||
|
"float x=0.,r=1e10;"
|
||||||
|
"vec3 i=v;"
|
||||||
|
"i.xy*=n();"
|
||||||
|
"for(float m=1.;m<=6.;m++)"
|
||||||
|
"{"
|
||||||
|
"float y=n(i,m*.35,f+abs(2.+.4*sin(f))*m*3.1415/6.);"
|
||||||
|
"r=min(r,y);"
|
||||||
|
"if(r==y)"
|
||||||
|
"x=1.+mod(m,3.);"
|
||||||
|
"}"
|
||||||
|
"return vec2(r,x);"
|
||||||
|
"}"
|
||||||
|
"vec3 t(vec3 v,vec3 f,inout vec3 i)"
|
||||||
|
"{"
|
||||||
|
"float r=0.,m=0.,y=0.;"
|
||||||
|
"for(int e=0;e<150;e++)"
|
||||||
|
"{"
|
||||||
|
"i=v+f*r;"
|
||||||
|
"vec2 n=x(i);"
|
||||||
|
"r+=n.x;"
|
||||||
|
"m=n.y;"
|
||||||
|
"if(r>80.)"
|
||||||
|
"break;"
|
||||||
|
"if(n.x<abs(.001*r))"
|
||||||
|
"{"
|
||||||
|
"y=1.;"
|
||||||
|
"break;"
|
||||||
|
"}"
|
||||||
|
"}"
|
||||||
|
"if(r>80.)"
|
||||||
|
"r=-1.;"
|
||||||
|
"return vec3(r,m,y);"
|
||||||
|
"}"
|
||||||
|
"vec3 x(vec3 v,vec3 f,vec3 i)"
|
||||||
|
"{"
|
||||||
|
"float r=0.,m=0.,y=0.;"
|
||||||
|
"for(int e=0;e<50;e++)"
|
||||||
|
"{"
|
||||||
|
"i=v+f*r;"
|
||||||
|
"vec2 n=x(i);"
|
||||||
|
"r+=n.x;"
|
||||||
|
"m=n.y;"
|
||||||
|
"if(r>40.)"
|
||||||
|
"break;"
|
||||||
|
"if(n.x<abs(.001*r))"
|
||||||
|
"{"
|
||||||
|
"y=1.;"
|
||||||
|
"break;"
|
||||||
|
"}"
|
||||||
|
"}"
|
||||||
|
"if(r>40.)"
|
||||||
|
"r=-1.;"
|
||||||
|
"return vec3(r,m,y);"
|
||||||
|
"}"
|
||||||
|
"float e(vec3 v,vec3 f)"
|
||||||
|
"{"
|
||||||
|
"float r=1.,m=.01;"
|
||||||
|
"for(int i=0;i<40;i++)"
|
||||||
|
"{"
|
||||||
|
"if(m>30.)"
|
||||||
|
"break;"
|
||||||
|
"float y=x(v+m*f).x;"
|
||||||
|
"r=min(r,y/(18.*m));"
|
||||||
|
"m+=clamp(y,.005,.5);"
|
||||||
|
"if(r<-1.||m>30.)"
|
||||||
|
"break;"
|
||||||
|
"}"
|
||||||
|
"r=max(r,-1.);"
|
||||||
|
"return.25*(1.+r)*(1.+r)*(2.-r);"
|
||||||
|
"}"
|
||||||
|
"vec3 e(vec3 v)"
|
||||||
|
"{"
|
||||||
|
"vec2 f=vec2(.001,0);"
|
||||||
|
"vec3 r=vec3(x(v+f.xyy).x-x(v-f.xyy).x,x(v+f.yxy).x-x(v-f.yxy).x,x(v+f.yyx).x-x(v-f.yyx).x);"
|
||||||
|
"return normalize(r);"
|
||||||
|
"}"
|
||||||
|
"vec3 p(vec3 v,vec3 f)"
|
||||||
|
"{"
|
||||||
|
"vec3 r=vec3(.5454);"
|
||||||
|
"return r+(1.-r)*pow(clamp(1.-dot(v,f),0.,1.),5.);"
|
||||||
|
"}"
|
||||||
|
"vec3 e(vec3 v,vec3 f,float r,vec3 i,vec3 x,vec3 y,float m)"
|
||||||
|
"{"
|
||||||
|
"vec3 n=normalize(i),d=vec3(max(0.,dot(n,reflect(x,y)))),s=p(normalize(n-x),n)*m;"
|
||||||
|
"float k=e(i+y*.01,v);"
|
||||||
|
"d=pow(d,vec3(r))*m;"
|
||||||
|
"return f*mix(vec3(1)*vec3(max(0.,dot(n,y))),d,s)*k;"
|
||||||
|
"}"
|
||||||
|
"float r(vec3 v,vec3 f)"
|
||||||
|
"{"
|
||||||
|
"float r=0.,m=1.;"
|
||||||
|
"for(int i=0;i<8;i++)"
|
||||||
|
"{"
|
||||||
|
"float y=.01+.02*float(i*i),d=x(v+f*y).x;"
|
||||||
|
"r+=(y-d)*m;"
|
||||||
|
"m*=.85;"
|
||||||
|
"}"
|
||||||
|
"return 1.-clamp(.6*r,0.,1.);"
|
||||||
|
"}"
|
||||||
|
"vec3 e(vec3 v,vec3 f,vec3 m,float i)"
|
||||||
|
"{"
|
||||||
|
"float y=1.,x=r(v,f);"
|
||||||
|
"vec3 n=vec3(.1529);"
|
||||||
|
"if(i==0.)"
|
||||||
|
"n=vec3(.2863,.1059,.2431),y=1.5;"
|
||||||
|
"else if(i==1.)"
|
||||||
|
"n=vec3(.3294,.0941,.6),y=.6;"
|
||||||
|
"else if(i==2.)"
|
||||||
|
"n=vec3(.5804,.9647,1),y=1.;"
|
||||||
|
"else if(i==3.)"
|
||||||
|
"n=vec3(0),y=1e2;"
|
||||||
|
"else if(i==4.)"
|
||||||
|
"n=vec3(.9961,1,.9922),y=.3;"
|
||||||
|
"vec3 d=vec3(0);"
|
||||||
|
"d+=e(vec3(0,-40,-1),vec3(.56,.44,.18)*2.,y,v,m,f,x);"
|
||||||
|
"d+=e(vec3(-20,4,10),vec3(.04,.2,.71)*2.,y,v,m,f,x);"
|
||||||
|
"vec3 s=vec3(0,4,2);"
|
||||||
|
"float c=e(v+f*.01,s);"
|
||||||
|
"d+=vec3(.6627,.7098,.8863)*clamp(dot(f,s),0.,1.)*c*x;"
|
||||||
|
"d+=vec3(.1333,.1333,.1216)*clamp(dot(f,normalize(s*vec3(-1,0,-1))),0.,1.)*x;"
|
||||||
|
"return n*max(vec3(0),d);"
|
||||||
|
"}"
|
||||||
|
"vec3 p(vec3 f)"
|
||||||
|
"{"
|
||||||
|
"vec2 r=gl_FragCoord.xy/v.xy;"
|
||||||
|
"f=mix(f,f*smoothstep(.8,.4,length(r-vec2(.5))),.9);"
|
||||||
|
"f=mix(f,smoothstep(0.,1.,f),.5);"
|
||||||
|
"f*=vec3(1);"
|
||||||
|
"return pow(f,vec3(1./2.2));"
|
||||||
|
"}"
|
||||||
|
"vec3 e(vec2 f,vec3 v,vec3 i)"
|
||||||
|
"{"
|
||||||
|
"vec3 r=normalize(i-v),y=cross(vec3(0,1,0),r);"
|
||||||
|
"return normalize(v+r+f.x*y+f.y*cross(r,y)-v);"
|
||||||
|
"}"
|
||||||
|
"vec3 p(vec2 v,vec3 f,vec3 i)"
|
||||||
|
"{"
|
||||||
|
"vec3 r=normalize(i-f),y=normalize(cross(vec3(0,1,0),r)),m=normalize(cross(r,y));"
|
||||||
|
"vec2 n=vec2(t(gl_FragCoord.xy,.13),t(gl_FragCoord.xy,.4));"
|
||||||
|
"return normalize(v.x*y+v.y*m+1.7*r+sqrt(n.x)*(y*sin(n.y*6.283)+m*cos(n.y*6.283))*.25*1.7/150.2);"
|
||||||
|
"}"
|
||||||
|
"vec3 r(vec2 v)"
|
||||||
|
"{"
|
||||||
|
"bool r=!true;"
|
||||||
|
"vec3 f=vec3(0,5,-3),y=vec3(0),m;"
|
||||||
|
"m=r?"
|
||||||
|
"p(v,f,y):"
|
||||||
|
"e(v,f,y);"
|
||||||
|
"vec3 i=vec3(.051,.0667,.1529),n=vec3(0),d=t(f,m,n),s=m;"
|
||||||
|
"if(d.z>0.)"
|
||||||
|
"{"
|
||||||
|
"vec3 k=e(n);"
|
||||||
|
"i=e(n,k,m,d.y);"
|
||||||
|
"i=i*exp(-d.x*.04)+mix(i,mix(vec3(.3686,.2431,.4392),vec3(.4,.7294,.9216),pow(max(dot(s,vec3(0,.3,-1)),0.),8.)),1.-exp(-d.x*.04))*(1.-exp(-d.x*.04));"
|
||||||
|
"m=normalize(reflect(m,k));"
|
||||||
|
"vec3 c=n+m*.01,g=x(c,m,n);"
|
||||||
|
"if(g.z>0.)"
|
||||||
|
"n=c+m*g.x,k=e(n),i+=.1*e(n,k,m,g.y);"
|
||||||
|
"}"
|
||||||
|
"return i;"
|
||||||
|
"}"
|
||||||
|
"vec2 e()"
|
||||||
|
"{"
|
||||||
|
"vec2 r=2.*((gl_FragCoord.xy+vec2(0)*.5)/v.xy-.5);"
|
||||||
|
"r.x*=v.x/v.y;"
|
||||||
|
"return r;"
|
||||||
|
"}"
|
||||||
"void main()"
|
"void main()"
|
||||||
"{"
|
"{"
|
||||||
"v=vec4(vec3(0,1,0),1);"
|
"vec3 v=vec3(0);"
|
||||||
|
"v+=r(e());"
|
||||||
|
"v=p(v);"
|
||||||
|
"gl_FragColor=vec4(v,1);"
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
#endif // SHADER_MINIFIED_H_
|
#endif // SHADER_MINIFIED_H_
|
||||||
|
|||||||
BIN
texture_0.png
Normal file
BIN
texture_0.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
Reference in New Issue
Block a user