NAME
Music::Percussion::Tabla - Play the tablas!
VERSION
version 0.0803
SYNOPSIS
use Music::Percussion::Tabla ();
my $t = Music::Percussion::Tabla->new(file => 'tablas.mid');
print 'Soundfont: ', $t->soundfont, "\n"; # sf2 file location
for (1 .. $t->bars) {
$t->strike('te', $t->eighth); # write to the score
$t->strike('te', $t->eighth);
$t->strike('dha');
$t->strike('ge');
$t->rest($t->quarter);
}
my @strikes; # optionally save the notes for other purposes
push @strikes, $t->strike(['ge', 'ke']); # double-strike
for (1 .. 2) {
push @strikes, $t->strike('ke', $t->sixteenth) for 1 .. 3;
push @strikes, $t->strike('ti', $t->sixteenth) for 1 .. 4;
}
print "Strikes: @strikes\n";
$t->rest($t->quarter);
$t->tirakita($t->sixteenth) for 1 .. 2;
push @strikes, $t->teentaal; # as above
$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->write; # save the score as tablas.mid
DESCRIPTION
Music::Percussion::Tabla provides named associations between tabla drum sounds and the included soundfont file (which is 4.1MB).
To play tablas.mid with fluidsynth and the soundfont file (as printed above), do this:
fluidsynth -i <the tabla sf2 file> tablas.mid
Here are the names and descriptions of the sounds:
# Number Name Description
...
1 60 tu "ringing mid"
2 61 ge "muted low"
3 62 de "slap"
4 63 din "ringing mid slap"
5 64 ke "low knock"
6 65 ge "muted ringing low"
7 66 ge "lower"
8 67 ge "low-up"
9 68 ke "muted slap"
10 69 ge "ringing low"
11 70 ke "flam slap"
12 71 na "loud tap"
13 72 ne "lowest mute"
14 73 ge "ringing low open"
15 74 ke "muted low"
16 75 na "loud tap"
17 76 ge "high-low"
18 77 re "high slap"
19 78 na "sharp tap"
20 79 tin "high knock"
21 80 ge "short low-up sliding"
22 81 sur "mid tap"
23 82 te "muted tap"
24 83 sur "mid"
25 84 te "muted"
26 85 thap "loud mid double"
27 86 ti "slightly more muted"
28 87 tin "low mid"
29 88 tu "ringing mid"
...
To play patches by number instead of name (e.g. for the * unknown bols), do this to add the 84th 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 have 1 or more patch numbers.
Default single strike bol patches:
de: 62
din: 63
ge: 61 65 66 67 69 73 76 80
ke: 64 68 70 74
na: 71 75 78
ne: 72
re: 77
te: 82 84
thap: 85
ti: 86
tin: 79 87
tu: 60
sur: 81 83
Default double strike bols:
dha: ge te
dhin: ge tin
dhit: ge ti
dhun: ge tu
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->strikes($bol);
$tabla->strikes([$bol1, $bol2]);
$tabla->strikes($bol, $duration);
Add to the strike to the score and also return a MIDI note specification [$duration, @note_list] for external handling.
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.)
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-2026 by Gene Boggs.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)