Start a new topic

Orba hacking knowledge base

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


28 people like this idea

My hardware/firmware hacking will probably end here. I was curious about how the ESP32 would work in tandem with the STM32, but it seems to be a tried and tested configuration. From Googling it, I started hitting links to "ESP-AT".


https://docs.espressif.com/projects/esp-at/en/latest/esp32/Get_Started/What_is_ESP-AT.html


The general idea is that the ESP32 board acts as a "slave", with a "host" MCU. I think the Orba is probably configured with the ESP32-SOLO-1 as a slave, and the STM32 as the host.


You can Google references to other people using STM32/ESP32 chips together in presumably a similar way.


https://community.platformio.org/t/slave-stm32-and-master-esp32-how-to-build-and-package-binaries-and-data/19214


To add to the complexity, the sensor board has a CY8C chip which seems to be quite a sophisticated devioce in its own right. I think the "capsense bootloader" I mentioned is probably delivered to this chip, other stuff is perhaps delivered to the ESP32, maybe the STM32 handles other duties; who knows. It all looks extremely complex, and I won't attempt to understand any of it.


I'm still curious about certain basic things like how the App interacts directly with the Orba. Is it talking to the STM or the ESP...? Is it even possible to talk directly to the ESP in this configuration, or does it have to go via the STM...? What roles do the STM and the ESP play in general use...? But I don't know if we'll ever find answers to these questions.


The possibility I mentioned of uploading/downloading files in DFU mode which might possibly contain song data is probably irrelevant since this is only STM communication, and the heavy lifting is being done by the ESP.


The only other observation I have is the sequence of events when you try to flash it from the least responsive state; by dragging the firmware file into the Orba App.


https://artiphon.freshdesk.com/support/solutions/articles/44002017914-what-do-i-do-if-my-orba-is-unresponsive-#:~:text=Hold%20the%20Volume%20Up%20(%2B),your%20Orba%20back%20to%20life.


I'll admit that I was a bit reckless in tearing this thing open the way I did. I didn't unplug the connections; they just got ripped off the board, and I doubt I'll bring it back to life now. C'est la vie; you live and learn. 


I've always been fascinated by electronics although I've never understood it. The complexity of the circuitry, let alone the internal workings of ICs, blows me away. I tinker around with hobby chips like the Teensy LC that let you recreate a lot of the functionality of something like this with a YouTube tutorial and a few bits of wire, but when I open commercial products the PCBs are rocket science, like, "wow, I didn't imagine it would be so complicated". It puzzles me slightly. I guess the components here are far cheaper in mass production than something like a Teensy, they're smaller, and once you've designed the layout you can get some Chinese production line to stamp them out for peanuts. It's all amazing really.


I've been guilty of occasionally moaning at Artiphon about this and that, but actually I have huge respect for the skills that go into the production of something like the Orba. I've been slightly spoiled by getting involved in various open-source projects where volunteers adapt and improve systems for free in amazing ways, but the commercial world is a different world.


On a philosophical level I feel there's a weird disconnect between the unfathomable complexity of a human being and the difficulty they have in, eg, learning the alphabet backwards. And I feel a bit the same about the Orba; the complexity of the circuitry is mind-blowing, and you can't play a Dorian scale? (Well, at least you can now, thanks to @Subskybox.) But, it is what it is. It's intended for a specific purpose and produced by a company that has its own ideas and priorities. Fair enough. 


Overall, I think the experience has brought me closer to the open-source outlook, though I can't deny the appeal of the hardware quality on offer in commercial products like this. We're talking considerable R&D, and why would they then start giving the results away. I'm waffling. I'm clearly conflicted.


Anyway. Probably my last post on the circuit/firmware side...


image


A USB connection to the main PCB. The most signs of life I can get out of this are as follows.


1) Run the Orba App and navigate to the Settings page.


2) Plug in the PCB and boot it in DFU mode. (I can still access the microswitches.)


3) Drag the Orba_Fw_0.15.13_PreRelease zip file to the "Firmware Update" section as per the instructions by Artiphon for reviving a dead Orba.


4) The complete event log for this is below. At the point where is says: "Waiting for Orba to restart", a circle of white lights gradually appears, then all lights flash red and nothing else happens.


Evidentally the Orba refuses to restart. If I plug it into the computer and try to power on normally, it goes straight to red-flashing mode.


Either it's damaged, or it's waiting for one of the connections:


1) Battery

2) Speaker

3) Haptic motor

4) Sensor connection (still physically possible but perhaps damaged)


Since my method of opening the Orba involved ripping these off instead of unplugging them (oops), I can't test/progress from here. And since I can only talk to the organ grinder's monkey (the STM) instead of the organ grinder (the ESP), I give up at this point.


I'd be interested in taking an Orba 2 apart and see what's changed. I'm guessing the ESP-SOLO-1 will be upgraded but the other infrastructure will be similar.


It's not going to happen, because I won't find one for twenty quid, and I wouldn't demolish it if I did.


