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 found a great collection of Pan Drum samples online. There are a number of samples at different velocities for various notes. What type of scales do Pan Drums usually have? It seems the center is generally the root note but you can't assign a tone to the A button :(


I suppose I could assign the root note to Pad 1. I'm going to try to make a Pan Drum in a fixed key as a Drum Preset (a.k.a. it will not respond to Key changes). If I can figure it out, I may be able to make a Lead out of it in the future

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

If you want a ninth "Ding" note it may be possible to use the "Bump" gesture. Eg For the "Horror drums" sample set, bump sounds like BPM_Horror_Downfall_FX06

...I've never played a Handpan but I've been interested in them and the possibility of building a MIDI one for some time. There have been three commercial attempts at this that I'm aware of; the Oval (discontinued), the Lumen (on hold due to the chip shortage), and the Wavepan. My plan is to make one out of a hubcap with a set of piezos and a Teensy; working title the "Wheeldrum". Meanwhile...

Image


1 person likes this

...looking at the .artipreset file for Horror Drums, sampleIndex 0-7 corresponds to pads 1-8, while sampleIndex 8 is Bump. Not sure how you access 9-13.

 

Many Orba 2 Drum kits have more samples than you can access. If you use the Orba Piano app you can find some of them assigned to other keys.

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

Sounds like an interesting challenge for the weekend. :-)


Cool. I also have some nice Pan samples. I'm still trying to find a nice deployment process that's easy for everyone before I start creating presets. There are some nice Presets coming soon.. My App has already downloaded the samples but there are no associated presets. My guess is that Artiphon is prepping for an app update soon which will include new presets. Maybe American Thanksgiving? 

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

Yep. Seems  like my bad version of custom samples are still on the orba,  even reflashing orba does not clean them. If I clean the app.properties, and nothing on the PC side knows about this preset and it's samples - samples are still shown during sync.


Do you guys have any idea how to remove leftovers from the Orba storage?

 

image

Okay, Looks like problem is the following. "Delete" actually does not delete. 

image


It seems to  be able remove artipreset from the device, it deletes local files on my pc. But it does not remove actual wav  samples from orba's  internal storage  for some reason.


Next time PC app syncs to orba, it gets list of sample files on it,  writes it to app.properties and their existance blocks app from enabling "Send to orba",  and showing "play" instead, even if interface shows that preset  it is not present on orba.  Preset is  therefore in  a kind of limbo of some sort  - treated as installed and not installed in the same time by different parts of the app.


It can be partially fixed by removing every <Location >   ....  /> for the custom samples, where url starts with orba:// 


for example: 

<Location url="orba://LA22346429/SamplePools/ArtiphonExt2/FreepatsHangDfreepats_hang_D4_01_b34481822bcc78de07d8d44300077a6b.wav"

                  crc="45534"/>


Basically it convinces the app to think that samples do not exist on orba. In this case "Send to orba" starts working.


However,  actual samples are not rewritten, generating errors in debug log:


[0000017333]+0021 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0000017334]+0001 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/ArtiphonExt2/FreepatsHangD/freepats_hang_Bb4_01_0fc6398d5ee22d51432547791b20d998.wav

[0000017343]+0009 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0000017344]+0001 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/ArtiphonExt2/FreepatsHangD/freepats_hang_C5_01_ac77fbb19b38ef0a79208a51cdd4caa9.wav

[0000017355]+0011 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0000017356]+0001 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/ArtiphonExt2/FreepatsHangD/freepats_hang_D5_01_90468cd7ddb0530cffecc3adcfd9351c.wav

[0000017366]+0010 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0000017367]+0001 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /Presets/Drum/FreepatsHangDrum_c9af2af0425e49864539d84ca50eebd3.artipreset

[0000017367]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0000030674]+13307 [t:commsEventThread] (Comm.cpp) -> [comms error: (queueFileSetOperation - kGroupFile/kFileClose) received ack with error (kErrorFileFileExists) ]

[0000051437]+20763 [t:commsEventThread] (Comm.cpp) -> [comms error: (queueFileSetOperation - kGroupFile/kFileClose) received ack with error (kErrorFileFileExists) ]

[0000076852]+25415 [t:commsEventThread] (Comm.cpp) -> [comms error: (queueFileSetOperation - kGroupFile/kFileClose) received ack with error (kErrorFileFileExists) ]

[0000099321]+22469 [t:commsEventThread] (Comm.cpp) -> [comms error: (queueFileSetOperation - kGroupFile/kFileClose) received ack with error (kErrorFileFileExists) ]


My current preset starts being "fully installed" but still generates white noise sound , most probably due to stereo samples I'd uploaded initially.


Basically, at this point - it looks to me that if you have written any samples to Orba2 they are stuck there forever.

Of course, I can rename all my samples and fix the preset by using new filenames  for new non-stereo samples, but old samples will still consume the storage space. And I will have to do that each time when I will need a samples replaced.

 

Any ideas how to rewrite the samples or delete them from orba?


That's the whole debug log for deleting preset - it even does not try..


[0001142043]+2334 [t:MessageManager] (TemariComm.cpp) -> TemariComm::queueFileDeleteFile deleting file on the orba: /Presets/Drum/FreepatsHangDrum_c9af2af0425e49864539d84ca50eebd3.artipreset

