Start a new topic

Orba hacking knowledge base

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


29 people like this idea

Just had an epiphany.. What if you change the weird dual-note voice to be a semitone up (not sure this is possible.. I think it starts at 2 semitones.. Maybe using Pitch settings at 50% in the App). Once you have that, combine with your whole tone scale. This should give 16 consecutive semitones without even tilting?!


2 people like this

"Orbacam is available for iOS from the Apple App Store."

I don't understand why Artiphon spends time on applications like "Orbacam" - iOS only(!) and ignores basic feature requests.

They should go open-source...

 


2 people like this

Just received my Orba 2 this afternoon! I will see if the tools work with Orba 2 in the next week or so. We should probably start an Orba 2 Hacking forum.


2 people like this

Also, I just wanna share another thread I started which led to a fruitful discussion.

Have a look https://artiphon.freshdesk.com/support/discussions/topics/44001013186


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

More Presets!! 7th chords rule!


Couldn't believe it when I found the 7th chords option, but only for one patch... Those 7th chords sound nice! A quick diff between the 7th chords.orbapreset and others, shows that the only noticeable differences exist in the <ModifierList> and <SeekerList> entries - while I can't decipher any of the actual contents, simply swapping out the entire ModifierList and SeekerList from the 7th chords preset to other presets puts them into 7th chord mode!

Once again, an archive with all stock chord presets as 7th chords is attached. I've also included 'Normal Chords.orbapreset' which is the stock 7th chords preset, but modified to use the standard chord layout.

zip

2 people like this

Furthermore, I've looked into switching out presets for the Android App - this can be accomplished by copying the relevant .orbapreset files to  

/data/data/com.artiphon.orba/Artiphon/Orba/Presets/

 Since this is not a normal user-writable partition however, root permissions are required

As a workaround,
you could load up the modified presets onto your Orba using a PC, then save a new Song on your Android (or probably also iPhone) device. This will save an entire song with Drums, Base, Chords and Lead everytime, but it also includes the modified diatonic Lead voice.


2 people like this

@BJG145


I like your ideas for the "Note Fiddler".. At this point I'm going to stop any development on the Chord Fiddler and start working on bringing this functionality into Orba Virtual Piano. If you noticed, the Virtual Piano can sense what mode you're in (Drum, Bass, Chord, Lead) so I imagine I'll have a section underneath that is the editor portion for that mode. I may never get to drums, especially now that Orba 2 is coming. Bass is monophonic so editing the scale is straightforward. I like the Dorian scale you shared above (this confirms it can be done). There are a few places where the mode can be set in the .orbapreset file and messing with those may correct the phasing effect you describe. As for the Lead mode (which is polyphonic), I can see why it accepts all 4 voices even if they are the same. Maybe the remaining characters in the ModifierData string control turning the voices on/off. Who knows. I can quite easily make a version of this that supports the whole string. More on this later. I'd love your help trying to see what they control. There are obvious indexes where there are values that seem deliberate. I think one might control the scale mode. That's a theory I have from messing with these values with the old Fiddler, but the new version will correctly target the values. 


I just created a new Topic: Orba Utilities to continue this conversation.


2 people like this

Here's the 16 semitones that I was imagining. NOTE: Orba App must have Pitch Bend Scaling at 25%.


2 people like this

Major new findings for Orba 2 via ESP32 Serial connection. I found the secret orba:// files and other interesting goodies.


2 people like this
Thanks for this, @BJG145 . I've been scurrying around downloading and reading the relevant Espressif datasheets. So ESP32-SOLO-1 is a single core version of the very powerful Wi-Fi and Bluetooth-equipped ESP32 module. I assume there's no external memory on this board, so the ESP32 module's internal memory is used. This comprises, according to the ESP32-SOLO-1 datasheet: • 448 KB of ROM for booting and core functions. • 520 KB of on-chip SRAM for data and instructions. • 8 KB of SRAM in RTC, which is called RTC FAST Memory and can be used for data storage; it is accessed by the main CPU during RTC Boot from the Deep-sleep mode. • 8 KB of SRAM in RTC, which is called RTC SLOW Memory and can be accessed by the co-processor during the Deep-sleep mode. • 1 Kbit of eFuse: 256 bits are used for the system (MAC address and chip configuration) and the remaining 768 bits are reserved for customer applications, including flash-encryption and chip-ID. I think people who were hoping to use sampled sounds in the Orba 1 can now see why this was not possible.

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

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

Many thanks to everyone for all the tips and very cool presets!!!

Especially like Andrea's note re. diatonic tuning any preset. Very fun!



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