Start a new topic

Orba hacking knowledge base

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


27 people like this idea

I've imagined adding Tilt to a voice to control pitch (not sure if even possible). The idea is that you could get many more notes in a scale knowing that tilting the Orba to its side would flatten all the notes a semitone.

 

That's a neat idea. You can bend the notes quite accurately up and down a tone by turning the Orba vertically. Here's a quick sample recorded from the headphone jack.

 

 https://soundcloud.com/qchord/pitchbend/s-VbkGnuWWex4?utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing

 

I'm wondering what scale would provide the most tonal variety within the limit of a whole-tone bend...

The app code has several separate sections of XML. The purpose of these is to define various "libraries" - a "Tuning Library", a "Pattern Library", a "Preset Library" and a "Sound Library".


I was previously able to get results from changing the intervals list in the app's Tuning Library that I wasn't able to get by changing it in the preset XML, so I was wondering if we might also be able to get new results by hacking the other libraries.

>You can modify the experimental Fiddler by changing the Base64 string at line 502


It’s useful to know how to fiddle other values. I just decoded the SeekerData strings for the gestures in the utility presets.


image



Tap, Bump and Shake are the kind of single-value things that appear in the app code as “Events”, whereas Tilt, Spin, Radiate etc can have a range of values and appear as “Metrics”. Events start with 0, and Metrics start with 1.


Vibrato is different from the others because it’s an effect, whereas the others are gestures. The fourth value from the end here is -1, whereas all the others are 127.


The second value shows the most variance. The rest either have the same value across all the examples, or a selection from up to four options, eg:


0 or 4

0 or -128

1 or 8

0, 2, 3


When experimenting with new values, I guess it would be sensible to start by picking one of these common ones, and one that’s relevant to the type; eg changing one of the 8s to a 1. The second value looks like a good place to start.

 

 

 

 

csv
(750 Bytes)

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

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

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

There's a problem in that the utility presets are based around CC output instead of synth output, because that's what I'm mainly interested in. So I'm not sure how useful this data will be in that respect. Maybe I should start again, referring to the Lead presets instead. :-(


2 people like this

seekerUuid comparison from Tilt Lead, based on matching the GestureUuid from the utility presets:


bump / tap (as above, shake note missing)

accc8538-d6cf-4b68-88f2-b99400fad3d1


tilt (move missing, matches vibrato above)

6e2b617b-4c1e-4752-96fb-2ac707909aad


spin / radiate / shake cc (matches move / tilt above)

1cc30432-c214-4c6a-97ab-491975e412d6


press (as above)

64358c1f-2ef5-4fd0-b3fd-ad8c4f93b839


(no vibrato)


1 person likes this

The Modifier data list from Tilt lead all seems to match the one from the utility presets above. There's also Tap, which matches SHake CC from the utility presets.


(Hope you don't mind this data dump, it's kind of helping me get my thoughts straight, I think.)


2 people like this

So...after all that, I just tried the following experiment. Tilt lead does bend on Tilt, and some other filtery effect on Radiate. 


First make a copy of the preset with a Modifier/Seeker list for just Tap, Tilt and Radiate. Then:


1) Swap the values of gestureUuid between the Tilt and Radiate gestures

2) Swap the values of seekerUuid

3) Swap the values of seekerData

4) Combine 1 and 2

5) Combine 1 and 3

6) Combine 2 and 3


I tried this with and without editing uuid to force a "refresh", and used new file names each time. None of it made any difference.

 

The ModifierData and ModifierUuid values for these two are the same anyway, so I'm out of ideas. I'm starting to think maybe we're not playing with a full deck, and some of the values aren't going to do anything when changed in the Preset XML, like that intervals list.


1 person likes this

"None of it made any difference."

I do not understand what you do but it looks like you do a lot. Keep it up :-) 


1 person likes this

At least I've become an expert in flashing dead Orbas. I just revived another £30 one to replace the one I pulled apart. I'm planning to try actually playing them at some point...;-)

 

Yay, I've finally obtained a useful new result from editing a Seeker...changing pitchbend range for "Tilt Lead" on the built-in sound. :-)


 I've been using the "experimental fiddler" on the seekerData for the Tilt Lead ("pitchbend") entry, and found that the 23rd value in the decoded string changes the pitchbend range, although the way it changes it is slightly strange.


The usual value is 32, allowing you to bend up two semitones by tilting the Orba from horizontal to vertical in either direction when "Pitchbend scaling" is set to 100% in the App settings. At 50% this drops to a semitone; at 25% to something like a quarter-tone.


The widest range I've got is four semitones with a value of 0 instead of 32, with Pitchbend scaling set to 100%. 


As you increase the value to a maximum of 127 the pitchbend range gradually reduces. The change in pitchbend range is continuous and non-linear. At 20 you get around three semitones; at 32 the standard two semitones, at 40 just under two semitones, and by 60 less than a semitone.


By using negative values you get a slightly odd "snap" effect. As you tilt the Orba you get a gradual pitch bend with a sudden jump to the starting note when you reach the furthest position.

 

I found this parameter by working along the lines described previously, by swapping a value in the seekerData string with an alternative from the set of values seen across the table shown above (in this case, changing the final 32 to a 0).


It's useful to have discovered that certain values in the seekerData string can change the effects of gestures, and the experimental chord fiddler has been invaluable here. I wish I could figure out the mapping, to get effects like the rotate-pitchbend shown in the promotional video posted earlier, if that's possible. But for now I'll carry on fiddling the seekerData strings. I haven't given up hope of tuning the Bump note.


1 person likes this
Login or Signup to post a comment