Start a new topic

Orba hacking knowledge base

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


28 people like this idea

Ok here is version 1 of my Orba Preset Editor. It's written in LiveCode which you will need to run the app. (Get LiveCode free from https://livecode.org/download-member-offer/).


I can't get the images to work as I cannot work out how the uuid and CoverImageHash are calculated, if you know then let me know.


Get the Orba Preset Editor on Github at https://github.com/Batninja/Orba-Preset-Editor


image

Enjoy!



12 people like this

Any preset can be turned into its diatonic version by replacing the TuningEntry as follows

<TuningEntry key="C" name="Major" intervals="P1, M2, M3, P4, P5, M6, M7, P8"
               midiOctave="3" transpositionType="RetainNotes" type="tonal" tuning="60, 62, 64, 65, 67, 69, 71, 72"/>

 


11 people like this

Orba presets can be found under the paths

PC

C:\Users\[user account]\AppData\Roaming\Artiphon\Orba\Presets

 Mac

/Users/<your_user>/Library/Artiphon/Orba/Presets/

 Presets are XML files, where a bunch of undocumented (at least for now) parameters drive the synth engine. e.g.

<SynthPatch mode="Bass" synthMode="0" octave="255" osc1Multiplier="2" osc1Detune="0"
                osc1Mix="255" osc2Multiplier="3" osc2Detune="1" osc2Mix="170"
                ringMod="255" noiseMix="56" osc1Vibrato="1" osc2Vibrato="1" osc1Ramp1Start="108"
                osc1Ramp1End="207" osc1Ramp1Time="70" osc1Ramp2Start="162" osc1Ramp2End="255"
                osc1Ramp2Time="107" osc1Ramp3Start="192" osc1Ramp3End="131" osc1Ramp3Time="40"
                osc2Ramp1Start="120" osc2Ramp1End="0" osc2Ramp1Time="36" osc2Ramp2Start="108"
                osc2Ramp2End="255" osc2Ramp2Time="93" osc2Ramp3Start="37" osc2Ramp3End="0"
                osc2Ramp3Time="14" ampEnvAttack="1" ampEnvPeakVelocity="53" ampEnvDecay="95"
                ampEnvSustain="118" ampEnvSustainVelocity="65" ampEnvRelease="27"
                ampEnvReleaseVelocity="0" filterEnvAttack="1" filterEnvPeakVelocity="113"
                filterEnvDecay="83" filterEnvSustain="112" filterEnvSustainVelocity="147"
                filterEnvRelease="25" filterEnvReleaseVelocity="0" wgMode="0"
                wgPitch="1" wgRegeneration="203" wgDampOnHold="251" wgDampOnRelease="228"
                wgMixBack="0" wgMixForward="0" wgLFOMod="0" filterMode="0" filterCutoff="0"
                filterCutoffKey="0" filterCutoffEnv="49" filterResonance="67"
                lfoRate="156" outputLevel="10" reverbLevel="0" effectSelect="0"
                effectDepth="0" effectParam1="0" effectParam2="0" modSource1_1Destination="0"
                modSource1_1Weight="1" modSource1_2Destination="0" modSource1_2Weight="0"
                modSource1_3Destination="0" modSource1_3Weight="0" modSource2_1Destination="9"
                modSource2_1Weight="13" modSource2_2Destination="8" modSource2_2Weight="41"
                modSource2_3Destination="0" modSource2_3Weight="13" modSource3_1Destination="0"
                modSource3_1Weight="16" modSource3_2Destination="1" modSource3_2Weight="24"
                modSource3_3Destination="5" modSource3_3Weight="6" modSource4_1Destination="0"
                modSource4_1Weight="18" modSource4_2Destination="5" modSource4_2Weight="11"
                modSource4_3Destination="0" modSource4_3Weight="0" delayLevel="10"/>

Once created a copy of a default preset, you can fiddle with these parameters and create new sounds. [Try at your own risk. The function and the range of those parameters is unknown a priori, so try only if you really think you know what you are doing]


10 people like this

I wanted to give a shout-out to @AndreaMannoci, @QuadPlex and especially @BJG145!


I've had my Orba for about a month and immediately wanted to edit chords, which lead me to this forum. @BJG145 has made some major discoveries. Without these, I would never have built or figured out what I'm sharing with everyone. To summarize chord findings, @BJG145 made a series of important discoveries. First that a series of characters in the modifierData string affected notes in the chords in various unpredictable ways. Also noted was that each 5 characters in the string of 40 seemed to control pads 1-8 in sequence. And finally, another important finding that the next 40 characters seem to have an effect on the chords as well.


@BJG145 was right — mostly. I realized that to get to the bottom of what these values actually do, it was going to take tools. The process of changing the values and hearing that something had changed was not enough. On top of that the process of trial & error was very slow which involved lots of cutting & pasting, renaming files and switching between applications. So, I built some tools which I am sharing below. I had a Copernican moment after using these tools and discovered that the character ranges that @BJG145 outlined were mostly correct but actually offset by one. The sequence of characters actually starts one character earlier. I also came to realize that the second set of characters does indeed have an effect but not a combined effect as imagined. What I discovered is that the first set of characters define the Major chords and the next set of characters define the Minor chords.


