Skip to content

Commit

Permalink
UI update
Browse files Browse the repository at this point in the history
  • Loading branch information
marchingband committed Nov 5, 2021
1 parent 4206de3 commit c6f233c
Show file tree
Hide file tree
Showing 11 changed files with 91 additions and 15 deletions.
19 changes: 18 additions & 1 deletion src/WVR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
#include "wav_player.h"
#include "server.h"
#include "file_system.h"
#include "encoder.h"

WVR::WVR()
{
this->wifiIsOn = get_wifi_is_on();
this->useFTDI = false;
this->useUsbMidi = false;
this->forceWifiOn = false;
this->checkRecoveryModePin = true;
}

void WVR::begin()
{
wvr_init(useFTDI, useUsbMidi);
wvr_init(useFTDI, useUsbMidi, checkRecoveryModePin);
}

void WVR::play(uint8_t voice, uint8_t note, uint8_t velocity)
Expand Down Expand Up @@ -60,4 +62,19 @@ void WVR::mute(void)
void WVR::unmute(void)
{
set_mute(false);
}

void WVR::setMidiHook(uint8_t*(*fn)(uint8_t *in))
{
set_midi_hook(fn);
}

void WVR::encoderInit(int encA, int encB)
{
encoder_init(encA, encB);
}

void WVR::onEncoder(void (*handleEncoder)(bool up))
{
on_encoder = handleEncoder;
}
5 changes: 5 additions & 0 deletions src/WVR.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,18 @@ class WVR {
void setGlobalVolume(uint8_t volume);
void mute(void);
void unmute(void);
void setMidiHook(uint8_t*(*fn)(uint8_t *in));
void encoderInit(int encA, int encB);
void onEncoder(void (*handleEncoder)(bool up));

// int globalVolume;
// bool mute;
// bool autoConfigPins;
bool wifiIsOn;
bool useFTDI;
bool useUsbMidi;
bool forceWifiOn;
bool checkRecoveryModePin;
};

#endif
6 changes: 3 additions & 3 deletions src/encoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ static uint64_t GPIO_MASK = 0;

static xQueueHandle encoder_event_queue = NULL;

void onEncoder_default(bool down)
void on_encoder_default(bool down)
{
ESP_LOGI(tag, "%s", down ? "down" : "up");
}
Expand All @@ -43,7 +43,7 @@ static void emit(char dir){
// log_d("step %s",dir?"left":"right");
// out += (dir?-1:1);
// log_i("%d",out);
onEncoder((bool)dir);
on_encoder((bool)dir);
}

