Remove trailing spaces and convert tabs to spaces.

This commit is contained in:
Veikko Sariola
2020-05-16 09:16:23 +03:00
parent d328431413
commit 42ebc52c96
66 changed files with 1116 additions and 1114 deletions

View File

@ -1,12 +1,12 @@
; Various compile time definitions exported ; Various compile time definitions exported
SECT_DATA(introscn) SECT_DATA(introscn)
%ifdef SU_USE_16BIT_OUTPUT %ifdef SU_USE_16BIT_OUTPUT
EXPORT MANGLE_DATA(su_use_16bit_output) dd 1 EXPORT MANGLE_DATA(su_use_16bit_output) dd 1
%else %else
EXPORT MANGLE_DATA(su_use_16bit_output) dd 0 EXPORT MANGLE_DATA(su_use_16bit_output) dd 0
%endif %endif
%ifdef MAX_SAMPLES %ifdef MAX_SAMPLES
EXPORT MANGLE_DATA(su_max_samples) dd MAX_SAMPLES EXPORT MANGLE_DATA(su_max_samples) dd MAX_SAMPLES
%endif %endif

View File

@ -152,4 +152,4 @@ su_op_xch_mono:
fxch st0, st1 fxch st0, st1
ret ret
%endif %endif

View File

@ -3,18 +3,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign ADDP_ID -1 %assign ADDP_ID -1
%macro USE_ADDP 0 %macro USE_ADDP 0
%if ADDP_ID == -1 %if ADDP_ID == -1
%assign ADDP_ID CUR_ID %assign ADDP_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_addp,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_addp,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_ADDP 1 %macro SU_ADDP 1
USE_ADDP USE_ADDP
%xdefine CMDS CMDS ADDP_ID + %1, %xdefine CMDS CMDS ADDP_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_ADDP %define INCLUDE_STEREO_ADDP
%endif %endif
%endmacro %endmacro
@ -24,19 +24,19 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign ADD_ID -1 %assign ADD_ID -1
%macro USE_ADD 0 %macro USE_ADD 0
%if ADD_ID == -1 %if ADD_ID == -1
%assign ADD_ID CUR_ID %assign ADD_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_add,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_add,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%assign ADD_ID -1 %assign ADD_ID -1
%macro SU_ADD 1 %macro SU_ADD 1
USE_ADD USE_ADD
%xdefine CMDS CMDS ADD_ID + %1, %xdefine CMDS CMDS ADD_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_ADD %define INCLUDE_STEREO_ADD
%endif %endif
%endmacro %endmacro
@ -46,18 +46,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign POP_ID -1 %assign POP_ID -1
%macro USE_POP 0 %macro USE_POP 0
%if POP_ID == -1 %if POP_ID == -1
%assign POP_ID CUR_ID %assign POP_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_pop,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_pop,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_POP 1 %macro SU_POP 1
USE_POP USE_POP
%xdefine CMDS CMDS POP_ID + %1, %xdefine CMDS CMDS POP_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_POP %define INCLUDE_STEREO_POP
%endif %endif
%endmacro %endmacro
@ -67,18 +67,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign LOADNOTE_ID -1 %assign LOADNOTE_ID -1
%macro USE_LOADNOTE 0 %macro USE_LOADNOTE 0
%if LOADNOTE_ID == -1 %if LOADNOTE_ID == -1
%assign LOADNOTE_ID CUR_ID %assign LOADNOTE_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_loadnote,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_loadnote,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_LOADNOTE 1 %macro SU_LOADNOTE 1
USE_LOADNOTE USE_LOADNOTE
%xdefine CMDS CMDS LOADNOTE_ID + %1, %xdefine CMDS CMDS LOADNOTE_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_LOADNOTE %define INCLUDE_STEREO_LOADNOTE
%endif %endif
%endmacro %endmacro
@ -88,18 +88,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign MUL_ID -1 %assign MUL_ID -1
%macro USE_MUL 0 %macro USE_MUL 0
%if MUL_ID == -1 %if MUL_ID == -1
%assign MUL_ID CUR_ID %assign MUL_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_mul,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_mul,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_MUL 1 %macro SU_MUL 1
USE_MUL USE_MUL
%xdefine CMDS CMDS MUL_ID + %1, %xdefine CMDS CMDS MUL_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_MUL %define INCLUDE_STEREO_MUL
%endif %endif
%endmacro %endmacro
@ -109,18 +109,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign MULP_ID -1 %assign MULP_ID -1
%macro USE_MULP 0 %macro USE_MULP 0
%if MULP_ID == -1 %if MULP_ID == -1
%assign MULP_ID CUR_ID %assign MULP_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_mulp,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_mulp,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_MULP 1 %macro SU_MULP 1
USE_MULP USE_MULP
%xdefine CMDS CMDS MULP_ID + %1, %xdefine CMDS CMDS MULP_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_MULP %define INCLUDE_STEREO_MULP
%endif %endif
%endmacro %endmacro
@ -130,18 +130,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign PUSH_ID -1 %assign PUSH_ID -1
%macro USE_PUSH 0 %macro USE_PUSH 0
%if PUSH_ID == -1 %if PUSH_ID == -1
%assign PUSH_ID CUR_ID %assign PUSH_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_push,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_push,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_PUSH 1 %macro SU_PUSH 1
USE_PUSH USE_PUSH
%xdefine CMDS CMDS PUSH_ID + %1, %xdefine CMDS CMDS PUSH_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_PUSH %define INCLUDE_STEREO_PUSH
%endif %endif
%endmacro %endmacro
@ -151,18 +151,18 @@
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
%assign XCH_ID -1 %assign XCH_ID -1
%macro USE_XCH 0 %macro USE_XCH 0
%if XCH_ID == -1 %if XCH_ID == -1
%assign XCH_ID CUR_ID %assign XCH_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_xch,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_xch,0),
%xdefine NUMPARAMS NUMPARAMS 0, %xdefine NUMPARAMS NUMPARAMS 0,
%endif %endif
%endmacro %endmacro
%macro SU_XCH 1 %macro SU_XCH 1
USE_XCH USE_XCH
%xdefine CMDS CMDS XCH_ID + %1, %xdefine CMDS CMDS XCH_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_XCH %define INCLUDE_STEREO_XCH
%endif %endif
%endmacro %endmacro

View File

@ -57,24 +57,24 @@ EXPORT MANGLE_FUNC(su_op_hold,0)
%define INCLUDE_STEREO_FILTERHELPER %define INCLUDE_STEREO_FILTERHELPER
su_op_hold_mono: su_op_hold_mono:
%endif %endif
fld dword [edx+su_hold_ports.freq] ; f x fld dword [edx+su_hold_ports.freq] ; f x
fmul st0, st0 ; f^2 x fmul st0, st0 ; f^2 x
fchs ; -f^2 x fchs ; -f^2 x
fadd dword [WRK+su_hold_wrk.phase] ; p-f^2 x fadd dword [WRK+su_hold_wrk.phase] ; p-f^2 x
fst dword [WRK+su_hold_wrk.phase] ; p <- p-f^2 fst dword [WRK+su_hold_wrk.phase] ; p <- p-f^2
fldz ; 0 p x fldz ; 0 p x
fucomip st1 ; p x fucomip st1 ; p x
fstp dword [esp-4] ; t=p, x fstp dword [esp-4] ; t=p, x
jc short su_op_hold_holding ; if (0 < p) goto holding jc short su_op_hold_holding ; if (0 < p) goto holding
fld1 ; 1 x fld1 ; 1 x
fadd dword [esp-4] ; 1+t x fadd dword [esp-4] ; 1+t x
fstp dword [WRK+su_hold_wrk.phase] ; x fstp dword [WRK+su_hold_wrk.phase] ; x
fst dword [WRK+su_hold_wrk.holdval] ; save holded value fst dword [WRK+su_hold_wrk.holdval] ; save holded value
ret ; x ret ; x
su_op_hold_holding: su_op_hold_holding:
fstp st0 ; fstp st0 ;
fld dword [WRK+su_hold_wrk.holdval] ; x fld dword [WRK+su_hold_wrk.holdval] ; x
ret ret
%endif ; HOLD_ID > -1 %endif ; HOLD_ID > -1
@ -117,31 +117,31 @@ su_op_filter_mono:
%ifdef INCLUDE_LOWPASS %ifdef INCLUDE_LOWPASS
test al, byte LOWPASS test al, byte LOWPASS
jz short su_op_filter_skiplowpass jz short su_op_filter_skiplowpass
fadd dword [WRK+su_filter_wrk.low] fadd dword [WRK+su_filter_wrk.low]
su_op_filter_skiplowpass: su_op_filter_skiplowpass:
%endif %endif
%ifdef INCLUDE_BANDPASS %ifdef INCLUDE_BANDPASS
test al, byte BANDPASS test al, byte BANDPASS
jz short su_op_filter_skipbandpass jz short su_op_filter_skipbandpass
fadd dword [WRK+su_filter_wrk.band] fadd dword [WRK+su_filter_wrk.band]
su_op_filter_skipbandpass: su_op_filter_skipbandpass:
%endif %endif
%ifdef INCLUDE_HIGHPASS %ifdef INCLUDE_HIGHPASS
test al, byte HIGHPASS test al, byte HIGHPASS
jz short su_op_filter_skiphighpass jz short su_op_filter_skiphighpass
fadd dword [WRK+su_filter_wrk.high] fadd dword [WRK+su_filter_wrk.high]
su_op_filter_skiphighpass: su_op_filter_skiphighpass:
%endif %endif
%ifdef INCLUDE_NEGBANDPASS %ifdef INCLUDE_NEGBANDPASS
test al, byte NEGBANDPASS test al, byte NEGBANDPASS
jz short su_op_filter_skipnegbandpass jz short su_op_filter_skipnegbandpass
fsub dword [WRK+su_filter_wrk.band] fsub dword [WRK+su_filter_wrk.band]
su_op_filter_skipnegbandpass: su_op_filter_skipnegbandpass:
%endif %endif
%ifdef INCLUDE_NEGHIGHPASS %ifdef INCLUDE_NEGHIGHPASS
test al, byte NEGHIGHPASS test al, byte NEGHIGHPASS
jz short su_op_filter_skipneghighpass jz short su_op_filter_skipneghighpass
fsub dword [WRK+su_filter_wrk.high] fsub dword [WRK+su_filter_wrk.high]
su_op_filter_skipneghighpass: su_op_filter_skipneghighpass:
%endif %endif
ret ret
@ -250,8 +250,8 @@ su_stereo_filterhelper:
SECT_TEXT(sudelay) SECT_TEXT(sudelay)
EXPORT MANGLE_FUNC(su_op_delay,0) EXPORT MANGLE_FUNC(su_op_delay,0)
lodsb ; eax = delay index lodsb ; eax = delay index
mov edi, eax mov edi, eax
lodsb ; eax = delay count lodsb ; eax = delay count
%ifdef INCLUDE_STEREO_DELAY %ifdef INCLUDE_STEREO_DELAY
@ -262,7 +262,7 @@ EXPORT MANGLE_FUNC(su_op_delay,0)
add edi, eax ; the second delay is done with the delay time index added by count add edi, eax ; the second delay is done with the delay time index added by count
su_op_delay_mono: su_op_delay_mono:
%endif %endif
pushad pushad
mov ebx, edi; ugly register juggling, refactor mov ebx, edi; ugly register juggling, refactor
%ifdef DELAY_NOTE_SYNC %ifdef DELAY_NOTE_SYNC
test ebx, ebx ; note s test ebx, ebx ; note s
@ -276,8 +276,8 @@ su_op_delay_mono:
fistp word [MANGLE_DATA(su_delay_times)] ; store current comb size fistp word [MANGLE_DATA(su_delay_times)] ; store current comb size
su_op_delay_skipnotesync: su_op_delay_skipnotesync:
%endif %endif
kmDLL_func_process: kmDLL_func_process:
mov ecx, eax ;// ecx is the number of parallel delays mov ecx, eax ;// ecx is the number of parallel delays
mov WRK, dword [MANGLE_DATA(su_delay_buffer_ofs)] ;// ebp is current delay mov WRK, dword [MANGLE_DATA(su_delay_buffer_ofs)] ;// ebp is current delay
fld st0 ; x x fld st0 ; x x
fmul dword [edx+su_delay_ports.dry] ; dr*x x fmul dword [edx+su_delay_ports.dry] ; dr*x x
@ -304,7 +304,7 @@ kmDLL_func_loop:
fmul dword [WRK+su_delayline_wrk.filtstate] ; o*da s*(1-da) p^2*x dr*x+s, where o is stored fmul dword [WRK+su_delayline_wrk.filtstate] ; o*da s*(1-da) p^2*x dr*x+s, where o is stored
faddp st1, st0 ; o*da+s*(1-da) p^2*x dr*x+s faddp st1, st0 ; o*da+s*(1-da) p^2*x dr*x+s
fst dword [WRK+su_delayline_wrk.filtstate] ; o'=o*da+s*(1-da), o' p^2*x dr*x+s fst dword [WRK+su_delayline_wrk.filtstate] ; o'=o*da+s*(1-da), o' p^2*x dr*x+s
fmul dword [edx+su_delay_ports.feedback] ; f*o' p^2*x dr*x+s fmul dword [edx+su_delay_ports.feedback] ; f*o' p^2*x dr*x+s
fadd st0, st1 ; f*o'+p^2*x p^2*x dr*x+s fadd st0, st1 ; f*o'+p^2*x p^2*x dr*x+s
fstp dword [WRK+edi*4+su_delayline_wrk.buffer]; save f*o'+p^2*x to delay buffer fstp dword [WRK+edi*4+su_delayline_wrk.buffer]; save f*o'+p^2*x to delay buffer
inc ebx ;// go to next delay lenkmh index inc ebx ;// go to next delay lenkmh index
@ -313,15 +313,15 @@ kmDLL_func_loop:
loopne kmDLL_func_loop loopne kmDLL_func_loop
fstp st0 ; dr*x+s1+s2+s3+... fstp st0 ; dr*x+s1+s2+s3+...
; DC-filtering ; DC-filtering
sub WRK, su_delayline_wrk.size ; the reason to use the last su_delayline_wrk instead of su_delay_wrk is that su_delay_wrk is wiped by retriggering sub WRK, su_delayline_wrk.size ; the reason to use the last su_delayline_wrk instead of su_delay_wrk is that su_delay_wrk is wiped by retriggering
fld dword [WRK+su_delayline_wrk.dcout] ; o s fld dword [WRK+su_delayline_wrk.dcout] ; o s
fmul dword [c_dc_const] ; c*o s fmul dword [c_dc_const] ; c*o s
fsub dword [WRK+su_delayline_wrk.dcin] ; c*o-i s fsub dword [WRK+su_delayline_wrk.dcin] ; c*o-i s
fxch ; s c*o-i fxch ; s c*o-i
fst dword [WRK+su_delayline_wrk.dcin] ; i'=s, s c*o-i fst dword [WRK+su_delayline_wrk.dcin] ; i'=s, s c*o-i
faddp st1 ; s+c*o-i faddp st1 ; s+c*o-i
fadd dword [c_0_5] ;// add and sub small offset to prevent denormalization fadd dword [c_0_5] ;// add and sub small offset to prevent denormalization
fsub dword [c_0_5] fsub dword [c_0_5]
fst dword [WRK+su_delayline_wrk.dcout] ; o'=s+c*o-i fst dword [WRK+su_delayline_wrk.dcout] ; o'=s+c*o-i
popad popad
ret ret
@ -344,8 +344,8 @@ SECT_DATA(suconst)
%endif %endif
%ifndef C_FREQ_NORMALIZE %ifndef C_FREQ_NORMALIZE
c_freq_normalize dd 0.000092696138 ; // 220.0/(2^(69/12)) / 44100.0 c_freq_normalize dd 0.000092696138 ; // 220.0/(2^(69/12)) / 44100.0
%define C_FREQ_NORMALIZE %define C_FREQ_NORMALIZE
%endif %endif
%endif ; DELAY_ID > -1 %endif ; DELAY_ID > -1

