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 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 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)