Start a new topic

Orba hacking knowledge base

This thread is intended to gather the feedback of Orba tinkerers.


27 people like this idea

You've given it a good go! The elusive QuantStartSnap and other settings are really hiding somewhere. I've seen things in the code like quantSlider or similar.. I'm going to hold out and assume that Artiphon will bring these to the App in the next few months.


I've decided to take a small hiatus and contemplate where to go from here. I'm revisiting my the list I posted a while back:


SUCCESSES (from this forum):

1. Modify Thumbnail Images

2. Create Custom Chords

3. Create Custom Scales

4. Create some clever Presets

5. Continued understanding of hardware/software

6. ... ??? I could make a script to quantize song files or wait a few months

7. ... ??? I would like to make a MIDI to SONG utility but I'm not sure it would be a huge benefit. I think the goal is to make Orba a great stand-alone synth.. To do this they need to add: quantization, key change on the device.. I'm thinking A + OCT + Vol +/- would be a great way to do this.


FUTURE HOPES:

1. Find Drum settings that can be tweaked realtime (I may add knobs or sliders for CC values to the Editor in the future.)

2. Find an interesting use for Spin gesture (Possibly could be used for key change)

3. Understand how gestures are bound to synth params and cc values

4. Have Orba record pitch effects

5. Examine Bezier and Song Base64 data (started on this but didn't get far)


1 person likes this

I think I'll have to abandon the search for QuantStartSnap for now; the Orba's storage and memory structure seems quite complicated and I don't really understand it.


Everything I've read about the Orba's ESP32 indicates that it has 4MB of internal Flash, but in trying to find the exact upper limits of it, I've been doing some ridiculous Flash reads, up to nearly 16MB. I don't know what or where this block of storage is; it might be internal Flash, external Flash, or even RAM for all I know. I'd have thought that it would be the logical place to store performance data and maybe other settings, but I haven't been able to capture any changes apart from the "Bluetooth area" I mentioned before.


For instance, a couple of consecutive grabs following some changes inserted a few more of these "LE_LOCAL_KEY" commands into a block of them.


image



 There's also an adjacent block of data I'm suspicious of. At other times though, you think, "Surely something must have changed between these two Flash grabs"...and it hasn't. For instance, I just grabbed 16MB of this Flash area; the most I've been able to get hold of; then added a note, powered off and on to save any changes, grabbed it again...and the two files are identical. 

 

********************************************************************************************************

 

 Anyway, I've given in to temptation and ordered an Orba 2. It's not something I'd have purchased without the discoveries that have been made in this thread, but dissecting Orba 1 has made me more fond of it, and developments like Chord Fiddler have considerably enhanced it. Naturally I'll be interested to see what the changes are, and perhaps they'll shed more light on the Orba 1. I probably won't pullit apart though. ;-)

@ Subskybox

"I could build a MIDI => SONG converter in the future."


That would be something ... When Orba came out it could save songs to midi and even avi (be it not perfect so it was removed from the app).

...I wasn't aware of its history. I used it for years as Sonar by Cakewalk; they finally packed it in and it was released for free as "Cakewalk by Bandlab". But, yes, apparently "Sonar" started as "Cakewalk" by a company called "Twelve Tone" back in 1987, with the company eventually adopting that name. And, yeah, it's good; probably the best free DAW for Windows.

...yep, it's free now, and pretty good...:-)

CakeWalk! I used that 30 years ago!! Its still around :)

Thanks for that. I can get that to work on my PC but not my Mac.. I need to investigate more. The good news is that Signal is Open Source located at https://github.com/ryohey/signal


I created a Feature request and maybe it will get picked up. This would allow each channel to target a port. Building this sequencer is a massive amount of work and from my tests this is quite powerful! I could build a MIDI => SONG converter in the future.


image



1 person likes this

>" Also are you able to see the ports in the Settings on this site?"


