mirror of
https://github.com/vsariola/sointu.git
synced 2025-06-04 01:28:45 -04:00
Implement new effect: bit-crusher.
Maybe a combined hold/bit-crusher effect is needed someday.
This commit is contained in:
parent
6a0a2fc36c
commit
d87d2e22cf
@ -78,6 +78,27 @@ su_op_hold_holding:
|
|||||||
|
|
||||||
%endif ; HOLD_ID > -1
|
%endif ; HOLD_ID > -1
|
||||||
|
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
; CRUSH Tick
|
||||||
|
;-------------------------------------------------------------------------------
|
||||||
|
%if CRUSH_ID > -1
|
||||||
|
|
||||||
|
SECT_TEXT(sucrush)
|
||||||
|
|
||||||
|
EXPORT MANGLE_FUNC(su_op_crush,0)
|
||||||
|
%ifdef INCLUDE_STEREO_CRUSH
|
||||||
|
jnc su_op_crush_mono
|
||||||
|
call su_stereo_filterhelper
|
||||||
|
%define INCLUDE_STEREO_FILTERHELPER
|
||||||
|
su_op_crush_mono:
|
||||||
|
%endif
|
||||||
|
fdiv dword [edx+su_crush_ports.resolution]
|
||||||
|
frndint
|
||||||
|
fmul dword [edx+su_crush_ports.resolution]
|
||||||
|
ret
|
||||||
|
|
||||||
|
%endif ; CRUSH_ID > -1
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; GAIN Tick
|
; GAIN Tick
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
@ -156,6 +156,36 @@ struc su_hold_wrk
|
|||||||
.holdval resd 1
|
.holdval resd 1
|
||||||
endstruc
|
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
|
||||||
|
.params
|
||||||
|
endstruc
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; GAIN effect related defines
|
; GAIN effect related defines
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
@ -97,6 +97,9 @@ regression_test(test_hold_stereo HOLD)
|
|||||||
regression_test(test_clip "VCO_SINE;ENVELOPE;FOP_MULP;INVGAIN" CLIP)
|
regression_test(test_clip "VCO_SINE;ENVELOPE;FOP_MULP;INVGAIN" CLIP)
|
||||||
regression_test(test_clip_stereo CLIP)
|
regression_test(test_clip_stereo CLIP)
|
||||||
|
|
||||||
|
regression_test(test_crush "VCO_SINE;ENVELOPE;FOP_MULP;INVGAIN" CRUSH)
|
||||||
|
regression_test(test_crush_stereo CRUSH)
|
||||||
|
|
||||||
regression_test(test_filter_band "VCO_SINE;ENVELOPE;FOP_MULP")
|
regression_test(test_filter_band "VCO_SINE;ENVELOPE;FOP_MULP")
|
||||||
regression_test(test_filter_low "VCO_SINE;ENVELOPE;FOP_MULP")
|
regression_test(test_filter_low "VCO_SINE;ENVELOPE;FOP_MULP")
|
||||||
regression_test(test_filter_high "VCO_SINE;ENVELOPE;FOP_MULP")
|
regression_test(test_filter_high "VCO_SINE;ENVELOPE;FOP_MULP")
|
||||||
|
BIN
tests/expected_output/test_crush.raw
Normal file
BIN
tests/expected_output/test_crush.raw
Normal file
Binary file not shown.
BIN
tests/expected_output/test_crush_stereo.raw
Normal file
BIN
tests/expected_output/test_crush_stereo.raw
Normal file
Binary file not shown.
28
tests/test_crush.asm
Normal file
28
tests/test_crush.asm
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
%define BPM 100
|
||||||
|
%define USE_SECTIONS
|
||||||
|
|
||||||
|
%include "../src/sointu.inc"
|
||||||
|
|
||||||
|
SU_BEGIN_PATTERNS
|
||||||
|
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 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_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(128),RELEASE(64),GAIN(128)
|
||||||
|
SU_OSCILLAT MONO, TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(SINE)
|
||||||
|
SU_MULP MONO
|
||||||
|
SU_CRUSH MONO, RESOLUTION(3)
|
||||||
|
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(128),RELEASE(64),GAIN(128)
|
||||||
|
SU_OSCILLAT MONO, TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(SINE)
|
||||||
|
SU_MULP MONO
|
||||||
|
SU_CRUSH MONO, RESOLUTION(64)
|
||||||
|
SU_OUT STEREO, GAIN(128)
|
||||||
|
SU_END_INSTRUMENT
|
||||||
|
SU_END_PATCH
|
||||||
|
|
||||||
|
%include "../src/sointu.asm"
|
27
tests/test_crush_stereo.asm
Normal file
27
tests/test_crush_stereo.asm
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
%define BPM 100
|
||||||
|
%define USE_SECTIONS
|
||||||
|
|
||||||
|
%include "../src/sointu.inc"
|
||||||
|
|
||||||
|
SU_BEGIN_PATTERNS
|
||||||
|
PATTERN 64, 0, 68, 0, 32, 0, 0, 0, 75, 0, 78, 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_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(128),RELEASE(64),GAIN(128)
|
||||||
|
SU_OSCILLAT MONO, TRANSPOSE(64),DETUNE(64),PHASE(0),COLOR(96),SHAPE(64),GAIN(128), FLAGS(SINE)
|
||||||
|
SU_MULP MONO
|
||||||
|
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(128),RELEASE(64),GAIN(128)
|
||||||
|
SU_OSCILLAT MONO, TRANSPOSE(72),DETUNE(64),PHASE(64),COLOR(64),SHAPE(96),GAIN(128), FLAGS(SINE)
|
||||||
|
SU_MULP MONO
|
||||||
|
SU_CRUSH STEREO, RESOLUTION(32)
|
||||||
|
SU_OUT STEREO, GAIN(128)
|
||||||
|
SU_END_INSTRUMENT
|
||||||
|
SU_END_PATCH
|
||||||
|
|
||||||
|
%include "../src/sointu.asm"
|
Loading…
x
Reference in New Issue
Block a user