Skip to content
Snippets Groups Projects
Select Git revision
  • b36d3d76de0a2003b1d917cbf90a47eb6b306ebc
  • main default protected
  • fix-buffer
  • feature-individual-lfos
  • feature-individual-volume
  • 1.3.0
  • 1.2.0
  • 1.1.0
  • 1.0.1
  • 1.0.0
10 results

env_follower.h

Blame
  • looper.h 11.04 KiB
    #pragma once
    
    #include "luts.h"
    
    namespace atoav {
    
    enum RecPitchMode {
      REC_PITCH_MODE_NORMAL,
      REC_PITCH_MODE_UNPITCHED,
      REC_PITCH_MODE_LAST,
    };
    
    enum RecStartMode {
      REC_START_MODE_BUFFER,
      REC_START_MODE_LOOP,
      REC_START_MODE_PLAYHEAD,
      REC_START_MODE_LAST,
    };
    
    enum PlaybackState {
      PLAYBACK_STATE_STOPPED,
      PLAYBACK_STATE_LOOP,
      PLAYBACK_STATE_MULTILOOP,
      PLAYBACK_STATE_MIDI,
      PLAYBACK_STATE_LAST,
    };
    
    enum RecordingState {
      REC_STATE_EMPTY,
      REC_STATE_RECORDING,
      REC_STATE_OVERDUBBING,
      REC_STATE_ERASING,
      REC_STATE_NONE,
      REC_STATE_LAST,
    };
    
    // =================================================
    // =                   H E A D                     =
    // =================================================
    
    class Head {
      public:
        Head();
        void activate();
        void deactivate();
        bool isActive();
        void setPosition(float value);
        void reset();
        void setIncrement(float value);
        void incrementBy(float value);
        void slowDown();
        void reverse();
        void speedUp();
        void update();
        float read();
        float increment = 1.0f;
        float variation = 0.0f;
        float variation_amount = 0.0f;
        float speed_multiplier = 1.0f;
      private:
        bool active = true;
        float position = 0.0f;
    };
    
    Head::Head() {
      variation = random(-0.1f, 0.1f);
    }
    void Head::activate() {
      this->active = true;
    }