Yep. (Haven't tested.)


image


...that's a free Windows DAW called Cakewalk by Bandlab.


https://www.bandlab.com/products/cakewalk?lang=en


Basically, if you disable mobile mode and enable multi-channel mode, you can address the Orba on four different MIDI ports which are all set to "Omni" (receive data on all channels).


Will check the website. 


1 person likes this

@BJG145 Aha! I did read something about the ports. What program is that displaying the ports above? Is that Live? Also are you able to see the ports in the Settings on this site?

>"With the dfu-util writes, we see all the parameters for the command, but with the esptool.py writes, we don't."


I'm mainly interested in reading the Winbond chip now, and I haven't figured that out yet. However, I think I've extracted the esp.pytool parameters FWIW. 


I tried running running the artiphon_esp32_programmer command from the log while the Orba was already in programming mode. Usually it tries to do that itself, so I think it was surprised and reported some additional info.


I've attached the log, but the bit I was interestyed in was:


Programming attempt failed: CalledProcessError(2, ['D:\\orba\\fresh\\esptool.exe', '--chip', 'esp32', '--port', '\\\\.\\COM12', '--baud', '115200', '--before', 'no_reset', '--after', 'no_reset', 'write_flash', '-z', '--flash_mode', 'dio', '--flash_freq', '40m', '--flash_size', 'detect', '0x1000', 'C:\\Users\\admin\\AppData\\Local\\Temp\\tmp7snsjpvc\\bootloader.bin', '0x10000', 'C:\\Users\\admin\\AppData\\Local\\Temp\\tmp7snsjpvc\\delorean.bin', '0x8000', 'C:\\Users\\admin\\AppData\\Local\\Temp\\tmp7snsjpvc\\partitions_singleapp.bin'])


Usually it just says...

Programming files {'app': 'C:\\Users\\admin\\AppData\\Local\\Temp\\tmpg15gztml\\delorean.bin', 'bootloader': 'C:\\Users\\admin\\AppData\\Local\\Temp\\tmpg15gztml\\bootloader.bin', 'partitions': 'C:\\Users\\admin\\AppData\\Local\\Temp\\tmpg15gztml\\partitions_singleapp.bin'}


...but this different version shows the addresses and other parameters for the esptool.py command. 


I've noticed a Windows version of this utility, esptool.exe, in one of the update folders, and I expect this is what flash-from-file uses.


I've realised that I was wrong about the consecutive writes to the same address for bootloader and delorean; I'd misread a zero. bootloader goes to 0x00001000, and delorean goes to 0x00010000.


There's some info on P29 of the ESP32 Technical Reference Manual about memory mapping for external flash (Winbond?), but I haven't managed to do anything with it. If I try pointing esptool.py at one of the addresses there like 0x3F400000, it gives an error about how it can't handle over 16MB, so I'm not getting that right. 

txt

...aha, you need to address the Orba on a different port, not just a different channel.


image



1 person likes this

>"...somehow this isn't working for me..."


...likewise, just tried:


1) Flash from file

2) Clear Songs/Presets and let the App rebuild

3) Mobile MIDI off, channel-per-part on


...but I haven't got this to work via USB MIDI. I haven't tried it with Bluetooth; don't know if you were using a Bluetooth connection when it worked...? 

I should have read Tony's original comment about this Winbond chip more carefully.


>"Winbond 25x40CL (not far from the AKM DAC) is a 4Mb (ie 512KB) serial flash memory."


I've been looking at "4Mb" and thinking, "four megabytes". But 4Mb is four megabits, which is only 512KB.


The ESP32-SOLO-1 has its own 4MB internal Flash as well (along with various blocks of RAM).

Auto-detected Flash size: 4MB

If the ESP32 has 4MB Flash, why add another 512KB Flash chip...?  


Winbond is physically closer to the STM than the ESP. I don't know if that's relevant. I'm currently not sure which of those two chips can access it...(maybe even both?)


image


I don't know why the ESP32 would be interested in an extra 512KB if it's already got 4MB, unless it's a performance thing; the Flash-starved STM32 with its 64KB would seem more in need of it. On the other hand, that might explain those two flash-from file writes at the same address (bootloader and delorean).


20 Jun 2022 9:29:59pm - Compressed 24848 bytes to 14805...

20 Jun 2022 9:29:59pm - Writing at 0x00001000


20 Jun 2022 9:30:36pm - Compressed 702032 bytes to 407879...

20 Jun 2022 9:30:36pm - Writing at 0x00010000


The log output doesn't show all the exact commands taking place behiond the scenes. With the dfu-util writes, we see all the parameters for the command, but with the esptool.py writes, we don't. As well as an option for memory address, there might be an unseen option to identify the Flash storage device; either the ESP32's internal 4MB Flash or the Winbond's external 512K.


That leaves a couple more routes to explore:


1) Finding out how to read the Winbond Flash

2) Finding the real upper limit of the ESP32's 4MB Flash, as with the Winbond

It seems like the Orba will receive multiple midi channels according to this:

https://artiphon.freshdesk.com/support/discussions/topics/44001019898

But somehow this isn't working for me. I'm starting to think that having the quantize mode on is causing some issues but I can't put my finger on it.

Login or Signup to post a comment