(phase: f32)
| 547 | self.release_gain -= RELEASE_STEP; |
| 548 | } |
| 549 | if self.release_gain <= 0.0 { |
| 550 | return None; |
| 551 | } |
| 552 | |
| 553 | let raw = match self.wave { |
| 554 | WaveKind::Sine => fast_sine(sine, self.phase), |
| 555 | WaveKind::Square => { |
| 556 | if self.phase < std::f32::consts::PI { |
| 557 | 1.0 |
| 558 | } else { |
| 559 | -1.0 |
| 560 | } |
| 561 | } |
| 562 | WaveKind::Saw => (self.phase / TAU) * 2.0 - 1.0, |
| 563 | WaveKind::Triangle => { |
| 564 | let t = self.phase / TAU; |