# A huge drum machine library for tidal (72 drum machines)

**URL:** https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408
**Category:** TidalCycles
**Tags:** resources
**Created:** [15 August 2021 02:45 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408 "2021-08-15T02:45:11Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![geikha](https://uzu.lurk.org/user_avatar/uzu.lurk.org/geikha/32/2701_2.png) [@geikha](https://uzu.lurk.org/u/geikha)
#### Post date: [15 August 2021 02:45 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/1 "2021-08-15T02:45:11Z")

</div>

# tidal-drum-machines

* * *

A huge collection of Drum Machines for SuperDirt and Tidal

### List of drum machines

See the full list of drum machines [here](https://github.com/geikha/tidal-drum-machines/tree/main/machines).

* * *

## How to use

Run the custom SuperCollider bootup found in [tdm-sc-boot.scd](https://github.com/geikha/tidal-drum-machines/tree/main/tdm-sc-boot.scd), or add the necessary parts to your own bootup. Then run the haskell/tidal code found in [tdm-hs-setup.tidal](https://github.com/geikha/tidal-drum-machines/tree/main/tdm-hs-setup.tidal), or just copy and paste it from here:

```hs
let drumMachine name ps = stack 
                    (map (\ x -> 
                        (# s (name ++| (extractS "s" (x)))) $ x
                        ) ps)
    drumFrom name drum = s (name ++| drum)
    drumM = drumMachine
    drumF = drumFrom

```

### Examples

Here are some examples of how to use the drum machines:

#### drumMachines

```hs
d1 $ drumMachine "bossdr220" [
    s "[~perc]*2" # note 7
    ,s "bd:4(3,8)"
    ,s "~[cp,sd]"
    ,s "hh*8"
]

```

The drum machine can be pattern'd:

```hs
d1 $ drumMachine "<bossdr220 rolandtr808>" [
    s "[~perc]*2" # note 7
    ,s "bd:4(3,8)"
    ,s "~[cp,sd]"
    ,s "hh*8"
]

```

#### drumFrom

You can also just call one percussive element:

```hs
d1 $ drumFrom "linn9000" "bd*2"

```

This method could be useful for live performance:

```hs
do
 let dm = "linn9000"
 d1 $ drumFrom dm "bd*2"

```

* * *

### Drum names abbreviations:

| Drum | Abbreviation |
| --- | --- |
| Bass drum, Kick drum | bd |
| Snare drum | sd |
| Rimshot | rim |
| Clap | cp |
| Closed hi-hat | hh |
| Open hi-hat | oh |
| Crash | cr |
| Ride | rd |
| Shakers (and maracas, cabasas, etc) | sh |
| High tom | ht |
| Medium tom | mt |
| Low tom | lt |
| Cowbell | cb |
| Tambourine | tb |
| Other percussions | perc |
| Miscellaneous samples | misc |
| Effects | fx |

* * *

Repost from the repo's readme:

> **[GitHub - geikha/tidal-drum-machines: A huge collection of Drum Machines for SuperDirt...](https://github.com/geikha/tidal-drum-machines)**
>
> A huge collection of Drum Machines for SuperDirt and Tidal

---

<div class="post-metadata">

### Author: ![lannzach](https://uzu.lurk.org/user_avatar/uzu.lurk.org/lannzach/32/3519_2.png) [@lannzach](https://uzu.lurk.org/u/lannzach)
#### Post date: [15 August 2021 13:06 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/2 "2021-08-15T13:06:41Z")

</div>

Much love!

---

<div class="post-metadata">

### Author: ![julian](https://uzu.lurk.org/user_avatar/uzu.lurk.org/julian/32/1398_2.png) [@julian](https://uzu.lurk.org/u/julian)
#### Post date: [9 October 2021 20:55 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/3 "2021-10-09T20:55:49Z")

</div>

a minimal exploration from the sclang side:

```haskell

SuperDirt.default = ~dirt;

~path = "path/to/tidal-drum-machines-main/machines"; 

~dirt.soundLibrary.loadSoundFiles(~path ++ "/*/*");

p = pathMatch("/Volumes/data/archiv/ton/tidal/tidal-drum-machines-main/machines/*/*");

x = p.collect { |x| x.split($/).drop(-1).last.asSymbol };

(
Tdef(\x, { 
	var w = x.choose, dt = 1, dt0 = 0.1;
	loop {
		if(0.004.coin) { w = x.choose };
		if((dt/3).coin) { dt = [1, 1/2, 1/3, 2].choose };
		wait(dt * dt0);
		(
			type: \dirt, 
			s: w,
			n: 10.rand, 
			pan: -0.5, 
			amp: rrand(-20, -30).dbamp, 
			ring: 1.0.rand, 
			ringf: 3000.rand
		).play;
	}
}).play
)

```

---

<div class="post-metadata">

### Author: ![geikha](https://uzu.lurk.org/user_avatar/uzu.lurk.org/geikha/32/2701_2.png) [@geikha](https://uzu.lurk.org/u/geikha)
#### Post date: [9 October 2021 21:13 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/4 "2021-10-09T21:13:54Z")

</div>

ooohhh cool stuff. I was going to try the "/\* /\*" thing since I learned it recently while learning cool bash stuff. (I'm getting used to my first own 100% linux computer, and hence learning more bash stuff, like `dir */*`)

what's the Tdef thing? plays a random sample or something like that? I'd try playing it but my supercollider install is broken at the moment... trying to fix it rn heh

---

<div class="post-metadata">

### Author: ![julian](https://uzu.lurk.org/user_avatar/uzu.lurk.org/julian/32/1398_2.png) [@julian](https://uzu.lurk.org/u/julian)
#### Post date: [10 October 2021 16:12 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/5 "2021-10-10T16:12:48Z")

</div>

> [@geikha](#):
>
> what's the Tdef thing?

A Tdef is a routine that you can rewrite at runtime. In its function you can have `wait` statements and arbitary other code.

---

<div class="post-metadata">

### Author: ![julian](https://uzu.lurk.org/user_avatar/uzu.lurk.org/julian/32/1398_2.png) [@julian](https://uzu.lurk.org/u/julian)
#### Post date: [10 October 2021 16:13 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/6 "2021-10-10T16:13:59Z")

</div>

… and in this particular case, it just picks random sample folders and and varies the parameters every once in a while. Just to get an "overview"...

---

<div class="post-metadata">

### Author: ![Raph](https://uzu.lurk.org/user_avatar/uzu.lurk.org/raph/32/45_2.png) [@Raph](https://uzu.lurk.org/u/Raph)
#### Post date: [14 November 2021 14:28 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/7 "2021-11-14T14:28:06Z")

</div>

I just installed your drum machines on my system. It worked flawlessly! Thanks for your hard work! A few notes for those thinking about installing it:

- The installation script is pretty much "change the path and that's it".
- Drum machines must be summoned using lowercase letters only: `RolandTR808 -> rolandtr808`.

And with that said, I don't need drum machines anymore because I have a ton of them!  
PS: pretty satisfied with the sampling quality.

---

<div class="post-metadata">

### Author: ![geikha](https://uzu.lurk.org/user_avatar/uzu.lurk.org/geikha/32/2701_2.png) [@geikha](https://uzu.lurk.org/u/geikha)
#### Post date: [18 September 2023 16:56 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/8 "2023-09-18T16:56:44Z")

</div>

Update: I added the BOSS DR-660 recently. Drum machine widely used to make Juke and Footwork tracks! Also useful for Memphis Rap and derivatives.

I skipped some sounds that were merely pitched versions of other ones (toms) and ordered them between categories such that they align (`ht:1` and `lt:1` both come from the same tom sound).

---

<div class="post-metadata">

### Author: ![meneer](https://uzu.lurk.org/user_avatar/uzu.lurk.org/meneer/32/1418_2.png) [@meneer](https://uzu.lurk.org/u/meneer)
#### Post date: [4 July 2024 10:38 UTC](https://uzu.lurk.org/t/a-huge-drum-machine-library-for-tidal-72-drum-machines/3408/10 "2024-07-04T10:38:42Z")

</div>

thanks so much for this, it's brilliant !!!  
(issue I posted earlier was resolved after restart)
