BaseMachine Sequencer UI Test

Dependencies:   AverageAnalogIn PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7565LCD

Fork of CH12864F-SPI2_Test by Ryo Od

main.cpp

Committer:
ryood
Date:
2016-08-17
Revision:
1:23bc297e8bfe
Parent:
0:cbc508b7ebff
Child:
2:29f0fe703d39

File content as of revision 1:23bc297e8bfe:

/*
 * main.cpp
 * BaseMachine Sequencer
 *
 * 2016.08.17
 *
 */
#include "mbed.h"
#include "rtos.h"
#include "st7565LCD.h"

#define UART_TRACE  (1)
//#include "Sequence.h"
//#include "ST7565_SequencerDisplay.h"

#define TITLE_STR1  ("BaseMachine Sequencer")
#define TITLE_STR2  ("20160817")

const int SEQUENCE_N = 16;
const int PITCH_MAX = 12;
const int BPM_MIN = 60;
const int BPM_MAX = 240;

//ST7565(PinName mosi, PinName sclk, PinName cs, PinName rst, PinName a0);
ST7565 gLCD(PB_15, PB_13, PB_12, PB_2, PB_1);

AnalogIn AinPulseWidth(PC_2);
AnalogIn AinCutOff(PB_0);
AnalogIn AinResonance(PC_1);
AnalogIn AinEnvMod(PC_3);
AnalogIn AinLevel(PC_0);
AnalogIn AinDuration(PA_4);
AnalogIn AinDecay(PA_1);
AnalogIn AinSustain(PA_0);

// とりあえずの変数(後でClassのメンバ変数に格納)
int waveShape = 0;
int modNumber = 0;
#define WAVESHAPE_N 2
#define MOD_NUMBER_MAX 1
uint8_t pulseWidth;
uint8_t cutOff;
uint8_t resonance;
uint8_t envMod;
uint8_t level;
uint8_t duration;
uint8_t decay;
uint8_t sustain;

//------------------------------------------------------------------------
// Functions
//------------------------------------------------------------------------
void pollingPots()
{
    //pulseWidth = AinPulseWidth.read_u16() >> 8;
    cutOff     = AinCutOff.read_u16()     >> 8;
    resonance  = AinResonance.read_u16()  >> 8;
    //envMod     = AinEnvMod.read_u16()     >> 8;
    //level      = AinLevel.read_u16()      >> 8;
    duration   = AinDuration.read_u16()   >> 8;
    decay      = AinDecay.read_u16()      >> 8;
    sustain    = AinSustain.read_u16()    >> 8;
}

void dumpToLCD()
{
    char buff[64];
    int col = 0;
    
    gLCD.clear();
    /*
    sprintf(buff, "Run: %d", isRunning);
    gLCD.drawstring(0, col++, buff);
    sprintf(buff, "BPM: %d", bpm);
    gLCD.drawstring(0, col++, buff);

    sprintf(buff, "Step: %d", currentStep);
    gLCD.drawstring(0, col++, buff);
    sprintf(buff, "NoteOn: %d", sequences[currentStep].noteOn);
    gLCD.drawstring(0, col++, buff);
    sprintf(buff, "Pitch: %d", sequences[currentStep].getPitch());
    gLCD.drawstring(0, col++, buff);
    sprintf(buff, "Octave: %d", sequences[currentStep].getOctave());
    gLCD.drawstring(0, col++, buff);
    sprintf(buff, "Tie: %d", sequences[currentStep].tie);
    gLCD.drawstring(0, col++, buff);
    sprintf(buff, "Accent: %d", sequences[currentStep].accent);
    gLCD.drawstring(0, col++, buff);
    
    col = 0;
    sprintf(buff, "WavS: %d", waveShape);
    gLCD.drawstring(64, col++, buff);
    sprintf(buff, "ModN: %d", modNumber);
    gLCD.drawstring(64, col++, buff);
    */
    
    col = 2;
    sprintf(buff, "PW%3d CO%3d", pulseWidth, cutOff);
    gLCD.drawstring(60, col++, buff);
    sprintf(buff, "RS%3d EV%3d", resonance, envMod);
    gLCD.drawstring(60, col++, buff);
    sprintf(buff, "LV%3d DR%3d", level, duration);
    gLCD.drawstring(60, col++, buff);
    sprintf(buff, "DC%3d ST%3d", decay, sustain);
    gLCD.drawstring(60, col++, buff);

    gLCD.display();
}

int main()
{
    printf("\r\n*** BaseMachine Sequencer Test ***\r\n");
    gLCD.begin(0x10);    
    
    while (true) {
        pollingPots();
        dumpToLCD();
    }
}