I'm experimenting with this by editing the .artipreset file(s) to point to custom samples. I'm still learning how this works but it could be quite sophisticated since it also supports velocity thresholds :) This will definitely be possible as long as Artiphon puts the effort into it.
https://www.youtube.com/watch?v=Ny9TQ-hYHyE
@ChrisH, There is no need to code, you just need to be a bit handy editing audio files (e.g. Audacity) and modifying some info in the .artipreset file (this is just xml/text). I will share the process once I fine tune it. The video I shared above didn't come out exactly how I expected so I still have some research to do. Once I figure it out, I may add that functionality to my Orba tool https://github.com/subskybox/Orba
Steel tongue drums (hand pans, etc.) tend to be tuned to pentatonic scales similar to Orba lead presets. If they have a ding (the center bump), many of them don't, then it does tend to be tuned to the root of the scale, but sometimes it's tuned to the 5th of the scale below the lowest root note. This might be done to compensate for "high" tunings based on the size of the drum, and it might be done to increase the range of notes depending on how many notes are available on the drum. On drums with only 8 notes and no ding (center bump), it's common for the lowest note to be one note below the root of the pentatonic scale so that you can drop down below the root on your patterns. In NON STANDARD notation, where the pentatonic scale would be 1-2-3-4-5, the tuning might be something like 5-1-2-3-4-5-1-2 so that you can play just below and just above the root notes. So, let's say I was playing a steel tongue drum with only eight notes and NO DING (middle bump), I would expect the pads to ALTERNATE either left-right or right-left, and either from top to bottom or bottom to top. Most common is left-right from bottom to top, and I would expect the notes to be B, D, E, F#, A, B, D, E.
D Major Pentatonic Scale: D, E, F#, A, B
Major Pentatonic Formula: 1, 2, 3, 5, 6
Notes on 8 Note Drum: B, D, E, F#, A, B, D, E
Most Common Layout
D E A B E F# B D
@GabrielVelasco
Here is a kit I made from Garageband sounds. If you add these to the correct places it should work?
@BJG145 Would you mind giving it a try? It works for me if I add to the MSC folder but hoping that adding it to the Preset folder will allow you to select "Send to Orba".
Sharing current state of my custom HangDrum D minor as well, based on Freepats hang drum samples.
Lessons learned:
that's how I ended with tuning="36,37,38,44,40,41,42,43"/> to be able to map a separate sample to bump.
Known issues:
---
Use on your own risk, bla bla bla, this is an authorized tinkering with your precious hardware, and this preset made by the guy who owns orba for less than a week. I do not take any responsibility for any damage you can do to your orba, ears or mental state.
@Ignis32
I wanted to address your findings first in green:
0) New preset structure should be put into personal folder, not public.
It will require preset, sample pool and cover image. Correct. Avoid modifying the Public folders. The App will read the same folder structure from the personal structure (including Images and Drum)
(C:\Users\{username}\Documents\Artiphon\Common)
1) Developing presets should happen somewhere else, as "delete preset" deletes it from local orba files, and you loose all your work. Correct. I never delete my files in the personal folders while developing, I just replace them and on the Orba.
2) Orba 2 seems to use 48 Khz 32bit float wav files. Stereo probably is not supported, looks like I forgot to convert my wav files to mono, and therefore got white noise instead of the actual sample. Stereo samples are supported. I've tried them and they work. However, I never validated that it was actually playing them in stereo via the headphones. It may have been playing the sample in mono. Most of the presets I've made, I've merged to mono to keep the file sizes small.
3) Using Taetro drums as a starting point/template was a good idea,
However, my guess is that Taetro drums where originally in 44.1khz, because pitch correction coefficient pitch="-1.08844" seems to match pitch difference between 44.1 and 48 of 1.08843537414966 and is probably used for compensation.
Probably the one who is doing it should keep an eye on this pitch correction and fix it (to -1 I guess..) if using 48khz samples. I haven't messed with 44KHz vs. 48KHz yet. My guess is it would accept them both. I know that -1 means "play the pitch as is and do not tune" Pitch is used for creating Bass, Chord, Lead presets where Orba must know the pitch of the sample to properly map to the notes for the selected scale and octave.
4) using UUID in filenames is mandatory, both for preset and wav file names. At least without following the convention preset does not appear in the preset list, and this uuids are used in app.properties separately. Correct. This took me too long to figure out and the app was adding additional UUIDs and messing up the app.properties file. I have a script that will calculate the MD5 UUID for an entire folder of wavs and append them. The good news is they don't need to be correct you can just make up any unique MD5 hash value.
@Ignis32
>>Yep. Seems like my bad version of custom samples are still on the orba
There is a way to add/delete files stored on the Orba. I've kept this secret low key because I'm worried that people would access it and mess up the factory sounds or even delete them. Recently, I have tracked down where the app downloads the samples from so now there is a way to recover the samples if they are accidentally removed from the device. But this still requires a little bit of tech savvy that not everyone has. I'm going to start an Orba 2 Hacking Knowledge Base soon with a bunch of this information. Stay Tuned.
Very interesting thread. Hoping to convert Creative Commons SF2 Hang drum from here: https://freepats.zenvoid.org/ChromaticPercussion/hang.html to an Orba2 preset.
Please continue sharing your findings on the preset xml internals, that might make implementing my idea much easier.
Would be even better if Artiphon guys could step in an share some documentation on the format, to skip that reverse engineering and guessing part.
Some statistics for SampleDrumSound elements across all drum presets:
[index]
known values from 0 to 15, avg value: 6.525333333333333
[drumMode]
known values from 0 to 1, avg value: 0.008
[ampVelocity]
known values from 87 to 252, avg value: 200.328
[snapVelocity]
known values from 0 to 255, avg value: 14.661333333333333
[snapLevel]
known values from 0 to 179, avg value: 8.576
[snapColor]
known values from 0 to 4, avg value: 0.33066666666666666
[bendVelocity]
known values from 0 to 255, avg value: 12.773333333333333
[bendDepth]
known values from 0 to 255, avg value: 8.130666666666666
[bendTime]
known values from 0 to 244, avg value: 7.253333333333333
[gainRampStart]
known values from 0 to 0, avg value: 0.0
[gainRampEnd]
known values from 0 to 0, avg value: 0.0
[gainRampTime]
known values from 0 to 0, avg value: 0.0
[clipRampStart]
known values from 0 to 130, avg value: 1.2106666666666666
[clipRampEnd]
known values from 0 to 100, avg value: 1.0506666666666666
[clipRampTime]
known values from 0 to 24, avg value: 15.346666666666666
Not sure it is like very important information, but I've noticed that I am actually trying to see this pattern manually when reviewing all the presets manually, so why note automate this information gathering.
Made my first test with the PanDrum sound I'm working on. I still haven't figured out the right deployment strategy or how to customize the scales but tinkering a bit at a time.. Here's a demo:
@Subskybox - that's fantastic. Hope you will share the preset once you will consider it ready.
I was working on my Hang preset as well, and that's what I learned. My statements might be incorrect, as I did not a lot of iterations.
0) New preset structure should be put into personal folder, not public.
It will require preset, sample pool and cover image.
(C:\Users\{username}\Documents\Artiphon\Common)
1) Developing presets should happen somewhere else, as "delete preset" deletes it from local orba files, and you loose all your work.
2) Orba 2 seems to use 48 Khz 32bit float wav files. Stereo probably is not supported, looks like I forgot to convert my wav files to mono, and therefore got white noise instead of the actual sample.
3)
Using Taetro drums as a starting point/template was a good idea,
However, my guess is that Taetro drums where originally in 44.1khz, because pitch correction coefficient pitch="-1.08844" seems to match pitch difference between 44.1 and 48 of 1.08843537414966 and is probably used for compensation.
Probably the one who is doing it should keep an eye on this pitch correction and fix it (to -1 I guess..) if using 48khz samples
4) using UUID in filenames is mandatory, both for preset and wav file names. At least without following the convention preset does not appear in the preset list, and this uuids are used in app.properties separately.
-------------
My current problem where I stuck is that I no more can do "Send to Orba" , my custom preset shows as absent on Orba, but I've got only "Play" button in Orba PC app, that does nothing. I have the same situation for "Bright Violin" stock preset, and cannot find out a way to fix that yet. Probably there is still some corrupted data on the Orba itself that I cannot clean. Searching for the way to reset Orba to defaults.
p.s.
Regarding handpands in general - there is a notice on freepats description for hang samples, that I tend to agree with:
Note that this sound bank only responds to notes produced by the original instrument, other notes are silent. The common method of varying the pitch of the nearest tone to generate all missing semitones does not produce good results here, because the hang creates fixed harmonics (actually background notes) which would be randomly shifted to different scales.
Notes are not that isolated on hang/pan/rav and other similar instruments, and pitch shifting to fill missing notes to achieve chromatic does not work well.
Absolutely Agree! There is also the EXS File Format that is similar. It defines mapping audio files to note ranges and supports layering for velocity thresholds but has many other features such as articulations. I don't think Orba can support articulations but maybe. Think about a saxophone that plays clean notes as you play but adds growl as you radiate. This can be done externally (MPE) for example with the GeoShred Preset.
This could potentially be done internally if you could assign two samples to the same range and use a controller to blend between the two.
I'm currently piecing together parts of code I need to create a Python script. This script will take a reference to a folder of .wav files as input. It will then sort the wavs in the folder based on tokenized pitches and velocities and generate the <SampleSet> node. I should be done by next week but haven't had much time. I'd like to build several Presets to work out the process. I'm planning to share the script in a new Custom Preset Forum I'm going to start at the same time.
What I am thinking of as a kind of theoretical possibility - there are tons of SoundFont instruments out there in the wild (SF2). Literally, gigabytes.
SoundFont is somewhat similar to what we have got in orba2 - couple of samples and their assignments to notes.
Could be an interesting challenge to be able to do some converter from SF2 to orba format.
Maybe these SF2 instruments are not that impressive compared to the modern Kontakt libraries - it is till a big legacy library of sample based instruments, that are not that much heavy on the sample size, as SoundFont comes from the 90th era, when people were limited by their PCs the same way as we are in Orba2, and SoundFont first of all was developed as a way to override standard midi bank sounds on ancient audio cards and stuff.
While converting beloved samples by hand to the Orba presets is still quite cool, possibility to generate presets from SoundFonts could be a giant leap ahead, by providing thousands of already existing sampled instruments via only one tool.
I converted my samples to 48kHz and problem solved. Note to Self: Much easier to work with 48kHz and avoid pitch math since pitch/note tables are published all over the internet. Sharing my beta Preset.
Steps to Install:
I have 3 a.m here, so I am a little bit short on testing possibilities, but seems to me that I've found a possible workaround for this problem.
This broken configuration as below:
Can be fixed by adding the same sample into group twice, so there will be no decrease in group members amount in the sequence. I mean, all the groups have the same amount of samples.
velocityThresholds="[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90],[90]"
sampleMap="[0,0],[1,1],[2,3],[4,4],[5,5],[6,7],[8,9],[10,11],[12,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,21],[22,23],[24,25],[26,27],[28,29],[30,31],[32,33],[34,34],[35,35]
Chris Hernandez
Hi Artiphon,
Any updates on whether/when there will be added functionality to the Orba 2 app allowing for user-customizable drum presets? I realize there are only 2gb of space available, but would love even just 2-4 customizable preset slots on the desktop app where I could assign all 9 keys. I primarily use my Orba 2 for on-the-go songwriting, and having a drum kit that matches the sound(s) I'm going for would be huge.
I realize that in order for the functionality to fully transfer on iOS, the user would probably need to send the drum sample files with unmodified file names to the associated preset folder on their phone. I've already done this with custom bass presets from OrbaSynth and I don't think it would be a problem for anyone with mid-level technical prowess. I think this feature would exponentially boost the value of the Orba 2 for anyone interested in quick, on-the-go production.
I'm about to write another request/problem I'm having with OrbaSynth, which is otherwise incredibly useful from a production standpoint. Planning on making a youtube review video as well. Thanks for keeping the updates coming, super excited for what's to come!
2 people like this idea