Start a new topic

Custom Drum Presets

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

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



3 people like this

@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

 


2 people like this

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

 


2 people like this

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

zip

2 people like this

Sharing current state of my custom  HangDrum  D minor as well, based on Freepats hang drum samples.


  • It is a Drum preset, not Lead.
  • Has a working shaker with some default sound. (It does not record however)
  • Bump action is assigned to the d5 note, that could not fit into regular notes. Still thinking if I should reassign to some kind of a percussion instead, need to play for some time to understand what's better.
  • Preset  is not tunable, it is just D minor and that's it.
  • Supports finger muting, except for the "bump" note.Seems to be in tune


Lessons learned:


  • "Bump" action seems to be hardcoded  always to generate note 39 no mater what.

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.


  • Shaker seems to use some default sample, I did not specify it and it still works.


  • I still do not actually understand how indexes, noteThresholds , tuning , note and note_midi play together, mapping is cryptic to me, I still am quite confused.DrumPatch seems not to be vital for playing samples, SampleDrumPatch is enough. Probably it adds some functionality on top.


Known issues:

 

  • Still no velocity mapping, unfortunately.
  •  Shaker sounds do not record.  However, seems like it does not work even stock presets, there is a separate forum topic on that, at least for Orba1
  •  Sended midi notes are lazy garbage, just some notes from 36 to  44, it does not map to drum midi or played notes meaningfuly. If you need to use orba2 as a midi controller, use some another preset.



---

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.


zip

2 people like this

@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.


2 people like this

@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.


2 people like this

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.


1 person likes this

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.

 


1 person likes this

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:

https://www.youtube.com/watch?v=x6d6WBOXikU


1 person likes this

@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. 


1 person likes this

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.


1 person likes this

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.



1 person likes this

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.

image


Steps to Install:

  1. Unzip and drag the ‘Common’ folder into /Users/<username>/Documents/Artiphon and it will ask to merge the contents (Hold <Option> on Mac while doing this and it should give the option to Merge). You would do this with no Orba attached and the app closed.
  2. Start the app and let it scan (or force a scan from the Settings). Verify that the entries were correctly logged in the app.properties file.
  3. Restart the Orba 2 app and turn Orba off/on for good measure.
  4. Select the PanDrum Preset Lead and hopefully it allows ’Send to Orba’. Press it and allow 4-5 minutes.
  5. Check the Preset location icons and hopefully it shows available in App and Orba..
  6. Restart everything, Hopefully it now allows ‘Play’
If these instructions do not work you will need to place the files manually. Only a handful of users know how to do this. Be careful!

zip

1 person likes this

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:

 

velocityThresholds="[],[],[90],[],[],[90],[90],[90],[90],[],[],[],[],[],[],[90],[90],[90],[90],[90],[90],[90],[],[]"
sampleMap="[0],[1],[2,3],[4],[5],[6,7],[8,9],[10,11],[12,13],[14],[15],[16],[17],[18],[19],[20,21],[22,23],[24,25],[26,27],[28,29],[30,31],[32,33],[34],[35]">


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]


1 person likes this
Login or Signup to post a comment