"Alas, poor Orba. I knew him, Horatio."


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


Firmware upload log:


15 Jun 2022 6:28:07pm - Downloading Update Info

15 Jun 2022 6:28:07pm - Downloading Updater Utilities

15 Jun 2022 6:28:07pm - Downloading Updater Util - Capsense Bootloader

15 Jun 2022 6:28:09pm - Downloading Updater Util - ESP32

15 Jun 2022 6:28:13pm - Downloading Updater Util - DFU

15 Jun 2022 6:28:16pm - Uploading Firmware

15 Jun 2022 6:28:16pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -l

15 Jun 2022 6:28:16pm - Orba already in DFU Mode

15 Jun 2022 6:28:16pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -l

15 Jun 2022 6:28:17pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 1 -s 0x1fff0000:44:force -U C:\Users\admin\AppData\Local\Temp\temp_87abb933\firmware\option_bytes.bin

15 Jun 2022 6:28:19pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 1 -s 0x1fff0000:will-reset:force -D C:\Users\admin\AppData\Local\Temp\temp_87abb933\firmware\option_bytes.bin

15 Jun 2022 6:28:22pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 0 -s 0x20010000:force -D C:\Users\admin\AppData\Local\Temp\temp_87abb933\firmware\0x20010000.bin

15 Jun 2022 6:28:23pm - dfu-util 0.9-msvc

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Copyright 2010-2019 Tormod Volden and Stefan Schmidt

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - This program is Free Software and has ABSOLUTELY NO WARRANTY

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Invalid DFU suffix signature

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - A valid DFU suffix will be required in a future dfu-util release!!!

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Opening DFU capable USB device...

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - ID 0483:df11

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Run-time device DFU version 011a

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Claiming USB DFU Interface...

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Setting Alternate Setting #0 ...

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Determining device status: state = dfuERROR, status = 10

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - dfuERROR, clearing status

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Determining device status: state = dfuIDLE, status = 0

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - dfuIDLE, continuing

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - DFU mode device DFU version 011a

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Device returned transfer size 2048

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - DfuSe interface name: "Internal Flash "

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Downloading to address = 0x20010000, size = 125792

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - 

15 Jun 2022 6:28:23pm - Erase [ ] 0% 0 bytes

15 Jun 2022 6:28:23pm - Download [ ] 3% 4096 bytes

15 Jun 2022 6:28:30pm - Download [= ] 4% 6144 bytes

15 Jun 2022 6:28:30pm - Download [== ] 8% 10240 bytes

15 Jun 2022 6:28:30pm - Download [== ] 9% 12288 bytes

15 Jun 2022 6:28:30pm - Download [=== ] 13% 16384 bytes

15 Jun 2022 6:28:30pm - Download [==== ] 16% 20480 bytes

15 Jun 2022 6:28:30pm - Download [==== ] 17% 22528 bytes

15 Jun 2022 6:28:30pm - Download [===== ] 21% 26624 bytes

15 Jun 2022 6:28:30pm - Download [====== ] 24% 30720 bytes

15 Jun 2022 6:28:30pm - Download [======= ] 29% 36864 bytes

15 Jun 2022 6:28:30pm - Download [======== ] 32% 40960 bytes

15 Jun 2022 6:28:30pm - Download [========= ] 37% 47104 bytes

15 Jun 2022 6:28:30pm - Download [========= ] 39% 49152 bytes

15 Jun 2022 6:28:30pm - Download [========== ] 40% 51200 bytes

15 Jun 2022 6:28:30pm - Download [=========== ] 45% 57344 bytes

15 Jun 2022 6:28:30pm - Download [=========== ] 47% 59392 bytes

15 Jun 2022 6:28:30pm - Download [============ ] 48% 61440 bytes

15 Jun 2022 6:28:30pm - Download [============= ] 52% 65536 bytes

15 Jun 2022 6:28:36pm - Download [============= ] 53% 67584 bytes

15 Jun 2022 6:28:36pm - Download [============== ] 56% 71680 bytes

15 Jun 2022 6:28:36pm - Download [=============== ] 60% 75776 bytes

15 Jun 2022 6:28:36pm - Download [=============== ] 61% 77824 bytes

15 Jun 2022 6:28:36pm - Download [================ ] 65% 81920 bytes

15 Jun 2022 6:28:36pm - Download [================= ] 68% 86016 bytes

15 Jun 2022 6:28:36pm - Download [================== ] 73% 92160 bytes

15 Jun 2022 6:28:36pm - Download [=================== ] 76% 96256 bytes

15 Jun 2022 6:28:36pm - Download [==================== ] 81% 102400 bytes

15 Jun 2022 6:28:36pm - Download [==================== ] 83% 104448 bytes

15 Jun 2022 6:28:36pm - Download [===================== ] 84% 106496 bytes

15 Jun 2022 6:28:36pm - Download [====================== ] 89% 112640 bytes

15 Jun 2022 6:28:36pm - Download [======================= ] 92% 116736 bytes

