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
Enjoy!
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"/>
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]
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:
Screenshots:
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!
Documentation of the XML and/or a side App to allow us to export/import presets would be VERY NICE!
@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
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.
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
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.
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.
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")
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)
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
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"/>
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?
Andrea Mannocci
This thread is intended to gather the feedback of Orba tinkerers.
28 people like this idea