diff options
| author | Freya Murphy <freya@freyacat.org> | 2025-11-23 17:03:18 -0500 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2025-11-23 17:03:18 -0500 |
| commit | 7bb56cba8848cde6ba68501e9efa1ac26274658b (patch) | |
| tree | 15d233f648e5cd1acb41be8e59a90c73fdc38c17 | |
| parent | audio: refactor everything (diff) | |
| download | DungeonCrawl-audio.tar.gz DungeonCrawl-audio.tar.bz2 DungeonCrawl-audio.zip | |
audio: fix triangle waveaudio
| -rw-r--r-- | audio/src/channel.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/audio/src/channel.rs b/audio/src/channel.rs index fa0bbbd..64970f2 100644 --- a/audio/src/channel.rs +++ b/audio/src/channel.rs @@ -40,8 +40,9 @@ impl ChannelKind { } Self::Triangle => { let steps = 32; - let step = (phase * steps as f32).floor() as u32; - let value = (((step as f32 / (steps - 1) as f32) * 2.0) - 0.5) * 2.0; + let tphase = if phase < 0.5 { phase } else { 1.0 - phase }; + let step = (tphase * steps as f32).floor() as u32; + let value = ((step as f32 / (steps - 1) as f32) * 4.0) - 1.0; (value * i16::MAX as f32) as i16 } Self::Noise { mode, lsr } => { |