15 Jun 2022 6:28:36pm - Download [======================== ] 96% 120832 bytes

15 Jun 2022 6:28:36pm - Download [======================== ] 97% 122880 bytes

15 Jun 2022 6:28:36pm - Download [=========================] 100% 125792 bytes

15 Jun 2022 6:28:36pm - 

15 Jun 2022 6:28:36pm - Download done.

15 Jun 2022 6:28:36pm - 

15 Jun 2022 6:28:36pm - File downloaded successfully

15 Jun 2022 6:28:36pm - 

15 Jun 2022 6:28:36pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 0 -s 0x8000000:force:leave -D C:\Users\admin\AppData\Local\Temp\temp_87abb933\firmware\0x8000000.bin

15 Jun 2022 6:28:37pm - dfu-util 0.9-msvc

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Copyright 2010-2019 Tormod Volden and Stefan Schmidt

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - This program is Free Software and has ABSOLUTELY NO WARRANTY

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Invalid DFU suffix signature

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - A valid DFU suffix will be required in a future dfu-util release!!!

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Opening DFU capable USB device...

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - ID 0483:df11

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Run-time device DFU version 011a

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Claiming USB DFU Interface...

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Setting Alternate Setting #0 ...

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Determining device status: state = dfuIDLE, status = 0

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - dfuIDLE, continuing

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - DFU mode device DFU version 011a

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Device returned transfer size 2048

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - DfuSe interface name: "Internal Flash "

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Downloading to address = 0x08000000, size = 65536

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - 

15 Jun 2022 6:28:37pm - Erase [ ] 0% 0 bytes

15 Jun 2022 6:28:37pm - Erase [ ] 0% 0 bytes

15 Jun 2022 6:28:37pm - Erase [= ] 6% 4096 bytes

15 Jun 2022 6:28:37pm - Erase [== ] 9% 6144 bytes

15 Jun 2022 6:28:38pm - Erase [=== ] 12% 8192 bytes

15 Jun 2022 6:28:38pm - Erase [==== ] 18% 12288 bytes

15 Jun 2022 6:28:38pm - Erase [===== ] 21% 14336 bytes

15 Jun 2022 6:28:38pm - Erase [====== ] 25% 16384 bytes

15 Jun 2022 6:28:38pm - Erase [======= ] 28% 18432 bytes

15 Jun 2022 6:28:38pm - Erase [======== ] 34% 22528 bytes

15 Jun 2022 6:28:38pm - Erase [========= ] 37% 24576 bytes

15 Jun 2022 6:28:38pm - Erase [========== ] 40% 26624 bytes

15 Jun 2022 6:28:38pm - Erase [=========== ] 46% 30720 bytes

15 Jun 2022 6:28:38pm - Erase [============ ] 50% 32768 bytes

15 Jun 2022 6:28:38pm - Erase [============= ] 53% 34816 bytes

15 Jun 2022 6:28:38pm - Erase [============== ] 56% 36864 bytes

15 Jun 2022 6:28:38pm - Erase [=============== ] 62% 40960 bytes

15 Jun 2022 6:28:38pm - Erase [================ ] 65% 43008 bytes

15 Jun 2022 6:28:38pm - Erase [================= ] 68% 45056 bytes

15 Jun 2022 6:28:38pm - Erase [================== ] 75% 49152 bytes

15 Jun 2022 6:28:38pm - Erase [=================== ] 78% 51200 bytes

15 Jun 2022 6:28:41pm - Erase [==================== ] 81% 53248 bytes

15 Jun 2022 6:28:41pm - Erase [===================== ] 84% 55296 bytes

15 Jun 2022 6:28:41pm - Erase [====================== ] 90% 59392 bytes

15 Jun 2022 6:28:41pm - Erase [======================= ] 93% 61440 bytes

15 Jun 2022 6:28:41pm - Erase [======================== ] 96% 63488 bytes

15 Jun 2022 6:28:41pm - Download [ ] 0% 0 bytes

15 Jun 2022 6:28:41pm - Download [= ] 6% 4096 bytes

15 Jun 2022 6:28:41pm - Download [== ] 9% 6144 bytes

15 Jun 2022 6:28:41pm - Download [=== ] 12% 8192 bytes

15 Jun 2022 6:28:41pm - Download [==== ] 18% 12288 bytes

15 Jun 2022 6:28:41pm - Download [===== ] 21% 14336 bytes

15 Jun 2022 6:28:41pm - Download [====== ] 25% 16384 bytes

15 Jun 2022 6:28:41pm - Download [======= ] 28% 18432 bytes

15 Jun 2022 6:28:41pm - Download [======== ] 34% 22528 bytes

15 Jun 2022 6:28:41pm - Download [========= ] 37% 24576 bytes

15 Jun 2022 6:28:41pm - Download [========== ] 40% 26624 bytes

15 Jun 2022 6:28:45pm - Download [=========== ] 46% 30720 bytes

15 Jun 2022 6:28:45pm - Download [============ ] 50% 32768 bytes

