The No.1 Website for Pro Audio
 Search This Thread  Search This Forum  Search Reviews  Search Gear Database  Search Synths for sale  Search Gearslutz Go Advanced
How To Make: a 909 Interface w/Goldbaby in Kontakt Drum Machines & Samplers
Old 21st August 2009
Lives for gear
crufty's Avatar

Thread Starter
How To Make: a 909 Interface w/Goldbaby in Kontakt

Hey slutz...maybe this belongs in a blog post more then a forum post. A blog seems like a real pia and so forum it is...maybe it nets some good karma, maybe bad. never can tell here.

boring history
Anyway, the goldbaby 909 samples are great fun. Recently got Komplete, and have been blown away by Reaktor for the last few months. I wanted to make a knobby interface to the goldbaby samples, since it's kind of a pia to plink on the keyboard to find the right decay. I thought about reaktor, but it seemed like a lot of work to get it going. I saw there was an ensemble out there, but it's not goldbaby samples! So I got to thinking--maybe it's time to explore Kontakt. I had been using EXS24 and it has no scripting to speak of.

The approach I've taken is to build a kontakt instrument for each 909 drum type. I haven't done them all, but of the ones i've done, things have been working out pretty well. I'll share how I implemented the hi-hats and the rest are an exercise for the reader.

Mr Goldbaby has helpfully labelled each 909 sample in a formulaic fashion. So I figured--if we construct the right formula, we should be able to point kontakt to just the right sample. I'm not sure if this approach will work for all sample sets, but it should be pretty close--at least for tape mode selection if nothing else. I'm not sure if the approach taken is the best, but it does work. At the end of the day, I plan to build kontakt banks of different drum types, mixing and matching the various kits to make the "ultimate" virtual sample based drum machine. So far so good!

