Start a new topic

Orba hacking knowledge base

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


27 people like this idea

...love the way it automatically changes from chords to lead when you change the mode on the Orba...

>Just pushed up a first crack at the Editor into a separate branch


Thanks @Subskybox, just taking a look. I'm not sure what's meant to happen when you click the "Download" button...tried Edge/Chrome but I don't think it's doing anything. I can't find the file in the Downloads folder.

Some XML comparisons


Everything generally has a set of <ModifierEntry> containing:


modifierData

modifierUuid

gestureUuid

uuid


...and a set of <SeekerEntry> containing:


seekerData

seekerUuid

uuid


We've only got a result from the first entry in the mofidier list so far; we don't know why there are several, but for now I'm just looking at the first one across three presets ("All Out", "Cartridge", "Lead"). 


We know that modifierData controls chords. We don't know what seekerData does, if anything, but copying seekerData entries from chord files to lead ones causes the Lead button to play chords. (At least it does on one of my Orbas, but not the other; can other people recreate that?)


The Uuids (identifiers?) sound as if they might be used as keys to match up different data keys perhaps. 


So far I've noticed the following:


1) The Seeker uuid always matches the Modifier uuid within a preset. The values change between preset types (eg Drums/Bass/Chords). When comparing different presets of the same type, the values sometimes vary, sometimes not. Eg it's the same for "Cartridge Lead" and "Ohm Lead", but different for "All Out Lead". Ditto for bass. All the Drum ones are the same, and all the Chord ones are different. 


I'm not sure if the actual value matters, or whether it's just a lookup key. I suspect that presets may contain data that's not actually relevant for the type, so the fact that they vary across Chord presets but not Drum presets might be a clue that the Seeker keys are only relevant for chords.(?)


2) The value of modifierUuid is the same across all three presets for Lead/Drums/Bass. The chords have a different value, which is the same across all three chord presets. 


3) The value of seekerData follows the same pattern as modifierUuid; the chords all have one value, everything else has another.


4) The value of gestureUuid is the same everywhere 


It looks it looks as though these Modifier/Seeker keys have special relevance for the Chord type.


Based on the above, I thought I'd test a theory that the 7th chords preset would have a different "seekerData" value to the others, but it matches all the above.


*************************************************************************************************


Looking at the 7th chords file, it's noticeable that the first <ModifierEntry> in the list has the different modifierData info we've identified as chord data, but everything else in that list looks 'blank' by comparison.


Wit the <SeekerEntry> list, it's the opposite; the seekerData value for the first entry looks like the blank template seen everywhere else, whereas everything else in the list is different.


So, we're back to the mystery of why there's a list of values, what the other ones do if anything, because they seemed to have had no effect when we were first untangling the chord data.


With the remaining entries in these lists, the two "uuids" continue to match; I'm sure it's just a cross-reference, so every ModifierEntry has a corresponding SeekerEntry.


I think it's also worth investigating the Song files to try and shed some light on this. These have a section for for each preset type. I'm not sure if the preset files are used when loading a song file...? Would be simplke to test that. It's odd that the data in the preset files doesn't closely match the data in the corresponding section of the song file. 


But I think there's probably a lot of stuff that just isn't needed; for instance, each section in the "Song" file has a "quantisation" setting. Sore point, I know, and it doesn't seem to do anything. I expect parts of the code are redundant; inactive, but there may be undiscovered sections that could bring features like the custom chords to life.

mode and synthMode seem to have something to do with the sound being used when you switch a preset from one folder to another.

  <SoundPreset name="">
    <SynthPatch mode="Lead" synthMode="0"

 

I'm not sure how that works either.. I've tried:


  <TuningEntry key="C" name="Custom" intervals="P1, M2, M3, P4, P5, M6, M7, P8"


to see if that would make the Orba grab those intervals. The Fiddler and Editor should probably strip "Pentatonic" from the file because that alters the root notes for each pad. It applies the chord offsets to the Pentatonic versions of the Major/Minor scales.


I've been curious what those "Seekers" actually do. I've found I can move a Chord voice into the Leads folder and it will take the synth settings from the previous voice. For example, I think I copied 1981 from Chords to Leads and renamed it 1981_2. I then loaded the "Faux" sound from Leads and then the 1981_2 sound right after. I believe it kept the Faux sound but added the Chords as described in 1981.

(...although, strangely, that works consistently on one of my Orbas but not the other. Can't see any difference between them, but with the second one that manoeuvre just kills the chords.)

I've also now realised that just copying the first "SeekerEntry" from the chords preset to the lead one, without any other changes, is enough to produce chords from Lead button.

...correction...looking at the TuningEntry section...


  <TuningEntry key="C" name="Major" intervals="P1, M2, M3, P4, P5, M6, M7, P8"

               midiOctave="2" transpositionType="RetainNotes" type="tonal" tuning="48, 50, 52, 53, 55, 57, 59, 60"/>


...I've realised it was changing "Major Pentatonic" (the original setting in the lead file) to "Major" (like the chord file) that altered the chords as described above. I still don't know what the intervals do if anything.


1 person likes this

The Orba UpdateUtilities folder contains "artiphon_esp32_programmer", so that's presumably the board it's based on.


There are tutorials for setting this up with the Arduino IDE and programming it. I guess it theory it would be possible to create a new open-source firmware from scratch.


https://www.youtube.com/playlist?list=PLzvRQMJ9HDiQ3OIuBWCEW6yE0S0LUWhGU


I didn't say it would be easy. ;-)


"I'm trying to see if I can convert a Bass or Lead sound to a Chord sound. I guess the real question is what makes a preset start using the ModifierData?"


@Subskybox, that's an interesting experiment. I've been comparing the Lead and Chord versions of the Cartridge patch, and I've found that just copying the first ModifierEntry and the first SeekerEntry across from the chord XML to the lead is enough to get chords out of the lead...but not the ones you'd expect. You can then adjust them by also copying that  "intervals" string, eg


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


It's the first time I've heard any result from changing those values.


1 person likes this

Cool. By the time you've finished you could probably create your own controller...!


https://www.youtube.com/watch?v=6K_tt-U5wqY


(There have been two attempts at MIDI handpans on Kickstarter. The Oval was discontinued and is now quite rare; the Lumen hasn't made it into commercial production yet. You won't find either of them for less than several hundred dollars, but those piezo sensors cost peanuts.) 


https://www.kickstarter.com/projects/2101519704/oval-the-first-digital-handpan

https://www.indiegogo.com/projects/lumen-the-electro-acoustic-handpan#/


@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

...a couple of minutes' work with a hot glue gun, and voila - the Orba Diabolo.





image



Hot glue is great. It holds things quite securely, but if you change your mind you can break it off.


WIth the new-found scale knowledge I can configure this beauty for over an octave chromatic, or self-accompany with chords+lead.   



2 people like 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
Login or Signup to post a comment