View File

@ -12,15 +12,15 @@
%endif %endif
%endmacro %endmacro
%define LOWPASS 0x40 %define LOWPASS 0x40
%define BANDPASS 0x20 %define BANDPASS 0x20
%define HIGHPASS 0x10 %define HIGHPASS 0x10
%define NEGBANDPASS 0x08 %define NEGBANDPASS 0x08
%define NEGHIGHPASS 0x04 %define NEGHIGHPASS 0x04
%macro SU_FILTER 4 %macro SU_FILTER 4
db %2 db %2
db %3 db %3
db %4 db %4
USE_FILTER USE_FILTER
%xdefine CMDS CMDS FILTER_ID + %1, %xdefine CMDS CMDS FILTER_ID + %1,
@ -44,20 +44,20 @@
%endif %endif
%endmacro %endmacro
%define FREQUENCY(val) val %define FREQUENCY(val) val
%define RESONANCE(val) val %define RESONANCE(val) val
%define FLAGS(val) val %define FLAGS(val) val
struc su_filter_ports struc su_filter_ports
.freq resd 1 .freq resd 1
.res resd 1 .res resd 1
.params .params
endstruc endstruc
struc su_filter_wrk struc su_filter_wrk
.low resd 1 .low resd 1
.high resd 1 .high resd 1
.band resd 1 .band resd 1
.size .size
endstruc endstruc
@ -75,8 +75,8 @@ endstruc
%endif %endif
%endmacro %endmacro
%macro SU_PAN 2 %macro SU_PAN 2
db %2 db %2
USE_PAN USE_PAN
%xdefine CMDS CMDS PAN_ID + %1, %xdefine CMDS CMDS PAN_ID + %1,
%if %1 == STEREO %if %1 == STEREO
@ -84,10 +84,10 @@ endstruc
%endif %endif
%endmacro %endmacro
%define PANNING(val) val %define PANNING(val) val
struc su_pan_ports struc su_pan_ports
.panning resd 1 .panning resd 1
.params .params
endstruc endstruc
@ -106,7 +106,7 @@ endstruc
%endmacro %endmacro
%macro SU_DISTORT 2 %macro SU_DISTORT 2
db %2 db %2
USE_DISTORT USE_DISTORT
%xdefine CMDS CMDS DISTORT_ID + %1, %xdefine CMDS CMDS DISTORT_ID + %1,
%if %1 == STEREO %if %1 == STEREO
@ -114,10 +114,10 @@ endstruc
%endif %endif
%endmacro %endmacro
%define DRIVE(val) val %define DRIVE(val) val
struc su_distort_ports struc su_distort_ports
.drive resd 1 .drive resd 1
.params .params
endstruc endstruc
@ -136,7 +136,7 @@ endstruc
%endmacro %endmacro
%macro SU_HOLD 2 %macro SU_HOLD 2
db %2 db %2
USE_HOLD USE_HOLD
%xdefine CMDS CMDS HOLD_ID + %1, %xdefine CMDS CMDS HOLD_ID + %1,
%if %1 == STEREO %if %1 == STEREO
@ -144,15 +144,15 @@ endstruc
%endif %endif
%endmacro %endmacro
%define HOLDFREQ(val) val %define HOLDFREQ(val) val
struc su_hold_ports struc su_hold_ports
.freq resd 1 .freq resd 1
.params .params
endstruc endstruc
struc su_hold_wrk struc su_hold_wrk
.phase resd 1 .phase resd 1
.holdval resd 1 .holdval resd 1
endstruc endstruc
@ -194,13 +194,13 @@ endstruc
%define MAX_DELAY 65536 %define MAX_DELAY 65536
%assign NUM_DELAY_LINES 0 %assign NUM_DELAY_LINES 0
%macro SU_DELAY 7 %macro SU_DELAY 7
db %2 db %2
db %3 db %3
db %4 db %4
db %5 db %5
db %6 db %6
db %7 db %7
USE_DELAY USE_DELAY
%xdefine CMDS CMDS DELAY_ID + %1, %xdefine CMDS CMDS DELAY_ID + %1,
%assign NUM_DELAY_LINES NUM_DELAY_LINES + %7 * (1+%1) %assign NUM_DELAY_LINES NUM_DELAY_LINES + %7 * (1+%1)
@ -214,9 +214,9 @@ endstruc
%macro SU_BEGIN_DELTIMES 0 %macro SU_BEGIN_DELTIMES 0
SECT_DATA(sudeltim) SECT_DATA(sudeltim)
EXPORT MANGLE_DATA(su_delay_times) EXPORT MANGLE_DATA(su_delay_times)
dw 0 dw 0
%endmacro %endmacro
%define SU_END_DELTIMES %define SU_END_DELTIMES
@ -224,33 +224,33 @@ endstruc
%macro DELTIME 1-* %macro DELTIME 1-*
%rep %0 %rep %0
dw %1 dw %1
%rotate 1 %rotate 1
%endrep %endrep
%endmacro %endmacro
%define PREGAIN(val) val
%define DRY(val) val
%define FEEDBACK(val) val
%define DEPTH(val) val
%define DAMP(val) val
%define DELAY(val) val
%define COUNT(val) val
struc su_delay_ports %define PREGAIN(val) val
.pregain resd 1 %define DRY(val) val
.dry resd 1 %define FEEDBACK(val) val
.feedback resd 1 %define DEPTH(val) val
.damp resd 1 %define DAMP(val) val
.freq resd 1 %define DELAY(val) val
.ports %define COUNT(val) val
struc su_delay_ports
.pregain resd 1
.dry resd 1
.feedback resd 1
.damp resd 1
.freq resd 1
.ports
endstruc endstruc
struc su_delayline_wrk struc su_delayline_wrk
.time resd 1 .time resd 1
.filtstate resd 1 .filtstate resd 1
.dcin resd 1 .dcin resd 1
.dcout resd 1 .dcout resd 1
.buffer resd MAX_DELAY .buffer resd MAX_DELAY
.size .size
endstruc endstruc

View File

