NAME
Music::Percussion::Tabla - Play the tabla!
VERSION
version 0.0704
SYNOPSIS
use Music::Percussion::Tabla ();
my $t = Music::Percussion::Tabla->new;
for (1 .. $t->bars) {
$t->strike('ta', $t->eighth);
$t->strike('ta', $t->eighth);
$t->strike('dha');
$t->strike('ge');
$t->rest($t->quarter);
}
$t->strike(['ge', 'ke']); # double-strike
for (1 .. 2) {
$t->strike('ke', $t->sixteenth) for 1 .. 3;
$t->strike('ti', $t->sixteenth) for 1 .. 4;
}
$t->rest($t->quarter);
$t->tirakita($t->sixteenth) for 1 .. 2;
$t->teentaal;
$t->keherawa($t->eighth) for 1 .. $t->bars;
$t->jhaptaal($t->eighth) for 1 .. $t->bars;
$t->dadra($t->eighth) for 1 .. $t->bars;
$t->rupaktaal($t->eighth) for 1 .. $t->bars;
$t->rupaktaal($t->eighth) for 1 .. $t->bars;
$t->ektaal;
$t->arachartaal;
$t->play_with_timidity;
# OR:
$t->write; # save the score as a MIDI file
$t->timidity_cfg('/Users/you/timidity.cfg');
# then run timidity with that config and MIDI file
DESCRIPTION
Music::Percussion::Tabla
provides named associations between tabla drum sounds and the included soundfont file (which is 4.1MB).
Here are my "non-tabla player" descriptions of the sounds. And the proper "syllable" names for the items with a *
are unknown to me, as of yet...
# MIDI Description
...
1 60 ringing mid
2 61 muted low
* 3 62 slap
4 63 ringing mid slap
5 64 low knock
6 65 muted ringing low
7 66 lower
* 8 67 low-up
9 68 muted slap
* 10 69 ringing low
11 70 flam slap
12 71 loud tap
13 72 lowest mute
* 14 73 ringing low
* 15 74 muted low
16 75 loud tap double
17 76 high-low
18 77 high slap
* 19 78 tap
20 79 high knock
* 21 80 short low-up
22 81 mid tap
23 82 muted tap
24 83 mid
* 25 84 muted
26 85 loud mid double
27 86 slightly more muted
28 87 low mid
29 88 ringing mid
...
Edit and run the eg/bols.pl example program to hear each of these.
To play patches by number instead of name (e.g. for the *
unknown bols), do this to add the 84
th MIDInum entry score:
$tabla->note($tabla->eighth, 84);
To play patches simultaneously, that would be:
$tabla->note($tabla->eighth, 84, 80);
ATTRIBUTES
soundfont
$soundfont = $tabla->soundfont;
The file location, where the tabla soundfont resides.
Default: dist_dir()/Tabla.sf2
patches
$patches = $tabla->patches;
Each bol can be 1 or more patch numbers.
Default single strike bol patches:
ge: 65 66 76
ke: 64 77 79
na: 78 81
ta: 71 75 85
ti: 61 68 70 72 82 86
tin: 60 63 83 87
tun: 88
Default double strike bols:
dha: ge ta
dhin: ge tin
dhit: ge ti
dhun: ge tun
METHODS
new
$tabla = Music::Percussion::Tabla->new(%args);
Create a new Music::Percussion::Tabla
object. This uses the constructor attributes of MIDI::Drummer::Tiny.
strike
$tabla->strike($bol);
$tabla->strike([$bol1, $bol2]);
$tabla->strike($bol, $duration);
This method handles two types of strikes: single and double.
A named bol can have one or more patches associated with it. For single strikes, the method will play one of the bol patches at random.
A bol that is an array reference of two named bols, signifies a double-strike on the given members.
The duration is a note length like $tabla->eighth
(or 'en'
in MIDI-Perl notation).
(If specific patches are desired, use the note
method, as shown above.)
1. Single strike bols:
ge, ke, na, ta, ti, tin, tun
2. Double strike bols:
dha, dhin, dhit, dhun
For a double strike, play both the baya and daya drums for the given bol and duration.
Each of the individual bol patches, comprising the double-strike, are chosen at random, as with the single-strike.
thekas
Traditional "groove patterns":
- teentaal([$duration])
-
16 beats
- keherawa([$duration])
-
8 beats
- jhaptaal([$duration])
-
10 beats
- dadra([$duration])
-
6 beats
- rupaktaal([$duration])
-
7 beats
- ektaal([$duration])
-
12 beats
- arachartaal([$duration])
-
14 beats
- tirakita([$duration])
-
4 beats
SEE ALSO
The t/01-methods.t and eg/* programs in this distribution.
https://gleitz.github.io/midi-js-soundfonts/Tabla/Tabla.sf2 (4.1MB)
https://www.wikihow.com/Play-Tabla
https://www.taalgyan.com/theory/basic-bols-on-tabla/
https://kksongs.org/tabla/chapter02.html & https://kksongs.org/tabla/chapter03.html
AUTHOR
Gene Boggs <gene.boggs@gmail.com>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2023-2025 by Gene Boggs.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)