Start a new topic

Orba hacking knowledge base

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


27 people like this idea

What I really need is the serial log that matches the csv. I'm going to attempt to predict the log output.

I found a Preset somewhere called Tilt Lead. Tilt Lead will Pitch bend on the Tilt gesture. I can confirm Orba is emitting Pitch bend midi messages when you Tilt it.


Uuid 53b7e156e0364f45b2a78652c299ba19 is for Tilt


You can modify the experimental Fiddler by changing the Base64 string at line 502 to the SeekerData for this Preset's corresponding SeekerEntry/SeekerData: "ASMAAAEAgBQADwAAAQEAAEwdAAD/fwAg/z8ABA=="


The Fiddler will reveal a value of 2 in index 9. I immediately thought I hit the jackpot and that this would control the 2 semitones observed from the Tilt Lead Preset. I was wrong. Instead, it seems that a value of 2 enables this behavior while any other number turns it off. (I only tried a few).

It will take some time to to go through these and see if they do anything. I still think that these values are somehow pointers to memory locations where the corresponding ModifierData gets applied but not sure yet.

Most MIDI keyboards I've played with have a global setting for Pitchbend Range so I wonder if this range might be defined in the App and not in the Preset itself? Some more work needs to happen here for sure..


Once we figure out how the Pitchbend is connected, I'd like to see if it can be mapped to another gesture. I'm curious if it can only bend up. After an hour of messing with values.. no luck

Here's the serial log for the above test I called "DPC". 


* * * * *


I've found that the "coarse" setting for timing (3rd value in each note block) moves the note and subsequent notes around by a quaver when you increment/decrement it, so note timing is relative rather than measured on a clock that runs for the duration of the loop. 


The "fine" setting will take a bit more experimenting; I think it's basically an offset like with duration, but there's a complication around the overall timing of the loop.

txt
(1.29 KB)
Where ale the Audio and MIDI recorded files located in Android and Windows ? I want to export, buy I can't find them

My Orba 2 has hardware issues. No tests until I have one that's working. It won't take a firmware update. I think the Bluetooth is faulty :( @BJG145 Isn't there a way to manually do firmware upgrade if you have the files?

Hi Subskybox, Can you upgrade by using the usb cable with your computer?

 

>I've hooked up an external MIDI keyboard and the Orba to my laptop in the past and was able to play the Orba via the keyboard. It didn't respond to the Pitchbend wheel (at least for the voices I tried it with).

 

I haven't tried this before, but I just connected up a MIDI keyboard with the 1981 patch and pitchbend works OK; it bends over several octaves. There's a "Pitchbend Scaling" setting in the App but it didn't seem to make any difference.

(Note and pitchbend input from the keyboard isn't recorded. Once you've recorded a sequence, you can continue to apply pitchbend to the playback, and it affects the currently selected track; bass/lead/chords. It doesn't affect drums.)

I'm just trying to absorb some of the MIDI programming info. 


When experimenting with duration and then timing, I got the idea that one of the values represented a count of an eighth of the bar, ie a quaver, and the other value was a +ve/-ve offset from that.


With duration, this seemed to work, and I was able to get fixed length notes by counting quavers and zeroing offsets.


With timing, the "fine" control got more complicated. At one point the loop lost a note or two and started playing at double speed. I also found that even if notes were playing back accurately on the metronome, there was still an offset. With one loop I also found that the first note got moved to the end again. I'm wondering if maybe this happens if the first "trigger" note that starts the recording is played fractionlly behind the beat.


I was also thinking that there was something different about the timing values for the first note in the list, and possibly the last. The data for these two might represent something different. Perhaps there are tick values at the start and ending but the middle values are relative, or something. 


The tempo change was strange; the loop was still counting the same length round the dial but it was mostly squashed into the first half, followed by silence. Perhaps there might be some kind of calculation going on between the timing values for the start and finish to work out what the time signature is.


The next thing I was going to try was playing a loop in time, then moving the offsets for notes in the middle of the loop around slightly to see the result.

I found a Preset somewhere called Tilt Lead. Tilt Lead will Pitch bend on the Tilt gesture. I can confirm Orba is emitting Pitch bend midi messages when you Tilt it.

Tilt Lead is very neat; I'd overlooked it. So, not just just MIDI; it bends the internal synth. Will have to examine the code for that more closely.

Looking at Tilt Lead then, it has a synth patch tied to it, but you can grab the Modifier/Seeker list and swap that into any other Lead preset to add tilt-pitchbend. I guess the next thing is to narrow it down to a particular Modifier/Seeker entry.


Incidentally I was surprised to see that this preset has:


<SoundPreset>

   <SynthPatch>

   </SynthPatch>

</SoundPreset>


...whereas all the other lead presets just have 


<SoundPreset>

   <SynthPatch>

</SoundPreset>


I guess closing the outer set implicitly closes the inner one.

...great work @Subskybox, and thanks for the explanations. It'll take me a little while to understand it all. In the meantime, I've been taking another look at the "q" quantisation mode in the console, and it does actually seem to work. It doesn't change the data in the Orba; just the playback. "q" turns all four channels on and off at once, but I'll do some experimenting with the quantisation mode tags in the XML files and see if they do anything. I also need to experiment to see what might turn quantisation off again when it's been switched on in the console; eg power off, new song, etc. 


Here's a demo of a quantised loop. It was recorded with some notes slightly out; eg the third note from the end is fractionally late. It plays twice. Then there's a gap, and the quantised version plays twice.

mp3
(1.37 MB)

Could it be, that the new firmware update changed the tunings? 

My diatonic presets all sound really weird now, and the standard presets sound weird whenever I press the 3rd button.


The final Modifer/Seeker entry in the Tilt Lead preset is the one that adds tilt-pitchbend. If you add that to the list in one of the other Lead presets, it adds that functionality.


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


I think the App sends the Uuid to the Orba and if it already has a copy of the associated data, then it can skip the transfer. If it doesn't have that reference, it has to transfer the whole body of data.


I think you might be right about this. After adding tilt to the list of Modifier/Seeker pairs in one of the other presets, I tried deleting all the Modifier entries and it still worked. But when I edited the Uuids it crashed. However, if I edited the Uuids in the same way throughout the Modifier/Seeker list, it still worked.

(I only tried this experiment once so I may be mistaken.) 

Thanks! Did you post the DPC header info in CSV? I think its going to be important to map those. I think its 18 bytes and will somehow line up with the serial log header info. What I'm most interested in at the moment is beatLengthTicks and quantStartSnapTicks. In the DPC example, these are 480 and 120. So I'm thinking this 1/16 note quantization. To make it more obvious, I think we could change the 120 to 240 or even 480. This would snap all notes to 1/8 notes or even 1/4 notes. This would be great to make sure this is configurable and to make absolutely sure that quantize is working. I'm also wondering if the developers left a secret way in the Orba app to flip the quantize setting. :) 

Login or Signup to post a comment