NAME
Music::Percussion::Tabla - Play the tabla!
VERSION
version 0.0600
SYNOPSIS
use Music::Percussion::Tabla ();
my $t = Music::Percussion::Tabla->new;
$t->timidity_cfg('/tmp/timidity.cfg'); # optional
say $t->soundfont;
for (1 .. $t->bars) {
$t->strike('ta', $t->eighth);
$t->strike('ta', $t->eighth);
$t->strike('tun');
$t->strike('ge');
$t->rest($t->quarter);
}
$t->double_strike('dha', $t->quarter);
$t->teentaal($t->eighth) for 1 .. $t->bars;
$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->play_with_timidity;
# OR:
$t->write; # save the score as a 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:
# 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
...
To play patches by number (for the unknown bols, for instance), do this to add to the 84
th MIDInum entry score:
$tabla->note($tabla->eighth, 84);
To play patches simultaneously, that would be:
$tabla->note($tabla->eighth, 84, 79);
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 bol patches:
ga: 65
ge: 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
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($bol, $duration);
$tabla->strike($bol, $duration, $patch);
Single strike bols:
ga, ge, ke, na, ta, ti, tin, tun
The duration is a note length like $tabla->eighth
(or 'en'
in MIDI-Perl notation).
Each bol can be 1 or more patch numbers. For bols with more than one patch possibility, calling that method with either no patch or a patch of -1
will play one of the patches at random.
double_strike
$tabla->double_strike($bol);
$tabla->double_strike($bol, $duration);
Double strike bols:
dha, dhin, dhit, dhun
Play a double-strike on the baya and daya drums for the given bol and duration.
If the individual bols comprising the double-strike have more than one possible patch, one is chosen at random. If specific patches are desired, use the note
method with multiple patches.
thekas
- teentaal([$duration])
- keherawa([$duration])
- jhaptaal([$duration])
- dadra([$duration])
- rupaktaal([$duration])
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)