@ -7,7 +7,7 @@
; valptr : pointer to the first unit's value of current voice ; valptr : pointer to the first unit's value of current voice
; comptr : pointer to the first command of current voice ; comptr : pointer to the first command of current voice
; COM : pointer to the command after current command ; COM : pointer to the command after current command
; Output: WRK : pointer to the next unit to be processed ; Output: WRK : pointer to the next unit to be processed
; VAL : pointer to the values of the next to be processed ; VAL : pointer to the values of the next to be processed
; COM : pointer to the next command to be executed ; COM : pointer to the next command to be executed
; ;
@ -20,7 +20,7 @@ SECT_TEXT(suopadvn)
%ifdef INCLUDE_POLYPHONY %ifdef INCLUDE_POLYPHONY
EXPORT MANGLE_FUNC(su_op_advance,0) ; Stack: addr voice wrkptr valptr comptr EXPORT MANGLE_FUNC(su_op_advance,0) ; Stack: addr voice wrkptr valptr comptr
mov WRK, dword [esp+8] ; WRK = wrkptr mov WRK, dword [esp+8] ; WRK = wrkptr
add WRK, su_voice.size ; move to next voice add WRK, su_voice.size ; move to next voice
mov dword [esp+8], WRK ; update stack mov dword [esp+8], WRK ; update stack
@ -40,7 +40,7 @@ su_op_advance_finish:
%else %else
EXPORT MANGLE_FUNC(su_op_advance,0) ; Stack: addr voice wrkptr valptr comptr EXPORT MANGLE_FUNC(su_op_advance,0) ; Stack: addr voice wrkptr valptr comptr
mov WRK, dword [esp+8] ; WRK = wrkptr mov WRK, dword [esp+8] ; WRK = wrkptr
add WRK, su_voice.size ; move to next voice add WRK, su_voice.size ; move to next voice
mov dword [esp+8], WRK ; update stack mov dword [esp+8], WRK ; update stack
@ -60,4 +60,4 @@ c_dc_const dd 0.99609375 ; R = 1 - (pi*2 * frequency /sam
%define C_DC_CONST %define C_DC_CONST
%endif %endif
%endif %endif

View File

@ -12,7 +12,7 @@ EXPORT MANGLE_FUNC(su_op_out,0) ; l r
call su_op_out_mono call su_op_out_mono
add eax, 4 add eax, 4
su_op_out_mono: su_op_out_mono:
%endif %endif
fmul dword [edx+su_out_ports.gain] ; g*l fmul dword [edx+su_out_ports.gain] ; g*l
fadd dword [eax] ; g*l+o fadd dword [eax] ; g*l+o
fstp dword [eax] ; o'=g*l+o fstp dword [eax] ; o'=g*l+o
@ -47,7 +47,7 @@ EXPORT MANGLE_FUNC(su_op_send,0)
jnz su_op_send_mono jnz su_op_send_mono
fxch ; swap them back: l r fxch ; swap them back: l r
su_op_send_mono: su_op_send_mono:
%endif %endif
%ifdef INCLUDE_GLOBAL_SEND %ifdef INCLUDE_GLOBAL_SEND
test eax, SEND_GLOBAL test eax, SEND_GLOBAL
jz su_op_send_skipglobal jz su_op_send_skipglobal
@ -55,7 +55,7 @@ su_op_send_mono:
su_op_send_skipglobal: su_op_send_skipglobal:
%endif %endif
test eax, SEND_POP ; if the SEND_POP bit is not set test eax, SEND_POP ; 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
su_op_send_skippush: ; there is signal s, but maybe also another: s (s) su_op_send_skippush: ; there is signal s, but maybe also another: s (s)
fld dword [edx+su_send_ports.amount] ; a l (l) fld dword [edx+su_send_ports.amount] ; a l (l)
@ -67,4 +67,4 @@ su_op_send_skippush: ; there is signal s, but maybe also another: s (
fstp dword [ecx+su_unit.size+eax*4] ; (l) fstp dword [ecx+su_unit.size+eax*4] ; (l)
ret ret
%endif ; SU_USE_SEND > -1 %endif ; SU_USE_SEND > -1

View File

@ -4,26 +4,26 @@
%assign OUT_ID -1 %assign OUT_ID -1
%macro USE_OUT 0 %macro USE_OUT 0
%if OUT_ID == -1 %if OUT_ID == -1
%assign OUT_ID CUR_ID %assign OUT_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_out,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_out,0),
%xdefine NUMPARAMS NUMPARAMS 1, %xdefine NUMPARAMS NUMPARAMS 1,
%endif %endif
%endmacro %endmacro
%macro SU_OUT 2 %macro SU_OUT 2
db %2 db %2
USE_OUT USE_OUT
%xdefine CMDS CMDS OUT_ID+%1, %xdefine CMDS CMDS OUT_ID+%1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_OUT %define INCLUDE_STEREO_OUT
%endif %endif
%endmacro %endmacro
%define GAIN(val) val %define GAIN(val) val
struc su_out_ports struc su_out_ports
.gain resd 1 .gain resd 1
.params .params
endstruc endstruc
@ -33,34 +33,34 @@ endstruc
%assign SEND_ID -1 %assign SEND_ID -1
%macro USE_SEND 0 %macro USE_SEND 0
%if SEND_ID == -1 %if SEND_ID == -1
%assign SEND_ID CUR_ID %assign SEND_ID CUR_ID
%assign CUR_ID CUR_ID + 2 %assign CUR_ID CUR_ID + 2
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_send,0), %xdefine OPCODES OPCODES MANGLE_FUNC(su_op_send,0),
%xdefine NUMPARAMS NUMPARAMS 1, %xdefine NUMPARAMS NUMPARAMS 1,
%endif %endif
%endmacro %endmacro
%macro SU_SEND 3 %macro SU_SEND 3
db %2 db %2
dw %3 dw %3
USE_SEND USE_SEND
%xdefine CMDS CMDS SEND_ID + %1, %xdefine CMDS CMDS SEND_ID + %1,
%if %1 == STEREO %if %1 == STEREO
%define INCLUDE_STEREO_SEND %define INCLUDE_STEREO_SEND
%endif %endif
%if (%3) & SEND_GLOBAL == SEND_GLOBAL %if (%3) & SEND_GLOBAL == SEND_GLOBAL
%define INCLUDE_GLOBAL_SEND %define INCLUDE_GLOBAL_SEND
%endif %endif
%endmacro %endmacro
%define AMOUNT(val) val %define AMOUNT(val) val
%define PORT(unit,unittype,port) (unit*su_unit.size + su_ %+ unittype %+ _ports. %+ port + su_unit.ports)/4 %define PORT(unit,unittype,port) (unit*su_unit.size + su_ %+ unittype %+ _ports. %+ port + su_unit.ports)/4
%define GLOBALPORT(voice,unit,unittype,port) SEND_GLOBAL + (su_synth.voices+voice*su_voice.size+su_voice.workspace+unit*su_unit.size + su_ %+ unittype %+ _ports. %+ port + su_unit.ports)/4 %define GLOBALPORT(voice,unit,unittype,port) SEND_GLOBAL + (su_synth.voices+voice*su_voice.size+su_voice.workspace+unit*su_unit.size + su_ %+ unittype %+ _ports. %+ port + su_unit.ports)/4
%define OUTPORT 0 %define OUTPORT 0
%define SEND_POP 0x8000 %define SEND_POP 0x8000
%define SEND_GLOBAL 0x4000 %define SEND_GLOBAL 0x4000
struc su_send_ports struc su_send_ports
.amount resd 1 .amount resd 1
.params .params
endstruc endstruc

View File

@ -21,7 +21,7 @@ EXPORT MANGLE_FUNC(su_op_envelope,0)
ret ret
su_op_envelope_mono: su_op_envelope_mono:
%endif %endif
kmENV_func_do: kmENV_func_do:
mov eax, dword [ecx+su_unit.size-su_voice.workspace+su_voice.release] ; eax = su_instrument.release mov eax, dword [ecx+su_unit.size-su_voice.workspace+su_voice.release] ; eax = su_instrument.release
test eax, eax ; if (eax == 0) test eax, eax ; if (eax == 0)
je kmENV_func_process ; goto process je kmENV_func_process ; goto process
@ -83,7 +83,7 @@ EXPORT MANGLE_FUNC(su_op_noise,0)
call dword [esp] call dword [esp]
su_op_noise_mono: su_op_noise_mono:
%endif %endif
call MANGLE_FUNC(FloatRandomNumber,0) call MANGLE_FUNC(FloatRandomNumber,0)
fld dword [edx+su_noise_ports.shape] fld dword [edx+su_noise_ports.shape]
call su_waveshaper call su_waveshaper
fld dword [edx+su_noise_ports.gain] fld dword [edx+su_noise_ports.gain]
@ -136,12 +136,12 @@ su_op_oscillat_normalize_note:
su_op_oscillat_normalized: su_op_oscillat_normalized:
fadd dword [WRK+su_osc_wrk.phase] fadd dword [WRK+su_osc_wrk.phase]
fst dword [WRK+su_osc_wrk.phase] fst dword [WRK+su_osc_wrk.phase]
fadd dword [edx+su_osc_ports.phaseofs] fadd dword [edx+su_osc_ports.phaseofs]
fld1 fld1
fadd st1, st0 fadd st1, st0
fxch fxch
fprem fprem
fstp st1 fstp st1
fld dword [edx+su_osc_ports.color] ; // c p fld dword [edx+su_osc_ports.color] ; // c p
; every oscillator test included if needed ; every oscillator test included if needed
%ifdef INCLUDE_SINE %ifdef INCLUDE_SINE
@ -181,7 +181,7 @@ su_op_oscillat_gain:
SECT_DATA(suconst) SECT_DATA(suconst)
%ifndef C_FREQ_NORMALIZE %ifndef C_FREQ_NORMALIZE
c_freq_normalize dd 0.000092696138 ; // 220.0/(2^(69/12)) / 44100.0 c_freq_normalize dd 0.000092696138 ; // 220.0/(2^(69/12)) / 44100.0
%define C_FREQ_NORMALIZE %define C_FREQ_NORMALIZE
%endif %endif
c_lfo_normalize dd 0.000038 c_lfo_normalize dd 0.000038
@ -268,7 +268,7 @@ go4kVCO_gate_bit: ; stack: 0/1, let's call it x
fmul dword [c_dc_const] ; c(g-x) x fmul dword [c_dc_const] ; c(g-x) x
faddp st1, st0 ; x+c(g-x) faddp st1, st0 ; x+c(g-x)
fst dword [WRK+su_osc_wrk.gatestate] ; g'=x+c(g-x) fst dword [WRK+su_osc_wrk.gatestate] ; g'=x+c(g-x)
pop eax ; Another way to see this (c~0.996) pop eax ; Another way to see this (c~0.996)
ret ; g'=cg+(1-c)x ret ; g'=cg+(1-c)x
; This is a low-pass to smooth the gate transitions ; This is a low-pass to smooth the gate transitions
@ -284,7 +284,7 @@ SECT_DATA(suconst)
%define C_DC_CONST %define C_DC_CONST
%endif %endif
%endif %endif
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; LOAD_VAL opcode ; LOAD_VAL opcode
@ -300,8 +300,8 @@ SECT_TEXT(suloadvl)
EXPORT MANGLE_FUNC(su_op_load_val,0) EXPORT MANGLE_FUNC(su_op_load_val,0)
%ifdef INCLUDE_STEREO_LOAD_VAL %ifdef INCLUDE_STEREO_LOAD_VAL
jnc su_op_load_val_mono jnc su_op_load_val_mono
call su_load_val_mono call su_load_val_mono
su_load_val_mono: su_load_val_mono:
%endif %endif
fld dword [edx+su_load_val_ports.value] ; v fld dword [edx+su_load_val_ports.value] ; v
@ -309,4 +309,4 @@ su_load_val_mono:
fadd st0 ; 2*v-1 fadd st0 ; 2*v-1
ret ret
%endif ; SU_USE_LOAD_VAL %endif ; SU_USE_LOAD_VAL

View File