15 Jun 2022 6:28:45pm - Download [============= ] 53% 34816 bytes

15 Jun 2022 6:28:45pm - Download [============== ] 56% 36864 bytes

15 Jun 2022 6:28:45pm - Download [=============== ] 62% 40960 bytes

15 Jun 2022 6:28:45pm - Download [================ ] 65% 43008 bytes

15 Jun 2022 6:28:45pm - Download [================= ] 68% 45056 bytes

15 Jun 2022 6:28:45pm - Download [================== ] 75% 49152 bytes

15 Jun 2022 6:28:45pm - Download [=================== ] 78% 51200 bytes

15 Jun 2022 6:28:45pm - Download [==================== ] 81% 53248 bytes

15 Jun 2022 6:28:45pm - Download [===================== ] 84% 55296 bytes

15 Jun 2022 6:28:45pm - Download [====================== ] 90% 59392 bytes

15 Jun 2022 6:28:45pm - Download [======================= ] 93% 61440 bytes

15 Jun 2022 6:28:45pm - Download [======================== ] 96% 63488 bytes

15 Jun 2022 6:28:45pm - Download [=========================] 100% 65536 bytes

15 Jun 2022 6:28:45pm - 

15 Jun 2022 6:28:45pm - Download done.

15 Jun 2022 6:28:45pm - 

15 Jun 2022 6:28:45pm - File downloaded successfully

15 Jun 2022 6:28:45pm - 

15 Jun 2022 6:28:45pm - Transitioning to dfuMANIFEST state

15 Jun 2022 6:28:45pm - 

15 Jun 2022 6:28:45pm - Waiting for Orba to restart

15 Jun 2022 6:29:45pm - Unable to reconnect Orba

15 Jun 2022 6:29:45pm - Upload Failed

...just some notes on attempts to boot/flash the Orba in a streamlined configuration.


image


The main PCB has three microswitches operated by the power/vol controls, and connections for:


1) Speaker

2) Power

3) Motor (vibration)

4) Sensor PCB


Unfortunately I've damaged these so I can't test fully.


In general, the Orba can get into four states:


1) Powers on normally

2) Unresponsive but can be automatically recovered by the App in DFU mode

3) Unresponsive but can be manually recovered by the App in DFU mode

4) Broken


The most signs of life from my PCB are with (3), described in Artiphon's notes on recovering an Orba from an unresponsive state by downloading a new copy of the firmware.


What happens is this:


1) Run the Orba App and navigate to Settings

2) Connect the PCB and boot into DFU mode

3) Drag firmware file to App as per the instructions


The full log is below. At the point where it says: "Waiting for Orba to restart", the Orba flashes a full set of white lights, then a gradual circle of white lights, then flashes a set of red lights repeatedly and doesn't get any further.


Either it's waiting for something that's not connected, or it's otherwise damaged.


As @Tony points out, the touch sensor PCB has its own IC which seems quite sophisticated. Perhaps the "capsense bootloader" file I mentioned gets sent to that.


It's not very clear how functions are divided up between the different ICs, and it would be difficult to try and figure out how to work with it. From Googling, it sounds like it may be in a configuration where the ESP32 is a "slave" and the STM32 is a "host MCU". I'm not sure if it's possible to talk to the ESP32 directly in this hardware or whether everything is relayed by the STM32.


I'm still curious about the kind of direct communication that takes place between the App and the Orba when changing key, but I don't know how to try and decipher that, or even which IC the App is talking to.


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


Firmware Upload log


15 Jun 2022 7:32:22pm - Downloading Update Info

15 Jun 2022 7:32:22pm - Downloading Updater Utilities

15 Jun 2022 7:32:22pm - Downloading Updater Util - Capsense Bootloader

15 Jun 2022 7:32:24pm - Downloading Updater Util - ESP32

15 Jun 2022 7:32:28pm - Downloading Updater Util - DFU

15 Jun 2022 7:32:31pm - Uploading Firmware

15 Jun 2022 7:32:31pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -l

15 Jun 2022 7:32:31pm - Orba already in DFU Mode

15 Jun 2022 7:32:31pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -l

15 Jun 2022 7:32:32pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 1 -s 0x1fff0000:44:force -U C:\Users\admin\AppData\Local\Temp\temp_521aa190\firmware\option_bytes.bin

15 Jun 2022 7:32:34pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 1 -s 0x1fff0000:will-reset:force -D C:\Users\admin\AppData\Local\Temp\temp_521aa190\firmware\option_bytes.bin

15 Jun 2022 7:32:37pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 0 -s 0x20010000:force -D C:\Users\admin\AppData\Local\Temp\temp_521aa190\firmware\0x20010000.bin

