Skip to content

Commit c0d1622

Browse files
committed
experimental version of esp32
1 parent f6cf502 commit c0d1622

File tree

7 files changed

+37
-101
lines changed

7 files changed

+37
-101
lines changed

v2/AciduinoV2/1_uctrl.ino

Lines changed: 1 addition & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ struct MidiDefaultSettings : public midi::DefaultSettings
2222
#elif defined(ARDUINO_ARCH_ESP32) || defined(ESP32)
2323
// initing midi devices
2424
MIDI_CREATE_INSTANCE(HardwareSerial, Serial, MIDI1);
25+
//MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI2);
2526
#elif defined(ARDUINO_ARCH_AVR)
2627
// initing midi devices
2728
MIDI_CREATE_INSTANCE(HardwareSerial, Serial, MIDI1);
@@ -341,69 +342,3 @@ void uCtrlSetup() {
341342
//
342343
uCtrl.page->setPage(1);
343344
}
344-
345-
/* mega shiled and uCtrl16
346-
*
347-
uCtrl.oled->print(">init ram...", 8, 1);
348-
//
349-
// External RAM Module
350-
//
351-
//uCtrl.initRam(LC1024_SPI, 48); //
352-
//uCtrl.initRam(LC1024_BITBANG, 48, 42, 43, 44); //
353-
uCtrl.initRam(&SPI, 48);
354-
355-
uCtrl.oled->print(">init sdcard...", 8, 1);
356-
//
357-
// SdCard Module
358-
//
359-
//uCtrl.initSdCard(SOFT_SPI, 7, 40, 38, 39); //
360-
//uCtrl.initSdC(NATIVE_SPI, 7); //
361-
uCtrl.initSdCard(&SPI, 7);
362-
//uCtrl.initSdCard(1, 7); // spi1
363-
//uCtrl.initSdCard(1, 24); // spi3
364-
365-
uCtrl.oled->print(">init ain...", 8, 1);
366-
//
367-
// AIN Module
368-
//
369-
//uCtrl.initAin(SINGLE, A4); // initing of a single digital port on D2
370-
//uCtrl.initAin(MUX_4051, 8, 10, 12); // initing of a 8 digital input ports via shift register 165 on A0
371-
uCtrl.initAin(0, 45, 47, 49);
372-
//uCtrl.ain->plug(0, A0);
373-
uCtrl.ain->plug(0, A1);
374-
375-
uCtrl.oled->print(">init din...", 8, 1);
376-
//
377-
// DIN Module
378-
//
379-
uCtrl.initDin(&SPI, 9);
380-
uCtrl.din->plug(1);
381-
382-
uCtrl.oled->print(">init dout...", 8, 1);
383-
//
384-
// DOUT Module
385-
//
386-
uCtrl.initDout(&SPI, 8);
387-
uCtrl.dout->plug(1);
388-
389-
//uCtrl.dout->write(13, HIGH);
390-
// Turn off all leds of connected PUSH8 modules
391-
// write and auto flush data
392-
uCtrl.dout->writeAll(LOW, 0);
393-
394-
uCtrl.oled->print(">init midi...", 8, 1);
395-
//
396-
// MIDI Module
397-
//
398-
uCtrl.initMidi();
399-
// initing midi port 1
400-
uCtrl.midi->plug(&MIDI1); // MIDI PORT 1: USB MIDI
401-
// initing midi port 2
402-
uCtrl.midi->plug(&MIDI2); // MIDI PORT 2: SERIAL TTY MIDI
403-
// 2
404-
uCtrl.midi->plug(&MIDI3); // MIDI PORT 3: UART MIDI 1
405-
// 3
406-
uCtrl.midi->plug(&MIDI4); // MIDI PORT 4: UART MIDI 2
407-
uCtrl.midi->setMidiInputCallback(midiInputHandler);
408-
uCtrl.midi->setMidiOutputCallback(midiOutputHandler);
409-
*/