@ -12,11 +12,11 @@
%endmacro %endmacro
%macro SU_ENVELOPE 6 %macro SU_ENVELOPE 6
db %2 db %2
db %3 db %3
db %4 db %4
db %5 db %5
db %6 db %6
USE_ENVELOPE USE_ENVELOPE
%xdefine CMDS CMDS ENVELOPE_ID+%1, %xdefine CMDS CMDS ENVELOPE_ID+%1,
%if %1 == STEREO %if %1 == STEREO
@ -24,32 +24,32 @@
%endif %endif
%endmacro %endmacro
%define ATTAC(val) val %define ATTAC(val) val
%define DECAY(val) val %define DECAY(val) val
%define SUSTAIN(val) val %define SUSTAIN(val) val
%define RELEASE(val) val %define RELEASE(val) val
%define GAIN(val) val %define GAIN(val) val
struc su_env_ports struc su_env_ports
.attac resd 1 .attac resd 1
.decay resd 1 .decay resd 1
.sustain resd 1 .sustain resd 1
.release resd 1 .release resd 1
.gain resd 1 .gain resd 1
.params .params
endstruc endstruc
struc su_env_work struc su_env_work
.state resd 1 .state resd 1
.level resd 1 .level resd 1
.size .size
endstruc endstruc
%define ENV_STATE_ATTAC 0 %define ENV_STATE_ATTAC 0
%define ENV_STATE_DECAY 1 %define ENV_STATE_DECAY 1
%define ENV_STATE_SUSTAIN 2 %define ENV_STATE_SUSTAIN 2
%define ENV_STATE_RELEASE 3 %define ENV_STATE_RELEASE 3
%define ENV_STATE_OFF 4 %define ENV_STATE_OFF 4
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; OSCILLAT structs ; OSCILLAT structs
@ -64,18 +64,18 @@ endstruc
%endif %endif
%endmacro %endmacro
%define SINE 0x40 %define SINE 0x40
%define TRISAW 0x20 %define TRISAW 0x20
%define PULSE 0x10 %define PULSE 0x10
%define LFO 0x08 %define LFO 0x08
%define GATE 0x04 %define GATE 0x04
%macro SU_OSCILLAT 8 %macro SU_OSCILLAT 8
db %2 db %2
db %3 db %3
db %4 db %4
db %5 db %5
db %6 db %6
db %7 db %7
db %8 db %8
USE_OSCILLAT USE_OSCILLAT
@ -97,29 +97,29 @@ endstruc
%endif %endif
%endmacro %endmacro
struc su_osc_ports struc su_osc_ports
.transpose resd 1 .transpose resd 1
.detune resd 1 .detune resd 1
.phaseofs resd 1 .phaseofs resd 1
.color resd 1 .color resd 1
.shape resd 1 .shape resd 1
.gain resd 1 .gain resd 1
.params .params
endstruc endstruc
struc su_osc_wrk struc su_osc_wrk
.phase resd 1 .phase resd 1
.gatestate resd 1 .gatestate resd 1
.size .size
endstruc endstruc
%define TRANSPOSE(val) val %define TRANSPOSE(val) val
%define DETUNE(val) val %define DETUNE(val) val
%define PHASE(val) val %define PHASE(val) val
%define GATESLOW(val) val %define GATESLOW(val) val
%define GATESHIGH(val) val %define GATESHIGH(val) val
%define COLOR(val) val %define COLOR(val) val
%define SHAPE(val) val %define SHAPE(val) val
%define FLAGS(val) val %define FLAGS(val) val
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
@ -135,9 +135,9 @@ endstruc
%endif %endif
%endmacro %endmacro
%macro SU_NOISE 3 %macro SU_NOISE 3
db %2 db %2
db %3 db %3
USE_NOISE USE_NOISE
%xdefine CMDS CMDS NOISE_ID + %1, %xdefine CMDS CMDS NOISE_ID + %1,
%if %1 == STEREO %if %1 == STEREO
@ -145,9 +145,9 @@ endstruc
%endif %endif
%endmacro %endmacro
struc su_noise_ports struc su_noise_ports
.shape resd 1 .shape resd 1
.gain resd 1 .gain resd 1
.params .params
endstruc endstruc
@ -164,8 +164,8 @@ endstruc
%endif %endif
%endmacro %endmacro
%macro SU_LOAD_VAL 2 %macro SU_LOAD_VAL 2
db %2 db %2
USE_LOAD_VAL USE_LOAD_VAL
%xdefine CMDS CMDS LOAD_VAL_ID+%1, %xdefine CMDS CMDS LOAD_VAL_ID+%1,
%if %1 == STEREO %if %1 == STEREO
@ -173,13 +173,13 @@ endstruc
%endif %endif
%endmacro %endmacro
%define VALUE(val) val %define VALUE(val) val
struc su_load_val_ports struc su_load_val_ports
.value resd 1 .value resd 1
.params .params
endstruc endstruc
struc su_load_val_wrk struc su_load_val_wrk
.size .size
endstruc endstruc

View File