15 Jun 2022 7:32:38pm - dfu-util 0.9-msvc

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Copyright 2010-2019 Tormod Volden and Stefan Schmidt

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - This program is Free Software and has ABSOLUTELY NO WARRANTY

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Invalid DFU suffix signature

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - A valid DFU suffix will be required in a future dfu-util release!!!

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Opening DFU capable USB device...

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - ID 0483:df11

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Run-time device DFU version 011a

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Claiming USB DFU Interface...

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Setting Alternate Setting #0 ...

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Determining device status: state = dfuERROR, status = 10

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - dfuERROR, clearing status

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Determining device status: state = dfuIDLE, status = 0

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - dfuIDLE, continuing

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - DFU mode device DFU version 011a

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Device returned transfer size 2048

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - DfuSe interface name: "Internal Flash "

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Downloading to address = 0x20010000, size = 125792

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - 

15 Jun 2022 7:32:38pm - Erase [ ] 0% 0 bytes

15 Jun 2022 7:32:38pm - Download [ ] 3% 4096 bytes

15 Jun 2022 7:32:45pm - Download [= ] 4% 6144 bytes

15 Jun 2022 7:32:45pm - Download [== ] 8% 10240 bytes

15 Jun 2022 7:32:45pm - Download [== ] 9% 12288 bytes

15 Jun 2022 7:32:45pm - Download [=== ] 13% 16384 bytes

15 Jun 2022 7:32:45pm - Download [==== ] 16% 20480 bytes

15 Jun 2022 7:32:45pm - Download [==== ] 17% 22528 bytes

15 Jun 2022 7:32:45pm - Download [===== ] 21% 26624 bytes

15 Jun 2022 7:32:45pm - Download [====== ] 24% 30720 bytes

15 Jun 2022 7:32:45pm - Download [======= ] 29% 36864 bytes

15 Jun 2022 7:32:45pm - Download [======== ] 32% 40960 bytes

15 Jun 2022 7:32:45pm - Download [========= ] 37% 47104 bytes

15 Jun 2022 7:32:45pm - Download [========= ] 39% 49152 bytes

15 Jun 2022 7:32:45pm - Download [========== ] 40% 51200 bytes

15 Jun 2022 7:32:45pm - Download [=========== ] 45% 57344 bytes

15 Jun 2022 7:32:45pm - Download [=========== ] 47% 59392 bytes

15 Jun 2022 7:32:45pm - Download [============ ] 48% 61440 bytes

15 Jun 2022 7:32:45pm - Download [============= ] 52% 65536 bytes

15 Jun 2022 7:32:51pm - Download [============= ] 53% 67584 bytes

15 Jun 2022 7:32:51pm - Download [============== ] 56% 71680 bytes

15 Jun 2022 7:32:51pm - Download [=============== ] 60% 75776 bytes

15 Jun 2022 7:32:51pm - Download [=============== ] 61% 77824 bytes

15 Jun 2022 7:32:51pm - Download [================ ] 65% 81920 bytes

15 Jun 2022 7:32:51pm - Download [================= ] 68% 86016 bytes

15 Jun 2022 7:32:51pm - Download [================== ] 73% 92160 bytes

15 Jun 2022 7:32:51pm - Download [=================== ] 76% 96256 bytes

15 Jun 2022 7:32:51pm - Download [==================== ] 81% 102400 bytes

15 Jun 2022 7:32:51pm - Download [==================== ] 83% 104448 bytes

15 Jun 2022 7:32:51pm - Download [===================== ] 84% 106496 bytes

15 Jun 2022 7:32:51pm - Download [====================== ] 89% 112640 bytes

15 Jun 2022 7:32:51pm - Download [====================== ] 91% 114688 bytes

15 Jun 2022 7:32:51pm - Download [======================= ] 92% 116736 bytes

15 Jun 2022 7:32:51pm - Download [======================== ] 96% 120832 bytes

15 Jun 2022 7:32:51pm - Download [======================== ] 97% 122880 bytes

15 Jun 2022 7:32:51pm - Download [=========================] 100% 125792 bytes

15 Jun 2022 7:32:51pm - 

15 Jun 2022 7:32:51pm - Download done.

15 Jun 2022 7:32:51pm - 

15 Jun 2022 7:32:51pm - File downloaded successfully

15 Jun 2022 7:32:51pm - 

15 Jun 2022 7:32:51pm - Executing: C:\Users\admin\AppData\Roaming\Artiphon\Orba\UpdateUtilities\dfu-util-win\dfu-util.exe -d 0483:df11 -a 0 -s 0x8000000:force:leave -D C:\Users\admin\AppData\Local\Temp\temp_521aa190\firmware\0x8000000.bin

15 Jun 2022 7:32:52pm - dfu-util 0.9-msvc

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Copyright 2010-2019 Tormod Volden and Stefan Schmidt

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - This program is Free Software and has ABSOLUTELY NO WARRANTY

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Invalid DFU suffix signature

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - A valid DFU suffix will be required in a future dfu-util release!!!

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Opening DFU capable USB device...

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - ID 0483:df11

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Run-time device DFU version 011a

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Claiming USB DFU Interface...

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Setting Alternate Setting #0 ...

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Determining device status: state = dfuIDLE, status = 0

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - dfuIDLE, continuing

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - DFU mode device DFU version 011a

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Device returned transfer size 2048

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - DfuSe interface name: "Internal Flash "

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Downloading to address = 0x08000000, size = 65536

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - 