static void encoder_task(void* arg)
Expand Down Expand Up @@ -241,7 +241,7 @@ void encoder_init(int enc_a, int enc_b){
encoder_event_queue = xQueueCreate(10, sizeof(uint32_t));
xTaskCreatePinnedToCore(encoder_task, "encoder_task", 2048, NULL, 10, NULL, 0);

onEncoder = onEncoder_default;
on_encoder = on_encoder_default;

attachInterrupt(enc_a, enc_a_handler, CHANGE);
attachInterrupt(enc_b, enc_b_handler, CHANGE);
Expand Down
11 changes: 9 additions & 2 deletions src/encoder.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
#ifndef ENCODER_H
#define ENCODER_H

void (*onEncoder)(bool);
// void encoder_init(void);
#ifdef __cplusplus
extern "C" {
#endif

void (*on_encoder)(bool);
void encoder_init(int enc_a, int enc_b);

#ifdef __cplusplus
}
#endif

#endif
12 changes: 9 additions & 3 deletions src/midi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
#include "esp32-hal-log.h"
#include "midi_in.h"
#include "ws_log.h"
#include "midi.h"

midiXparser midiParser;
uint8_t *msg;


void midi_parser_init(void)
{
midiParser.setMidiMsgFilter( midiXparser::channelVoiceMsgTypeMsk );
Expand All @@ -16,12 +18,16 @@ extern "C" uint8_t* midi_parse(uint8_t in)
{
if ( midiParser.parse( in ) ) // Do we received a channel voice msg ?
{
if ( midiParser.isMidiStatus(midiXparser::noteOnStatus) || midiParser.isMidiStatus(midiXparser::noteOffStatus) || midiParser.isMidiStatus(midiXparser::programChangeStatus) || midiParser.isMidiStatus(midiXparser::controlChangeStatus) )
if (
midiParser.isMidiStatus(midiXparser::noteOnStatus) ||
midiParser.isMidiStatus(midiXparser::noteOffStatus) ||
midiParser.isMidiStatus(midiXparser::programChangeStatus) ||
midiParser.isMidiStatus(midiXparser::controlChangeStatus)
)
{
msg = midiParser.getMidiMsg();
return msg;
}
}
return NULL;
}

}
18 changes: 18 additions & 0 deletions src/midi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#ifndef MIDI_H
#define MIDI_H

void midi_parser_init(void);

#ifdef __cplusplus

extern "C" {
#endif

uint8_t* midi_parse(uint8_t in);
uint8_t* midi_hook_default(uint8_t *in);

#ifdef __cplusplus
}
#endif

#endif
25 changes: 23 additions & 2 deletions src/midi_in.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "ws_log.h"
#include "wav_player.h"
#include "file_system.h"
#include "midi.h"

#define MIDI_UART_NUM UART_NUM_2
#define BUF_SIZE (1024)
Expand All @@ -22,7 +23,8 @@ static const char *TAG = "midi";
// from server.cpp
void sendWSMsg(char* msg);
// from midiXparser.cpp
uint8_t *midi_parse(uint8_t in);
// uint8_t *midi_parse(uint8_t in);
// uint8_t *midi_hook(uint8_t *in);

esp_err_t ret;

Expand All @@ -31,8 +33,11 @@ QueueHandle_t uart_queue; // uart Events queue

struct wav_player_event_t wav_player_event;
int bytes_read;
uint8_t *raw_msg;
uint8_t *msg;

uint8_t*(*midi_hook)(uint8_t *in);

void init_gpio(bool useUsbMidi)
{
gpio_config_t io_conf;
Expand Down Expand Up @@ -125,9 +130,14 @@ static void read_uart_task()
// }
for(int i=0;i<bytes_read;i++)
{

// returns uint8_t* or NULL
msg = midi_parse(tmp[i]);
if(msg)
{
// send it through the midi filter hook
msg = midi_hook(msg);
}
if(msg)
{
uint8_t channel = msg[0] & 0b00001111;
uint8_t code = (msg[0] >> 4) & 0b00001111;
Expand Down Expand Up @@ -245,6 +255,17 @@ void midi_init(bool useUsbMidi)
{
init_gpio(useUsbMidi);
init_uart(useUsbMidi);
midi_hook = midi_hook_default;
xTaskCreatePinnedToCore(read_uart_task, "read_uart_task", 4096, NULL, 3, NULL, 0);
// xTaskCreatePinnedToCore(read_uart_task, "read_uart_task", 4096, NULL, 3, NULL, 1);
}

uint8_t* midi_hook_default(uint8_t* in)
{
return in;
}

void set_midi_hook(uint8_t*(*fn)(uint8_t *in))
{
midi_hook = fn;
}
2 changes: 2 additions & 0 deletions src/midi_in.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ struct midi_event_t {
};

uint8_t *get_channel_lut(void);
uint8_t* midi_hook_default(uint8_t* in);
void set_midi_hook(uint8_t*(*fn)(uint8_t *in));

#ifdef __cplusplus
}
Expand Down
4 changes: 2 additions & 2 deletions src/wvr_0.3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ void logRam(){

struct metadata_t metadata;

void wvr_init(bool useFTDI, bool useUsbMidi) {
void wvr_init(bool useFTDI, bool useUsbMidi, bool checkRecoveryModePin) {
Serial.begin(115200);
logRam();
log_i("arduino setup running on core %u",xPortGetCoreID());
Expand All @@ -92,7 +92,7 @@ void wvr_init(bool useFTDI, bool useUsbMidi) {
logSize("file system");

int ret = check_for_recovery_mode();
if(!ret)
if(!ret && checkRecoveryModePin)
{
boot_into_recovery_mode();
return;
Expand Down
2 changes: 1 addition & 1 deletion src/wvr_0.3.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@

#define VERSION_CODE "1.0.1"

void wvr_init(bool useFTDI, bool useUsbMidi);
void wvr_init(bool useFTDI, bool useUsbMidi, bool checkRecoveryModePin);

#endif
2 changes: 1 addition & 1 deletion src/wvr_ui.h

Large diffs are not rendered by default.

0 comments on commit c6f233c

Please sign in to comment.