mirror of
https://github.com/vsariola/sointu.git
synced 2025-06-04 01:28:45 -04:00
Implement gain and inverse gain effects, for the moments when you just need them.
This commit is contained in:
parent
e966bc0084
commit
5760f78201
@ -78,6 +78,46 @@ su_op_hold_holding:
|
|||||||
|
|
||||||
%endif ; HOLD_ID > -1
|
%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
|
; su_op_filter: perform low/high/band-pass filtering on the signal
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
@ -156,6 +156,66 @@ struc su_hold_wrk
|
|||||||
.holdval resd 1
|
.holdval resd 1
|
||||||
endstruc
|
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
|
; CLIP effect related defines
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
@ -43,6 +43,10 @@ regression_test(test_envelope "" ENVELOPE)
|
|||||||
regression_test(test_envelope_stereo ENVELOPE)
|
regression_test(test_envelope_stereo ENVELOPE)
|
||||||
regression_test(test_loadval "" LOADVAL)
|
regression_test(test_loadval "" LOADVAL)
|
||||||
regression_test(test_loadval_stereo LOADVAL LOADVAL_STEREO)
|
regression_test(test_loadval_stereo LOADVAL LOADVAL_STEREO)
|
||||||
|
regression_test(test_gain LOADVAL GAIN)
|
||||||
|
regression_test(test_gain_stereo GAIN)
|
||||||
|
regression_test(test_invgain LOADVAL INVGAIN)
|
||||||
|
regression_test(test_invgain_stereo INVGAIN)
|
||||||
regression_test(test_send LOADVAL SEND)
|
regression_test(test_send LOADVAL SEND)
|
||||||
regression_test(test_send_stereo SEND)
|
regression_test(test_send_stereo SEND)
|
||||||
regression_test(test_send_global SEND)
|
regression_test(test_send_global SEND)
|
||||||
|
BIN
tests/expected_output/test_gain.raw
Normal file
BIN
tests/expected_output/test_gain.raw
Normal file
Binary file not shown.
BIN
tests/expected_output/test_gain_stereo.raw
Normal file
BIN
tests/expected_output/test_gain_stereo.raw
Normal file
Binary file not shown.
BIN
tests/expected_output/test_invgain.raw
Normal file
BIN
tests/expected_output/test_invgain.raw
Normal file
Binary file not shown.
BIN
tests/expected_output/test_invgain_stereo.raw
Normal file
BIN
tests/expected_output/test_invgain_stereo.raw
Normal file
Binary file not shown.
24
tests/test_gain.asm
Normal file
24
tests/test_gain.asm
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
%define BPM 100
|
||||||
|
%define SINGLE_FILE
|
||||||
|
%define USE_SECTIONS
|
||||||
|
|
||||||
|
%include "../src/sointu.inc"
|
||||||
|
|
||||||
|
SU_BEGIN_PATTERNS
|
||||||
|
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
SU_END_PATTERNS
|
||||||
|
|
||||||
|
SU_BEGIN_TRACKS
|
||||||
|
TRACK VOICES(1),0
|
||||||
|
SU_END_TRACKS
|
||||||
|
|
||||||
|
SU_BEGIN_PATCH
|
||||||
|
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
|
||||||
|
SU_LOADVAL MONO,VALUE(0)
|
||||||
|
SU_LOADVAL MONO,VALUE(128)
|
||||||
|
SU_GAIN STEREO,GAIN(64)
|
||||||
|
SU_OUT STEREO,GAIN(128)
|
||||||
|
SU_END_INSTRUMENT
|
||||||
|
SU_END_PATCH
|
||||||
|
|
||||||
|
%include "../src/sointu.asm"
|
25
tests/test_gain_stereo.asm
Normal file
25
tests/test_gain_stereo.asm
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
%define BPM 100
|
||||||
|
%define SINGLE_FILE
|
||||||
|
%define USE_SECTIONS
|
||||||
|
|
||||||
|
%include "../src/sointu.inc"
|
||||||
|
|
||||||
|
SU_BEGIN_PATTERNS
|
||||||
|
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
SU_END_PATTERNS
|
||||||
|
|
||||||
|
SU_BEGIN_TRACKS
|
||||||
|
TRACK VOICES(1),0
|
||||||
|
SU_END_TRACKS
|
||||||
|
|
||||||
|
SU_BEGIN_PATCH
|
||||||
|
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
|
||||||
|
SU_LOADVAL MONO,VALUE(32)
|
||||||
|
SU_GAIN MONO,GAIN(128)
|
||||||
|
SU_LOADVAL MONO,VALUE(128)
|
||||||
|
SU_GAIN MONO,GAIN(64)
|
||||||
|
SU_OUT STEREO,GAIN(128)
|
||||||
|
SU_END_INSTRUMENT
|
||||||
|
SU_END_PATCH
|
||||||
|
|
||||||
|
%include "../src/sointu.asm"
|
25
tests/test_invgain.asm
Normal file
25
tests/test_invgain.asm
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
%define BPM 100
|
||||||
|
%define SINGLE_FILE
|
||||||
|
%define USE_SECTIONS
|
||||||
|
|
||||||
|
%include "../src/sointu.inc"
|
||||||
|
|
||||||
|
SU_BEGIN_PATTERNS
|
||||||
|
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
SU_END_PATTERNS
|
||||||
|
|
||||||
|
SU_BEGIN_TRACKS
|
||||||
|
TRACK VOICES(1),0
|
||||||
|
SU_END_TRACKS
|
||||||
|
|
||||||
|
SU_BEGIN_PATCH
|
||||||
|
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
|
||||||
|
SU_LOADVAL MONO,VALUE(48)
|
||||||
|
SU_INVGAIN MONO,GAIN(64)
|
||||||
|
SU_LOADVAL MONO,VALUE(80)
|
||||||
|
SU_INVGAIN MONO,INVGAIN(64)
|
||||||
|
SU_OUT STEREO,GAIN(128)
|
||||||
|
SU_END_INSTRUMENT
|
||||||
|
SU_END_PATCH
|
||||||
|
|
||||||
|
%include "../src/sointu.asm"
|
24
tests/test_invgain_stereo.asm
Normal file
24
tests/test_invgain_stereo.asm
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
%define BPM 100
|
||||||
|
%define SINGLE_FILE
|
||||||
|
%define USE_SECTIONS
|
||||||
|
|
||||||
|
%include "../src/sointu.inc"
|
||||||
|
|
||||||
|
SU_BEGIN_PATTERNS
|
||||||
|
PATTERN 64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
SU_END_PATTERNS
|
||||||
|
|
||||||
|
SU_BEGIN_TRACKS
|
||||||
|
TRACK VOICES(1),0
|
||||||
|
SU_END_TRACKS
|
||||||
|
|
||||||
|
SU_BEGIN_PATCH
|
||||||
|
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
|
||||||
|
SU_LOADVAL MONO,VALUE(48)
|
||||||
|
SU_LOADVAL MONO,VALUE(80)
|
||||||
|
SU_INVGAIN STEREO,INVGAIN(64)
|
||||||
|
SU_OUT STEREO,GAIN(128)
|
||||||
|
SU_END_INSTRUMENT
|
||||||
|
SU_END_PATCH
|
||||||
|
|
||||||
|
%include "../src/sointu.asm"
|
Loading…
x
Reference in New Issue
Block a user