Creative Accelerating Polyrhythm – User Guide

Advanced Praat script for generating evolving polyrhythmic patterns with multiple morphing modes.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 1.0 (2025) License: MIT License
Contents:

What this does

This script generates complex polyrhythmic patterns that evolve over time through acceleration and morphing. It creates two simultaneous rhythmic patterns with different beat counts, then progressively speeds them up while optionally transforming their characteristics.

Key Features:

Technical Implementation: The script creates polyrhythms by generating two independent beat patterns with different subdivisions. Each cycle's duration is progressively shortened based on the acceleration factor (exponential or linear). Sine wave tones mark each beat position, with optional morphing applied to frequencies, amplitudes, or rhythmic patterns. Stereo panning distributes beats spatially, with Pattern 1 panning left-to-right and Pattern 2 panning right-to-left.

Musical Context: Polyrhythms are fundamental to many musical traditions (West African drumming, Indian tabla, modern jazz). This tool is ideal for rhythm research, composition, perception studies, and educational demonstrations.

Quick start

  1. In Praat, Run script…Creative Accelerating Polyrhythm.praat.
  2. Set Pattern1_beats and Pattern2_beats (e.g., 3 and 4 for classic polyrhythm).
  3. Choose Total_cycles (number of acceleration stages).
  4. Select a Morph_type for evolution pattern.
  5. Click OK – sound generates and plays automatically.

Morph Types

The morph type determines how the polyrhythm evolves across cycles:

1. Frequency Morph Harmonic

Effect: Pitch relationships change progressively between cycles.

Pattern 1: Frequency increases (rises in pitch)

Pattern 2: Frequency decreases slightly (descends in pitch)

Use case: Create melodic movement within rhythmic patterns, study pitch-rhythm interaction.

2. Amplitude Morph Dynamic

Effect: Volume balance shifts between the two patterns.

Pattern 1: Amplitude decreases (fades out)

Pattern 2: Amplitude increases (fades in)

Use case: Crossfade between patterns, create dynamic emphasis shifts.

3. Rhythm Morph Structural

Effect: Beat count changes, creating increasingly complex divisions.

Pattern 1: Adds one beat per cycle (3→4→5→6...)

Pattern 2: Remains constant

Use case: Study metric modulation, create accelerating complexity.

4. Random Evolution Experimental

Effect: All parameters vary unpredictably each cycle.

Variation: Frequencies and amplitudes randomized within ranges

Use case: Generative music, unpredictable rhythmic textures, algorithmic composition.

Parameters

Basic Settings

ParameterTypeDefaultDescription
Base_durationreal2.0Initial cycle duration in seconds (before acceleration)
Total_cyclesinteger8Number of acceleration stages
Samplerateinteger44100Audio sample rate in Hz

Pattern 1 (Slower/Lower Division)

ParameterTypeDefaultDescription
Pattern1_beatsinteger3Number of beats per cycle (try 3, 5, 7 for odd divisions)
Pattern1_frequencyreal300Tone frequency in Hz (300 Hz ≈ D4)
Pattern1_ampreal0.3Amplitude (0.0 to 1.0, keep ≤0.5 to avoid clipping)

Pattern 2 (Faster/Higher Division)

ParameterTypeDefaultDescription
Pattern2_beatsinteger4Number of beats per cycle (try 4, 6, 8 for even divisions)
Pattern2_frequencyreal500Tone frequency in Hz (500 Hz ≈ B4)
Pattern2_ampreal0.3Amplitude (0.0 to 1.0, keep ≤0.5 to avoid clipping)

Acceleration

ParameterTypeDefaultDescription
Acceleration_factorreal2.0Speed increase multiplier (2.0 = doubles speed each cycle)
Exponential_accelerationbooleanYesExponential (rapid) vs. linear (gradual) acceleration
Morph_typemenuFrequencyHow the pattern evolves (see Morph Types above)

Tone & Effects

ParameterTypeDefaultDescription
Tone_durationreal0.1Length of each beat tone in seconds
Stereo_panbooleanYesDistribute beats across stereo field for spatial effect
Tip: Keep Pattern1_amp + Pattern2_amp ≤ 0.6 to prevent clipping. The script automatically scales peak to 0.9 at the end.

Outputs

The generated sound object remains in Praat's object list for further analysis, manipulation, or export.

Usage Examples

Example 1: Classic 3-Against-4 Polyrhythm

Pattern1_beats: 3
Pattern2_beats: 4
Total_cycles: 6
Acceleration_factor: 1.5
Exponential_acceleration: No
Morph_type: Frequency morph

Result: Traditional polyrhythm with gentle acceleration and evolving pitch relationships. Ideal for teaching basic polyrhythmic concepts.

Example 2: Extreme Acceleration Study

Pattern1_beats: 5
Pattern2_beats: 7
Total_cycles: 10
Acceleration_factor: 2.5
Exponential_acceleration: Yes
Morph_type: Random evolution
Stereo_pan: Yes

Result: Complex, rapidly accelerating pattern with unpredictable evolution. Useful for studying rhythm perception limits and creating experimental textures.

Example 3: Metric Modulation Demo

Pattern1_beats: 3
Pattern2_beats: 4
Total_cycles: 8
Acceleration_factor: 1.3
Exponential_acceleration: No
Morph_type: Rhythm morph
Tone_duration: 0.05

Result: Pattern 1 progressively adds beats (3→4→5→6...) while Pattern 2 stays constant. Demonstrates metric modulation and increasing complexity.

Example 4: Dynamic Crossfade

Pattern1_beats: 4
Pattern2_beats: 6
Pattern1_frequency: 220
Pattern2_frequency: 440
Morph_type: Amplitude morph
Total_cycles: 12
Acceleration_factor: 1.2

Result: Smooth crossfade from Pattern 1 to Pattern 2 across 12 cycles, with octave relationship between pitches. Pattern 1 fades out as Pattern 2 fades in.

Example 5: Research-Grade Analysis

Pattern1_beats: 7
Pattern2_beats: 11
Base_duration: 4.0
Total_cycles: 5
Acceleration_factor: 1.0
Exponential_acceleration: No
Morph_type: Frequency morph
Stereo_pan: No

Result: Complex prime-number polyrhythm (7:11) with no acceleration, ideal for rhythm perception research. Long base duration allows clear separation of beats.

Tips & Best Practices

Musical Applications

Research Applications

Technical Considerations