15 Jun 2022 7:32:52pm - Erase [ ] 0% 0 bytes

15 Jun 2022 7:32:52pm - Erase [ ] 0% 0 bytes

15 Jun 2022 7:32:52pm - Erase [= ] 6% 4096 bytes

15 Jun 2022 7:32:52pm - Erase [== ] 9% 6144 bytes

15 Jun 2022 7:32:53pm - Erase [=== ] 12% 8192 bytes

15 Jun 2022 7:32:53pm - Erase [==== ] 18% 12288 bytes

15 Jun 2022 7:32:53pm - Erase [===== ] 21% 14336 bytes

15 Jun 2022 7:32:53pm - Erase [====== ] 25% 16384 bytes

15 Jun 2022 7:32:53pm - Erase [======= ] 28% 18432 bytes

15 Jun 2022 7:32:53pm - Erase [======== ] 34% 22528 bytes

15 Jun 2022 7:32:53pm - Erase [========= ] 37% 24576 bytes

15 Jun 2022 7:32:53pm - Erase [========== ] 40% 26624 bytes

15 Jun 2022 7:32:53pm - Erase [=========== ] 46% 30720 bytes

15 Jun 2022 7:32:53pm - Erase [============ ] 50% 32768 bytes

15 Jun 2022 7:32:53pm - Erase [============= ] 53% 34816 bytes

15 Jun 2022 7:32:53pm - Erase [============== ] 56% 36864 bytes

15 Jun 2022 7:32:53pm - Erase [=============== ] 62% 40960 bytes

15 Jun 2022 7:32:53pm - Erase [================ ] 65% 43008 bytes

15 Jun 2022 7:32:53pm - Erase [================= ] 68% 45056 bytes

15 Jun 2022 7:32:53pm - Erase [================== ] 75% 49152 bytes

15 Jun 2022 7:32:53pm - Erase [=================== ] 78% 51200 bytes

15 Jun 2022 7:32:56pm - Erase [==================== ] 81% 53248 bytes

15 Jun 2022 7:32:56pm - Erase [===================== ] 84% 55296 bytes

15 Jun 2022 7:32:56pm - Erase [====================== ] 90% 59392 bytes

15 Jun 2022 7:32:56pm - Erase [======================= ] 93% 61440 bytes

15 Jun 2022 7:32:56pm - Erase [======================== ] 96% 63488 bytes

15 Jun 2022 7:32:56pm - Download [ ] 0% 0 bytes

15 Jun 2022 7:32:56pm - Download [= ] 6% 4096 bytes

15 Jun 2022 7:32:56pm - Download [== ] 9% 6144 bytes

15 Jun 2022 7:32:56pm - Download [=== ] 12% 8192 bytes

15 Jun 2022 7:32:56pm - Download [==== ] 18% 12288 bytes

15 Jun 2022 7:32:56pm - Download [===== ] 21% 14336 bytes

15 Jun 2022 7:32:56pm - Download [====== ] 25% 16384 bytes

15 Jun 2022 7:32:56pm - Download [======= ] 28% 18432 bytes

15 Jun 2022 7:32:56pm - Download [======== ] 34% 22528 bytes

15 Jun 2022 7:32:56pm - Download [========= ] 37% 24576 bytes

15 Jun 2022 7:32:56pm - Download [========== ] 40% 26624 bytes

15 Jun 2022 7:33:00pm - Download [=========== ] 46% 30720 bytes

15 Jun 2022 7:33:00pm - Download [============ ] 50% 32768 bytes

15 Jun 2022 7:33:00pm - Download [============= ] 53% 34816 bytes

15 Jun 2022 7:33:00pm - Download [============== ] 56% 36864 bytes

15 Jun 2022 7:33:00pm - Download [=============== ] 62% 40960 bytes

15 Jun 2022 7:33:00pm - Download [================ ] 65% 43008 bytes

15 Jun 2022 7:33:00pm - Download [================= ] 68% 45056 bytes

15 Jun 2022 7:33:00pm - Download [================== ] 75% 49152 bytes

15 Jun 2022 7:33:00pm - Download [=================== ] 78% 51200 bytes

15 Jun 2022 7:33:00pm - Download [==================== ] 81% 53248 bytes

15 Jun 2022 7:33:00pm - Download [===================== ] 84% 55296 bytes

15 Jun 2022 7:33:00pm - Download [====================== ] 90% 59392 bytes

15 Jun 2022 7:33:00pm - Download [======================= ] 93% 61440 bytes

15 Jun 2022 7:33:00pm - Download [======================== ] 96% 63488 bytes

15 Jun 2022 7:33:00pm - Download [=========================] 100% 65536 bytes

15 Jun 2022 7:33:00pm - 

15 Jun 2022 7:33:00pm - Download done.

15 Jun 2022 7:33:00pm - 

15 Jun 2022 7:33:00pm - File downloaded successfully

15 Jun 2022 7:33:00pm - 

15 Jun 2022 7:33:00pm - Transitioning to dfuMANIFEST state

15 Jun 2022 7:33:00pm - 

15 Jun 2022 7:33:00pm - Waiting for Orba to restart

15 Jun 2022 7:34:00pm - Unable to reconnect Orba

15 Jun 2022 7:34:00pm - Upload Failed


...just flipping through some of the stuff in that downloadable firmware Orba_Fw_0.15.13_PreRelease zip file that Artiphon provides for recovery.


https://storage.googleapis.com/artiphon-web-content/Orba_Fw_0.15.13_PreRelease.zip


Interesting to see some of the comments in the "Changelog_Beta" file, like:


- Fixed issue where notes would disappear with quantize and cause a crash (PROD-2511, PROD-2528)

- Quantization is turned on by default (constant length, snap to 1/16 notes) (PROD-2130)

- Various bug fixes with quantization (PROD-2447, 2174)


As I mentioned, the XML in the song files contains some quantisation settings. This is from 1981.song.


<Mode name="Bass" quantizationMode="0" volume="200">


It sounds like there could possibly be some slightly broken quantisation features that might be accessible with some XML hacking.

The currently available release is 0.15.13. Reading back through the changelog:


0.15.1   Disables quantization by default

0.15.0   Quantize on by default

0.14.19  Quantize on by default

0.14.18 - Quantization is turned on by default (constant length, snap to 1/16 notes) (PROD-2130)


etc


I don't suppose these earlier releases are still available, but maytbe some functionality is still there if the XML can turn it on.

I just Googled the inscription "Reply hazy, try again" on the motherboard; haven't come across it before. It's apparently from something called the Magic 8 Ball.




https://en.wikipedia.org/wiki/Magic_8_Ball



Stüssy x Mattel Creations Magic 8 Ball Toy | HYPEBEAST


...actually, thinking about it, if quantisation isn't enabled in the App, the settings in the XML aren't going to have any effect. I guess we can forget about that, though it'll be interesting to see how it's implemented in v2.

If you edit the Orba application in Notepad++ and search for text parameters from the XML like "RetainNotes", you can find alternatives that I haven't seen in the XML, like "RetainIntervals".


 A typical tuning entry looks like this:


  <TuningEntry key="C" name="Major Pentatonic" intervals="P1, M2, M3, P5, M6, P8, M9, M10"

               midiOctave="3" transpositionType="RetainNotes" type="tonal" tuning="60, 62, 64, 67, 69, 72, 74, 76"/>


So far we haven't found any result from changing the "intervals" list, only the "tuning" values. I think that may be because the transpositionType is set to "RetainNotes", but if you change it to the alternative "RetainIntervals" value found in the App code, I reckon that's where the "intervals" string might start changing things.


I reckon it might be something to do with the way the chord sequence change when you change key in the App. I got some different result from it at one point, but couldn't then recreate it.


It might be worth scouring the code for other parameter values like this that we don't know about.


1 person likes this

I also had a scour of the application itself and found lots of xml. Here is a sample:


  

  <TuningList category="percussion" keySelection="false">
    <TuningEntry name="All Kicks" />
    <TuningEntry name="Drum Kit" />
    <TuningEntry name="Electro Kit" />
  </TuningList>
  <TuningList category="tonal" keySelection="true">
      <TuningEntry name="Major"            type="tonal" intervals="P1, M2, M3, P4, P5, M6, M7, P8" />
      <TuningEntry name="Natural Minor"    type="tonal" intervals="P1, M2, m3, P4, P5, m6, m7, P8" />
      <TuningEntry name="Harmonic Minor"   type="tonal" intervals="P1, M2, m3, P4, P5, m6, M7, P8" />
      <TuningEntry name="Melodic Minor"    type="tonal" intervals="P1, M2, m3, P4, P5, M6, M7, P8" />
      <TuningEntry name="Major Pentatonic" type="tonal" intervals="P1, M2, M3, P5, M6, P8, M9, M10" />
      <TuningEntry name="Minor Pentatonic" type="tonal" intervals="P1, m3, P4, P5, m7, P8, m10, P11" />
      <!--
      <TuningEntry name="Dorian"     type="tonal" intervals="P1, M2, m3, P4, P5, M6, m7, P8" />
      <TuningEntry name="Phrygian"   type="tonal" intervals="P1, m2, m3, P4, P5, m6, m7, P8" />
      <TuningEntry name="Lydian"     type="tonal" intervals="P1, M2, M3, A4, P5, M6, M7, P8" />
      <TuningEntry name="Mixolydian" type="tonal" intervals="P1, M2, M3, P4, P5, M6, m7, P8" />
      <TuningEntry name="Locrian"    type="tonal" intervals="P1, m2, m3, P4, d5, m6, m7, P8" />
       -->
  </TuningList>

 I also found lots of svg sources which I pasted into html docs. These are mostly UI elements but might lead to clues.. 

