Skip to content

Commit 2b0a6a4

Browse files
committed
Improved some of the shoddier audio handling
1 parent d8eeb1f commit 2b0a6a4

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

OutputManager.cpp

+14-3
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ OutputManager::OutputManager( void )
4545
blit::channels[CHANNEL_LEVEL].volume = 0xffff;
4646
blit::channels[CHANNEL_LEVEL].attack_ms = 32;
4747
blit::channels[CHANNEL_LEVEL].decay_ms = 512;
48-
blit::channels[CHANNEL_LEVEL].sustain = 256;
48+
blit::channels[CHANNEL_LEVEL].sustain = 0;
4949
blit::channels[CHANNEL_LEVEL].release_ms = 128;
5050

5151
blit::channels[CHANNEL_FALLING].waveforms = blit::Waveform::SINE;
@@ -66,8 +66,8 @@ OutputManager::OutputManager( void )
6666

6767
blit::channels[CHANNEL_BOUNCE].waveforms = blit::Waveform::SAW | blit::Waveform::NOISE;
6868
blit::channels[CHANNEL_BOUNCE].volume = 0x7fff;
69-
blit::channels[CHANNEL_BOUNCE].attack_ms = 8;
70-
blit::channels[CHANNEL_BOUNCE].decay_ms = 32;
69+
blit::channels[CHANNEL_BOUNCE].attack_ms = 4;
70+
blit::channels[CHANNEL_BOUNCE].decay_ms = 64;
7171
blit::channels[CHANNEL_BOUNCE].sustain = 0;
7272
blit::channels[CHANNEL_BOUNCE].release_ms = 16;
7373

@@ -118,6 +118,7 @@ void OutputManager::enable_sound( bool p_flag )
118118
blit::write_save( flags, SAVE_SLOT_OUTPUT );
119119

120120
/* And turn off any currently playing sounds. */
121+
blit::channels[CHANNEL_LEVEL].off();
121122
blit::channels[CHANNEL_FALLING].off();
122123
blit::channels[CHANNEL_PICKUP].off();
123124
blit::channels[CHANNEL_BOUNCE].off();
@@ -167,6 +168,16 @@ void OutputManager::update( uint32_t p_time )
167168
blit::vibration = 0.0f;
168169
}
169170

171+
/* Check if any channels have hit their sustain phase. */
172+
if ( blit::channels[CHANNEL_LEVEL].adsr_phase == blit::ADSRPhase::SUSTAIN )
173+
blit::channels[CHANNEL_LEVEL].trigger_release();
174+
if ( blit::channels[CHANNEL_FALLING].adsr_phase == blit::ADSRPhase::SUSTAIN )
175+
blit::channels[CHANNEL_FALLING].trigger_release();
176+
if ( blit::channels[CHANNEL_PICKUP].adsr_phase == blit::ADSRPhase::SUSTAIN )
177+
blit::channels[CHANNEL_PICKUP].trigger_release();
178+
if ( blit::channels[CHANNEL_BOUNCE].adsr_phase == blit::ADSRPhase::SUSTAIN )
179+
blit::channels[CHANNEL_BOUNCE].trigger_release();
180+
170181
/* All done. */
171182
return;
172183
}

0 commit comments

Comments
 (0)