How-To build a Kontakt patch with:
- tape knob, accent knob, open hat decay knob, close hat decay knob, open hat pitch, close hat pitch
- < C3 = closed hats, > C3 = open hats. hats are pitched according to pitch knob, NOT note played
  1. In a new kontakt patch, drag your sample set into the mapping editor as usual. For this case, this was all the high-hat patches.
  2. We should have all patches in one zone. What we want to do is split each zone into its own group. Select all zones and move them to new empty group (pg 111 of the manual)
  3. Each group should have it's own zone. Delete all the special one-hits, both group AND zone. We want real 909! So the sweets, vinyls, etc--toast. What we should be left with is one sample covering a few notes per group, and only samples named in the GoldBaby style. Because we use an equation, any extras mess up the script.
  4. Select all zones, and set the keyboard range from D-2 to G8 (whole keyboard). Set the root to C3, as we want to pitch these samples. For that reason, leave tracking on.
  5. in the group editor, select all groups and set the voice group to 1, and set voices to 1. This will setup the hihat open/close interrupt / solo voice that is typical of hihats in drum machines etc.
  6. Finally, in the script editor, copy paste the following script---click, apply, save:
    {*** (C) Crufty 2009 ***}
    {*** GNU License, free for personal use, contact me for anything else ***}
    on init
    	{*** UI Setup ***}
    	declare ui_knob $Tape(1,4,1)
    	declare ui_knob $AccentVelocityBegin(1,127,1)
    	declare ui_knob $OpenDecay(1,5,1)
    	declare ui_knob $OpenPitch(1,127,1)
    	declare ui_knob $CloseDecay(1,5,1)
    	declare ui_knob $ClosePitch(1,127,1)
    	{*** UI Defaults ***}
    	$OpenPitch := 64
    	$ClosePitch := 64
    	{*** Variable Declarations ***}
    	{* HatGroup: A number representing the sample triggered, 
    	*           calculated via knobs above *}
    	declare $HatGroup
    	{* Velocity Layer: A switched based on velocity of incoming note 
    	*                 and AccentVelocity setting *}
    	declare $VelocityLayer
    end on
    on note
    	{*** Use accented or normal sample sets ***}
    	{*** Some sample sets have more then two velocit settings--
    	*** In those cases, add another knob and expand the if statement accordingly.
    	if ($EVENT_VELOCITY<$AccentVelocityBegin) 
    		$VelocityLayer := 1
    		$VelocityLayer := 2
    	end if
    	{*** Goldbaby 909 Hat samples have:
    	***   - 4 Tape Types (Orig, Tape, Tape Sat, X) [4] 
    	***   - 2 Velocity layers (Normal, Accent) [2]
    	***   - 5 decay positions (D1,D3,D6,D9,D11) [5]
    	***   - 2 Hat positions (open, closed) [2]
    	*** These samples can thus be thought of slots in a combination lock. Key in the right
    	*** combination, get the right sample.  Or, in other terms, it's a multidimensional array
    	***   Sample Array[2][5][2][4]
    	*** To get the right sample, we simply have to calculate it's group number, hide
    	*** all other group numbers, and activate only our desired sample group number.
    	*** Note: There is some goofiness here--Because D11 comes BEFORE D1, we have to 
    	***       make a special case for D11 to account for how the samples were
    	***       ordered in the MacOSX naming scheme.  We could have manually fixed the groups
    	***       so that samples with decay 11 came after 9 and not before 1--but we're lazy.
    	*** Ex: Tape, Accent, Decay 3, Closed Hat is going to start at 21...
    	***      - skipping 8 first decay 11 samples
    	***      - skipping 8 more samples, passing over decay 1
    	***      - skip 4 velocity 1 samples
    	***      - skip Orig sample to get Tape/Accent/D3/Open Hat + 2
    	***   = 8+8+4+2 = 22
    	*** Kontakt starts from zero, so 22-1=group #21 w/our target sample
    	{*** Arbitrarily selected notes > C3 as being open, notes < C3 as being closed ***}
    	if ($EVENT_NOTE>64)
    		{*** Find open hat sample group ***}
    		{*** Open hats are 40 samples after closed hats, so we don't bother
    		*** with the math. ***}
    		{*** Note the D11 special case--if your OS doesn't sort same was as Mac, may
    		*** Need to tweak ***}
    		if ($OpenDecay=5) 
    		end if
    		{*** Ignore pitch of keyboard--use pitch knob instead.  ***}
    		{*** Find closed hat sample group -- again, special case ***}
    		if ($CloseDecay=5)
    		end if
    	end if
    	{*** Turn off ALL sample layers. ***}
    	disallow_group ($ALL_GROUPS)
    	{*** Enable only sample layer we want ***}
    	{*** Not most efficient, but I'm too lazy to do any more. ***}
    end on

Kudos to the goldbaby dude--great job sample naming.

Anyway, posting this here because this same approach can be used for many other goldbaby samples. It might be helpful to think in terms of slots to a combination lock, with tape type the last slot and velocity layer the first slot. Hope this is useful to someone, somewhere. Peace!
Old 26th April 2011
Gear interested

"Hope this is useful to someone, somewhere. Peace!"

yes! thank you this is exactly what I'm just setting out to do.
Old 26th April 2011
Gear interested

hmm but i'm going wrong somewhere. as soon as i apply script i can no longer trigger anything.
Post Reply

Welcome to the Gearslutz Pro Audio Community!

Registration benefits include:
  • The ability to reply to and create new discussions
  • Access to members-only giveaways & competitions
  • Interact with VIP industry experts in our guest Q&As
  • Access to members-only sub forum discussions
  • Access to members-only Chat Room
  • Get INSTANT ACCESS to the world's best private pro audio Classifieds for only USD $20/year
  • Promote your eBay auctions and listings for free
  • Remove this message!
You need an account to post a reply. Create a username and password below and an account will be created and your post entered.

Slide to join now Processing…
Thread Tools
Search this Thread
Search this Thread:

Advanced Search
Similar Threads
Thread Starter / Forum
skiroy / Rap + Hip Hop engineering and production
hey_mavis / So much gear, so little time
TEMAS / So much gear, so little time
Jonkan / Low End Theory

Forum Jump
Forum Jump