Sequencer outline

This commit is contained in:
Christian Colglazier 2022-02-01 20:03:56 -05:00
parent 0db942e9c4
commit d5f2a5521b
6 changed files with 102 additions and 5 deletions

View File

@ -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() {}

View File

@ -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_

View File

@ -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);
}
}
}

View File

@ -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"

View File

@ -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"));

View File

@ -6,7 +6,7 @@
#include <string>
enum class MenuState {kSplit, kChange, kAD, kLadderFilter,
kLFO, kMixer, kNoise, kVCA, kVCO};
kLFO, kMixer, kNoise, kSequencer, kVCA, kVCO};
class MenuItem {
private: