Add tests for opcode stereo variants, squashing several bugs in the process. Implement receive opcode to test stereo sending.

This commit is contained in:
Veikko Sariola
2020-05-16 21:23:41 +03:00
parent f9388b028a
commit 87264c443c
39 changed files with 472 additions and 47 deletions

View File

@ -8,8 +8,8 @@ function(regression_test testname)
add_executable(${testname} ${source}.asm test_renderer.c)
# the tests include the entire ASM but we still want to rebuild when they change
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}")
file(GLOB SOINTU ${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 "${SOINTU}")
set_source_files_properties(${FOURKLANG} PROPERTIES HEADER_FILE_ONLY TRUE)
add_test(${testname} ${testname})
@ -40,22 +40,35 @@ function(regression_test testname)
endfunction(regression_test)
regression_test(test_envelope "" ENVELOPE)
regression_test(test_loadval "" LOAD)
regression_test(test_send "" SEND)
regression_test(test_send_global)
regression_test(test_envelope_stereo ENVELOPE)
regression_test(test_loadval "" LOADVAL)
regression_test(test_loadval_stereo LOADVAL LOADVAL_STEREO)
regression_test(test_send LOADVAL SEND)
regression_test(test_send_stereo SEND)
regression_test(test_send_global SEND)
regression_test(test_receive SEND RECEIVE)
regression_test(test_receive_stereo RECEIVE)
regression_test(test_panning ENVELOPE PANNING)
regression_test(test_panning_stereo PANNING)
regression_test(test_multiple_instruments ENVELOPE)
regression_test(test_pop LOAD FOP_POP)
regression_test(test_addp LOAD)
regression_test(test_mulp LOAD FOP_MULP)
regression_test(test_push "LOAD;FOP_POP" FOP_PUSH)
regression_test(test_xch LOAD)
regression_test(test_add LOAD)
regression_test(test_mul LOAD)
regression_test(test_addp_stereo LOAD)
regression_test(test_mulp_stereo LOAD FOP_MULP2)
regression_test(test_pop LOADVAL POP)
regression_test(test_pop_stereo POP)
regression_test(test_addp LOADVAL)
regression_test(test_addp_stereo LOADVAL)
regression_test(test_mulp LOADVAL FOP_MULP)
regression_test(test_mulp_stereo LOADVAL FOP_MULP2)
regression_test(test_push "LOADVAL;POP" FOP_PUSH)
regression_test(test_push_stereo PUSH)
regression_test(test_xch LOADVAL)
regression_test(test_xch_stereo LOADVAL)
regression_test(test_add LOADVAL)
regression_test(test_add_stereo LOADVAL)
regression_test(test_mul LOADVAL)
regression_test(test_mul_stereo LOADVAL)
regression_test(test_loadnote)
regression_test(test_noise ENVELOPE VCO_NOISE)
regression_test(test_loadnote_stereo)
regression_test(test_noise ENVELOPE NOISE)
regression_test(test_noise_stereo NOISE)
regression_test(test_oscillat_sine ENVELOPE VCO_SINE)
regression_test(test_oscillat_trisaw ENVELOPE)
regression_test(test_oscillat_pulse ENVELOPE VCO_PULSE)
@ -72,8 +85,9 @@ regression_test(test_oscillat_gainmod "VCO_SINE;ENVELOPE;FOP_MULP;FOP_PUSH;SEND"
regression_test(test_distort ENVELOPE)
regression_test(test_distort_mod "VCO_SINE;ENVELOPE;SEND")
regression_test(test_distort_stereo ENVELOPE)
regression_test(test_hold ENVELOPE)
regression_test(test_hold ENVELOPE HOLD)
regression_test(test_hold_mod "VCO_SINE;ENVELOPE;SEND")
regression_test(test_hold_stereo HOLD)
regression_test(test_filter_band "VCO_SINE;ENVELOPE;FOP_MULP")
regression_test(test_filter_low "VCO_SINE;ENVELOPE;FOP_MULP")
@ -85,7 +99,7 @@ regression_test(test_filter_resmod "VCO_SINE;ENVELOPE;FOP_MULP;SEND")
regression_test(test_delay "ENVELOPE;FOP_MULP;PANNING;VCO_SINE")
regression_test(test_delay_stereo "ENVELOPE;FOP_MULP;PANNING;VCO_SINE")
regression_test(test_delay_notetracking "ENVELOPE;FOP_MULP;PANNING;VCO_NOISE")
regression_test(test_delay_notetracking "ENVELOPE;FOP_MULP;PANNING;NOISE")
regression_test(test_delay_reverb "ENVELOPE;FOP_MULP;PANNING;VCO_SINE")
regression_test(test_delay_feedbackmod "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;SEND")
regression_test(test_delay_pregainmod "ENVELOPE;FOP_MULP;PANNING;VCO_SINE;SEND")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

29
tests/test_add_stereo.asm Normal file
View File

@ -0,0 +1,29 @@
%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,
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_LOADVAL MONO,VALUE(32)
SU_LOADVAL MONO,VALUE(64)
SU_LOADVAL MONO,VALUE(128)
SU_ADD STEREO
SU_XCH STEREO
SU_POP MONO
SU_POP MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -0,0 +1,21 @@
%define BPM 100
%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_ENVELOPE STEREO,ATTAC(64),DECAY(64),SUSTAIN(64),RELEASE(80),GAIN(128)
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -0,0 +1,23 @@
%define BPM 100
%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_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 STEREO,HOLDFREQ(3)
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -14,7 +14,8 @@ SU_END_TRACKS
SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADNOTE STEREO
SU_LOADNOTE MONO
SU_LOADNOTE MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH

View File

@ -0,0 +1,22 @@
%define BPM 100
%define SINGLE_FILE
%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_LOADNOTE STEREO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -14,8 +14,8 @@ SU_END_TRACKS
SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(40)
SU_LOADVAL MONO,VALUE(80)
SU_LOADVAL MONO,VALUE(40)
SU_LOADVAL MONO,VALUE(80)
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH

View File

@ -0,0 +1,22 @@
%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 STEREO,VALUE(40)
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

29
tests/test_mul_stereo.asm Normal file
View File

@ -0,0 +1,29 @@
%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(96)
SU_LOADVAL MONO,VALUE(128)
SU_LOADVAL MONO,VALUE(0)
SU_LOADVAL MONO,VALUE(96)
SU_MUL STEREO
SU_XCH STEREO
SU_POP MONO
SU_POP MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -17,11 +17,11 @@ SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(96)
SU_LOADVAL MONO,VALUE(0)
SU_MULP MONO
SU_MULP MONO
SU_LOADVAL MONO,VALUE(96)
SU_LOADVAL MONO,VALUE(128)
SU_MULP MONO
SU_OUT STEREO,GAIN(128)
SU_MULP MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH

View File

@ -13,11 +13,12 @@ SU_END_TRACKS
SU_BEGIN_PATCH
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_NOISE MONO, SHAPE(64),GAIN(128)
SU_MULP MONO
SU_ENVELOPE MONO, ATTAC(32),DECAY(32),SUSTAIN(64),RELEASE(64),GAIN(128)
SU_NOISE MONO, SHAPE(96),GAIN(128)
SU_MULP STEREO
SU_MULP MONO
SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH

View File

@ -0,0 +1,24 @@
%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_NOISE STEREO, SHAPE(96),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_MULP STEREO
SU_OUT STEREO, GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View 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_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 STEREO,PANNING(40)
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

26
tests/test_pop_stereo.asm Normal file
View File

@ -0,0 +1,26 @@
%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_LOADVAL MONO,VALUE(96)
SU_LOADVAL MONO,VALUE(0)
SU_LOADVAL MONO,VALUE(0)
SU_POP STEREO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -0,0 +1,26 @@
%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_LOADVAL MONO,VALUE(96)
SU_PUSH STEREO
SU_POP MONO
SU_POP MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

28
tests/test_receive.asm Normal file
View File

@ -0,0 +1,28 @@
%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) ; should receive -0.5
SU_SEND MONO,AMOUNT(128),PORT(5,receive,left) ; should send -0.25
SU_SEND MONO,AMOUNT(128),PORT(6,receive,left) + SEND_POP ; should send -0.25
SU_LOADVAL MONO,VALUE(128) ; should receive 1
SU_SEND MONO,AMOUNT(128),PORT(6,receive,left) + SEND_POP ; should send 0.5
SU_RECEIVE MONO ; should receive -0.5
SU_RECEIVE MONO ; should receive 0.5
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -0,0 +1,27 @@
%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) ; should receive -0.5
SU_SEND MONO,AMOUNT(128),PORT(5,receive,right) ; should send -0.25
SU_SEND MONO,AMOUNT(128),PORT(5,receive,left) + SEND_POP ; should send -0.25
SU_LOADVAL MONO,VALUE(128) ; should receive 1
SU_SEND MONO,AMOUNT(128),PORT(5,receive,left) + SEND_POP ; should send 0.5
SU_RECEIVE STEREO; should receive 0.5 -0.5
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -0,0 +1,28 @@
%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(0)
SU_SEND STEREO,AMOUNT(96),PORT(6,receive,left) + SEND_POP
SU_LOADVAL MONO,VALUE(64)
SU_LOADVAL MONO,VALUE(128)
SU_SEND STEREO,AMOUNT(128),PORT(6,receive,left) + SEND_POP
SU_RECEIVE STEREO; should receive 0.5 -0.5
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"

View File

@ -1,5 +1,4 @@
%define BPM 100
%define SINGLE_FILE
%define USE_SECTIONS
%include "../src/sointu.inc"
@ -16,8 +15,8 @@ SU_BEGIN_PATCH
SU_BEGIN_INSTRUMENT VOICES(1) ; Instrument0
SU_LOADVAL MONO,VALUE(96)
SU_LOADVAL MONO,VALUE(32)
SU_XCH MONO
SU_OUT STEREO,GAIN(128)
SU_XCH MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH

27
tests/test_xch_stereo.asm Normal file
View File

@ -0,0 +1,27 @@
%define BPM 100
%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_LOADVAL MONO,VALUE(32)
SU_LOADVAL MONO,VALUE(96)
SU_XCH STEREO
SU_POP MONO
SU_POP MONO
SU_OUT STEREO,GAIN(128)
SU_END_INSTRUMENT
SU_END_PATCH
%include "../src/sointu.asm"