r/musicprogramming

▲ 11 r/musicprogramming+1 crossposts

Ngoma: a browser groovebox for tuned hand percussion and polymeters

https://preview.redd.it/jal22rn5lguh1.png?width=2670&format=png&auto=webp&s=b7b3a11b22288b8bb6295666bc77ee634fb2d8ac

I’ve been building Ngoma, a free drum machine that runs in the browser: https://ngoma.pages.dev

It’s built around hand percussion from real traditions: Afro-Cuban, West African, Brazilian, Middle Eastern, North Indian and Southern European rhythms, plus some electronic sketches. Each track can have its own length, so parts drift in and out of phase, Reich-style. You steer it more than you program it: roll the dice on one drum, add a variation, morph between two saved states. On top of the drums there are a few layers (pad, bass, lead (based on Mutable Plaits), texture) and patchable modulation (“wires”).

Some things under the hood that might interest this sub:

  • The drums are synthesized in Web Audio. The shakers and claps are physically informed models (after Cook’s PhISEM and the STK shakers), and the tabla voices are tuned to the near-harmonic modes of a real tabla.
  • Microtiming comes from research rather than a generic swing knob. The jembe feel follows Rainer Polak’s measurements, the samba feel follows Naveda et al. (2011).
  • Morph works across grids, so you can glide from a 12/8 bembé into a 16th-note son clave. During the morph the old grid keeps playing as a “ghost” until the new one takes over.
  • The lead has a tape looper built as an AudioWorklet.
  • Capture records the last bars as WAV plus MIDI of the hits that actually played, aligned to the bar line, so you can drop it straight into a DAW.
  • Share links store the whole set, with a small URL shortener on Cloudflare Pages Functions and KV.

To be upfront: I’m not a professional developer. I built this with a lot of AI-assisted coding. There’s no AI in the sound itself: every note comes from patterns, rules, randomness and whoever is playing.

To be upfront: I’m not a professional developer. I built this with a lot of AI-assisted coding. There’s no AI in the sound itself: every note comes from patterns, rules, randomness and whoever is playing.

Where I’d love your input:

  1. Glitches. Under load (especially with the pad on) I still get occasional dropouts. I’ve removed allocations from the audio thread and offer a “Stable” mode with a larger latencyHint. What else would you look at first?
  2. Morphing between grids. Is the ghost approach the right one, or would you gradually warp the timing instead?
  3. Feel. If you know any of these traditions, does the timing sit right? Where does it sound off?
  4. Getting lost. Where did you get stuck in the first five minutes?

It works best on desktop Chrome; mobile isn’t there yet. If you make something, hit “Share this set” and post the link. I’d love to hear what people do with it.

reddit.com
u/mumuancient — 6 days ago
▲ 7 r/musicprogramming+1 crossposts

🎉 REAPER-Notator is officially out!

Update to 1.5 for latest Hotfixes pls

Hey everyone!

After months of intensive development, planning and testing, I am super excited to present the official **REAPER-Notator Release**!

REAPER-Notator is a free, open-source, full-featured native music notation and engraving suite running directly inside Cockos REAPER via ReaImGui and standard SMuFL vector engraving (Bravura).

Instead of clumsy window switching, export-bridges, or clunky external apps, REAPER-Notator connects classical music engraving standards (*Elaine Gould / Behind Bars*, *Gardner Read*) directly to REAPER’s MIDI engine and CC automation.

### 🎼 Key Features

* **Standard-Compliant Music Engraving**:

* Crisp 60 FPS vector score canvas using Steinberg's SMuFL font (*Bravura*).

* Strict measure division (half-bar rule), automatic beam grouping with slope compensation, ledger lines, and accidental collision avoidance.

* Complex tuplets (triplets, quintuplets 5:4, sextuplets, septuplets, etc.) with automatic beam and bracket handling `[ n ]`.

* **16 Polyphonic Voices per Track & Auto-Voice**:

* Independent voices per track with distinct voice coloring, voice filtering, and ghost note rendering.

* **Auto-Voice** engine: Automatically splits overlapping polyphonic chords and counterpoint into separate voices with proper stem directions (Voice 1 stems up, Voice 2 stems down) – track-wide or on selection.

* **Score-Wide Vertical Fermatas (v1.4.1)**:

* 4 SMuFL fermata types: Standard, Short (triangular), Long (square), and Very Long (double arc).

* True score-wide vertical alignment across all staves.

* Non-destructive **Tempomap Slowdown Coupling**: Smoothly dips the project tempo during playback (1.25x–3.0x) and automatically restores it.

* **Interactive Rehearsal Marks & Navigation**:

* Rehearsal Marks ([A], [B], [C]... or [1], [2], [3]...) with automatic chronological re-sequencing.

* **Interactive Drag & Drop** directly along the Rehearsal Lane with real-time snap guides and measure downbeat targeting.

* Dedicated navigation symbols: *Da Capo* (D.C. / D.C. al Fine), *Dal Segno* (D.S. / D.S. al Coda), *Segno*, *Coda*, and *Fine*.

* **Dynamic Automation & CC Expression Curves**:

* Dynamic markings ($ppp$ through $fff$) automatically generate matching CC1 (Modulation), CC11 (Expression), and CC7 (Volume) curves.

* Hairpins ($crescendo$ / $diminuendo$) with linear and exponential curves.

* Asymmetric **Bow Swell** curve generator with adjustable peak positions.

* **Arpeggiated Chords & Micro-Strumming**:

* Authentic wavy line engraving (upward and downward with arrowheads).

* Non-destructive micro-strumming playback offset (15–30 ms) to emulate authentic harp, guitar, and keyboard strumming.

* **Rearticulate 2-Way Integration & Articulations Drawer**:

* Seamless two-way integration with [**Rearticulate**](https://reaticulate.com/) ([GitHub](https://github.com/jtackaberry/reaticulate)) bank files – assign key switches, techniques, and program changes directly from the score palette.

* **Chord & Scale Lane**:

* Automatic lead-sheet parsing (e.g. `Am7`, `Cmaj9`, `G7(b9)`, `D dorian`), scale snapping, and batch transposition.

* **Orchestral Pattern Browser**:

* Built-in browser with **1,050 orchestral, string, and harp patterns** across 8 categories with 1-click audio preview and drag-and-drop insertion.

* **Full MusicXML 4.0 & Vector PDF 1.4 Export**:

* Lossless two-way **MusicXML 4.0** import and export (tracks, voices, chords, fermatas, dynamics, rehearsal marks, text items).

* Native pure-Lua **Vector PDF Export** with title page, orchestrator notes, and 5-bar paginated score pages.

---

### 📦 Installation via ReaPack (Recommended)

  1. Open REAPER and ensure you have **ReaPack** and **ReaImGui** installed.
  2. Go to `Extensions` → `ReaPack` → `Import a repository...` and paste: https://raw.githubusercontent.com/A-intheCode/ReaperNotator/main/index.xml
  3. Open `Browse packages...`, search for `REAPER-Notator`, right-click → **Install**, and hit **Apply**.
  4. In the REAPER Action List (`?`), run: `reaper_native_notator.lua`.

---

🔗 **Links & Resources:**

• **REAPER-Notator GitHub:** https://github.com/A-intheCode/ReaperNotator

• **Rearticulate Website:** https://reaticulate.com/

• **Rearticulate GitHub:** https://github.com/jtackaberry/reaticulate

Feel free to try it out, report any feedback or feature requests, and let me know how it fits into your scoring workflow!

youtu.be
u/AMusicstuff — 11 days ago