mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-28 03:10:24 -04:00
The stereo opcode variants have bit 1 of the command stream set. The polyphony is split into two parts: 1) polyphony, meaning that voices reuse the same opcodes; 2) multitrack voices, meaning that a track triggers more than voice. They both can be flexible defined in any combinations: for example voice 1 and 2 can be triggered by track 1 and use instrument 1, and voice 3 by track 2/instrument 2 and voice 4 by track 3/instrument 2. This is achieved through the use of bitmasks: in the aforementioned example, bit 1 of su_voicetrack_bitmask would be set, meaning "the voice after voice #1 will be triggered by the same track". On the other hand, bits 1 and 3 of su_polyphony_bitmask would be set to indicate that "the voices after #1 and #3 will reuse the same instruments".
169 lines
4.2 KiB
PHP
169 lines
4.2 KiB
PHP
;-------------------------------------------------------------------------------
|
|
; ADDP related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign ADDP_ID -1
|
|
%macro USE_ADDP 0
|
|
%if ADDP_ID == -1
|
|
%assign ADDP_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_addp,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_ADDP 1
|
|
USE_ADDP
|
|
%xdefine CMDS CMDS ADDP_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_ADDP
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; ADD related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign ADD_ID -1
|
|
%macro USE_ADD 0
|
|
%if ADD_ID == -1
|
|
%assign ADD_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_add,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%assign ADD_ID -1
|
|
%macro SU_ADD 1
|
|
USE_ADD
|
|
%xdefine CMDS CMDS ADD_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_ADD
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; POP related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign POP_ID -1
|
|
%macro USE_POP 0
|
|
%if POP_ID == -1
|
|
%assign POP_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_pop,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_POP 1
|
|
USE_POP
|
|
%xdefine CMDS CMDS POP_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_POP
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; LOADNOTE related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign LOADNOTE_ID -1
|
|
%macro USE_LOADNOTE 0
|
|
%if LOADNOTE_ID == -1
|
|
%assign LOADNOTE_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_loadnote,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_LOADNOTE 1
|
|
USE_LOADNOTE
|
|
%xdefine CMDS CMDS LOADNOTE_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_LOADNOTE
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; MUL related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign MUL_ID -1
|
|
%macro USE_MUL 0
|
|
%if MUL_ID == -1
|
|
%assign MUL_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_mul,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_MUL 1
|
|
USE_MUL
|
|
%xdefine CMDS CMDS MUL_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_MUL
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; MULP related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign MULP_ID -1
|
|
%macro USE_MULP 0
|
|
%if MULP_ID == -1
|
|
%assign MULP_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_mulp,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_MULP 1
|
|
USE_MULP
|
|
%xdefine CMDS CMDS MULP_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_MULP
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; PUSH related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign PUSH_ID -1
|
|
%macro USE_PUSH 0
|
|
%if PUSH_ID == -1
|
|
%assign PUSH_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_push,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_PUSH 1
|
|
USE_PUSH
|
|
%xdefine CMDS CMDS PUSH_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_PUSH
|
|
%endif
|
|
%endmacro
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; XCH related defines
|
|
;-------------------------------------------------------------------------------
|
|
%assign XCH_ID -1
|
|
%macro USE_XCH 0
|
|
%if XCH_ID == -1
|
|
%assign XCH_ID CUR_ID
|
|
%assign CUR_ID CUR_ID + 2
|
|
%xdefine OPCODES OPCODES MANGLE_FUNC(su_op_xch,0),
|
|
%xdefine NUMPARAMS NUMPARAMS 0,
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro SU_XCH 1
|
|
USE_XCH
|
|
%xdefine CMDS CMDS XCH_ID + %1,
|
|
%if %1 == STEREO
|
|
%define INCLUDE_STEREO_XCH
|
|
%endif
|
|
%endmacro
|