mirror of
https://github.com/vsariola/sointu.git
synced 2025-07-18 21:14:31 -04:00
383 lines
9.0 KiB
PHP
383 lines
9.0 KiB
PHP
;-------------------------------------------------------------------------------
|
|
; Filter (LOWPASS, BANDPASS...) effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign FILTER_ID -1
|
|
|
|
%macro USE_FILTER 0
|
|
%if FILTER_ID == -1
|
|
%assign FILTER_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_filter,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 2,
|
|
%endif
|
|
%endmacro
|
|
|
|
%define LOWPASS 0x40
|
|
%define BANDPASS 0x20
|
|
%define HIGHPASS 0x10
|
|
%define NEGBANDPASS 0x08
|
|
%define NEGHIGHPASS 0x04
|
|
|
|
%macro SU_FILTER 4
|
|
db %2
|
|
db %3
|
|
db %4
|
|
USE_FILTER
|
|
%xdefine CMDS CMDS FILTER_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_FILTER
|
|
%endif
|
|
%if (%4) & LOWPASS == LOWPASS
|
|
%define INCLUDE_LOWPASS
|
|
%endif
|
|
%if (%4) & BANDPASS == BANDPASS
|
|
%define INCLUDE_BANDPASS
|
|
%endif
|
|
%if (%4) & HIGHPASS == HIGHPASS
|
|
%define INCLUDE_HIGHPASS
|
|
%endif
|
|
%if (%4) & NEGBANDPASS == NEGBANDPASS
|
|
%define INCLUDE_NEGBANDPASS
|
|
%endif
|
|
%if (%4) & NEGHIGHPASS == NEGHIGHPASS
|
|
%define INCLUDE_NEGHIGHPASS
|
|
%endif
|
|
%endmacro
|
|
|
|
%define FREQUENCY(val) val
|
|
%define RESONANCE(val) val
|
|
%define FLAGS(val) val
|
|
|
|
struc su_filter_ports
|
|
.freq resd 1
|
|
.res resd 1
|
|
endstruc
|
|
|
|
struc su_filter_wrk
|
|
.low resd 1
|
|
.high resd 1
|
|
.band resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; PAN effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign PAN_ID -1
|
|
|
|
%macro USE_PAN 0
|
|
%if PAN_ID == -1
|
|
%assign PAN_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_pan,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 1,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_PAN 2
|
|
db %2
|
|
USE_PAN
|
|
%xdefine CMDS CMDS PAN_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_PAN
|
|
%endif
|
|
%endmacro
|
|
|
|
%define PANNING(val) val
|
|
|
|
struc su_pan_ports
|
|
.panning resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; DISTORT effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign DISTORT_ID -1
|
|
|
|
%macro USE_DISTORT 0
|
|
%if DISTORT_ID == -1
|
|
%assign DISTORT_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_distort,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 1,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_DISTORT 2
|
|
db %2
|
|
USE_DISTORT
|
|
%xdefine CMDS CMDS DISTORT_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_DISTORT
|
|
%endif
|
|
%endmacro
|
|
|
|
%define DRIVE(val) val
|
|
|
|
struc su_distort_ports
|
|
.drive resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; HOLD effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign HOLD_ID -1
|
|
|
|
%macro USE_HOLD 0
|
|
%if HOLD_ID == -1
|
|
%assign HOLD_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_hold,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 1,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_HOLD 2
|
|
db %2
|
|
USE_HOLD
|
|
%xdefine CMDS CMDS HOLD_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_HOLD
|
|
%endif
|
|
%endmacro
|
|
|
|
%define HOLDFREQ(val) val
|
|
|
|
struc su_hold_ports
|
|
.freq resd 1
|
|
endstruc
|
|
|
|
struc su_hold_wrk
|
|
.phase resd 1
|
|
.holdval resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; CRUSH effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign CRUSH_ID -1
|
|
|
|
%macro USE_CRUSH 0
|
|
%if CRUSH_ID == -1
|
|
%assign CRUSH_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_crush,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 1,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_CRUSH 2
|
|
db %2
|
|
USE_CRUSH
|
|
%xdefine CMDS CMDS CRUSH_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_CRUSH
|
|
%endif
|
|
%endmacro
|
|
|
|
%define RESOLUTION(val) val
|
|
|
|
struc su_crush_ports
|
|
.resolution resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; GAIN effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign GAIN_ID -1
|
|
|
|
%macro USE_GAIN 0
|
|
%if GAIN_ID == -1
|
|
%assign GAIN_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_gain,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 1,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_GAIN 2
|
|
db %2
|
|
USE_GAIN
|
|
%xdefine CMDS CMDS GAIN_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_GAIN
|
|
%endif
|
|
%endmacro
|
|
|
|
%define GAIN(val) val
|
|
|
|
struc su_gain_ports
|
|
.gain resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; INVGAIN effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign INVGAIN_ID -1
|
|
|
|
%macro USE_INVGAIN 0
|
|
%if INVGAIN_ID == -1
|
|
%assign INVGAIN_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_invgain,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 1,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_INVGAIN 2
|
|
db %2
|
|
USE_INVGAIN
|
|
%xdefine CMDS CMDS INVGAIN_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_INVGAIN
|
|
%endif
|
|
%endmacro
|
|
|
|
%define INVGAIN(val) val
|
|
|
|
struc su_invgain_ports
|
|
.invgain resd 1
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; CLIP effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign CLIP_ID -1
|
|
|
|
%macro USE_CLIP 0
|
|
%if CLIP_ID == -1
|
|
%assign CLIP_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_clip,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_CLIP 1
|
|
USE_CLIP
|
|
%xdefine CMDS CMDS CLIP_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_CLIP
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; Delay effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign DELAY_ID -1
|
|
%macro USE_DELAY 0
|
|
%if DELAY_ID == -1
|
|
%assign DELAY_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_delay,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 4,
|
|
%endif
|
|
%endmacro
|
|
|
|
%define MAX_DELAY 65536 ; warning: this is pretty much fixed, as we use 16-bit math to wraparound the delay buffers
|
|
%assign NUM_DELAY_LINES 0
|
|
|
|
%macro SU_DELAY 7
|
|
db %2
|
|
db %3
|
|
db %4
|
|
db %5
|
|
db %6
|
|
db %7
|
|
USE_DELAY
|
|
%xdefine CMDS CMDS DELAY_ID + %1,
|
|
%assign NUM_DELAY_LINES NUM_DELAY_LINES + %7 * (1+%1)
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_DELAY
|
|
%endif
|
|
%if (%7) & NOTETRACKING == 0
|
|
%define INCLUDE_DELAY_NOTETRACKING
|
|
%define INCLUDE_DELAY_FLOAT_TIME
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro BEGIN_DELTIMES 0
|
|
SECT_DATA(sudeltim)
|
|
|
|
EXPORT MANGLE_DATA(su_delay_times)
|
|
%endmacro
|
|
|
|
%define END_DELTIMES
|
|
|
|
%macro DELTIME 1-*
|
|
%rep %0
|
|
dw %1
|
|
%rotate 1
|
|
%endrep
|
|
%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) (2*val-1)
|
|
%define NOTETRACKING 1
|
|
|
|
struc su_delay_ports
|
|
.pregain resd 1
|
|
.dry resd 1
|
|
.feedback resd 1
|
|
.damp resd 1
|
|
.freq resd 1
|
|
.delaymod resd 1 ; note that this is not converted from integer, only modulated
|
|
endstruc
|
|
|
|
struc su_delayline_wrk
|
|
.dcin resd 1
|
|
.dcout resd 1
|
|
.filtstate resd 1
|
|
.buffer resd MAX_DELAY
|
|
.size
|
|
endstruc
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; COMPRES effect related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign COMPRES_ID -1
|
|
|
|
%macro USE_COMPRES 0
|
|
%if COMPRES_ID == -1
|
|
%assign COMPRES_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_compressor,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 5,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_COMPRES 6
|
|
db %2
|
|
db %3
|
|
db %4
|
|
db %5
|
|
db %6
|
|
USE_COMPRES
|
|
%xdefine CMDS CMDS COMPRES_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_COMPRES
|
|
%endif
|
|
%endmacro
|
|
|
|
%define ATTAC(val) val
|
|
%define RELEASE(val) val
|
|
%define INVGAIN(val) val
|
|
%define THRESHOLD(val) val
|
|
%define RATIO(val) val
|
|
|
|
struc su_compres_ports
|
|
.attack resd 1
|
|
.release resd 1
|
|
.invgain resd 1
|
|
.threshold resd 1
|
|
.ratio resd 1
|
|
endstruc
|
|
|
|
struc su_compres_wrk
|
|
.level resd 1
|
|
endstruc |