diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/macros/music_voice.inc | 91 | 
1 files changed, 59 insertions, 32 deletions
| diff --git a/include/macros/music_voice.inc b/include/macros/music_voice.inc index b7a9e7f8d..64dd38214 100644 --- a/include/macros/music_voice.inc +++ b/include/macros/music_voice.inc @@ -1,19 +1,19 @@ -	.macro voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release +	.macro voice_directsound base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req  	.byte 0  	_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release  	.endm -	.macro voice_directsound_no_resample base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release +	.macro voice_directsound_no_resample base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req  	.byte 8  	_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release  	.endm -	.macro voice_directsound_alt base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release +	.macro voice_directsound_alt base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req  	.byte 16  	_voice_directsound \base_midi_key, \pan, \sample_data_pointer, \attack, \decay, \sustain, \release  	.endm -	.macro _voice_directsound base_midi_key, pan, sample_data_pointer, attack, decay, sustain, release +	.macro _voice_directsound base_midi_key:req, pan:req, sample_data_pointer:req, attack:req, decay:req, sustain:req, release:req  	.byte \base_midi_key  	.byte 0  	.if \pan != 0 @@ -28,16 +28,22 @@  	.byte \release  	.endm -	.macro voice_square_1 sweep, duty_cycle, attack, decay, sustain, release -	_voice_square_1 1, \sweep, \duty_cycle, \attack, \decay, \sustain, \release +	.macro voice_square_1 base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req +	_voice_square_1 1, \base_midi_key, \pan, \sweep, \duty_cycle, \attack, \decay, \sustain, \release  	.endm -	.macro voice_square_1_alt sweep, duty_cycle, attack, decay, sustain, release -	_voice_square_1 9, \sweep, \duty_cycle, \attack, \decay, \sustain, \release +	.macro voice_square_1_alt base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req +	_voice_square_1 9, \base_midi_key, \pan, \sweep, \duty_cycle, \attack, \decay, \sustain, \release  	.endm -	.macro _voice_square_1 type, sweep, duty_cycle, attack, decay, sustain, release -	.byte \type, 60, 0 +	.macro _voice_square_1 type:req, base_midi_key:req, pan:req, sweep:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req +	.byte \type +	.byte \base_midi_key +	.if \pan != 0 +	.byte (0x80 | \pan) +	.else +	.byte 0 +	.endif  	.byte \sweep  	.byte (\duty_cycle & 0x3)  	.byte 0, 0, 0 @@ -47,16 +53,23 @@  	.byte (\release & 0x7)  	.endm -	.macro voice_square_2 duty_cycle, attack, decay, sustain, release -	_voice_square_2 2, \duty_cycle, \attack, \decay, \sustain, \release +	.macro voice_square_2 base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req +	_voice_square_2 2, \base_midi_key, \pan, \duty_cycle, \attack, \decay, \sustain, \release  	.endm -	.macro voice_square_2_alt duty_cycle, attack, decay, sustain, release -	_voice_square_2 10, \duty_cycle, \attack, \decay, \sustain, \release +	.macro voice_square_2_alt base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req +	_voice_square_2 10, \base_midi_key, \pan, \duty_cycle, \attack, \decay, \sustain, \release  	.endm -	.macro _voice_square_2 type, duty_cycle, attack, decay, sustain, release -	.byte \type, 60, 0, 0 +	.macro _voice_square_2 type:req, base_midi_key:req, pan:req, duty_cycle:req, attack:req, decay:req, sustain:req, release:req +	.byte \type +	.byte \base_midi_key +	.if \pan != 0 +	.byte (0x80 | \pan) +	.else +	.byte 0 +	.endif +	.byte 0  	.byte (\duty_cycle & 0x3)  	.byte 0, 0, 0  	.byte (\attack  & 0x7) @@ -65,16 +78,23 @@  	.byte (\release & 0x7)  	.endm -	.macro voice_programmable_wave wave_samples_pointer, attack, decay, sustain, release -	_voice_programmable_wave 3, \wave_samples_pointer, \attack, \decay, \sustain, \release +	.macro voice_programmable_wave base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req +	_voice_programmable_wave 3, \base_midi_key, \pan, \wave_samples_pointer, \attack, \decay, \sustain, \release  	.endm -	.macro voice_programmable_wave_alt wave_samples_pointer, attack, decay, sustain, release -	_voice_programmable_wave 11, \wave_samples_pointer, \attack, \decay, \sustain, \release +	.macro voice_programmable_wave_alt base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req +	_voice_programmable_wave 11, \base_midi_key, \pan, \wave_samples_pointer, \attack, \decay, \sustain, \release  	.endm -	.macro _voice_programmable_wave type, wave_samples_pointer, attack, decay, sustain, release -	.byte \type, 60, 0, 0 +	.macro _voice_programmable_wave type:req, base_midi_key:req, pan:req, wave_samples_pointer:req, attack:req, decay:req, sustain:req, release:req +	.byte \type +	.byte \base_midi_key +	.if \pan != 0 +	.byte (0x80 | \pan) +	.else +	.byte 0 +	.endif +	.byte 0  	.4byte \wave_samples_pointer  	.byte (\attack  & 0x7)  	.byte (\decay   & 0x7) @@ -82,16 +102,23 @@  	.byte (\release & 0x7)  	.endm -	.macro voice_noise period, attack, decay, sustain, release -	_voice_noise 4, \period, \attack, \decay, \sustain, \release +	.macro voice_noise base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req +	_voice_noise 4, \base_midi_key, \pan, \period, \attack, \decay, \sustain, \release  	.endm -	.macro voice_noise_alt period, attack, decay, sustain, release -	_voice_noise 12, \period, \attack, \decay, \sustain, \release +	.macro voice_noise_alt base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req +	_voice_noise 12, \base_midi_key, \pan, \period, \attack, \decay, \sustain, \release  	.endm -	.macro _voice_noise type, period, attack, decay, sustain, release -	.byte \type, 60, 0, 0 +	.macro _voice_noise type:req, base_midi_key:req, pan:req, period:req, attack:req, decay:req, sustain:req, release:req +	.byte \type +	.byte \base_midi_key +	.if \pan != 0 +	.byte (0x80 | \pan) +	.else +	.byte 0 +	.endif +	.byte 0  	.byte (\period & 0x1)  	.byte 0, 0, 0  	.byte (\attack  & 0x7) @@ -100,25 +127,25 @@  	.byte (\release & 0x7)  	.endm -	.macro voice_keysplit voice_group_pointer, keysplit_table_pointer +	.macro voice_keysplit voice_group_pointer:req, keysplit_table_pointer:req  	.byte 0x40, 0, 0, 0  	.4byte \voice_group_pointer  	.4byte \keysplit_table_pointer  	.endm -	.macro voice_keysplit_all voice_group_pointer +	.macro voice_keysplit_all voice_group_pointer:req  	.byte 0x80, 0, 0, 0  	.4byte \voice_group_pointer  	.4byte 0  	.endm -	.macro cry sample +	.macro cry sample:req  	.byte 0x20, 60, 0, 0  	.4byte \sample  	.byte 0xff, 0, 0xff, 0  	.endm -	.macro cry2 sample +	.macro cry2 sample:req  	.byte 0x30, 60, 0, 0  	.4byte \sample  	.byte 0xff, 0, 0xff, 0 | 
