mirror of
https://github.com/vsariola/sointu.git
synced 2025-12-02 07:23:24 -05:00
Implement gain and inverse gain effects, for the moments when you just need them.
This commit is contained in:
@ -78,6 +78,46 @@ su_op_hold_holding:
|
||||
|
||||
%endif ; HOLD_ID > -1
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
; GAIN Tick
|
||||
;-------------------------------------------------------------------------------
|
||||
%if GAIN_ID > -1
|
||||
|
||||
SECT_TEXT(sugain)
|
||||
|
||||
EXPORT MANGLE_FUNC(su_op_gain,0)
|
||||
%ifdef INCLUDE_STEREO_GAIN
|
||||
jnc su_op_gain_mono
|
||||
call su_stereo_filterhelper
|
||||
%define INCLUDE_STEREO_FILTERHELPER
|
||||
su_op_gain_mono:
|
||||
%endif
|
||||
fld dword [edx+su_gain_ports.gain] ; g x
|
||||
fmulp st1, st0 ; g*x
|
||||
ret
|
||||
|
||||
%endif ; GAIN_ID > -1
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
; INVGAIN Tick
|
||||
;-------------------------------------------------------------------------------
|
||||
%if INVGAIN_ID > -1
|
||||
|
||||
SECT_TEXT(suingain)
|
||||
|
||||
EXPORT MANGLE_FUNC(su_op_invgain,0)
|
||||
%ifdef INCLUDE_STEREO_INVGAIN
|
||||
jnc su_op_invgain_mono
|
||||
call su_stereo_filterhelper
|
||||
%define INCLUDE_STEREO_FILTERHELPER
|
||||
su_op_invgain_mono:
|
||||
%endif
|
||||
fld dword [edx+su_invgain_ports.invgain] ; g x
|
||||
fdivp st1, st0 ; x/g
|
||||
ret
|
||||
|
||||
%endif ; INVINVGAIN_ID > -1
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
; su_op_filter: perform low/high/band-pass filtering on the signal
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
@ -156,6 +156,66 @@ struc su_hold_wrk
|
||||
.holdval 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
|
||||
.params
|
||||
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
|
||||
.params
|
||||
endstruc
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
; CLIP effect related defines
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user