I have built 3 tools:

  1. A MIDI GUI keyboard that works bidirectionally with Orba! I was surprised that Google Chrome has a native MIDI interface so I was able to not only play the Orba patches from the webpage I made, but also visualize the notes being played on the Orba. This was instrumental (pun intended) in figuring what was coming out of the Orba.
  2. A ModifierData string Fiddler. This allows you to modify the characters in the string and quickly deploy them to the Orba App. I have included known behaviors for each character. I'm sure my discoveries are not yet complete.
  3. A script for updating the Thumbnail images in the .orbapreset files


Screenshots:

image

image



All of these tools are in my repository located here:

https://github.com/subskybox/Orba


You can scroll down to see a demo of the tools and download the repository by clicking the green 'Code' button and then choosing 'Download Zip'


Enjoy!


9 people like this

Documentation of the XML and/or a side App to allow us to export/import presets would be VERY NICE!


9 people like this

@BJG145 these are extremely interesting findings! Especially on the part of how sending an 'incomplete' xml file will still allow the Orba to implement just those changes to whatever sound is currently loaded, basically only overwriting certain aspects in the synth engine, instead of the whole sound every single time. This could massively clean up my Presets, as I don't have to havw two of every e.g. Lead sound (penta- and diatonic), but just the base sounds in pentatonic, with one preset to switch any of them to diatonic.

On behalf of deciphering the structure of the chords, have you tried to interpret the string values using a Hex Editor? It might be that the String representation is misleading and the inherent info lies in the way that string is stored. Just food for thought.

@Artiphon, @Evan, if you're listening, p l e a s e give us documentation to modify sounds/chzords/tunings! The Orba would immediately be seen as a much more capable device, people would make more videos about it, there's nothing that could go wrong for you. As it stands, this device is barely using half of its potential


7 people like this

When you copy a preset into Orba folders it will be loaded immediately and visualised in the Orba app.

However, once copied there, @Sam realised that it won't pick up any further change.

To force the app to reload the preset (and the latest changes), it suffice to rename the preset file.


6 people like this

Preset images are loaded as Base64 encoding of the image; if you copy the string and paste it here (https://www.base64decode.net/base64-image-decoder), you'll get back your image. 

So if you want to add a custom image, you need to follow the inverse process (https://www.base64encode.net/base64-image-encoder).

I have not tried yet though... not sure what's coverImageHash


6 people like this

One thing I think I have noted is that altering the "WG" parameters will alter the character of the sound in general as well as on Tilt. wgMixBack="0" wgMixForward="0"are places I have found some interesting effects. 


What I want to get more info on and experiment with is the ModSource area. this seems doable but I have not gotten any useful results as of yet.


6 people like this

I think the real question is why hasnt the app been changed to allow the addition of sounds by now. This could be a great controller. Currently its just a nice addon. 


4 people like this

I've been tinkering with the drum presets and made a mix of the standard presets:

Orba (03 05), Bedroom (01 02), Boomy Booms (04), Cartridge (06 07), Eyes Closed (08 Bump).

 

Maybe it can already be read somewhere, if not you will find it here:

1 = DrumPatch 1 (index = "0")

2 = DrumPatch 2 (index = "1")

3 = CymbalPatch 1 (index = "0")

4 = CymbalPatch 2 (index = "1")

5 = DrumPatch 4 (index = "3")

6 = DrumPatch 5 (index = "4")

7 = CymbalPatch 3 (index = "2")

8 = ShakerPatch

Bump = DrumPatch 3 (index = "2")


4 people like this

Please make up your mind, Artiphon. Update your software or hand it over.

"Depending on the vendor, end-of-life may differ from end of service life, which has the added distinction that a vendor of systems or software will no longer provide maintenance, troubleshooting or other support. Such software which is abandoned service-wise by the original developers is also called abandonware. Sometimes, software vendors hand over software on end-of-life, end-of-sale or end-of-service to the user community, to allow them to provide service and further upgrades themselves." (https://en.wikipedia.org/wiki/End-of-life_product)


3 people like this

I don't know why I love Hall & Oates?! Here are the ManEater chords. Set Orba to B-minor then play Pads 3|2|4|1|6|7|5|8-7-8

image



3 people like this

Interesting rewrite of the XML format. It looks more readable now, comparing eg the old Ambeeant Seeker Entry.


Then...


<SeekerEntry seekerData="AQEAAAgAgRQAAwEBAQEAAAAAAAD/fwAAfwAAAA==" seekerUuid="64358c1f-2ef5-4fd0-b3fd-ad8c4f93b839"

uuid="b827a749931a42a78351cbaf6948f5b4"/>


Now...


 <SeekerEntry inputLength="Default" inMin="0" inMax="1" outMin="0" outMax="127"

seekerType="Controller" controller="Aftertouch" triggerSource="Default Note Source"

triggerRule="Source" metricSensor="Default Note Source" metricSelection="MPE Z"

maxRate="20"/>


3 people like this

So I've finally bit the bullet and got an Orba, immediately got annoyed by the lack of diatonic options for Lead voices, so I went ahead and copied every standard Lead voice and changed them to be diatonic. Archive with the .orbapreset files is attached, for anyone else interested (and those too lazy to do the work themselves :P)

Side Note; Did anyone else notice that the Lead voices respond to the bumping gesture with a  2-octaves-lowered D-note? 

zip

3 people like this
Login or Signup to post a comment