From 6b19b06e48d7aaa913c5b032463151fbd68705ae Mon Sep 17 00:00:00 2001 From: heck Date: Mon, 23 Sep 2024 03:16:22 +0200 Subject: [PATCH] Fix: Samplerate constexpr - update for improved Samplerate representation in libDaisy --- src/globals.hh | 6 ++++-- src/instr_abstract.hh | 2 -- src/instr_bd2.cc | 2 +- src/instr_fm.cc | 2 +- src/instr_grainlet.cc | 2 +- src/instr_hihat.cc | 2 +- src/instr_kick.cc | 6 +++--- src/instr_noise.cc | 2 +- src/instr_zosc.cc | 2 +- src/main_perkons.cc | 22 +--------------------- 10 files changed, 14 insertions(+), 34 deletions(-) diff --git a/src/globals.hh b/src/globals.hh index 2deb400..872bbca 100644 --- a/src/globals.hh +++ b/src/globals.hh @@ -7,15 +7,17 @@ #include "types.hh" namespace Heck { + using Samplerate = ld::SaiHandle::Config::SampleRate; + namespace Constants { namespace Hardware { constexpr int PIN_BUTTON_RECORD = 28; constexpr int PIN_BUTTON_CLEAR = 27; } - constexpr bool CPU_BOOST480MHZ = false; + constexpr bool CPU_BOOST480MHZ = true; constexpr int AUDIO_BUFFERSIZE = 4; - constexpr int AUDIO_SAMPLERATE = 48000; + constexpr Samplerate AUDIO_SAMPLERATE = Samplerate::SAI_48KHZ; constexpr int TRACK_COUNT = 4; namespace MIDI_Mapping { diff --git a/src/instr_abstract.hh b/src/instr_abstract.hh index 40c9769..0bac8e9 100644 --- a/src/instr_abstract.hh +++ b/src/instr_abstract.hh @@ -5,8 +5,6 @@ namespace Heck { namespace Instrument { - static int samplerate = Constants::AUDIO_SAMPLERATE; - class AbstractInstrument { public: virtual void trigger() = 0; diff --git a/src/instr_bd2.cc b/src/instr_bd2.cc index c96cf60..e9a2f12 100644 --- a/src/instr_bd2.cc +++ b/src/instr_bd2.cc @@ -12,7 +12,7 @@ namespace Heck { void BD2::init() { - bd2.Init(samplerate); + bd2.Init(Constants::AUDIO_SAMPLERATE); bd2.SetDecay(1.); bd2.SetTone(0.4); bd2.SetAccent(1.); diff --git a/src/instr_fm.cc b/src/instr_fm.cc index d99ec76..94ea6eb 100644 --- a/src/instr_fm.cc +++ b/src/instr_fm.cc @@ -12,7 +12,7 @@ namespace Heck { void FM::init() { - osc.Init(samplerate); + osc.Init(Constants::AUDIO_SAMPLERATE); osc.SetFrequency(40); osc.SetRatio(0.); osc.SetIndex(0.); diff --git a/src/instr_grainlet.cc b/src/instr_grainlet.cc index c7db210..d133f6c 100644 --- a/src/instr_grainlet.cc +++ b/src/instr_grainlet.cc @@ -12,7 +12,7 @@ namespace Heck { void Grainlet::init() { - grainlet.Init(samplerate); + grainlet.Init(Constants::AUDIO_SAMPLERATE); } void Grainlet::trigger() diff --git a/src/instr_hihat.cc b/src/instr_hihat.cc index 420b0e1..c73bd62 100644 --- a/src/instr_hihat.cc +++ b/src/instr_hihat.cc @@ -12,7 +12,7 @@ namespace Heck { void HiHat::init() { - hihat.Init(samplerate); + hihat.Init(Constants::AUDIO_SAMPLERATE); hihat.SetDecay(1.); } diff --git a/src/instr_kick.cc b/src/instr_kick.cc index c5982b1..513ac0c 100644 --- a/src/instr_kick.cc +++ b/src/instr_kick.cc @@ -12,16 +12,16 @@ namespace Heck { void Kick::init() { - osc.Init(samplerate); + osc.Init(Constants::AUDIO_SAMPLERATE); osc.SetWaveform(dsp::Oscillator::WAVE_TRI); osc.SetAmp(1); - pitchEnv.Init(samplerate); + pitchEnv.Init(Constants::AUDIO_SAMPLERATE); pitchEnv.SetTime(dsp::ADENV_SEG_ATTACK, .001); pitchEnv.SetTime(dsp::ADENV_SEG_DECAY, .01); - chorus.Init(samplerate); + chorus.Init(Constants::AUDIO_SAMPLERATE); chorus.SetDelay(0.2); chorus.SetFeedback(0.8); chorus.SetLfoDepth(0.2); diff --git a/src/instr_noise.cc b/src/instr_noise.cc index f4f817b..148d4f1 100644 --- a/src/instr_noise.cc +++ b/src/instr_noise.cc @@ -12,7 +12,7 @@ namespace Heck { { noise.Init(); - env.Init(samplerate); + env.Init(Constants::AUDIO_SAMPLERATE); env.SetTime(dsp::ADENV_SEG_ATTACK, .0001); env.SetTime(dsp::ADENV_SEG_DECAY, .01); env.SetMax(1); diff --git a/src/instr_zosc.cc b/src/instr_zosc.cc index d1a0850..a11ff26 100644 --- a/src/instr_zosc.cc +++ b/src/instr_zosc.cc @@ -12,7 +12,7 @@ namespace Heck { void ZOsc::init() { - zosc.Init(samplerate); + zosc.Init(Constants::AUDIO_SAMPLERATE); zosc.SetFreq(40.f); zosc.SetShape(1.); zosc.SetFormantFreq(200); diff --git a/src/main_perkons.cc b/src/main_perkons.cc index 7c485b0..4cbd39c 100644 --- a/src/main_perkons.cc +++ b/src/main_perkons.cc @@ -70,27 +70,7 @@ namespace Heck { hw.SetAudioBlockSize(Constants::AUDIO_BUFFERSIZE); hw.PrintLine("Setting Samplerate: %i", Constants::AUDIO_SAMPLERATE); - switch (Constants::AUDIO_SAMPLERATE) { - case 8000: - hw.SetAudioSampleRate(ld::SaiHandle::Config::SampleRate::SAI_8KHZ); - break; - case 16000: - hw.SetAudioSampleRate(ld::SaiHandle::Config::SampleRate::SAI_16KHZ); - break; - case 32000: - hw.SetAudioSampleRate(ld::SaiHandle::Config::SampleRate::SAI_32KHZ); - break; - case 48000: - hw.SetAudioSampleRate(ld::SaiHandle::Config::SampleRate::SAI_48KHZ); - break; - case 96000: - hw.SetAudioSampleRate(ld::SaiHandle::Config::SampleRate::SAI_48KHZ); - break; - default: - hw.PrintLine("Samplerate not supported, fallback to 48000"); - hw.SetAudioSampleRate(ld::SaiHandle::Config::SampleRate::SAI_48KHZ); - break; - } + hw.SetAudioSampleRate(Constants::AUDIO_SAMPLERATE); hw.PrintLine("Initializing MIDI"); ld::MidiUartHandler::Config midi_config{};