v2/AciduinoV2/midi.ino

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -79,39 +79,15 @@ void sendNote(uint8_t note, uint8_t channel, uint8_t velocity) {
7979

8080
// a port to read midi notes 1ms
8181
void midiHandle() {
82-
while (uCtrl.midi->read(2)) {
83-
}
82+
//while (uCtrl.midi->read(2)) {
83+
//}
8484
}
8585

8686
// used by uCtrl at 250us speed to get MIDI sync input messages on time
8787
void midiHandleSync() {
88+
// avoid use midi sync input for esp32 since it triggering watchdog for resets
89+
#if !defined(ARDUINO_ARCH_ESP32) || !defined(ESP32)
8890
while (uCtrl.midi->read(1)) {
8991
}
92+
#endif
9093
}
91-
/*
92-
void sendPreviewNote(uint8_t step)
93-
{
94-
unsigned long milliTime, preMilliTime;
95-
uint8_t note;
96-
97-
// enable or disable harmonizer
98-
if ( _harmonize == 1 ) {
99-
note = harmonizer(_sequencer[_selected_track].data.step[step].note);
100-
} else {
101-
note = _sequencer[_selected_track].data.step[step].note;
102-
}
103-
ATOMIC(sendMidiMessage(NOTE_ON, note, _sequencer[_selected_track].data.step[step].accent ? ACCENT_VELOCITY : NOTE_VELOCITY, _sequencer[_selected_track].channel))
104-
105-
// avoid delay() call because of uClock timmer1 usage
106-
//delay(200);
107-
preMilliTime = millis();
108-
while ( true ) {
109-
milliTime = millis();
110-
if (abs(milliTime - preMilliTime) >= 200) {
111-
break;
112-
}
113-
}
114-
115-
ATOMIC(sendMidiMessage(NOTE_OFF, note, 0, _sequencer[_selected_track].channel))
116-
}
117-
*/

v2/AciduinoV2/src/sequencer/engine.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@
3939
#define SET_BIT(a,n) (a |= (1ULL<<n))
4040
#define CLR_BIT(a,n) (a &= ~(1ULL<<n))
4141

42-
#define ATOMIC(X) noInterrupts(); X; interrupts();
43-
4442
class Engine
4543
{
4644
protected:

v2/AciduinoV2/src/sequencer/engine_303.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,19 @@
3535

3636
#include "engine_303.h"
3737

38+
//
39+
// multicore archs
40+
//
41+
#if defined(ARDUINO_ARCH_ESP32) || defined(ESP32)
42+
portMUX_TYPE _acidEngine303TimerMux = portMUX_INITIALIZER_UNLOCKED;
43+
#define ATOMIC(X) portENTER_CRITICAL_ISR(&_acidEngine303TimerMux); X; portEXIT_CRITICAL_ISR(&_acidEngine303TimerMux);
44+
//
45+
// singlecore archs
46+
//
47+
#else
48+
#define ATOMIC(X) noInterrupts(); X; interrupts();
49+
#endif
50+
3851
void Engine303::setTrackChannel(uint8_t track, uint8_t channel)
3952
{
4053
ATOMIC(_sequencer[track].channel = channel);

v2/AciduinoV2/src/sequencer/engine_808.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,19 @@
4444
// on generative add the option to generate new accent only
4545
#include "engine_808.h"
4646

47+
//
48+
// multicore archs
49+
//
50+
#if defined(ARDUINO_ARCH_ESP32) || defined(ESP32)
51+
portMUX_TYPE _acidEngine808TimerMux = portMUX_INITIALIZER_UNLOCKED;
52+
#define ATOMIC(X) portENTER_CRITICAL_ISR(&_acidEngine808TimerMux); X; portEXIT_CRITICAL_ISR(&_acidEngine808TimerMux);
53+
//
54+
// singlecore archs
55+
//
56+
#else
57+
#define ATOMIC(X) noInterrupts(); X; interrupts();
58+
#endif
59+
4760
void Engine808::setTrackChannel(uint8_t track, uint8_t channel)
4861
{
4962
//ATOMIC(_sequencer[track].channel = channel);
@@ -56,6 +69,7 @@ void Engine808::init()
5669

5770
_sequencer[track].channel = track+TRACK_NUMBER_303;
5871
_sequencer[track].step_location = 0;
72+
_sequencer[track].step_length = STEP_MAX_SIZE_808;
5973
_sequencer[track].mute = 0;
6074
_sequencer[track].roll_type = SUB_STEP_1;
6175

@@ -100,9 +114,9 @@ void Engine808::onStepCall(uint32_t tick)
100114
if ( _sequencer[track].mute == true ) {
101115
continue;
102116
}
103-
117+
104118
// get global step location.
105-
_sequencer[track].step_location = uint32_t(tick + _sequencer[track].shift) % _sequencer[track].step_length;
119+
_sequencer[track].step_location = (tick + _sequencer[track].shift) % _sequencer[track].step_length;
106120

107121
// walk thru all track voices
108122
for (uint8_t voice = 0; voice < VOICE_MAX_SIZE_808; voice++) {

v2/AciduinoV2/src/uClock

0 commit comments

Comments
 (0)