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.

Moo

File::ShareDir

List::Util

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)