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 84th 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.

Moo

File::ShareDir

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)