html
(190 KB)
html
(4.37 MB)
xml

1 person likes this

 I think all modes support `Bump`. I believe it is hardcoded to the same note regardless of the mode. I've never come across a way to edit this value.. yet


Changing values 39 or 40 in the experimental data fiddler (chords preset) break it, whereas none of the other surrounding values seem to have any effect, so they might be connected with it; but I can't see how to alter it. If your theory about the lists of Modifier/Seeker values representing different gestures is correct, then maybe it's in the SeekerData for the entry corresponding to the bump gesture.

In a previous post somewhere I think I mentioned that after finishing the alpha version of the Editor that my plan is to update the Fiddler to be completely generic. Since there is so many Base64 strings in these files, the idea is the user will paste any Base64 string into a Text Area and the Fiddler will create a table of the values it extracts. The user can then modify the numbers and the copy the Base64 string back to the clipboard and paste it into any file they want. The user will have to edit the file themselves and rename it to pick up the change, but I think this gives Orba Hackers more flexibility.

Don't know if this helps. I searched orba.exe.  It appears Artiphon uses products/plugins by https://foleysfinest.com/

@BJG145 said:

 

  • "If your theory about the lists of Modifier/Seeker values representing different gestures is correct, then maybe it's in the SeekerData for the entry corresponding to the bump gesture."


I just found Ian Halbwachs' Github repo that appears to confirm this?!

His Preset has comments:
  <ModifierList>
    <!-- tap [note] -->
    <ModifierEntry chainIndex="0" gestureUuid="4f36e6ea-9135-4163-b3ac-63ec98d9f7c7" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="89930c9a9e51427d91fd15bb03f60c2a"/>
    <!-- tilt [cc1] -->
    <ModifierEntry chainIndex="0" gestureUuid="4620991b-b32e-4150-a35d-2d54b9501a75" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="a207ab4a68274bc18796031750ccd06f"/>
    <!-- vibrato [pitch wheel] -->
    <ModifierEntry chainIndex="0" gestureUuid="38ca5c83-e834-43fa-a549-0543cf578fc3" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="eca7882cd43345c4b48bbb37cd31807e"/>
    <!-- spin [cc 112] -->
    <ModifierEntry chainIndex="0" gestureUuid="61f2d792-abb1-4b4c-867b-1223c81d778c" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="0d0516f18bc74f3483d34606afa3716a"/>
    <!-- radiate [cc74] -->
    <ModifierEntry chainIndex="0" gestureUuid="78ee1f95-c038-4a25-bb09-ef2229ae30a1" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="8f5196ee5add409798612be0c333e005"/>
    <!-- press [channel pressure] -->
    <ModifierEntry chainIndex="0" gestureUuid="b1831b9b-40c1-45fc-afb9-0e07beb83663" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="9bda1c4b83454bc1bee3046d8bb7269a"/>
    <!-- shake note [note 69] -->
    <ModifierEntry chainIndex="0" gestureUuid="e0ae0484-10a1-44d6-8873-dcd6ae2cf70f" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="dc13a7d2c19a4acfb9f435eff54f4ff5"/>
    <!-- shake cc [cc 2] -->
    <ModifierEntry chainIndex="0" gestureUuid="2a2a40b7-e73d-4b48-b959-bf196a0dc749" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="133f78c514fd42b88eda7f4b9547b2a9"/>
    <!-- move cc [cc 113] -->
    <ModifierEntry chainIndex="0" gestureUuid="ea1d7a41-2175-4b9f-baf1-d6cfeb9913e7" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="8432126dd86b4974a40506a6522995e2"/>
    <!-- bump [note 39] -->
    <ModifierEntry chainIndex="0" gestureUuid="aa95f4bc-a1ce-4eb6-a455-2e8353218620" modifierData="..." modifierUuid="1ec43ffb-15db-4708-b21b-cf2ce372e3fc" prioIndex="0" uuid="f0710a10ed704d36a95061859d9eb020"/>
  </ModifierList>

  


Now I'm wondering if we could apply other chord voicing(s) on a Tilt Gesture as an example?!

...interesting. I've just realised that if you move or rename the Presets folder, then run the App and open a Song, it recreates it. So even though the Song XML doesn't contain these Modfier lists, that info is evidently floating around and being used.

The ability to use a gesture to change chord voicings sounds really cool! But, I think it would be neat to map the radiate gesture to that.

It reminds me of an IOS app called Sound Prism  which turns the screen in to a sortof grid controller. Left to right you have 7 lanes for the 7 diatonic chords. top to bottom you have voicings if you slide your finger top to bottom, you get a sortof chord glisando. But if you just tap the chord in one place, you get a static inversion of the chord, then you can tap slightly higher or lower on the screen to change the voicing dynamicly.

That would be really cool to do on the orba changing your position on the pad from top to bottom.


Login or Signup to post a comment