PS I've just a novice/dabbler with this stuff, but I'm curious about it. I've built a couple of DIY MIDI controllers with Teensy/Arduino, which is actually fairly simple when you know how; something like a Teensy LC has everything you need. (Capacitive touch pins, MIDI/USB etc.) I'd like to try and make something with an embedded sound engine so I've recently been looking at Daisy Seed, but that's not quite as easy or accessible as Teensy. I'm curious to know what the Orba sound engine is based on. I see there are people building simple synths with an ESP32 on YouTube.
https://www.youtube.com/watch?v=5XVK5MOKmZw
Once I've found what's inside the Orba I might try picking up the same board just to try and learn a little bit more about it and see what it can do.
...incidentally I've been installing all kinds of random drivers; anything that seems related that I can get my hands on, to try and talk to it. At one point something I installed made it appear in Device Manager as "STM32 Bootloader" under "Universal Serial Bus Devices" when connected in DFUI mode; before that it wasn't recognised as a valid device. I don't know if it's possible to connect to it as described above without that. I can try and dig it out if it's needed; it might just have been one of the Artiphon ones from UpdateUtilities or I might have downloaded it from somewhere else.
Just some more musings while I'm waiting to open it up. I still don't quite understand the ESP32 / STM32 thing, or exactly what this is based on, so I'll be interested to look at the chips.
Anyway, in:
C:\Program Files\Artiphon\Orba\usb_driver
...there's a file called "libusb_device.inf" which starts with the following info:
DeviceName = "STM32 BOOTLOADER"
VendorName = "STMicroelectronics"
SourceName = "STM32 BOOTLOADER Install Disk"
DeviceID = "VID_0483&PID_DF11"
DeviceGUID = "{B32A0570-39E3-4CE5-8DBE-08DA462C8B2E}"
I came across an interesting website here...
https://devanlai.github.io/webdfu/dfu-util/
...which allows you to connect to DFU devices and upload/download firmware files etc from them.
Still don't know a lot about DFU mode; seems to be a general firmware update mode that you can enter on the Orba by holding down Vol+ while powering on. It will seem to become unresponsive, but it's still awake, To turn it off from this mode, you can hold down Vol- with the power key, and after that you can boot up normally. This is explained in Artiophon's notes about recovering an unresponsive Orba.
DFU mode is described as "Update mode".
I found that I could connect the Orba, put it into DFU mode, then go to that website and enter "0483" as the Vendor ID. That comes from the entry above; "VID_0483&PID_DF11". VID = Vendor ID which is 0483 (I think). Haven't looked up what PID is.
So, if you enter that and click "Connect", I get a message saying: "devanlai wants to connect - STM32 Bootloader". I can select it and click OK, at which point I see this:
It's the list of devices I posted above, from dfu-util. I could get upload/download to work from that utility, but it works with this website. I'm wondering if any of these areas might contain something like song data that could theoretically be uploaded//changed/downloaded. ("uploaded" in this context means "read from device"). If this was possible it would take some experimentation; grabbing the file, recording something, grabbing the file again, messing with the changed data, restoring it to the device etc.
Just a thought. As always I take no responsibility for anything bad that might happen to yor Orba if you try this. :-)
I've realised that if you grip the top and twist the bottom firmly clockwise, you can unscrew it.
...now I need to dig out some mini allen keys...
I've found that by connecting the Orba in DFU mode and running "dfu-util -l" from the UpdateUtilities folder, you can get the following info:
Found DFU: [0483:df11] ver=2200, devnum=3, cfg=1, intf=0, path="3-1.4", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="STM32FxSTM32"
Found DFU: [0483:df11] ver=2200, devnum=3, cfg=1, intf=0, path="3-1.4", alt=2, name="@OTP Memory /0x1FF07800/01*528e", serial="STM32FxSTM32"
Found DFU: [0483:df11] ver=2200, devnum=3, cfg=1, intf=0, path="3-1.4", alt=1, name="@Option Bytes /0x1FFF0000/01*048 e", serial="STM32FxSTM32"
Found DFU: [0483:df11] ver=2200, devnum=3, cfg=1, intf=0, path="3-1.4", alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*64Kg,03*128Kg", serial="STM32FxSTM32"
*******************************************************************************************
This page lists various models like STM32F2, STM32F4, STM32L5 etc.
https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html
Considering this page, which talks about "Programming STM32Fx and STM32Lx Option Bytes"...
https://www.pemicro.com/blog/index.cfm?post_id=170
...I guess this means that the Orba is based on one of the STM32F series boards.
I suppose the last means that it has:
4 x 16K
1 x 64K
3 x 128K
= 512KB...?
@Subskybox
"BTW, the new Editor doesn't require the use of any Daemon anymore :)"
Nice!
A few songs to jam along and the editor make for me the difference between a paperweight and an interesting device (a basic midifile im/export is something I would like very much, but that may be asking too much ;-)). Thank you very much for your efforts!
@GJ van Mulbregt
"I copyd the raw content of the files to my PC, with the original filenames. That made it possible to open them with Powershell and Chrome."
That is a great solution! In this way your PC would believe that "you" wrote the Powershell script and it would be trusted. I do think there is a setting somewhere to Trust scripts from the internet but I'm not sure how.
BTW, the new Editor doesn't require the use of any Daemon anymore :)
@BJG145 said:
I thought I read somewhere on one of these forums that the <ModifierEntry> and <SeekerEntry> nodes correspond with the gestures. So the reason there are 9 nodes is because they would correlate to:
Tap, Press, Vibrato, Radiate, Slide, Bump, Move, Shake, Tilt
Perhaps the SeekerEntry for Chords has something to do with how the Tap works (i.e. send 4 notes at once). I may convert the OrbaModifierDataFiddler.html to be even more generic since we don't really care about modifying chord data in this way anymore. I may change it so that you can paste any Base64 string in and it will decode the values in a table which can be edited, then you can just `Copy to Clipboard` and paste it back from whence it came.
The Uuids are just unique identifiers. They may be used to see if something has changed. Come to think of it that might be why some of the changes I made didn't take effect. Maybe if the Uuids don't change the Orba just thinks: "I already have this data so no need to update"?
@BJG145 said:
I think there may be some prep work for Orba 2 here. I would imagine that the Orba 2 will use the .orbapreset and .song file formats too..
@BJG145 said:
'Download' should download the new .orbapreset file to your downloads folder. I wonder if you are getting an error for some reason? Look up how to open the developer panel in your browser and see if it reports and errors when you click download. I might have to fix something. I haven't written any instructions yet because I don't think its quite solid yet but the idea is:
0. No more Daemons needed
1. Drag & Drop a Chord Preset into the 'Starting Template' Box
- If it worked, you'll see the name reflected, the Chord Offsets updated and the 'Save As' filename updated.
2. Make changes to the Offsets as desired. Press the Pad buttons to hear/see the real-time changes.
3. Alternatively, switch to Bass or Lead mode and choose scales. This is not intuitive at all since the Editor will save the Chord voice you loaded but with the scale adjustments. Press the Pad buttons to hear/see the changes
4. When you are happy with your edits, Click 'Download'. This will download a file with the name specified in the Save As filename box.
5. Take the downloaded file and place it into a Preset folder
@BJG145:
This would make sense if Modifier/Seeker are related to the 9 gestures. Tilt/Radiate/Vibrato wouldn't really make sense for drums. I'm curious though if there's anything special for the 'Shake' gesture.
@BJG145:
Its easy for me to calculate the MIDI note numbers so I just send them to the Orba. I would love to be able to send Major/Minor mode change or Key change but those are likely not MIDI messages. They might be good old fashion SYSEX messages but that's for another day. I was interested in digging more there but really wanted to finish the Editor first. Firmware hacking is something I don't think I'll ever do. That would be extremely time consuming and I don't have the expertise.
...grr, this process of trying to figure out what board is inside it and talking to it is annoying me now. I did start to attack it with a hacksaw but it was tuned on and started playing some notes in protest so I relented.
It appears as "USB Serial Device" in Device Manager but I can't get beyond that; can't talk to it with Putty or the Arduino IDE. Tried various drivers for ESP32 and FTDI. Don't really know what I'm doing. I tried putting it in DFU mode (hold down Volume+ when while power on) and connecting it to a Windows PC that had never seen an Orba before, and got an entry in Device Manager for "STM 32 Bootloader"; haven't found a suitabloe driver yet. Is that a different board...? I've messed around a little with Arduino and Teensy is all, don't know about this other stuff.
@Subskybox & @BJG145
I copyd the raw content of the files to my PC, with the original filenames. That made it possible to open them with Powershell and Chrome.
After that a drag & drop from my Orba-preset folder, changing some values in the editor and saving the changed preset. It ended up in my downloadfolder. So that seems to work. Don't know what I did when changing the values :-) But that is because of my superficial expertise. Anyway, this looks very promising!
>I'm not sure what's meant to happen when you click the "Download" button...tried Edge/Chrome but I don't think it's doing anything. I can't find the file in the Downloads folder.
PS When clicking the "Download" button I get the warning about choosing a starting preset first, whch works, so those buttons are live and triggering the relevant Javascript; it's just that the download process doesn't seem to activate (or I don't understand what it's doing).
I check out Roger's synth patch editor to see if could be adapted as a drum patch editor.
https://github.com/Batninja/Orba-Preset-Editor
It was created via a visual programming system called "Live Code" which used to be open-source, but is now subscription-based.
It sounds like you can still access old unsupported versions on GitHub, but it looks like it has quite a learning curve, and given the new monthly subscription it would probably be best to start from scratch using a web interface like the Chord Fiddler.
It's interesting that to change sounds, you need to load a preset, but you can change the key on the fly via the App. It's sending some kind of data directly/immediately. I was wondering if it might be possible to somehow access the file system on the ESP32 and read/change data on the Orba directly.
https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
I'm still trying to get the computer to talk directly to the ESP32. I'm interested in seeing whether I can flash it with some completely different program and then restore the original firmware again. There's a couple of different varieties of the card which need different drivers and I'm tempted to take "Orba hacking" literally by opening it up to check the electronics, but I haven't quite reached that stage yet. Maybe soon though if I can't get it working. :-)
...Seeker observations continued...
I was was still able to load a Song after renaming the associated Preset subfolders, and it seemd to make no difference. So, I think the Presets are just for separating out the different parts of the Song to enable mix & match...? But confusingly the Modifier/Seeker sections are quite different. The Song versions are much more streamlined, and I suspect the additional stuff in the Preset files has no purpose.
For instance, in the Lead preset for "All Out", there are nine Modifier entries with matched Seeker entries. But in the Lead section of the Song file, the modifier list is empty. The nine Seeker entries are still there, but are they actually doing anything...?
The other Lead and Bass examples followed the same pattern.
For the Drum presets, these have a shorter list of four matched Modifier/Seeker entries. But again, if you look at the relevant section of the Song file, the Modifier list is blank.
The Chord preset files have a list of eight matched Modifier/Seeker entries. As usual, the relevant section of the Song file still has all the same Seeker entries, but this time, the Modifier list has a single entry - the one that we've found actually makes a difference if you change it in the preset file.
Based on this, my theory is that the first Modifier and Seeker entry in the Chord preset files (and the corresponding section of the Song files) have an effect. But I don't think the rest of the list for the Chords does anything, and I don't think it's relevant for anything except chords.
Andrea Mannocci
This thread is intended to gather the feedback of Orba tinkerers.
28 people like this idea