I know I said I'd given up trying to communicate with the ESP32, but I discovered a new piece of info, and now the Orba's not just talking...it's gabbling.
************************************************************
The info here is basically correct, but it leaves out a vital piece of information...what you actually do to start communication once you've configured the serial settings.
When connected normally, I see the Orba as a USB serial device on COM13; though as I've said, I'm not sure if that's automatic or because of some other driver I've added. It will be interesting to know if this works 'out of the box',
Open Putty and configure the serial settings accordingly...
...but instead of clicking "Open", select "Session" and then select "Serial" to use the options you just configured.
I usually start by making sure the Orba is ready by turning it off and on, and I tend to select "Never" in that "Close window" box. Then click: "Open".
At first I just got a black box and nothing happened. Then I hit a few random keys and...messages....!
I would recommend to start by pressing <Enter> (just what I always do) and then try the following one-letter commands, which produce various results
d – Skipping check for debugger
e - Detected HW Version: 0
h - Remix ver 57
q - Toggling looper quantize mode, new mode = 0, 0, 0, 0
q - Toggling looper quantize mode, new mode = 1, 1, 1, 1
s - U3 errs=0x0000 Tx=0, Rx=0, af=0, rx isr=20, tx isr=0
v - (fuin one, toggles the motor on and off )
w - Forcing RAM Write to flash... ("Putty fatal error - Error reading from serial device")
z - ("Putty fatal error - Error reading from serial device")
B - BLE stuff, had to run firmware update to revive it
O - Loads of stuff, ending in animated weirdness
Some of these produce reams of stuff I haven't read yet. This is "B":
..."O"...
(...had to flash it from a file to revive it afer that one...)
It shows event logs for gestures and what it's playing:
Pressing numbers 1-4 shows Looper info...
Obvs I was excited to see that "q" toggles quantise on and off, but I haven't got it working yet, even after editing one of the Song files to change the quantisation parameter from 0 to 1.
(...corrected Putty images...)
Shift-8 (Asterisk) and Shift-= (+) on my UK keyboard increase/decrease volume, and also give some kind of report about it.
The messages that crop up are to be found in a file called "0x8000000.bin" (attached) which I think is one of the ones that the App creates and deletes during flash-from-file. It also includes text like: "handle_terminal_commands", which is evidently what it's doing. It might contain clues for other one-finger commands we haven't found yet, or what they do.
This is really exciting stuff! I've dabbled with a number of micro controllers and am able to follow most of this. I'm glad you tried setting quantization on in both hardware and software. Its too bad it didn't work. Have you checked if this is "recording" quantization of "playback" quantization? I'm wondering if there's anything for changing Key/ScaleMode/Tempo/Metronome ?
Matching the coinsole command letters in the previous list with the entries in the .bin file below we get...
s) U3 errs=0x%04X Tx=%d, Rx=%d, af=%d, rx isr=%d, tx isr=%d
d) Skipping Check for debugger...
e) Detected HW Version: %u Jumping to bootload mode!
w) Forcing RAM Write to flash...
q) Toggling looper quantize mode, new modes = %u, %u, %u, %u
B) Commencing BLE serial pass-through with ESP32 in programming mode...
O) Commencing BLE serial pass-through with ESP32 in normal mode
*/+) Volume set to %u / %lu counts
9) Info for loop ID
h) Remix ver 57
...and there's also that "v" that toggles the motor on and off. (Could that be the "Palm Event" in the main code? Wonder if there's seekerData for it.)
Similar entries in the .bin file I haven't accounted for yet, which might possibly be associated with other one-letter commands, includes:
MemIdx = %lu - MIDI Note at tick %lu, channel %u, note %u, duration %u, von %u, voff %u
MIDI CC at tick: %lu, channel: %u, CC Num: %u, CC Val: %u
MIDI Pitch Bend at tick: %lu, channel: %u, PBend Val: %i
***********************************************************************************
>"I think I’d read somewhere something about how if you want to talk the ESP32 it has to be in a different mode."
Given:
B) Commencing BLE serial pass-through with ESP32 in programming mode...
O) Commencing BLE serial pass-through with ESP32 in normal mode
...at least I wasn't imagining things...;-)
I think normal mode is a normal connection, and with that, "O" ends up doing...something. (Animated ASCII event-monitor stuff.) "B" ends up with a question mark and a firmware reset. (I'm still wondering if programming mode might possibly be indicated by the white spinning circle you get if you pull the plug during an update. I might test that but I've done enough firmware resets for one day.)
There is something curious about the highlighted area.. pattern for a gesture is either 00000, 20011 or 31111. In one case it is 31110.
>"I'm wondering if there's anything for changing Key/ScaleMode/Tempo/Metronome?"
Good question, I was thinking there might be a tempo setting somewhere, and it would be interesting to find out whether the way the App changes key involves the same kind of communication as the console...
>"There is something curious about the highlighted area.. pattern for a gesture is either 00000, 20011 or 31111. In one case it is 31110."
The 20011s have a final 4, the others have 0.
The three entries with a 3 at index 9 are Radiate, Press and Vibrato; the three axes of touch.
The gestures with zero at index 9 are Tap Lead, Tap Chord, Bump and Shake; Events which produce notes.
The gestures with 2 at index 9 are Tilt, Spin, Move, Shake CC; Metrics which produce modulation.
Looking at lines 9-12 as a set:
Movement Metric Tilt, Spin, Move, ShakeCC 2001
Touch Metric Radiate, Press, Vibrato 3111
Note Event Tap lead/chord, Bump, Shake 0000
At line 13, that leaves me wondering why Vibrato has 0 like the Events instead of 1 like the other Metrics.
...as you say, there's more going on with the pitchbend, with detuned notes etc. Maybe the three rows 15-17 all have some effect on start/finish/range etc.
This is the kind of data you get in the console if you press keys 1-4 for "Loop info" while a four-track sequence is playing.
...as well as the quantizationMode parameter in the "Mode" tags...
<Mode name="Lead" quantizationMode="0" volume="200">
...the Song presets have entries like this which are probably tied up with loops and quantisation.
<LoopData writeIndex="0" recordStartTime="0" recordStopTime="0" lastEventTime="0"
nBars="0" eventData="" eventDataCrc="ffffffff"/>
The "MemIdx" (memory index?) entries might be useful...
MemIdx = 148 - MIDI Note at tick 2759, channel 1, note 52, duration 114, von 107, voff 51
MemIdx = 156 - MIDI Note at tick 2759, channel 1, note 59, duration 114, von 107, voff 51
MemIdx = 164 - MIDI Note at tick 2759, channel 1, note 64, duration 114, von 107, voff 51
MemIdx = 172 - MIDI Note at tick 2759, channel 1, note 68, duration 114, von 107, voff 51
MemIdx = 180 - MIDI CC at tick: 2822, channel: 0, CC Num: 1, CC Val: 0
MemIdx = 184 - MIDI CC at tick: 2858, channel: 1, CC Num: 255, CC Val: 44
MemIdx = 188 - MIDI CC at tick: 3462, channel: 0, CC Num: 1, CC Val: 7
MemIdx = 192 - MIDI CC at tick: 3839, channel: 1, CC Num: 255, CC Val: 83
MemIdx = 196 - MIDI CC at tick: 3839, channel: 1, CC Num: 74, CC Val: 93
It could potentially show the structure of a block of note data if we could find a way to copy it off.
Andrea Mannocci
This thread is intended to gather the feedback of Orba tinkerers.
29 people like this idea