Start a new topic

Orba hacking knowledge base

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


27 people like this idea

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've realised that if you grip the top and twist the bottom firmly clockwise, you can unscrew it.


image


...now I need to dig out some mini allen keys...


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

Before I read that...


...I tried drilling out the other two screws, which didn't really work; it only loosened it. So at that point I tore it apart. It's been sacrificed on the altar of science. 


Perhaps one day I'll rebuild it and it will beep anew. In the meantime...


Base grille


image



Unscrew that, and you see the speaker


image


Below that, the battery


image


Below that, the back of the main PCB. "Reply hazy, try again".


image

 

Flip the PCB to reveal the top side...


image


The main silver chip is labelled: "Expressif ESP32-SOLO-1"


image


The smaller black chip is labelled: "STM32F730". So it has both; that's the answer to that question. I think the STM might have some kind of bootloader function (he said, not knowing what he's talking about. Pass the hammer...).


Below the main PCB lies the back of the sensor board. There's a connector it clips into.


image


image


The top of the sensor board looks like this:


image


...and...that's it. The rest of it is for the ants.


image



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

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

Okay I've got it figured out :) Let's use DPC as the example. BeatLengthTicks = 480, so 480 ticks per quarter note. The correct 8 byte sequence is:

  1. Command (16 is PlayNote but there are likely other for CC values etc..)
  2. Relative Start Tick [LSB] since last (event or note unknown)
  3. Relative Start Tick [MSB]
  4. MIDI Note #
  5. Velocity ON (1-127 follows 7 bit MIDI standard)
  6. Velocity OFF (1-127 follows 7 bit MIDI standard)
  7. Duration in Ticks [LSB]
  8. Duration in Ticks [MSB]

Let's look at the first 2 DPC notes. 

MemIdx = 0 - MIDI Note at tick 7, channel 1, note 62, duration 501, von 120, voff 90
  1. 16 (Play Note Command)
  2. 7 [LSB]
  3. 0 [MSB]
  4. 62 (MIDI Note)
  5. 120 Von
  6. 90 Voff
  7. -11 [LSB]
  8. 1 [MSB]

To calculate the value they are using two's compliment for negative numbers. I'll skip the calculation for the first start Tick (7&0) at position 2&3 as it trivial to derive 7. Now let's look at the first duration -11 & 1. This can be calculated as (11^255)+1+1<8 = 501. You can use the Windows Calculator to work this out quite easily in Programmer Mode:

image


Let's look at the next:
MemIdx = 8 - MIDI Note at tick 1888, channel 1, note 64, duration 495, von 127, voff 92
  1. 16
  2. 89
  3. 7
  4. 64
  5. 127
  6. 92
  7. -17
  8. 1
Let's start with the start Ticks. This can be calculated as 89+7<8 + 7(lastStartTick) = 1888

image


And finally the second duration (17^255)+1+1<8 = 495

image


With this knowledge it would be fairly straightforward to write a script to quantize a song file but doing it on the device would not be possible.

The fact that they used relative tick values was a really poor choice in my opinion. I feel this way because quantizing one note would have an impact on all the notes that follow since they are all relative to the previous. I suspect they will convert this to absolute for the Orba 2.


2 people like 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

Starting to hack the Orba 2. I'm able to assign custom samples to each pad by editing the .artipreset files https://www.youtube.com/watch?v=Ny9TQ-hYHyE



2 people like 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

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

Boy boy. No fun, just pity. It sounds a lot like what Artiphon did with the Orba 1. Put out an unfinished product and then engage the customers with false promises. Before you know it, you can participate in the beta team for free. Good luck!


2 people like this

Nope. Neither I have checked its content.


2 people like this

@BJG145 said:

  • "Everything generally has a set of <ModifierEntry> containing and a set of <SeekerEntry>."
  • "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?)"


I thought I read somewhere on one of these forums that the <ModifierEntry> and <SeekerEntry> nodes correspond with the gestures. So the reason there are 9 nodes is because they would correlate to:


Tap, Press, Vibrato, Radiate, Slide, Bump, Move, Shake, Tilt


Perhaps the SeekerEntry for Chords has something to do with how the Tap works (i.e. send 4 notes at once). I may convert the OrbaModifierDataFiddler.html to be even more generic since we don't really care about modifying chord data in this way anymore. I may change it so that you can paste any Base64 string in and it will decode the values in a table which can be edited, then you can just `Copy to Clipboard` and paste it back from whence it came. 


The Uuids are just unique identifiers. They may be used to see if something has changed. Come to think of it that might be why some of the changes I made didn't take effect. Maybe if the Uuids don't change the Orba just thinks: "I already have this data so no need to update"?


@BJG145 said:

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


I think there may be some prep work for Orba 2 here. I would imagine that the Orba 2 will use the .orbapreset and .song file formats too..


@BJG145 said:

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


'Download' should download the new .orbapreset file to your downloads folder. I wonder if you are getting an error for some reason? Look up how to open the developer panel in your browser and see if it reports and errors when you click download. I might have to fix something. I haven't written any instructions yet because I don't think its quite solid yet but the idea is:


  0. No more Daemons needed

  1. Drag & Drop a Chord Preset into the 'Starting Template' Box

   - If it worked, you'll see the name reflected, the Chord Offsets updated and the 'Save As' filename updated.

 2. Make changes to the Offsets as desired. Press the Pad buttons to hear/see the real-time changes.

 3. Alternatively, switch to Bass or Lead mode and choose scales. This is not intuitive at all since the Editor will save the Chord voice you loaded but with the scale adjustments. Press the Pad buttons to hear/see the changes

 4. When you are happy with your edits, Click 'Download'. This will download a file with the name specified in the Save As filename box.

 5. Take the downloaded file and place it into a Preset folder


@BJG145:

  • "For the Drum presets, these have a shorter list of four matched Modifier/Seeker entries. "


This would make sense if Modifier/Seeker are related to the 9 gestures. Tilt/Radiate/Vibrato wouldn't really make sense for drums. I'm curious though if there's anything special for the 'Shake' gesture.


@BJG145:

  • "It's interesting that to change sounds, you need to load a preset, but you can change the key on the fly via the App. It's sending some kind of data directly/immediately. I was wondering if it might be possible to somehow access the file system on the ESP32 and read/change data on the Orba directly."


Its easy for me to calculate the MIDI note numbers so I just send them to the Orba. I would love to be able to send Major/Minor mode change or Key change but those are likely not MIDI messages. They might be good old fashion SYSEX messages but that's for another day. I was interested in digging more there but really wanted to finish the Editor first. Firmware hacking is something I don't think I'll ever do. That would be extremely time consuming and I don't have the expertise. 



2 people like this

@Steve


Yeah I agree that I should make a new Topic for the tool(s). I'm just not sure what the scope should be just yet. The tools are going to lead to new discoveries which will lead back here. I guess I just need to be selective with what I post and where. I can see there will be questions on how to use, troubleshooting, bugs and people might want to share chords they've made. That could be an Orba Fiddler topic. Is there already a tools topic? I thought I saw someone post a synth voice editor in here a while back?


As for OrbaDeployDaemon.ps1, PowerShell should be included with Windows (which is why I selected it). I never tested for non-admin users. Try typing 'Powershell' in the Windows search bar and see if it comes up? If you can launch a shell window, I think you'll be able to run it. There are many things that could be going wrong so maybe have a look at this https://www.howto-outlook.com/howto/powershell-scripts-faq-tips-and-tricks.htm


It would be great if you'd like to help with documentation once you work through how to launch the script.


2 people like this
Login or Signup to post a comment