Start a new topic

Orba hacking knowledge base

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


27 people like this idea

LoopData might contain some of the header info before we get to the MIDI data. I tried decoding the first 19 characters of the LoopData and comparing the values. A couple of the numbers might correlate, eg:


Index 2 and Index 10 = 74 = ccB

Index 16 = 75 = ccC


Trial and error I guess; not sure what ccA/ccB/ccC even are yet...

 

csv
(740 Bytes)

(...either way, I'm definitely tending towards the indecipherable 0x2 area as the repository of performance data and settings...)

Anyone ever figure out how to add new preset files to iPhone? I have lots on my PC but I would like them on my iPhone too


[0483:df11]  alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*64Kg,03*128Kg", 


I now seem to remember doing this sum before in this thread.


4x16KB + 1x64KB + 3x128KB = 512KB seems to be the total Flash available to the STM32. Maybe I need to break away from dfu-util  transfers copied from the log and try grabbing some different chunks; after all, note data is obliterated by flash-from-file. 

I just tried recording a few different bass loops and looking at LoopData. 


For the first one,I started with "All Out", let it count four metronome clicks in, played the lowest note, then pressed the central button to stop recording on the third click after that. I then repeated with the next two notes up. 


Comparing the strings:


F3wHdxQAAFEVAAAAACAQAAA5dSRoAA==

FxcAaxQAAFUVAAAAACAQAAA7eUpVABRIADA=

F2MHYhQAAGYVAAAAACAQAAA9cTlyAA==


I've found that other similar loops have the same string from characters 12-23:


VAAAAACAQAAA


This is followed by 5, 7 and 9 in the three strings. These decode to 57, 59, 61 at index 17, which are the MIDI note numbers the Orba sends. So, it looks like the MIDI data sequence starts there.


 (For general reference, note that the Fiddler data index starts at 0, so this is 18th value in the sequence.)


 I've attached a CSV with some of this info. The set of values under the eventData are taken from other parameters in song file's LoopData entry.

txt
(3.39 KB)

Have fun! I'm not joining you. Playing with my new Akai MPK Mini PLAY mk3 :-) 

 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.

Trying different addresses for dfu-util was a bit of a rabbit hole.


The specific version of the STM32F730 is the R8T6.


image


According to the datasheet it has 64K Flash RAM, but also 256+16+4 standard RAM. 


@Internal Flash /0x08000000/04*016Kg,01*64Kg,03*128Kg


We've seen that 0x20010000.bin is sent to 0x20010000....


Downloading to address = 0x20010000, size = 125792


...and 0x8000000.bin is sent to 0x08000000.


Downloading to address = 0x08000000, size = 65536


...and at first I'd thought there might be more, but dfu-util wouldn't accept any other address values. In order to find out what these values are, you have to look at the datasheet. I ended up downloading a database called Keil Tools which produced the following info.


image

   

CPU=IRAM(0x20010000,0x30000) IRAM2(0x20000000,0x10000) IROM(0x08000000,0x10000) IROM2(0x00200000,0x10000)

CPUTYPE("Cortex-M7") FPU3(SFPU) CLOCK(12000000) ELITTLE

FLDLL=UL2CM3(-S0 -C0 -P0 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_64_AXI -FS08000000 -FL010000 -FP0($$Device:STM32F730R8Tx$CMSIS\Flash\STM32F7x_64_AXI.FLM))

MON=SARMCM3.DLL (" -MPU") TCM.DLL ("-pCM7")

SIM=SARMCM3.DLL (" -REMAP -MPU") DCM.DLL ("-pCM7")

SVD=$$Device:STM32F730R8Tx$CMSIS\SVD\STM32F730.svd


The two values from the log correspond to "IRAM" and "IROM". "IRAM2" and "IROM2" don't work either; nothing else works.


I think flash-from-file must be sending 0x20010000.bin to the STM32's standard RAM, not Flash after all. (?) Maybe that explains why it changes so widely and randomly between grabs.

>"I swear at one point that I could change the channel on my external keyboard and target the four voices by using midi channels"


I can't get that to work either...

...so far so good. I've been able to record a tune on Bass, then fiddle the Song file to change the first note. It'll get a bit more complicated after that beause there might be an arbitrary number of CC messages until the next one. 


>"I suspect its the exact same data from the MemIdx above"


...yep, I guess eventData is basically a list of MIDI event codes followed by MIDI event data. Time to hit the loop logs again.

>"@BJG145 Looking for your thoughts on this"


I was just taking another look at this to to try and follow the bit where he's explaining that there might be a bit over 4MB on a 4MB Flash chip so you might want to check you're not missing anything; it's at this point.


https://youtu.be/2GwzbBn7uRw?t=676


And I realised...d'oh, that Winbond chip isn't RAM at all...that's the 4MB Flash.


He goes to a datasheet for his chip where he identifies a value of 3FFFFF = 4194303.


image



The corresponding value on the datasheet for the Winbond 25X40CL shown above is 07FFFF = 524287


image



So, I just tried:


D:\orba\esptool.py read_flash 0 0x07FFFF complete_flash.bin


esptool.py v4.1


Chip is ESP32-S0WD (revision 1)

Read 524287 bytes at 0x00000000 in 47.4 seconds (88.5 kbit/s)


File attached FWIW. Wait, that's on 512KB. 


So confusing. Will have to revisit.

bin

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/

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.

...this is going to be a lot easier if I start again with a set of songs for one gesture at a time, starting with tap only...

Login or Signup to post a comment