diff options
Diffstat (limited to 'audio/src/channel.rs')
| -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 } => { |