Start a new topic

Orba hacking knowledge base

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

27 people like this idea

Just some notes on workflow...

I've now been abloe to record a set of songs with tap-only data. The method is:

1) Load 1981 and quit the app

2) Create a copy of the 1981 Lead preset with tap only (first Seeker/Modifier only) and Major scale

3) Record a sequence

4) Run the app and quit it again, saving the song

5) Make a copy of the new song file version the App has created and give it a suitable name

6) Clear the sequence and repeat from (3)

Usually the App makes successive copies a song as you record new sequences, but after feeding it a tap-only Lead preset I couldn't get it to go beyond the first one.


I've found that the console event list posted above shows live events while recording; I don't think you can get that view during playback.

The Looper info logs (1-4 in consoel) are a bit strange. If you record with sequences in the console, they get populated, but if you load a song containing event data, they don't. However, if you record another note on the end, then that shows up, and the previous data shows up too.

The Looper info log for this song that you're extending displays in a "live" readout kind of way; if you keep tapping the relevant number for that loop (Bass/Lead/Chord/Drums) whie it's playing, it shows all the info up to that point. 

So to recap, to get the console Looper info from a song you've loaded from the App, you need to:

1) Quit the App

2) Turn the Orba off and on again

3) Connect via eg Putty

4) Put the Orba in Record mode

5) Add another note to the sequence you've recorded

6) Tap the relevant loop button (1-4) just as the loop ends  

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

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

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

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

Here are some files from a duration/timing test. There's an MP3 of the loop, and a CSV giving data from:

1) MidiOx MIDI monitor (from Orba's USB/MIDI)

2) loopData

3) Decoded eventData

4) Console data (with extra final note in order to generate the report)

The loop is all on one note, and consists of:

1) Two notes with duration of 1 click, separation of 1 click

2) Two notes with duration of 2 clicks, separation of 2 clicks

3) Two notes with duration of 3 clicks, separation of 1 click

Looking at eventData, there's an unknown negative value after release velocity. This is followed by a value that's 1 for the first two notes, 3 for the second two notes, and 5 for the last two, so it looks like that's related to duration. 


The other thing I was wondering is whether it was possible to hack the app in the same way as the XML. It seems to work; I was able to change the text in the Settings window. It might possibly provide a way to control options that are inaccessible from the XML.

Just to clarify the timing of the performance:

click - on

click - off

click - on

click - off

click - on


click - off


click - on


click - off


click - on



click - off

click - on



click - off


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

<TuningEntry name="Major" type="tonal" intervals="P1, M2, M3, P4, P5, M6, M7, P8"/>

If you mess with that intervals list in the app code, and load a preset set to a major scale, it changes it.

So...that's at least one thing where we've found no result from changing the XML in the preset, but it has an effect if you change it in the app code.

Every note value (62=D4) has a value of 16 three places before it, with the first 16 being the start of the data. Perhaps this represents the "Play a note" event or the MIDI channel number. It looks like eventData bundles note-on and note-off into a single entry which includes timing, note, duration, attack velocity and release velocity...?

@Subskybox pointed out a set of tuning entries in the app code.

 <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" />


Let's take a closer look at this. The entry for the Major scale is:

intervals="P1, M2, M3, P4, P5, M6, M7, P8"

The entry for the Mixolydian scale, which has been commented out, is:

intervals="P1, M2, M3, P4, P5, M6, m7, P8"

Myxolidan is Major with a flattened 7th. This suggests that using "m" instead of "M" (the only difference here) means: "flatten this note". This is confirmed by the entry for the Dorian, which is Major with a flattened 3rd and 7th.

intervals="P1, M2, m3, P4, P5, M6, m7, P8"

Most of the eight-note scales follow the same pattern as the Major:

P1, M2, M3, P4, P5, M6, M7, P8

The sequence is: P M M P P M M P, with 1-8.

I haven't tried to figure out what some of the outliers like "A4" and d5" mean, but they all seem to be implemented. If you substitute the intervals entry for "Major" with the one for "Locrian", then load a Lead preset set to the Major scale, you get a Locrian scale.

If you edit the "Major" entry in the app code, you also have to have "Maj" selected in the App. Occasionally I've had to change it to "Min" then back to "Maj" to make sure it grabs the right setting.

The minor scale that the Orba usually plays is the Natural minor. If you edit the app code, grab the intervals list for eg the Harmonic minor, and use it to substitute the Natural minor entry, then you get the Harmonic minor instead.

So, for example, I currently have my Orba set so that clicking the "Min/Maj" button in the edited version of the App actually switches between Lydian and Phrygian, with working transpose.

It's curious that these "scale presets" are defined in the app, but the usual XML presets don't respond to them. If you simply try to reference one of these alternative scales in a Lead preset it doesn't seem to do anything. I guess it comes down to the fact that the app only has its "Min/Maj" button; you can choose Major or Natural Minor, nothing else. 

It seems Artiphon originally intended to provide a selection of scales, then decided to keep it simple. 


I was recently looking at an early interview with Artiphon in Sound On Sound back in 2014.

"I really wanted to discover the pain points in music-making and why most people don’t play music. High learning curves for traditional instruments, not enough time, fear of playing a wrong note... music-making can be intimidating. And yet we’re finding that people feel differently about apps. Hundreds of millions of people are making music with their iPhones and iPads, without worrying about whether they’re musicians or not. Mobile music is growing every day, but you can only do so much with a flat glass screen. Artiphon is designing a multi-instrument interface that’s as flexible and adaptive as the apps it can play. I set out to make an instrument that anyone could start playing and that would grow in complexity as people explore their style."

It explains where they're coming from. They seem to have decided to stick with the "anyone could start playing" idea and forget about the "grow in complexity" bit.

Fair enough. Personally I feel there's a lost opportunity between the appealing hardware and the dumbed-down UI. But I guess they know their market.


I mentioned that simply running the app will recreate the Presets folder structure if it's not there. It recreates the Song folder structure as well. So, all that stuff is in the app code; that's the mother lode. The app can spawn presets with various appealing variables, but with some of these it seems you have to go back to the source to make a difference.

























Incidentally, changing those entries in the app seems to affect bass, leads and chords. Getting some pretty zany loops out of my Orba now. ;-)

(I'm actually finding this quite a cool way of noodling around on the various scales and getting a feel for them.)

I forgot to include the LoopData in the "Lead Test" .csv posted previously (which looked at different simple patterns of repeated notes). Here's an updated version with this added.


>"The Orba data has a 0 which I think may represent the Note On event, followed by MIDI note"


I've also realsed that these "0" values are what I called "Duration" in the next test I posted, which looked a durations of 1, 2 and 3 clicks. The value in those were 1, 3 and 5 respectively. In the "Lead test" the notes were very short taps resulting in a 0 value.

I've relabelled them as "Duration-related"; not sure exactly what they represent yet. 


There are different ways of measuring time. You can say, "Start at X, and end at Y". Or you could say, "Start at X, for duration Z".

I was starting to wonder whether the timings in eventData were absolute or relative. It looks as though each note event is a block of 8 values from the beginning of the list, with no header.

1)  16 (Tap note command?)

2)  +ve and -ve (?)

3)  Low +ve (?)

4)  Note value

5)  Attack velocity

6)  Release velocity

7) -ve (?)

8) Low +ve

I was looking at the "Memidex" list in console, which also shows blocks of 8...

MemIdx = 0 - MIDI Note at tick 12, channel 1, note 62, duration 496, von 99, voff 85

MemIdx = 8 - MIDI Note at tick 944, channel 1, note 62, duration 464, von 127, voff 87

MemIdx = 16 - MIDI Note at tick 1908, channel 1, note 62, duration 960, von 121, voff 87

MemIdx = 24 - MIDI Note at tick 3845, channel 1, note 62, duration 996, von 117, voff 80

...and remembered the tip from @Subskybox.

I suspect [eventData] is exact same data from the MemIdx does look like it. The next question is working out what order it's in. Need to test durations that get longer and then shorter again...

Login or Signup to post a comment