NAME
Music::Percussion::Tabla - Play the tabla!
VERSION
version 0.0501
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->dha($t->quarter, 65, 61);
$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 Bol - Description
...
1 60 tin - ringing mid
2 61 ti - muted low
3 62 ? - slap
4 63 tin - ringing mid slap
5 64 ke - low knock
6 65 ga - muted ringing low
7 66 ge - lower
8 67 ? - low-up
9 68 ti - muted slap
10 69 ? - ringing low
11 70 ti - flam slap
12 71 ta - loud tap
13 72 ti - lowest mute
14 73 tun - ringing low
15 74 ? - muted low
16 75 ta - loud tap double
17 76 ge - high-low
18 77 ke - high slap
19 78 na - tap
20 79 ? - high knock
21 80 ? - short low-up
22 81 na - mid tap
23 82 ti - muted tap
24 83 tin - mid
25 84 ? - muted
26 85 ta - loud mid double
27 86 ti - slightly more muted
28 87 tin - low mid
29 88 tun - 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.
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)