SAMPLER.LIKE.AUDIO Bringing Hardware Sampler Soul to the Web Browser

SAMPLER.LIKE.AUDIO

Bringing Hardware Sampler Soul to the Web Browser

The Web Sampler & Sequencer is a fully-featured, open-source drum machine designed to run entirely within a modern web browser. By bridging the tactile workflow of classic beat-making hardware with the accessibility of modern web APIs, it offers a robust music production experience directly from a web browser.

Here is a breakdown of what makes this project technically unique and how it faithfully honors its hardware roots.

What Makes It Unique

The application stands out due to its radical approach to software architecture and browser integration, prioritizing transparency and local execution over cloud dependencies.

  • Zero-Dependency Architecture: The app requires no backend server, no Node.js environment, and no build tools like Webpack.

  • Direct Local File Access: It utilizes the File System Access API on Chromium-based browsers to let users browse and load samples directly from a local computer folder.

  • Absolute Privacy: Because it runs entirely client-side, the app never uploads a user’s audio files or patterns to a remote server.

  • Custom Legacy Audio Decoding: Alongside standard native Web Audio API formats (WAV, MP3, OGG, FLAC), it features a custom pure-JavaScript decoder for AIFF/AIFC files, which are common in vintage sample libraries.

  • Offline Independence: A built-in service worker caches the application shell and libraries, allowing the sampler to function completely offline after the initial load.

  • Transparent Codebase: The source code adheres to a strict philosophy where no individual file exceeds 200 lines.

  • No Compilation Needed: The app runs React natively in the browser via standalone Babel, meaning anyone can “View Source,” edit the code in a text editor, and refresh the page to see changes immediately.

Faithfulness to Hardware Samplers

Despite running in a web browser, the application meticulously recreates the physical feel and workflow limitations that made classic hardware samplers so intuitive.

  • Classic MPC Layout: The interface is built around a traditional 4×4 grid of 16 drum pads.

  • Mouse-Based Velocity: It simulates physical velocity sensitivity by calculating how close the user clicks to the exact center of a pad.

  • Plug-and-Play MIDI: The Web MIDI API allows users to plug in class-compliant USB controllers (like an Akai MPD) to finger-drum immediately with real velocity capture.

  • Tone Mode: By holding CTRL and clicking a pad, users can map a single sample chromatically across all 16 pads to sequence melodies and basslines.

  • Advanced Step Sequencing: The sequencer mimics classic hardware parameters, offering granular, per-step control over velocity, panning, pitch, and swing (shuffle).

  • Analog-Modeled Synthesis: When no sample is loaded on a pad, the app falls back on custom synthesis engines designed to strip acoustic percussion down to its physics—such as modeling the thump of a kick drum or the high-pass filtered noise of a snare wire.

Feature Translation: Hardware vs. Web

Hardware Concept Web Sampler Implementation
Internal Memory

Saves kits, favored samples, and patterns locally using browser localStorage and IndexedDB.

Sample Browsing

Recursively scans local directories to build a searchable, visual waveform grid.

Pattern Chaining

Provides 4, 8, 16, 32, and 64-step pattern options that can be managed in a dedicated Song tab.

Mixer Console

Features a dedicated mixer view with per-track volume, panning, and a shared reverb bus.

Rust Headless 96kHz Audio Console

Architecting a Scalable, Headless Audio Console in Rust

In the world of professional audio—spanning broadcast, cinema, and large-scale live events—the mixing console is the heart of the operation. Traditionally, these have been massive hardware monoliths. Today, however, the industry is shifting toward headless, scalable audio engines that run on standard server hardware, controlled remotely by software endpoints.

This article proposes the architecture for Titan-96k, a scalable, 32-bit floating-point audio mixing engine written in Rust. It is designed to handle everything from a simple podcast setup to complex 7.1.4 immersive audio workflows, controlled entirely via MQTT.

Continue reading

Why Audio Interoperability Thrives on the Most Common Commonality

Beyond the “Lowest Common Denominator”: Why Audio Interoperability Thrives on the Most Common Commonality

In the complex symphony of modern technology, where devices from countless manufacturers strive to communicate, audio interoperability stands as a crucial pillar. From our headphones and smartphones to professional recording studios and live event setups, the ability for sound to flow seamlessly between disparate systems is not just convenient – it’s essential. While the concept of a “lowest common denominator” might seem like a pragmatic approach to achieving universal compatibility, in the world of audio interoperability, it is the pursuit of the “most common commonality” that truly unlocks value and drives innovation. Continue reading

Vigital – definition – Vigital Audio

Vigital (adj.) – A blend of vintage and digital, referring to obsolete or outdated digital technology that has been revived due to nostalgia, affordability, or unique aesthetic and functional qualities. While not the latest or most advanced, vigital tech holds value for enthusiasts who appreciate its historical significance, distinctive characteristics, or cost-effectiveness compared to modern alternatives.

“That synth is vigital.”
“Vigital consoles are sweet”

“Like the Vigital spx90… what it lacks in depth, it makes up for in brittleness and nastalgia”

Arduino sketch – keyboard keys pressed with gpi

#include KEYBOARD.h

const int F9_PIN = 2;
const int F10_PIN = 3;
const int F9_LED_PIN = 4;
const int F10_LED_PIN = 5;

void setup() {
Keyboard.begin();
pinMode(F9_PIN, INPUT_PULLUP);
pinMode(F10_PIN, INPUT_PULLUP);
pinMode(F9_LED_PIN, OUTPUT);
pinMode(F10_LED_PIN, OUTPUT);
}

void loop() {
if (digitalRead(F9_PIN) == LOW) {
Keyboard.press(KEY_F9);
digitalWrite(F9_LED_PIN, HIGH);
delay(100);
Keyboard.release(KEY_F9);
digitalWrite(F9_LED_PIN, LOW);
}

if (digitalRead(F10_PIN) == LOW) {
Keyboard.press(KEY_F10);
digitalWrite(F10_LED_PIN, HIGH);
delay(100);
Keyboard.release(KEY_F10);
digitalWrite(F10_LED_PIN, LOW);
}
}

Arduino Project – Digitally Controlled Analog Surround Sound Panning – Open Source

For your enjoyment:

Digitally Controlled Analog Surround Sound Panning

 

Presentation:

 

Circuit Explination:

 

Presentation documents:

0 – TPJ – Technical Presentation

0 – TPJ556-FINAL report DCASSP-COMPLETE

0 – TPJ556-FINAL report DCASSP-SCHEMATICS V1

 

 

Project Source Code:

Continue reading

GREEN HOME MONITORING SYSTEM

Title: GREEN HOME MONITORING SYSTEM – TRANSMITTER
Author: ANTHONY P KUZUB
DATE: 2015 04 01
Description:

REMOTE MONITORING TRANSMITTER

The GREEN HOME MONITORING SYSTEM controls, monitors then transmits the
status of three room lights to a remote monitoring station.

The code below is the local control and transmitter

Three light switches along with motion sensors control the functionality
of the rooms lights.

When the system is enabled:
The light turns on When motion is detected.
Once motion is detected a five second counter Starts.
If motion is not detected within the five seconds The light shut
off saving power.

When the system is disabled:
The light switch controls The light Directly.

A Peak Power cost value is captured based on the time of day.
To Test this feature: apply a slowly 10mHz Sine wave 1.25
Vpp with offset of 0.625V offset to TP7

This moving sine wave is converted to digital by means of A/D convertor

This power cost value is displayed on the segment display
Indicating the value of power throughout the day.

The Status of The System state, switch position, motion detection, Light
status, and Energy cost, are transmitted to a remote monitoring station
via serial port 1.

 

0 - main 1- ZeroVariables 2 - DefineHardware 3 - SystemEnableCheck 4 - Power Sample 5 - Room 1 Check 6 - Room 2 Check 7 - Room 3 Check 8 - EncodeTransmissionData 9 - Transmit 10 - Diagnostics

 

 

TRANSMIT TRUTH TABLE

 

Title: GREEN HOME MONITORING SYSTEM – RECEIVER
Author: ANTHONY P KUZUB
DATE: 2015 04 01
Description:

The GREEN HOME MONITORING SYSTEM controls, monitors then transmits the
status of three room lights to a remote monitoring station.

The code below is the remote monitoring station

This program receives 2 bytes of data from the transmitter through
Serial port 1. The data is decoded and displayed on a screen by access
of serial port 2 of the controller.

A workstations TERMINAL session connects a a com port to the hardware receiver.

SESSION CONFIGURATION:
BAUD RATE: 9600
DATA BITS: 8
PARITY: NONE
FLOW CONTROL: NONE
EMULATION: ANSI

The Status of the system, switch positions, motion detection, Light status,
and Energy PEAK VALUE displayed on the terminal screen.

Screen Layout

A Changing Peak Power cost is applied proportionaly to room cost acumulators.

By Pressing the respective key on the terminal keyboard, the rooms cost will
reset to zero.

Please note that with the exception of the push buttons all states are
ACTIVE HIGH

 

0 - main 1 - ZeroVariable 2 - Initialize Devices 3 - Paint Screen 4 - Receive 5 - DecodeReceivedData 6 - KeyboardCheck 7 - ScreenUpdateStatus 8 - ScreenUpdateLight 9 - ScreenUpdateCost 10 - scr_writech 11 - KeyPress 12 - Diagnostics

 

sound guy xmas!!! Day 1 – Syscomp Curve Tracer

Xmas is around the corner.  Sound guys and gals are the hardest people in the world to shop for… I will be posting a stream of gift ideas!

Day 1:  The Syscomp CTR-101 Curve tracer:

Key Features
-Plots device characteristics for diodes, transistors, MOSFETs, JFETs, and more!
-Up to 30V test voltage at 1A test current
-True voltage and current source drive ampliers
-High resolution measurements
-Pulsed test mode to minimize device dissipation
-Auto-scaling real-time plotting during analysis
-Sample-by-sample power and current limiting
-Open-source software
Screen Shot 2014-11-23 at 6.39.01 PM
 – Screen Shot 2014-11-29 at 9.54.14 AM