Start a new topic

Orba hacking knowledge base

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


27 people like this idea

@BJG145 Hoping you have Excel.. Here is a spreadsheet (with formulas which completely validates the 8-byte note structure)

xlsx
(11.7 KB)

1 person likes this
@Subskybox although I haven't yet had time to download and test your new software, it's clear you've put lots of work into learning how to manipulate the Orba's synth engine. You also credit @AndreaMannoci, @QuadPlex and @BJG145 and I join you in thanking them for their work. It's remarkable that you've made such swift progress and I assume that was in part due to the prior work of these other forum members. I've looked at some of your code on github and I'm very happy to see it's clean and well written. I'm sure I'm not alone in wishing to thank you and the others from the bottom of my heart for your work.

1 person likes this
@GJ van Mulbregt In the Kickstarter FAQ Artiphon said: "Loops can be as short as a single bar or several minutes in length." So it should work fine.

1 person likes this

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.



1 person likes this

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.

txt
txt
txt
txt
(494 Bytes)
txt

1 person likes this

I guess we could think of the SeekerData from the Tilt Lead preset as Pitchbend, which I've added here.


image


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.


1 person likes this

...just realised I was getting confused about this "effect" thing. It seems to be a gesture like the others after all...?


image


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.


1 person likes this

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


1 person likes this

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...;-)


1 person likes this

@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...


1 person likes this

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

 

 

 


1 person likes this

@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]}
	    ]
	}
}

  


1 person likes this

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.


1 person likes this

@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.


1 person likes this

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.




1 person likes this
Login or Signup to post a comment