diff --git a/src/droplets/sequencer_droplet.cpp b/src/droplets/sequencer_droplet.cpp new file mode 100644 index 0000000..243d8a6 --- /dev/null +++ b/src/droplets/sequencer_droplet.cpp @@ -0,0 +1,25 @@ +#include "sequencer_droplet.h" + +SequencerDroplet::SequencerDroplet(DaisyPatch* m_patch, + DropletState m_state, + float sample_rate) : + Droplet(m_patch, + m_state) { +} + +SequencerDroplet::~SequencerDroplet() {} + +void SequencerDroplet::Control() {} + +void SequencerDroplet::Process(AudioHandle::InputBuffer in, + AudioHandle::OutputBuffer out, + size_t size) { +} + +void SequencerDroplet::Draw() { + DrawName("Sequencer"); +} + +void SequencerDroplet::UpdateStateCallback() {} + +void SequencerDroplet::SetControls() {} diff --git a/src/droplets/sequencer_droplet.h b/src/droplets/sequencer_droplet.h new file mode 100644 index 0000000..d9c41d9 --- /dev/null +++ b/src/droplets/sequencer_droplet.h @@ -0,0 +1,66 @@ +#pragma once + +#ifndef DROPLETS_SEQUENCER_DROPLET_H_ +#define DROPLETS_SEQUENCER_DROPLET_H_ + +#include "daisysp.h" +#include "daisy_patch.h" + +#include "droplet.h" +#include "../util.h" + +class SequencerDroplet: public Droplet { +private: + int sequence_length = 32; + int step = 0; + float swquence[32] = { 0.0f }; +public: + /* + * Constructor for a droplet. + * + * @param m_patch pointer to patch + * @param m_state droplet position + * @param sample_rate audio sample rate + */ + SequencerDroplet(DaisyPatch* m_patch, + DropletState m_state, + float sample_rate); + + /* + * Destructor for sequencer droplet. + */ + ~SequencerDroplet(); + + /* + * Processes user controls and inputs. + */ + void Control(); + + /* + * Processes audio input and outputs. + * + * @param in the audio inputs for the patch + * @param out the audio outputs for the patch + * @param size the number of inputs and outputs + */ + void Process(AudioHandle::InputBuffer in, + AudioHandle::OutputBuffer out, + size_t size); + + /* + * Processes information to be shown on the display. + */ + void Draw(); + + /* + * Runs when droplet state is updated. + */ + void UpdateStateCallback(); + + /* + * Set up the controls for the droplet. + */ + void SetControls(); +}; + +#endif // DROPLETS_SEQUENCER_DROPLET_H_ diff --git a/src/main.cpp b/src/main.cpp index 43bbc99..cbb6ceb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -145,6 +145,13 @@ Droplet* GetDroplet(DropletState state, case MenuState::kMixer: return new MixerDroplet(&patch, state); + case MenuState::kNoise: + return new NoiseDroplet(&patch, + state); + case MenuState::kSequencer: + return new SequencerDroplet(&patch, + state, + sample_rate); case MenuState::kVCA: return new VCADroplet(&patch, state); @@ -152,8 +159,5 @@ Droplet* GetDroplet(DropletState state, return new VCODroplet(&patch, state, sample_rate); - case MenuState::kNoise: - return new NoiseDroplet(&patch, - state); - } +} } diff --git a/src/main.h b/src/main.h index 92847fb..605b94c 100644 --- a/src/main.h +++ b/src/main.h @@ -17,6 +17,7 @@ #include "droplets/lfo_droplet.h" #include "droplets/mixer_droplet.h" #include "droplets/noise_droplet.h" +#include "droplets/sequencer_droplet.h" #include "droplets/vca_droplet.h" #include "droplets/vco_droplet.h" diff --git a/src/menu.cpp b/src/menu.cpp index 885624e..8ce0987 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -14,6 +14,7 @@ Menu::Menu(DaisyPatch* m_patch, head->AddItemEnd(new MenuItem(MenuState::kLFO, "LFO")); head->AddItemEnd(new MenuItem(MenuState::kMixer, "Mixer")); head->AddItemEnd(new MenuItem(MenuState::kNoise, "Noise")); + head->AddItemEnd(new MenuItem(MenuState::kSequencer, "Sequencer")); head->AddItemEnd(new MenuItem(MenuState::kVCA, "VCA")); head->AddItemEnd(new MenuItem(MenuState::kVCO, "VCO")); diff --git a/src/menu_item.h b/src/menu_item.h index 761b1bf..522d783 100644 --- a/src/menu_item.h +++ b/src/menu_item.h @@ -6,7 +6,7 @@ #include enum class MenuState {kSplit, kChange, kAD, kLadderFilter, - kLFO, kMixer, kNoise, kVCA, kVCO}; + kLFO, kMixer, kNoise, kSequencer, kVCA, kVCO}; class MenuItem { private: