Skip to content

File daisy_patch.h

File List > external-docs > libDaisy > src > daisy_patch.h

Go to the documentation of this file

Source Code

#pragma once
#ifndef DSY_PATCH_BSP_H
#define DSY_PATCH_BSP_H
#include "daisy_seed.h"
#include "dev/oled_ssd130x.h"

namespace daisy
{
class DaisyPatch
{
  public:
    enum Ctrl
    {
        CTRL_1,    
        CTRL_2,    
        CTRL_3,    
        CTRL_4,    
        CTRL_LAST, 
    };

    enum GateInput
    {
        GATE_IN_1,    
        GATE_IN_2,    
        GATE_IN_LAST, 
    };

    DaisyPatch() {}
    ~DaisyPatch() {}

    void Init(bool boost = false);

    void DelayMs(size_t del);


    void StartAudio(AudioHandle::AudioCallback cb);

    void ChangeAudioCallback(AudioHandle::AudioCallback cb);

    void StopAudio();

    void SetAudioSampleRate(SaiHandle::Config::SampleRate samplerate);

    float AudioSampleRate();

    void SetAudioBlockSize(size_t size);

    size_t AudioBlockSize();

    float AudioCallbackRate();

    void StartAdc();

    void StopAdc();


    void ProcessAnalogControls();

    inline void ProcessAllControls()
    {
        ProcessAnalogControls();
        ProcessDigitalControls();
    }

    float GetKnobValue(Ctrl k);

    void ProcessDigitalControls();

    void DisplayControls(bool invert = true);

    /* These are exposed for the user to access and manipulate directly
       Helper functions above provide easier access to much of what they are capable of.
    */
    DaisySeed       seed;                     
    Ak4556          codec;                    
    Encoder         encoder;                  
    AnalogControl   controls[CTRL_LAST];      
    GateIn          gate_input[GATE_IN_LAST]; 
    MidiUartHandler midi;                     
    OledDisplay<SSD130x4WireSpi128x64Driver> display; 
    // TODO: Add class for Gate output
    GPIO gate_output; 
  private:
    void SetHidUpdateRates();
    void InitAudio();
    void InitControls();
    void InitDisplay();
    void InitMidi();
    void InitCvOutputs();
    void InitEncoder();
    void InitGates();

    uint32_t screen_update_last_, screen_update_period_;
};

} // namespace daisy

#endif