@BJG145 Hoping you have Excel.. Here is a spreadsheet (with formulas which completely validates the 8-byte note structure)
Hey Max, on Android it is a bit problematic as adding a new preset (i.e. an XML file) would require root permit to access the filesystem location involved.
I've read a workaround in this thread @pag. 3 I think it's your best shot, but it always requires mediation via the desktop Orba app. I am afraid there are no better solutions ATM.
"As a workaround, you could load up the modified presets onto your Orba using a PC, then save a new Song on your Android (or probably also iPhone) device. This will save an entire song with Drums, Base, Chords and Lead everytime, but it also includes the modified diatonic Lead voice."
Adding presets to the Desktop Orba app has been already covered in this thread at the very beginning.
Here's the XML for the library definitions in the app code, and a full log from flashing a working Orba from a file.
The Tuning library is the only one that's populated with values; the others look blank. There are some XML tags we haven't seen in the presets such as:
<DevicePreset tuning="Dorian" key="C" />
...from the Preset library.
I guess we could think of the SeekerData from the Tilt Lead preset as Pitchbend, which I've added here.
It follows the same general pattern. It's an effect like Vibrato. This pair have several shared values (63, 29, 76, -128) that set them apart from the others.
...just realised I was getting confused about this "effect" thing. It seems to be a gesture like the others after all...?
I'm not sure how it's supposed to work. Is it a kind of shake...? The notes in Ian's repo say:
<!-- vibrato [pitch wheel] -->
...as if it's a MIDI input or something.
Okay now I'm thinking that Looper Configuration Values are not in the Event Data BUT I think I now know the message format for CC and PB but I need to prove this out.
Theory: Note is 16, CC is either 20 or 23. In the example I looked at 20 is bound to CC:225 and 23 is bound to CC:74 (possibly via ccB from Looper Config)
CC messages require 4 bytes: 20|23, startTickLSB, startTickMSB, Value
PB messages appear to be 6 bytes: 21, startTickLSB, startTickMSB, unused, valueLSB, valueMSB
I recently took a leap into the unknown and made random code changes all over one of the song files, which resulted in the Orba become completely unresponsive; couldn't even turn it on.
Fortunately the firmware update instructions brought it back to life. So when I saw a faulty Orba on eBay that wouldn't turn on the other day, I thought...aha, I'll give you £25 for that.
Just turned up, and quickly revived it. Gonna stick them together to create a dual-manual version with an extended key range...watch this space...;-)
@subskybox that sounds quite a lot - any chance gathering it all in one place? Either a pinned post or a website? This thread is now almost 30 pages...
I haven't decoded them yet, but here's a glance at the ModifierData for the utility presets. All the Metrics have the same pattern, while the Events add a bit of extra data.
Spin
Radiate
Press
Move
Tilt
Vibrato
Pitchbend
AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAABAAEAAA
Shake CC
AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQgAAAAEAAAAAAAAAAABAAEAAA
Bump
AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQEAAAAEAAAAAAAAAAABAAEAAA
Shake Note
AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACgEAAAAEAAAAAAAAAAABAAEAAA
@BJG145 Brilliant! I love the idea of dual Orbas. I'm not sure but if you plug them both into USB, you might be able to control them both from the Orba Virtual Piano.
On another note, when I finish the Editor, I can get you more information on how to work with the Base64 strings. I bet in the future we could quantize the song data.. Progress has been pretty good the last two days.. The Chord Editor is pretty much done and just starting on the Scale editor coding today. I'm trying to establish the data format for the orba-scales.json file. I think it will look like this:
{ "majorMode": { "standard": [ {"Ionian": [0,0,0,0,0,0,0,0]}, {"Dorian": [0,0,0,0,0,0,0,0]}, {"Phrygian": [0,0,0,0,0,0,0,0]}, {"Lydian": [0,0,0,0,0,0,0,0]}, {"Mixolydian": [0,0,0,0,0,0,0,0]}, {"Aeolian": [0,0,0,0,0,0,0,0]}, {"Locrian": [0,0,0,0,0,0,0,0]} ], "custom": [ {"Hang Drum": [0,0,0,0,0,0,0,0]}, {"Minor Tezeta": [0,0,0,0,0,0,0,0]}, {"Abassel": [0,0,0,0,0,0,0,0]} ] } }, "minorMode": { "standard": [ {"Ionian": [0,0,0,0,0,0,0,0]}, {"Dorian": [0,0,0,0,0,0,0,0]}, {"Phrygian": [0,0,0,0,0,0,0,0]}, {"Lydian": [0,0,0,0,0,0,0,0]}, {"Mixolydian": [0,0,0,0,0,0,0,0]}, {"Aeolian": [0,0,0,0,0,0,0,0]}, {"Locrian": [0,0,0,0,0,0,0,0]} ], "custom": [ {"Hang Drum": [0,0,0,0,0,0,0,0]}, {"Minor Tezeta": [0,0,0,0,0,0,0,0]}, {"Abassel": [0,0,0,0,0,0,0,0]} ] } }
Quick undecoded seekerUuid comparison from the utility presets. (At the moment I'm basically trying to understand the structure of the Modifier/Seeker pairs in order to try and construct a different one.)
bump / tap / shake note
accc8538-d6cf-4b68-88f2-b99400fad3d1
move / tilt
1cc30432-c214-4c6a-97ab-491975e412d6
spin
2cc30432-c214-4c6a-97ab-491975e412d6
radiate
3cc30432-c214-4c6a-97ab-491975e412d6
shake cc
4cc30432-c214-4c6a-97ab-491975e412d6
press
64358c1f-2ef5-4fd0-b3fd-ad8c4f93b839
vibrato
6e2b617b-4c1e-4752-96fb-2ac707909aad
*************************************************
The fact that bump, tap, and shake note all share the same value seems to make sense; they all do the same thing. They all play a note.
Interesting that move/tilt share a value, then spin, radiate and shake cc all just increment the first character; 1, 2, 3, 4. The rest of the string is shared.
Press and Vibrato are outliers.
@BJG145 I notice when you press in 'e' in the serial log that you received:
Detected HW Version: 0
However I receive
Detected HW Version: 1
I wonder if I have newer hardware since I only got my Orba 1 a few months ago?
Also I found you get the detailed event log data when you are playing back a song.
I suspect there is something systemic going on as I've seen recent posts about delays on Reddit. I'm exchanging mine for another (which I don't expect to receive anytime soon). I have been trying some of your DFU techniques to see if I can get it to take the latest firmware. I do have some new URLs:
https://storage.googleapis.com/orba2_firmware_updates/appcast_fw2.xml
https://storage.googleapis.com/orba2_firmware_updates/
I am really enjoying the new sounds but the limitations are too much to start any hacking yet.
Andrea Mannocci
This thread is intended to gather the feedback of Orba tinkerers.
27 people like this idea