aboutsummaryrefslogtreecommitdiff
path: root/audio/softsynth/mt32/LA32FloatWaveGenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'audio/softsynth/mt32/LA32FloatWaveGenerator.h')
-rw-r--r--audio/softsynth/mt32/LA32FloatWaveGenerator.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/audio/softsynth/mt32/LA32FloatWaveGenerator.h b/audio/softsynth/mt32/LA32FloatWaveGenerator.h
index 89b6fe479a..329e5de258 100644
--- a/audio/softsynth/mt32/LA32FloatWaveGenerator.h
+++ b/audio/softsynth/mt32/LA32FloatWaveGenerator.h
@@ -1,5 +1,5 @@
/* Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009 Dean Beeler, Jerome Fisher
- * Copyright (C) 2011-2016 Dean Beeler, Jerome Fisher, Sergey V. Mikayev
+ * Copyright (C) 2011, 2012, 2013, 2014 Dean Beeler, Jerome Fisher, Sergey V. Mikayev
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -16,15 +16,14 @@
*/
#ifndef MT32EMU_LA32_WAVE_GENERATOR_H
-#error This file should be included from LA32WaveGenerator.h only.
-#endif
+#define MT32EMU_LA32_WAVE_GENERATOR_H
namespace MT32Emu {
/**
* LA32WaveGenerator is aimed to represent the exact model of LA32 wave generator.
* The output square wave is created by adding high / low linear segments in-between
- * the rising and falling cosine segments. Basically, it's very similar to the phase distortion synthesis.
+ * the rising and falling cosine segments. Basically, it’s very similar to the phase distortion synthesis.
* Behaviour of a true resonance filter is emulated by adding decaying sine wave.
* The beginning and the ending of the resonant sine is multiplied by a cosine window.
* To synthesise sawtooth waves, the resulting square wave is multiplied by synchronous cosine wave.
@@ -39,6 +38,12 @@ class LA32WaveGenerator {
// True means the resulting square wave is to be multiplied by the synchronous cosine
bool sawtoothWaveform;
+ // Logarithmic amp of the wave generator
+ Bit32u amp;
+
+ // Logarithmic frequency of the resulting wave
+ Bit16u pitch;
+
// Values in range [1..31]
// Value 1 correspong to the minimum resonance
Bit8u resonance;
@@ -48,6 +53,9 @@ class LA32WaveGenerator {
// Value 255 corresponds to the maximum possible asymmetric of the resulting wave
Bit8u pulseWidth;
+ // Composed of the base cutoff in range [78..178] left-shifted by 18 bits and the TVF modifier
+ Bit32u cutoffVal;
+
// Logarithmic PCM sample start address
const Bit16s *pcmWaveAddress;
@@ -88,7 +96,7 @@ public:
// Return true if the WG engine generates PCM wave samples
bool isPCMWave() const;
-}; // class LA32WaveGenerator
+};
// LA32PartialPair contains a structure of two partials being mixed / ring modulated
class LA32PartialPair {
@@ -127,6 +135,8 @@ public:
// Return active state of the WG engine
bool isActive(const PairType master) const;
-}; // class LA32PartialPair
+};
} // namespace MT32Emu
+
+#endif // #ifndef MT32EMU_LA32_WAVE_GENERATOR_H