@ -32,18 +32,18 @@ c_32767 dd 32767.0
%macro output_sound 0 %macro output_sound 0
%ifndef SU_USE_16BIT_OUTPUT %ifndef SU_USE_16BIT_OUTPUT
%ifndef SU_CLIP_OUTPUT ; The modern way. No need to clip; OS can do it. %ifndef SU_CLIP_OUTPUT ; The modern way. No need to clip; OS can do it.
mov edi, dword [esp+44] ; edi containts ptr mov edi, dword [esp+44] ; edi containts ptr
mov esi, su_synth_obj+su_synth.left mov esi, su_synth_obj+su_synth.left
movsd ; copy left channel to output buffer movsd ; copy left channel to output buffer
movsd ; copy right channel to output buffer movsd ; copy right channel to output buffer
mov dword [esp+44], edi ; save back the updated ptr mov dword [esp+44], edi ; save back the updated ptr
lea edi, [esi-8] lea edi, [esi-8]
xor eax,eax xor eax,eax
stosd ; clear left channel so the VM is ready to write them again stosd ; clear left channel so the VM is ready to write them again
stosd ; clear right channel so the VM is ready to write them again stosd ; clear right channel so the VM is ready to write them again
%else %else
mov esi, dword [esp+44] ; esi points to the output buffer mov esi, dword [esp+44] ; esi points to the output buffer
xor ecx,ecx xor ecx,ecx
xor eax,eax xor eax,eax
%%loop: ; loop over two channels, left & right %%loop: ; loop over two channels, left & right
fld dword [su_synth_obj+su_synth.left+ecx*4] fld dword [su_synth_obj+su_synth.left+ecx*4]
@ -63,7 +63,7 @@ c_32767 dd 32767.0
fld dword [edi] fld dword [edi]
call MANGLE_FUNC(su_clip_op,0) call MANGLE_FUNC(su_clip_op,0)
fmul dword [c_32767] fmul dword [c_32767]
push eax push eax
fistp dword [esp] fistp dword [esp]
pop eax pop eax
mov word [esi],ax ; // store integer converted right sample mov word [esi],ax ; // store integer converted right sample
@ -87,7 +87,7 @@ SECT_TEXT(surender)
EXPORT MANGLE_FUNC(su_render,4) ; Stack: ptr EXPORT MANGLE_FUNC(su_render,4) ; Stack: ptr
pushad ; Stack: pushad ptr pushad ; Stack: pushad ptr
xor eax, eax ; ecx is the current row xor eax, eax ; ecx is the current row
su_render_rowloop: ; loop through every row in the song su_render_rowloop: ; loop through every row in the song
push eax ; Stack: row pushad ptr push eax ; Stack: row pushad ptr
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
@ -97,11 +97,11 @@ su_render_sampleloop: ; loop through every sample in the row
output_sound ; *ptr++ = left, *ptr++ = right output_sound ; *ptr++ = left, *ptr++ = right
pop eax ; Stack: row pushad ptr pop eax ; Stack: row pushad ptr
inc eax inc eax
cmp eax, SAMPLES_PER_ROW cmp eax, SAMPLES_PER_ROW
jl su_render_sampleloop jl su_render_sampleloop
pop eax ; Stack: pushad ptr pop eax ; Stack: pushad ptr
inc eax inc eax
cmp eax, TOTAL_ROWS cmp eax, TOTAL_ROWS
jl su_render_rowloop jl su_render_rowloop
popad ; Stack: ptr popad ; Stack: ptr
ret 4 ; Stack emptied by ret ret 4 ; Stack emptied by ret
@ -116,19 +116,19 @@ SECT_TEXT(suupdvce)
%ifdef INCLUDE_MULTIVOICE_TRACKS %ifdef INCLUDE_MULTIVOICE_TRACKS
su_update_voices: ; Stack: retaddr row su_update_voices: ; Stack: retaddr row
xor edx, edx xor edx, edx
mov ebx, PATTERN_SIZE mov ebx, PATTERN_SIZE
div ebx ; eax = current pattern, edx = current row in pattern div ebx ; eax = current pattern, edx = current row in pattern
lea esi, [MANGLE_DATA(su_tracks)+eax] ; esi points to the pattern data for current track lea esi, [MANGLE_DATA(su_tracks)+eax] ; esi points to the pattern data for current track
xor eax, eax ; eax is the first voice of next track xor eax, eax ; eax is the first voice of next track
xor ebx, ebx ; ebx is the first voice of current track xor ebx, ebx ; ebx is the first voice of current track
xor ebp, ebp ; ebp is the current track being processed xor ebp, ebp ; ebp is the current track being processed
su_update_voices_trackloop: su_update_voices_trackloop:
movzx eax, byte [esi] ; eax = current pattern movzx eax, byte [esi] ; eax = current pattern
imul eax, PATTERN_SIZE ; eax = offset to current pattern data imul eax, PATTERN_SIZE ; eax = offset to current pattern data
movzx eax, byte [MANGLE_DATA(su_patterns)+eax+edx] ; eax = note movzx eax, byte [MANGLE_DATA(su_patterns)+eax+edx] ; eax = note
push edx ; Stack: ptrnrow push edx ; Stack: ptrnrow
xor edx, edx ; edx=0 xor edx, edx ; edx=0
mov ecx, ebx ; ecx=first voice of the track to be done mov ecx, ebx ; ecx=first voice of the track to be done
su_calculate_voices_loop: ; do { su_calculate_voices_loop: ; do {
@ -136,66 +136,66 @@ su_calculate_voices_loop: ; do {
inc edx ; edx++ // edx=numvoices inc edx ; edx++ // edx=numvoices
inc ecx ; ecx++ // ecx=the first voice of next track inc ecx ; ecx++ // ecx=the first voice of next track
jc su_calculate_voices_loop ; } while bit ecx-1 of bitmask is on jc su_calculate_voices_loop ; } while bit ecx-1 of bitmask is on
push ecx ; Stack: next_instr ptrnrow push ecx ; Stack: next_instr ptrnrow
cmp al, HLD ; anything but hold causes action cmp al, HLD ; anything but hold causes action
je short su_update_voices_nexttrack je short su_update_voices_nexttrack
mov ecx, dword [su_current_voiceno+ebp*4] mov ecx, dword [su_current_voiceno+ebp*4]
mov edi, ecx mov edi, ecx
add edi, ebx add edi, ebx
imul edi, edi, su_voice.size imul edi, edi, su_voice.size
mov dword [su_synth_obj+su_synth.voices+edi+su_voice.release],1 ; set the voice currently active to release mov dword [su_synth_obj+su_synth.voices+edi+su_voice.release],1 ; set the voice currently active to release
cmp al, HLD ; if cl < HLD (no new note triggered) cmp al, HLD ; if cl < HLD (no new note triggered)
jl su_update_voices_nexttrack ; goto nexttrack jl su_update_voices_nexttrack ; goto nexttrack
inc ecx ; curvoice++ inc ecx ; curvoice++
cmp ecx, edx ; if (curvoice >= num_voices) cmp ecx, edx ; if (curvoice >= num_voices)
jl su_update_voices_skipreset jl su_update_voices_skipreset
xor ecx,ecx ; curvoice = 0 xor ecx,ecx ; curvoice = 0
su_update_voices_skipreset: su_update_voices_skipreset:
mov dword [su_current_voiceno+ebp*4],ecx mov dword [su_current_voiceno+ebp*4],ecx
add ecx, ebx add ecx, ebx
imul ecx, ecx, su_voice.size imul ecx, ecx, su_voice.size
lea edi, [su_synth_obj+su_synth.voices+ecx] lea edi, [su_synth_obj+su_synth.voices+ecx]
stosd ; save note stosd ; save note
mov ecx, (su_voice.size - su_voice.release)/4 mov ecx, (su_voice.size - su_voice.release)/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
su_update_voices_nexttrack: su_update_voices_nexttrack:
pop ebx ; ebx=first voice of next instrument, Stack: ptrnrow pop ebx ; ebx=first voice of next instrument, Stack: ptrnrow
pop edx ; edx=patrnrow pop edx ; edx=patrnrow
add esi, MAX_PATTERNS add esi, MAX_PATTERNS
inc ebp inc ebp
cmp ebp, MAX_TRACKS cmp ebp, MAX_TRACKS
jl short su_update_voices_trackloop jl short su_update_voices_trackloop
ret ret
%else ; INCLUDE_MULTIVOICE_TRACKS not defined -> one voice per track version %else ; INCLUDE_MULTIVOICE_TRACKS not defined -> one voice per track version
su_update_voices: ; Stack: retaddr row su_update_voices: ; Stack: retaddr row
xor edx, edx xor edx, edx
mov ebx, PATTERN_SIZE mov ebx, PATTERN_SIZE
div ebx ; eax = current pattern, edx = current row in pattern div ebx ; eax = current pattern, edx = current row in pattern
lea esi, [MANGLE_DATA(su_tracks)+eax] ; esi points to the pattern data for current track lea esi, [MANGLE_DATA(su_tracks)+eax] ; esi points to the pattern data for current track
lea edi, [su_synth_obj+su_synth.voices] lea edi, [su_synth_obj+su_synth.voices]
mov ebp, MAX_TRACKS mov ebp, MAX_TRACKS
su_update_voices_trackloop: su_update_voices_trackloop:
movzx eax, byte [esi] ; eax = current pattern movzx eax, byte [esi] ; eax = current pattern
imul eax, PATTERN_SIZE ; eax = offset to current pattern data imul eax, PATTERN_SIZE ; eax = offset to current pattern data
movzx eax, byte [MANGLE_DATA(su_patterns)+eax+edx] ; ecx = note movzx eax, byte [MANGLE_DATA(su_patterns)+eax+edx] ; ecx = note
cmp al, HLD ; anything but hold causes action cmp al, HLD ; anything but hold causes action
je short su_update_voices_nexttrack je short su_update_voices_nexttrack
mov dword [edi+su_voice.release],1 ; set the voice currently active to release mov dword [edi+su_voice.release],1 ; set the voice currently active to release
jl su_update_voices_nexttrack ; if cl < HLD (no new note triggered) goto nexttrack jl su_update_voices_nexttrack ; if cl < HLD (no new note triggered) goto nexttrack
su_update_voices_retrigger: su_update_voices_retrigger:
stosd ; save note stosd ; save note
mov ecx, (su_voice.size - su_voice.release)/4 mov ecx, (su_voice.size - su_voice.release)/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 jmp short su_update_voices_skipadd
su_update_voices_nexttrack: su_update_voices_nexttrack:
add edi, su_voice.size add edi, su_voice.size
su_update_voices_skipadd: su_update_voices_skipadd:
add esi, MAX_PATTERNS add esi, MAX_PATTERNS
dec ebp dec ebp
jnz short su_update_voices_trackloop jnz short su_update_voices_trackloop
ret ret

View File

@ -42,7 +42,7 @@ c_i12 dd 0x3DAAAAAA
EXPORT MANGLE_DATA(LFO_NORMALIZE) EXPORT MANGLE_DATA(LFO_NORMALIZE)
dd DEF_LFO_NORMALIZE dd DEF_LFO_NORMALIZE
%ifdef INCLUDE_POLYPHONY %ifdef INCLUDE_POLYPHONY
su_polyphony_bitmask dd POLYPHONY_BITMASK ; does the next voice reuse the current opcodes? su_polyphony_bitmask dd POLYPHONY_BITMASK ; does the next voice reuse the current opcodes?
%endif %endif
@ -58,7 +58,7 @@ su_polyphony_bitmask dd POLYPHONY_BITMASK ; does the next voice reuse th
SECT_TEXT(surunvm) SECT_TEXT(surunvm)
EXPORT MANGLE_FUNC(su_run_vm,0) EXPORT MANGLE_FUNC(su_run_vm,0)
mov COM, MANGLE_DATA(su_commands) ; COM points to vm code mov COM, MANGLE_DATA(su_commands) ; COM points to vm code
mov VAL, MANGLE_DATA(su_params) ; VAL points to unit params mov VAL, MANGLE_DATA(su_params) ; VAL points to unit params
; su_unit.size will be added back before WRK is used ; su_unit.size will be added back before WRK is used
mov WRK, su_synth_obj + su_synth.voices + su_voice.workspace - su_unit.size mov WRK, su_synth_obj + su_synth.voices + su_voice.workspace - su_unit.size
@ -74,16 +74,16 @@ EXPORT MANGLE_FUNC(su_run_vm,0)
su_run_vm_loop: ; loop until all voices done su_run_vm_loop: ; loop until all voices done
movzx eax, byte [COM] ; eax = command byte movzx eax, byte [COM] ; eax = command byte
inc COM ; move to next instruction inc COM ; move to next instruction
add WRK, su_unit.size ; move WRK to next unit add WRK, su_unit.size ; move WRK to next unit
push eax push eax
shr eax,1 shr eax,1
mov al,byte [eax+su_opcode_numparams] mov al,byte [eax+su_opcode_numparams]
push eax push eax
call su_transform_values call su_transform_values
mov ecx, dword [esp+8] mov ecx, dword [esp+8]
pop eax pop eax
shr eax,1 shr eax,1
call dword [eax*4+su_synth_commands] ; call the function corresponding to the instruction call dword [eax*4+su_synth_commands] ; call the function corresponding to the instruction
cmp dword [esp],MAX_VOICES ; if (voice < MAX_VOICES) cmp dword [esp],MAX_VOICES ; if (voice < MAX_VOICES)
jl su_run_vm_loop ; goto vm_loop jl su_run_vm_loop ; goto vm_loop
add esp, 16 ; Stack cleared add esp, 16 ; Stack cleared
@ -186,9 +186,9 @@ EXPORT MANGLE_FUNC(su_power,0)
%include "opcodes/flowcontrol.asm" %include "opcodes/flowcontrol.asm"
%include "opcodes/sources.asm" %include "opcodes/sources.asm"
%include "opcodes/sinks.asm" %include "opcodes/sinks.asm"
; warning: at the moment effects has to be assembled after ; warning: at the moment effects has to be assembled after
; sources, as sources.asm defines SU_USE_WAVESHAPER ; sources, as sources.asm defines SU_USE_WAVESHAPER
; if needed. ; if needed.
%include "opcodes/effects.asm" %include "opcodes/effects.asm"
%include "player.asm" %include "player.asm"
%include "introspection.asm" %include "introspection.asm"

View File

@ -12,25 +12,25 @@
%macro EXPORT 1 %macro EXPORT 1
global %1 global %1
%1 %1
%endmacro %endmacro
%ifidn __OUTPUT_FORMAT__,win32 %ifidn __OUTPUT_FORMAT__,win32
; on win32, function f with n parameters is mangled as "_f@n" ; on win32, function f with n parameters is mangled as "_f@n"
%define MANGLE_FUNC(f,n) _ %+ f %+ @ %+ n %define MANGLE_FUNC(f,n) _ %+ f %+ @ %+ n
%define WIN_OR_MAC %define WIN_OR_MAC
%endif %endif
%ifidn __OUTPUT_FORMAT__,elf32 %ifidn __OUTPUT_FORMAT__,elf32
; on linux, function f with n parameters is mangled as "f" ; on linux, function f with n parameters is mangled as "f"
%define MANGLE_FUNC(f,n) f %define MANGLE_FUNC(f,n) f
%endif %endif
%ifidn __OUTPUT_FORMAT__,macho32 %ifidn __OUTPUT_FORMAT__,macho32
; on mac, function f with x parameters is mangled as "_f" ; on mac, function f with x parameters is mangled as "_f"
%define MANGLE_FUNC(f,n) _f %define MANGLE_FUNC(f,n) _f
%define WIN_OR_MAC %define WIN_OR_MAC
%endif %endif
%ifdef WIN_OR_MAC %ifdef WIN_OR_MAC
; Windows has crinkler so one may USE_SECTIONS to put everything in custom sections to aid crinkler. ; Windows has crinkler so one may USE_SECTIONS to put everything in custom sections to aid crinkler.
@ -76,35 +76,35 @@
;%define SU_CLIP_OUTPUT ; // removing this skips clipping code for the final output ;%define SU_CLIP_OUTPUT ; // removing this skips clipping code for the final output
%define SU_USE_DST ; // removing this will skip DST unit %define SU_USE_DST ; // removing this will skip DST unit
%define SU_USE_DLL ; // removing this will skip DLL unit %define SU_USE_DLL ; // removing this will skip DLL unit
%define SU_USE_PAN ; // removing this will skip PAN unit %define SU_USE_PAN ; // removing this will skip PAN unit
%define SU_USE_GLOBAL_DLL ; // removing this will skip global dll processing %define SU_USE_GLOBAL_DLL ; // removing this will skip global dll processing
%define SU_USE_FSTG ; // removing this will skip global store unit %define SU_USE_FSTG ; // removing this will skip global store unit
%define SU_USE_FLD ; // removing this will skip float load unit %define SU_USE_FLD ; // removing this will skip float load unit
%define SU_USE_GLITCH ; // removing this will skip GLITCH unit %define SU_USE_GLITCH ; // removing this will skip GLITCH unit
%define SU_USE_ENV_CHECK ; // removing this skips checks if processing is needed %define SU_USE_ENV_CHECK ; // removing this skips checks if processing is needed
%define SU_USE_VCO_CHECK ; // removing this skips checks if processing is needed %define SU_USE_VCO_CHECK ; // removing this skips checks if processing is needed
%define SU_USE_VCO_PHASE_OFFSET ; // removing this will skip initial phase offset code %define SU_USE_VCO_PHASE_OFFSET ; // removing this will skip initial phase offset code
%define SU_USE_VCO_SHAPE ; // removing this skips waveshaping code %define SU_USE_VCO_SHAPE ; // removing this skips waveshaping code
%define SU_USE_VCO_GATE ; // removing this skips gate code %define SU_USE_VCO_GATE ; // removing this skips gate code
%define SU_USE_VCO_MOD_FM ; // removing this skips frequency modulation code %define SU_USE_VCO_MOD_FM ; // removing this skips frequency modulation code
%define SU_USE_VCO_MOD_DM ; // removing this skips detune modulation code %define SU_USE_VCO_MOD_DM ; // removing this skips detune modulation code
%define SU_USE_VCO_STEREO ; // removing this skips stereo code %define SU_USE_VCO_STEREO ; // removing this skips stereo code
%define SU_USE_VCF_CHECK ; // removing this skips checks if processing is needed %define SU_USE_VCF_CHECK ; // removing this skips checks if processing is needed
%define SU_USE_VCF_HIGH ; // removing this skips code for high output %define SU_USE_VCF_HIGH ; // removing this skips code for high output
%define SU_USE_VCF_BAND ; // removing this skips code for band output %define SU_USE_VCF_BAND ; // removing this skips code for band output
%define SU_USE_VCF_PEAK ; // removing this skips code for peak output %define SU_USE_VCF_PEAK ; // removing this skips code for peak output
%define SU_USE_VCF_STEREO ; // removing this skips code for stereo filter output %define SU_USE_VCF_STEREO ; // removing this skips code for stereo filter output
%define SU_USE_DST_CHECK ; // removing this skips checks if processing is needed %define SU_USE_DST_CHECK ; // removing this skips checks if processing is needed
%define SU_USE_DST_SH ; // removing this skips sample and hold code %define SU_USE_DST_SH ; // removing this skips sample and hold code
%define SU_USE_DST_STEREO ; // removing this skips stereo processing %define SU_USE_DST_STEREO ; // removing this skips stereo processing
%define SU_USE_DLL_NOTE_SYNC ; // removing this will skip delay length adjusting code (karplus strong) %define SU_USE_DLL_NOTE_SYNC ; // removing this will skip delay length adjusting code (karplus strong)
%define SU_USE_DLL_CHORUS ; // removing this will skip delay chorus/flanger code %define SU_USE_DLL_CHORUS ; // removing this will skip delay chorus/flanger code
%define SU_USE_DLL_CHORUS_CLAMP ; // removing this will skip chorus lfo phase clamping %define SU_USE_DLL_CHORUS_CLAMP ; // removing this will skip chorus lfo phase clamping
%define SU_USE_DLL_DAMP ; // removing this will skip dll damping code %define SU_USE_DLL_DAMP ; // removing this will skip dll damping code
%define SU_USE_DLL_DC_FILTER ; // removing this will skip dll dc offset removal code %define SU_USE_DLL_DC_FILTER ; // removing this will skip dll dc offset removal code
%define SU_USE_FSTG_CHECK ; // removing this skips checks if processing is needed %define SU_USE_FSTG_CHECK ; // removing this skips checks if processing is needed
%define SU_USE_WAVESHAPER_CLIP ; // removing this will skip clipping code %define SU_USE_WAVESHAPER_CLIP ; // removing this will skip clipping code
%endif %endif
%ifdef SU_USE_VCO_SHAPE %ifdef SU_USE_VCO_SHAPE
@ -136,22 +136,22 @@
; // synth defines ; // synth defines
; //---------------------------------------------------------------------------------------- ; //----------------------------------------------------------------------------------------
%define MAX_DELAY 65536 %define MAX_DELAY 65536
%define MAX_UNITS 64 %define MAX_UNITS 64
%define ABSOLUTE_MAX_VOICES 32 %define ABSOLUTE_MAX_VOICES 32
%ifndef SAMPLE_RATE %ifndef SAMPLE_RATE
%define SAMPLE_RATE 44100 %define SAMPLE_RATE 44100
%endif %endif
%ifndef HLD %ifndef HLD
%define HLD 1 %define HLD 1
%endif %endif
%define TOTAL_ROWS (MAX_PATTERNS*PATTERN_SIZE) %define TOTAL_ROWS (MAX_PATTERNS*PATTERN_SIZE)
%define SAMPLES_PER_ROW (SAMPLE_RATE*4*60/(BPM*16)) %define SAMPLES_PER_ROW (SAMPLE_RATE*4*60/(BPM*16))
%define DEF_LFO_NORMALIZE 0.000038 %define DEF_LFO_NORMALIZE 0.000038
%define MAX_SAMPLES (SAMPLES_PER_ROW*TOTAL_ROWS) %define MAX_SAMPLES (SAMPLES_PER_ROW*TOTAL_ROWS)
%macro SU_BEGIN_PATCH 0 %macro SU_BEGIN_PATCH 0
SECT_DATA(params) SECT_DATA(params)
@ -163,34 +163,34 @@
SECT_DATA(sucomnds) SECT_DATA(sucomnds)
EXPORT MANGLE_DATA(su_commands) EXPORT MANGLE_DATA(su_commands)
db CMDS db CMDS
%endmacro %endmacro
%define CONCATENATE(x,y) x %+ y %define CONCATENATE(x,y) x %+ y
%define POLYPHONY_BITMASK 0 %define POLYPHONY_BITMASK 0
%assign MAX_VOICES 0 %assign MAX_VOICES 0
%assign MAX_TRACKS 0 %assign MAX_TRACKS 0
%macro SU_BEGIN_INSTRUMENT 1 %macro SU_BEGIN_INSTRUMENT 1
; increment MAX_VOICES equal to %1 and construct the POLYPHONY_BITMASK so that ; increment MAX_VOICES equal to %1 and construct the POLYPHONY_BITMASK so that
; for every except the last, the bit is on ; for every except the last, the bit is on
%rep %1-1 %rep %1-1
%assign POLYPHONY_BITMASK POLYPHONY_BITMASK + (1 << MAX_VOICES) %assign POLYPHONY_BITMASK POLYPHONY_BITMASK + (1 << MAX_VOICES)
%assign MAX_VOICES MAX_VOICES + 1 %assign MAX_VOICES MAX_VOICES + 1
%endrep %endrep
%assign MAX_VOICES MAX_VOICES + 1 ; the last voice increment, without adding bit mask %assign MAX_VOICES MAX_VOICES + 1 ; the last voice increment, without adding bit mask
%if MAX_VOICES > 32 %if MAX_VOICES > 32
%error Error: cannot have more than 32 voices! %error Error: cannot have more than 32 voices!
%endif %endif
%if %1 > 1 %if %1 > 1
%define INCLUDE_POLYPHONY %define INCLUDE_POLYPHONY
%endif %endif
%endmacro %endmacro
%define VOICES(val) val %define VOICES(val) val
%define TRACKS(val) val %define TRACKS(val) val
%macro SU_END_INSTRUMENT 0 %macro SU_END_INSTRUMENT 0
%xdefine CMDS CMDS SU_ADVANCE_ID, %xdefine CMDS CMDS SU_ADVANCE_ID,
%endmacro %endmacro
%assign PATTERN_LENGTH -1 %assign PATTERN_LENGTH -1
@ -245,18 +245,18 @@
%assign MAX_TRACKS MAX_TRACKS + 1 %assign MAX_TRACKS MAX_TRACKS + 1
%if MAX_TRACKS > 32 %if MAX_TRACKS > 32
%error Error: cannot have more than 32 tracks! %error Error: cannot have more than 32 tracks!
%endif %endif
; increment MAX_TRACKS equal to %2 and construct the CHORD_BITMASK so that ; increment MAX_TRACKS equal to %2 and construct the CHORD_BITMASK so that
; for every track except the last track of an instrument, the bit is on ; for every track except the last track of an instrument, the bit is on
%rep %1-1 %rep %1-1
%assign VOICETRACK_BITMASK VOICETRACK_BITMASK + (1 << VOICETRACK_COUNT) %assign VOICETRACK_BITMASK VOICETRACK_BITMASK + (1 << VOICETRACK_COUNT)
%assign VOICETRACK_COUNT VOICETRACK_COUNT + 1 %assign VOICETRACK_COUNT VOICETRACK_COUNT + 1
%endrep %endrep
%assign VOICETRACK_COUNT VOICETRACK_COUNT + 1 ; the last voice increment, without adding bit mask %assign VOICETRACK_COUNT VOICETRACK_COUNT + 1 ; the last voice increment, without adding bit mask
%if VOICETRACK_COUNT > 32 %if VOICETRACK_COUNT > 32
%error Error: cannot have more than a total of 32 voices assigned to tracks. %error Error: cannot have more than a total of 32 voices assigned to tracks.
%endif %endif
%if %1 > 1 %if %1 > 1
%define INCLUDE_MULTIVOICE_TRACKS %define INCLUDE_MULTIVOICE_TRACKS
%endif %endif
@ -276,21 +276,21 @@ endstruc
; //---------------------------------------------------------------------------------------- ; //----------------------------------------------------------------------------------------
; // Voice struct ; // Voice struct
; //---------------------------------------------------------------------------------------- ; //----------------------------------------------------------------------------------------
struc su_voice struc su_voice
.note resd 1 .note resd 1
.release resd 1 .release resd 1
.track resd 1 .track resd 1
.workspace resb MAX_UNITS * su_unit.size .workspace resb MAX_UNITS * su_unit.size
.size .size
endstruc endstruc
; //---------------------------------------------------------------------------------------- ; //----------------------------------------------------------------------------------------
; // Synth struct ; // Synth struct
; //---------------------------------------------------------------------------------------- ; //----------------------------------------------------------------------------------------
struc su_synth struc su_synth
.left resd 1 .left resd 1
.right resd 1 .right resd 1
.voices resb ABSOLUTE_MAX_VOICES * su_voice.size .voices resb ABSOLUTE_MAX_VOICES * su_voice.size
.size .size
endstruc endstruc
%endif ; SOINTU_INC %endif ; SOINTU_INC

View File

@ -1,8 +1,8 @@
function(regression_test testname) function(regression_test testname)
if(${ARGC} LESS 4) if(${ARGC} LESS 4)
set(source ${testname}) set(source ${testname})
else() else()
set(source ${ARGV3}) set(source ${ARGV3})
endif() endif()
add_executable(${testname} ${source}.asm test_renderer.c) add_executable(${testname} ${source}.asm test_renderer.c)
@ -11,30 +11,30 @@ function(regression_test testname)
file(GLOB FOURKLANG ${PROJECT_SOURCE_DIR}/src/*.inc ${PROJECT_SOURCE_DIR}/src/*.asm ${PROJECT_SOURCE_DIR}/src/opcodes/*.asm ${PROJECT_SOURCE_DIR}/src/opcodes/*.inc) file(GLOB FOURKLANG ${PROJECT_SOURCE_DIR}/src/*.inc ${PROJECT_SOURCE_DIR}/src/*.asm ${PROJECT_SOURCE_DIR}/src/opcodes/*.asm ${PROJECT_SOURCE_DIR}/src/opcodes/*.inc)
set_source_files_properties(${source}.asm PROPERTIES OBJECT_DEPENDS "${FOURKLANG}") set_source_files_properties(${source}.asm PROPERTIES OBJECT_DEPENDS "${FOURKLANG}")
set_source_files_properties(${FOURKLANG} PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties(${FOURKLANG} PROPERTIES HEADER_FILE_ONLY TRUE)
add_test(${testname} ${testname}) add_test(${testname} ${testname})
target_compile_definitions(${testname} PUBLIC TEST_NAME="${testname}" SU_USE_INTROSPECTION SU_USE_PLAYER) target_compile_definitions(${testname} PUBLIC TEST_NAME="${testname}" SU_USE_INTROSPECTION SU_USE_PLAYER)
set (rawinput ${CMAKE_CURRENT_SOURCE_DIR}/expected_output/${testname}.raw) set (rawinput ${CMAKE_CURRENT_SOURCE_DIR}/expected_output/${testname}.raw)
set (rawoutput ${CMAKE_CURRENT_BINARY_DIR}/expected_output/${testname}.raw) set (rawoutput ${CMAKE_CURRENT_BINARY_DIR}/expected_output/${testname}.raw)
add_custom_target(${testname}_rawcopy add_custom_target(${testname}_rawcopy
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rawinput} ${rawoutput} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${rawinput} ${rawoutput}
) )
add_dependencies(${testname} ${testname}_rawcopy) add_dependencies(${testname} ${testname}_rawcopy)
if(ARGC GREATER 1) if(ARGC GREATER 1)
if (ARGV1) if (ARGV1)
message("${testname} requires ${ARGV1}") message("${testname} requires ${ARGV1}")
set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED "${ARGV1}") set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED "${ARGV1}")
endif() endif()
endif() endif()
if(ARGC GREATER 2) if(ARGC GREATER 2)
if (ARGV2) if (ARGV2)
message("${testname} setups ${ARGV2}") message("${testname} setups ${ARGV2}")
set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP "${ARGV2}") set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP "${ARGV2}")
endif() endif()
endif() endif()
endfunction(regression_test) endfunction(regression_test)

View File

@ -1,29 +1,29 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1) SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 11025 DELTIME 11025
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,31 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1) SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,damp) + SEND_POP SU_SEND MONO,AMOUNT(32),PORT(3,delay,damp) + SEND_POP
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 11025 DELTIME 11025
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,31 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1) SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,feedback) + SEND_POP SU_SEND MONO,AMOUNT(32),PORT(3,delay,feedback) + SEND_POP
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 11025 DELTIME 11025
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,31 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1) SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,dry) + SEND_POP SU_SEND MONO,AMOUNT(32),PORT(3,delay,dry) + SEND_POP
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 11025 DELTIME 11025
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,31 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
; %define SU_USE_UNDENORMALIZE ; // removing this skips denormalization code in the units ; %define SU_USE_UNDENORMALIZE ; // removing this skips denormalization code in the units
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(0),DECAY(0),SUSTAIN(96),RELEASE(96),GAIN(128) SU_ENVELOPE MONO,ATTAC(0),DECAY(0),SUSTAIN(96),RELEASE(96),GAIN(128)
SU_ENVELOPE MONO,ATTAC(0),DECAY(48),SUSTAIN(0),RELEASE(0),GAIN(128) SU_ENVELOPE MONO,ATTAC(0),DECAY(48),SUSTAIN(0),RELEASE(0),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(64),SHAPE(127),GAIN(64),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(64),SHAPE(127),GAIN(64),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(128),FLAGS(LOWPASS + BANDPASS + HIGHPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(128),FLAGS(LOWPASS + BANDPASS + HIGHPASS)
SU_DELAY MONO,PREGAIN(128),DRY(128),FEEDBACK(128),DAMP(16),DELAY(0),COUNT(1) SU_DELAY MONO,PREGAIN(128),DRY(128),FEEDBACK(128),DAMP(16),DELAY(0),COUNT(1)
SU_FILTER MONO,FREQUENCY(24),RESONANCE(128),FLAGS(LOWPASS + BANDPASS + HIGHPASS) SU_FILTER MONO,FREQUENCY(24),RESONANCE(128),FLAGS(LOWPASS + BANDPASS + HIGHPASS)
SU_MULP MONO SU_MULP MONO
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES

View File

@ -1,31 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1) SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(32),PORT(3,delay,pregain) + SEND_POP SU_SEND MONO,AMOUNT(32),PORT(3,delay,pregain) + SEND_POP
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 11025 DELTIME 11025
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,29 +1,29 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(9) SU_DELAY MONO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(9)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 1116,1188,1276,1356,1422,1492,1556,1618 DELTIME 1116,1188,1276,1356,1422,1492,1556,1618
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,30 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_DELAY STEREO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1) SU_DELAY STEREO,PREGAIN(40),DRY(128),FEEDBACK(125),DAMP(64),DELAY(1),COUNT(1)
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
SU_BEGIN_DELTIMES SU_BEGIN_DELTIMES
DELTIME 11025 DELTIME 11025
DELTIME 21025 DELTIME 21025
SU_END_DELTIMES SU_END_DELTIMES
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,24 +1,24 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_DISTORT MONO,DRIVE(32) SU_DISTORT MONO,DRIVE(32)
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_DISTORT MONO,DRIVE(96) SU_DISTORT MONO,DRIVE(96)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,27 +1,27 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_DISTORT MONO,DRIVE(32) SU_DISTORT MONO,DRIVE(32)
SU_ENVELOPE MONO, ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO, ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_DISTORT MONO, DRIVE(96) SU_DISTORT MONO, DRIVE(96)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,distort,drive) SU_SEND MONO,AMOUNT(68),PORT(1,distort,drive)
SU_SEND MONO,AMOUNT(68),PORT(3,distort,drive) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(3,distort,drive) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,10 +1,10 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
@ -13,12 +13,12 @@ SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_HOLD MONO,HOLDFREQ(3) SU_HOLD MONO,HOLDFREQ(3)
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_HOLD MONO,HOLDFREQ(3) SU_HOLD MONO,HOLDFREQ(3)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,27 +1,27 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_HOLD MONO,HOLDFREQ(3) SU_HOLD MONO,HOLDFREQ(3)
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_HOLD MONO,HOLDFREQ(3) SU_HOLD MONO,HOLDFREQ(3)
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,hold,freq) SU_SEND MONO,AMOUNT(68),PORT(1,hold,freq)
SU_SEND MONO,AMOUNT(68),PORT(3,hold,freq) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(3,hold,freq) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,22 +1,22 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE STEREO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE STEREO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_DISTORT STEREO, DRIVE(96) SU_DISTORT STEREO, DRIVE(96)
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,22 +1,22 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_ENVELOPE MONO,ATTAC(95),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(95),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,28 +1,28 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD,HLD, HLD, HLD, 0, 0, 0, 0, 0, PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD,HLD, HLD, HLD, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(120),DETUNE(64),PHASE(0),COLOR(128),SHAPE(96),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(120),DETUNE(64),PHASE(0),COLOR(128),SHAPE(96),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(68),PORT(0,env,attac) SU_SEND MONO,AMOUNT(68),PORT(0,env,attac)
SU_SEND MONO,AMOUNT(68),PORT(0,env,decay) SU_SEND MONO,AMOUNT(68),PORT(0,env,decay)
; Sustain modulation seems not to be implemented ; Sustain modulation seems not to be implemented
SU_SEND MONO,AMOUNT(68),PORT(0,env,release) SU_SEND MONO,AMOUNT(68),PORT(0,env,release)
SU_SEND MONO,AMOUNT(68),PORT(1,env,gain) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(1,env,gain) + SEND_POP
SU_OUT STEREO,GAIN(110) SU_OUT STEREO,GAIN(110)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,24 +1,24 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
END_PATTERNS END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(32) SU_LOAD_VAL MONO,VALUE(32)
SU_LOAD_VAL MONO,VALUE(128) SU_LOAD_VAL MONO,VALUE(128)
SU_ADD MONO SU_ADD MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,27 +1,27 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(48) SU_LOAD_VAL MONO,VALUE(48)
SU_LOAD_VAL MONO,VALUE(48) SU_LOAD_VAL MONO,VALUE(48)
SU_ADDP MONO SU_ADDP MONO
SU_LOAD_VAL MONO,VALUE(80) SU_LOAD_VAL MONO,VALUE(80)
SU_LOAD_VAL MONO,VALUE(80) SU_LOAD_VAL MONO,VALUE(80)
SU_ADDP MONO SU_ADDP MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(0) SU_LOAD_VAL MONO,VALUE(0)
SU_LOAD_VAL MONO,VALUE(64) SU_LOAD_VAL MONO,VALUE(64)
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_ADDP STEREO SU_ADDP STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,22 +1,22 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0 PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADNOTE STEREO SU_LOADNOTE STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,24 +1,24 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(32) SU_LOAD_VAL MONO,VALUE(32)
SU_LOAD_VAL MONO,VALUE(0) SU_LOAD_VAL MONO,VALUE(0)
SU_MUL MONO SU_MUL MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,27 +1,28 @@
%define BPM 100
%define SINGLE_FILE %define BPM 100
%define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_LOAD_VAL MONO,VALUE(0) SU_LOAD_VAL MONO,VALUE(0)
SU_MULP MONO SU_MULP MONO
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_LOAD_VAL MONO,VALUE(128) SU_LOAD_VAL MONO,VALUE(128)
SU_MULP MONO SU_MULP MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_LOAD_VAL MONO,VALUE(128) SU_LOAD_VAL MONO,VALUE(128)
SU_LOAD_VAL MONO,VALUE(0) SU_LOAD_VAL MONO,VALUE(0)
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(32) SU_LOAD_VAL MONO,VALUE(32)
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_LOAD_VAL MONO,VALUE(0) SU_LOAD_VAL MONO,VALUE(0)
SU_POP MONO SU_POP MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(32) SU_LOAD_VAL MONO,VALUE(32)
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_PUSH MONO SU_PUSH MONO
SU_POP MONO SU_POP MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,24 +1,24 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_LOAD_VAL MONO,VALUE(32) SU_LOAD_VAL MONO,VALUE(32)
SU_XCH MONO SU_XCH MONO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,31 +1,31 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(96) SU_LOAD_VAL MONO,VALUE(96)
SU_SEND MONO,AMOUNT(96),GLOBALPORT(1,3,load_val,value) + SEND_POP SU_SEND MONO,AMOUNT(96),GLOBALPORT(1,3,load_val,value) + SEND_POP
SU_LOAD_VAL MONO,VALUE(64) SU_LOAD_VAL MONO,VALUE(64)
SU_LOAD_VAL MONO,VALUE(64) SU_LOAD_VAL MONO,VALUE(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument1 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument1
SU_LOAD_VAL MONO,VALUE(32) SU_LOAD_VAL MONO,VALUE(32)
SU_SEND MONO,AMOUNT(96),GLOBALPORT(0,2,load_val,value) + SEND_POP SU_SEND MONO,AMOUNT(96),GLOBALPORT(0,2,load_val,value) + SEND_POP
SU_LOAD_VAL MONO,VALUE(64) SU_LOAD_VAL MONO,VALUE(64)
SU_LOAD_VAL MONO,VALUE(64) SU_LOAD_VAL MONO,VALUE(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,23 +1,23 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(40) SU_LOAD_VAL MONO,VALUE(40)
SU_LOAD_VAL MONO,VALUE(80) SU_LOAD_VAL MONO,VALUE(80)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,29 +1,29 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64,HLD,HLD,HLD,HLD,HLD,HLD,HLD, 0, 0, 0,0,0,0,0,0, PATTERN 64,HLD,HLD,HLD,HLD,HLD,HLD,HLD, 0, 0, 0,0,0,0,0,0,
PATTERN 0, 0, 0, 0, 0, 0, 0, 0,64,HLD,HLD,0,0,0,0,0, PATTERN 0, 0, 0, 0, 0, 0, 0, 0,64,HLD,HLD,0,0,0,0,0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
TRACK VOICES(1),1 TRACK VOICES(1),1
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(0) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(0)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument1 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument1
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(80),GAIN(0) SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(80),GAIN(0)
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,23 +1,23 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_PAN MONO,PANNING(40) SU_PAN MONO,PANNING(40)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, 68, HLD, 32, HLD, HLD, HLD, 75, HLD, 78, HLD, HLD, 0, 0, 0, PATTERN 64, HLD, 68, HLD, 32, HLD, HLD, HLD, 75, HLD, 78, HLD, HLD, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(2),0 TRACK VOICES(2),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(2) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(2) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -16,127 +16,127 @@ extern void __stdcall su_render();
extern int su_max_samples; extern int su_max_samples;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
FILE* f; FILE* f;
char filename[256]; char filename[256];
int n; int n;
int retval; int retval;
char test_name[] = TEST_NAME; char test_name[] = TEST_NAME;
char expected_output_folder[] = "expected_output/"; char expected_output_folder[] = "expected_output/";
char actual_output_folder[] = "actual_output/"; char actual_output_folder[] = "actual_output/";
long fsize; long fsize;
long bufsize; long bufsize;
boolean small_difference; boolean small_difference;
double diff; double diff;
#ifndef SU_USE_16BIT_OUTPUT #ifndef SU_USE_16BIT_OUTPUT
float* buf = NULL; float* buf = NULL;
float* filebuf = NULL; float* filebuf = NULL;
float v; float v;
bufsize = su_max_samples * 2 * sizeof(float); bufsize = su_max_samples * 2 * sizeof(float);
buf = (float*)malloc(bufsize); buf = (float*)malloc(bufsize);
#else #else
short* buf = NULL; short* buf = NULL;
short* filebuf = NULL; short* filebuf = NULL;
short v; short v;
bufsize = su_max_samples * 2 * sizeof(short); bufsize = su_max_samples * 2 * sizeof(short);
buf = (short*)malloc(bufsize); buf = (short*)malloc(bufsize);
#endif
if (buf == NULL) {
printf("Could not allocate buffer for 4klang rendering\n");
return 1;
}
su_render(buf);
snprintf(filename, sizeof filename, "%s%s%s", expected_output_folder, test_name, ".raw");
f = fopen(filename, "rb");
if (f == NULL) {
printf("No expected waveform found!\n");
goto fail;
}
fseek(f, 0, SEEK_END);
fsize = ftell(f);
fseek(f, 0, SEEK_SET);
if (bufsize < fsize) {
printf("4klang rendered shorter wave than expected\n");
goto fail;
}
if (bufsize > fsize) {
printf("4klang rendered longer wave than expected\n");
goto fail;
}
#ifndef SU_USE_16BIT_OUTPUT
filebuf = (float*)malloc(bufsize);
#else
filebuf = (short*)malloc(bufsize);
#endif
if (filebuf == NULL) {
printf("Could not allocate buffer for file contents\n");
goto fail;
}
fread((void*)filebuf, su_max_samples * 2, sizeof(*filebuf), f);
small_difference = FALSE;
for (n = 0; n < su_max_samples * 2; n++) {
diff = (double)(buf[n]) - (double)(filebuf[n]);
#ifdef SU_USE_16BIT_OUTPUT
diff = diff / 32768.0f;
#endif #endif
diff = fabs(diff);
if (diff > 1e-3f || isnan(diff)) {
printf("4klang rendered different wave than expected\n");
goto fail;
}
else if (diff > 0.0f) {
small_difference = TRUE;
}
}
if (small_difference) { if (buf == NULL) {
printf("4klang rendered almost correct wave, but with small errors (< 1e-3)\n"); printf("Could not allocate buffer for 4klang rendering\n");
goto fail; return 1;
} }
su_render(buf);
snprintf(filename, sizeof filename, "%s%s%s", expected_output_folder, test_name, ".raw");
f = fopen(filename, "rb");
if (f == NULL) {
printf("No expected waveform found!\n");
goto fail;
}
fseek(f, 0, SEEK_END);
fsize = ftell(f);
fseek(f, 0, SEEK_SET);
if (bufsize < fsize) {
printf("4klang rendered shorter wave than expected\n");
goto fail;
}
if (bufsize > fsize) {
printf("4klang rendered longer wave than expected\n");
goto fail;
}
#ifndef SU_USE_16BIT_OUTPUT
filebuf = (float*)malloc(bufsize);
#else
filebuf = (short*)malloc(bufsize);
#endif
if (filebuf == NULL) {
printf("Could not allocate buffer for file contents\n");
goto fail;
}
fread((void*)filebuf, su_max_samples * 2, sizeof(*filebuf), f);
small_difference = FALSE;
for (n = 0; n < su_max_samples * 2; n++) {
diff = (double)(buf[n]) - (double)(filebuf[n]);
#ifdef SU_USE_16BIT_OUTPUT
diff = diff / 32768.0f;
#endif
diff = fabs(diff);
if (diff > 1e-3f || isnan(diff)) {
printf("4klang rendered different wave than expected\n");
goto fail;
}
else if (diff > 0.0f) {
small_difference = TRUE;
}
}
if (small_difference) {
printf("4klang rendered almost correct wave, but with small errors (< 1e-3)\n");
goto fail;
}
success: success:
retval = 0; retval = 0;
goto end; goto end;
fail: fail:
retval = 1; retval = 1;
end: end:
if (f != 0) { if (f != 0) {
fclose(f); fclose(f);
f = 0; f = 0;
} }
#if defined (_WIN32) #if defined (_WIN32)
CreateDirectory(actual_output_folder, NULL); CreateDirectory(actual_output_folder, NULL);
#else #else
mkdir(actual_output_folder, 0777); mkdir(actual_output_folder, 0777);
#endif #endif
snprintf(filename, sizeof filename, "%s%s%s", actual_output_folder, test_name, ".raw");
f = fopen(filename, "wb");
fwrite((void*)buf, sizeof(*buf), 2 * su_max_samples, f);
fclose(f);
if (buf != 0) { snprintf(filename, sizeof filename, "%s%s%s", actual_output_folder, test_name, ".raw");
free(buf); f = fopen(filename, "wb");
buf = 0; fwrite((void*)buf, sizeof(*buf), 2 * su_max_samples, f);
} fclose(f);
if (filebuf != 0) { if (buf != 0) {
free(filebuf); free(buf);
filebuf = 0; buf = 0;
} }
return retval;
} if (filebuf != 0) {
free(filebuf);
filebuf = 0;
}
return retval;
}

View File

@ -1,28 +1,28 @@
%define BPM 100 %define BPM 100
%define SINGLE_FILE %define SINGLE_FILE
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0 PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOAD_VAL MONO,VALUE(32) ; should receive -0.5 SU_LOAD_VAL MONO,VALUE(32) ; should receive -0.5
SU_SEND MONO,AMOUNT(96),PORT(5,load_val,value) ; should send -0.25 SU_SEND MONO,AMOUNT(96),PORT(5,load_val,value) ; should send -0.25
SU_SEND MONO,AMOUNT(96),PORT(6,load_val,value) + SEND_POP ; should send -0.25 SU_SEND MONO,AMOUNT(96),PORT(6,load_val,value) + SEND_POP ; should send -0.25
SU_LOAD_VAL MONO,VALUE(128) ; should receive 1 SU_LOAD_VAL MONO,VALUE(128) ; should receive 1
SU_SEND MONO,AMOUNT(96),PORT(6,load_val,value) + SEND_POP ; should send 0.5 SU_SEND MONO,AMOUNT(96),PORT(6,load_val,value) + SEND_POP ; should send 0.5
SU_LOAD_VAL MONO,VALUE(64) ; should receive -0.5 SU_LOAD_VAL MONO,VALUE(64) ; should receive -0.5
SU_LOAD_VAL MONO,VALUE(64) ; should receive 0.5 SU_LOAD_VAL MONO,VALUE(64) ; should receive 0.5
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,19 +1,19 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128), FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128), FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS)
@ -24,4 +24,4 @@ SU_BEGIN_PATCH
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(HIGHPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(HIGHPASS)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(LOWPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(LOWPASS)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(LOWPASS + NEGHIGHPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(LOWPASS + NEGHIGHPASS)
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,19 +1,19 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128), FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128), FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS) SU_FILTER MONO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS)
@ -24,4 +24,4 @@ SU_BEGIN_PATCH
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128) SU_ENVELOPE MONO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(72),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
SU_MULP MONO SU_MULP MONO
SU_PAN MONO,PANNING(64) SU_PAN MONO,PANNING(64)
SU_FILTER STEREO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS) SU_FILTER STEREO,FREQUENCY(32),RESONANCE(64),FLAGS(BANDPASS)
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0 PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PUSH MONO SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,color) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(1,osc,color) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0 PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PUSH MONO SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE+LFO)
SU_SEND MONO,AMOUNT(96),PORT(1,osc,detune) + SEND_POP SU_SEND MONO,AMOUNT(96),PORT(1,osc,detune) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(32),PHASE(0),GATESLOW(15),GATESHIGH(96),GAIN(128),FLAGS(GATE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(32),PHASE(0),GATESLOW(15),GATESHIGH(96),GAIN(128),FLAGS(GATE)
SU_OSCILLAT MONO,TRANSPOSE(72),DETUNE(64),PHASE(64),GATESLOW(170),GATESHIGH(64),GAIN(128),FLAGS(GATE) SU_OSCILLAT MONO,TRANSPOSE(72),DETUNE(64),PHASE(64),GATESLOW(170),GATESHIGH(64),GAIN(128),FLAGS(GATE)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0 PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PUSH MONO SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,gain) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(1,osc,gain) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT MONO, TRANSPOSE(90),DETUNE(64),PHASE(0),COLOR(128),SHAPE(96),GAIN(128), FLAGS(SINE + LFO) SU_OSCILLAT MONO, TRANSPOSE(90),DETUNE(64),PHASE(0),COLOR(128),SHAPE(96),GAIN(128), FLAGS(SINE + LFO)
SU_OSCILLAT MONO, TRANSPOSE(100),DETUNE(64),PHASE(0),COLOR(64),SHAPE(96),GAIN(128), FLAGS(PULSE + LFO) SU_OSCILLAT MONO, TRANSPOSE(100),DETUNE(64),PHASE(0),COLOR(64),SHAPE(96),GAIN(128), FLAGS(PULSE + LFO)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_NOISE MONO, SHAPE(64),GAIN(128) SU_NOISE MONO, SHAPE(64),GAIN(128)
SU_NOISE MONO, SHAPE(96),GAIN(128) SU_NOISE MONO, SHAPE(96),GAIN(128)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0 PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PUSH MONO SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(128),PORT(1,osc,phaseofs) + SEND_POP SU_SEND MONO,AMOUNT(128),PORT(1,osc,phaseofs) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT MONO, TRANSPOSE(64),DETUNE(32),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(PULSE) SU_OSCILLAT MONO, TRANSPOSE(64),DETUNE(32),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(PULSE)
SU_OSCILLAT MONO, TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(PULSE) SU_OSCILLAT MONO, TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(PULSE)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT MONO, TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(SINE) SU_OSCILLAT MONO, TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(SINE)
SU_OSCILLAT MONO, TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(SINE) SU_OSCILLAT MONO, TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(SINE)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0 PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PUSH MONO SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,shape) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(1,osc,shape) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,24 +1,24 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT STEREO, TRANSPOSE(64),DETUNE(32),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(SINE) SU_OSCILLAT STEREO, TRANSPOSE(64),DETUNE(32),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(SINE)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO, GAIN(128) SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,26 +1,26 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0 PATTERN 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128) SU_ENVELOPE MONO,ATTAC(80),DECAY(80),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE)
SU_MULP MONO SU_MULP MONO
SU_PUSH MONO SU_PUSH MONO
SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO) SU_OSCILLAT MONO,TRANSPOSE(70),DETUNE(64),PHASE(64),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE + LFO)
SU_SEND MONO,AMOUNT(68),PORT(1,osc,transpose) + SEND_POP SU_SEND MONO,AMOUNT(68),PORT(1,osc,transpose) + SEND_POP
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"

View File

@ -1,25 +1,25 @@
%define BPM 100 %define BPM 100
%define USE_SECTIONS %define USE_SECTIONS
%include "../src/sointu.inc" %include "../src/sointu.inc"
SU_BEGIN_PATTERNS SU_BEGIN_PATTERNS
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0, PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 0, 0, 0, 0, 0,
SU_END_PATTERNS SU_END_PATTERNS
SU_BEGIN_TRACKS SU_BEGIN_TRACKS
TRACK VOICES(1),0 TRACK VOICES(1),0
SU_END_TRACKS SU_END_TRACKS
SU_BEGIN_PATCH SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0 SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128) SU_ENVELOPE MONO,ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(32),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(64),DETUNE(32),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(TRISAW)
SU_OSCILLAT MONO,TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(TRISAW) SU_OSCILLAT MONO,TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(TRISAW)
SU_MULP STEREO SU_MULP STEREO
SU_OUT STEREO,GAIN(128) SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT SU_END_INSTRUMENT
SU_END_PATCH SU_END_PATCH
%include "../src/sointu.asm" %include "../src/sointu.asm"