[0001142043]+0000 [t:MessageManager] (ViewController.cpp) -> going back from Delete Dialog

[0001142076]+0033 [t:commsEventThread] (TemariDeviceInstance) -> skipping preset scan

Had some hopes for User samples pool but it seems like the same happens for the presets created by in-app samples recording:


Here I am creating a record:


[0001352758]+9258 [t:MessageManager] (SampleAuditionController) -> exiting audition mode.

[0001352758]+0000 [t:MessageManager] (SampleImporter) -> importMelodic: C:\Users\ignis\AppData\Local\Temp\Record\2022-11-20-16-36.wav

[0001352762]+0004 [t:MessageManager] (SampleImporter) -> starting sample import: 2022-11-20-16-36_da12fe55bd7747d4ba4e4abf4edb198b

[0001352762]+0000 [t:MessageManager] (SampleImporter::createPatchData) ->

[0001352762]+0000 [t:MessageManager] (SampleImporter) -> Setting patch name to 2022-11-20-16-36

[0001352768]+0006 [t:MessageManager] (SampleImporter) -> Saving preset to C:\Users\ignis\Documents\Artiphon\Common\Presets\Lead\2022-11-20-16-36_da12fe55bd7747d4ba4e4abf4edb198b.artipreset

[0001352776]+0008 [t:MessageManager] (ViewController.cpp) -> going back from Save Preset Dialog

[0001354036]+1260 [t:MessageManager] (ViewController.cpp) -> navigating to Ok/Cancel Dialog

[0001355256]+1220 [t:MessageManager] (ViewController.cpp) -> going back from Ok/Cancel Dialog

[0001362422]+7166 [t:MessageManager] (ViewController.cpp) -> navigating to Preset List Actions

[0001363168]+0746 [t:MessageManager] (ViewController.cpp) -> navigating to Delete Dialog

[0001364200]+1032 [t:MessageManager] (ViewController.cpp) -> going back from Delete Dialog

[0001385435]+21235 [t:MessageManager] (ViewController.cpp) -> navigating to class MetadataViewerDialogContent


Here I am uploading it to Orba:



[0001386236]+0801 [t:MessageManager] (ViewController.cpp) -> navigating to Progress Dialog

[0001386255]+0019 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/User/2022-11-20-16-36_7052271854584d9f8a6600d7553aeeac/2022-11-20-16-360_85e0b8ac7ecd4876b9b5f5a35b8a44b2.wav

[0001386257]+0002 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0001386257]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/User/2022-11-20-16-36_7052271854584d9f8a6600d7553aeeac/2022-11-20-16-361_0706e860bcb8447e9220750b790f262c.wav

[0001386257]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0001386257]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/User/2022-11-20-16-36_7052271854584d9f8a6600d7553aeeac/2022-11-20-16-362_4b1baaad191645de914d605446819db5.wav

[0001386258]+0001 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0001386258]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /SamplePools/User/2022-11-20-16-36_7052271854584d9f8a6600d7553aeeac/2022-11-20-16-363_9c90ac360c914fa9bb7237d38293b0b8.wav

[0001386258]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0001386258]+0000 [t:MessageManager] (TemariComm.cpp) -> queueFileOpenForWrite /Presets/Lead/2022-11-20-16-36_da12fe55bd7747d4ba4e4abf4edb198b.artipreset

[0001386259]+0001 [t:MessageManager] (TemariComm.cpp) -> queueFileWrite

[0001390126]+3867 [t:MessageManager] (TemariComm.cpp) -> assigning to mode Lead preset: 2022-11-20-16-36_da12fe55bd7747d4ba4e4abf4edb198b.artipreset to slot 1

[0001390137]+0011 [t:MessageManager] (ViewController.cpp) -> going back from Progress Dialog

[0001390195]+0058 [t:commsEventThread] (TemariDeviceInstance) -> skipping preset scan

[0001390200]+0005 [t:commsEventThread] (TemariDeviceInstance) -> skipping sample pool scan

[0001399046]+8846 [t:MessageManager] (ViewController.cpp) -> navigating to Preset List Actions

[0001400204]+1158 [t:MessageManager] (TemariComm.cpp) -> assigning to mode Lead preset: 2022-11-20-16-36_da12fe55bd7747d4ba4e4abf4edb198b.artipreset to slot 1

[0001400217]+0013 [t:MessageManager] (ViewController.cpp) -> going back from Preset List Actions

[0001405655]+5438 [t:MessageManager] (ViewController.cpp) -> navigating to Preset List Actions


Here delete happens, but only artipreset is removed:



[0001406580]+0925 [t:MessageManager] (ViewController.cpp) -> navigating to Delete Dialog

[0001407533]+0953 [t:MessageManager] (TemariComm.cpp) -> TemariComm::queueFileDeleteFile deleting file on the orba: /Presets/Lead/2022-11-20-16-36_da12fe55bd7747d4ba4e4abf4edb198b.artipreset

[0001407534]+0001 [t:MessageManager] (ViewController.cpp) -> going back from Delete Dialog

[0001407583]+0049 [t:commsEventThread] (TemariDeviceInstance) -> skipping preset scan




Basically, it look  like everyone who uses custom samples functionality will run out of space without ability to clean it.

Login or Signup to post a comment