2 changed files with 154 additions and 0 deletions
@ -0,0 +1,124 @@ |
|||||
|
// Hecks perkons extension
|
||||
|
|
||||
|
#include <functional> |
||||
|
#include "main_template_full.hh" |
||||
|
#include "utils.hh" |
||||
|
|
||||
|
namespace Heck { |
||||
|
namespace { // anonymous namespace for internal linkage
|
||||
|
// =============================================================================================
|
||||
|
// INIT
|
||||
|
// =============================================================================================
|
||||
|
ld::DaisySeed seed{}; |
||||
|
|
||||
|
static ld::MidiUartHandler midi{}; |
||||
|
|
||||
|
// function prototypes
|
||||
|
void audio_callback( |
||||
|
ld::AudioHandle::InputBuffer in, |
||||
|
ld::AudioHandle::OutputBuffer out, |
||||
|
size_t size) |
||||
|
; |
||||
|
void midi_realtime_handler(const ld::MidiEvent& msg); |
||||
|
|
||||
|
void init() |
||||
|
{ |
||||
|
seed.Configure(); |
||||
|
seed.Init(Constants::CPU_BOOST480MHZ); |
||||
|
seed.StartLog(Constants::Developer::LOG_BLOCKS_BOOT); |
||||
|
|
||||
|
seed.PrintLine("Setting Blocksize: %i", Constants::AUDIO_BUFFERSIZE); |
||||
|
seed.SetAudioBlockSize(Constants::AUDIO_BUFFERSIZE); |
||||
|
|
||||
|
seed.PrintLine("Setting Samplerate: %i", Constants::AUDIO_SAMPLERATE); |
||||
|
seed.SetAudioSampleRate(Constants::AUDIO_SAMPLERATE); |
||||
|
|
||||
|
seed.PrintLine("Initializing MIDI"); |
||||
|
ld::MidiUartHandler::Config midi_config{}; |
||||
|
midi.Init(midi_config); |
||||
|
|
||||
|
seed.PrintLine("Starting MIDI Receive"); |
||||
|
midi.StartReceiveRt(&midi_realtime_handler); |
||||
|
midi.Listen(); |
||||
|
|
||||
|
seed.PrintLine("Starting Audio"); |
||||
|
seed.StartAudio(audio_callback); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// =============================================================================================
|
||||
|
// RUN
|
||||
|
// =============================================================================================
|
||||
|
|
||||
|
void audio_callback(ld::AudioHandle::InputBuffer in, ld::AudioHandle::OutputBuffer out, size_t size) |
||||
|
{ |
||||
|
// Channel 1
|
||||
|
for (size_t i = 0; i < size; i++) { |
||||
|
out[0][i] = in[0][i]; |
||||
|
} |
||||
|
|
||||
|
// Channel 2
|
||||
|
for (size_t i = 0; i < size; i++) { |
||||
|
out[1][i] = in[1][i]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
void midi_realtime_handler(const ld::MidiEvent& msg) |
||||
|
{ |
||||
|
switch (msg.srt_type) { |
||||
|
case ld::TimingClock: { |
||||
|
} break; |
||||
|
case ld::Start: { |
||||
|
} break; |
||||
|
case ld::Stop: { |
||||
|
} break; |
||||
|
case ld::Reset: { |
||||
|
} break; |
||||
|
case ld::Continue: { |
||||
|
} break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void midi_async_handler(const ld::MidiEvent& msg) |
||||
|
{ |
||||
|
char strbuf[128]; |
||||
|
GetMidiTypeAsString(msg, &strbuf[0]); |
||||
|
seed.PrintLine("%s", strbuf); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
void mainloop() |
||||
|
{ |
||||
|
seed.PrintLine("Entering MainLoop"); |
||||
|
u32 systick_now{}; |
||||
|
|
||||
|
bool heartbeat_led_state{ false }; |
||||
|
|
||||
|
SWTimer heartbeat{}; |
||||
|
heartbeat.set_period(100); |
||||
|
heartbeat.set_callback([&heartbeat_led_state]() { |
||||
|
heartbeat_led_state = !heartbeat_led_state; |
||||
|
seed.SetLed(heartbeat_led_state); |
||||
|
return; |
||||
|
}); |
||||
|
|
||||
|
while (true) { |
||||
|
systick_now = ld::System::GetNow(); |
||||
|
|
||||
|
while (midi.HasEvents()) { |
||||
|
midi_async_handler(midi.PopEvent()); |
||||
|
} |
||||
|
|
||||
|
heartbeat.is_it_already_time_again(systick_now); |
||||
|
} |
||||
|
} |
||||
|
} // namespace
|
||||
|
} // namespace Heck
|
||||
|
|
||||
|
|
||||
|
int main() |
||||
|
{ |
||||
|
Heck::init(); |
||||
|
Heck::mainloop(); |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
#ifndef HECK_DAISY_GLOBALS_HH |
||||
|
#define HECK_DAISY_GLOBALS_HH |
||||
|
|
||||
|
#include <cstdint> |
||||
|
#include "daisy_seed.h" |
||||
|
#include "daisysp.h" |
||||
|
#include "types.hh" |
||||
|
|
||||
|
namespace Heck { |
||||
|
namespace Constants { |
||||
|
namespace Hardware { |
||||
|
// constexpr int PIN_BUTTON_RECORD = 28;
|
||||
|
} |
||||
|
|
||||
|
constexpr bool CPU_BOOST480MHZ = false; |
||||
|
constexpr int AUDIO_BUFFERSIZE = 4; |
||||
|
constexpr Samplerate AUDIO_SAMPLERATE = Samplerate::SAI_48KHZ; |
||||
|
|
||||
|
namespace Developer { |
||||
|
constexpr bool LOG_BLOCKS_BOOT = false; |
||||
|
} |
||||
|
} // namespace Constants
|
||||
|
|
||||
|
//Hardware
|
||||
|
extern ld::DaisySeed seed; |
||||
|
// extern ld::Switch but_rec;
|
||||
|
} // namespace Heck
|
||||
|
|
||||
|
|
||||
|
#endif |
Loading…
Reference in new issue