bluebox
bluebox · sourcesDTMF dialer with phreaker buttons. 12-key phone keypad — digits 0-9 emit the Bell-System dual-tone pair (row + col, e.g. "5" → 770 Hz + 1336 Hz); BLUEBOX emits a single 2600 Hz sine (the AT&T in-band supervisory tone that 1970s phreakers used to seize long-distance trunks); REDBOX emits 1700 + 2200 Hz summed (the US payphone coin-acceptance pair). Each key is push-to-talk — pointerdown on the card OR a gate cable into the matching gate_<name> input holds the key down. Multiple held keys sum, and shared frequencies (e.g. "1" and "4" both pull col=1209) collapse onto a single shared phase accumulator so simultaneous presses produce a louder tone, not a flam — and a LOUDER one than a pair that shares nothing (1+4 beats 1+5 by 1.76 dB). No musical AD you can dial — bare on/off sines through a one-pole anti-click ramp (τ ≈ 1 ms), inaudibly fast on the way up and about 15 ms to silence on release. The mono sum is scaled by 1/4: one digit sits 18 dB below full scale, eight simultaneous digits reach it, and all twelve keys overshoot by about 2.5 dB.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
gate_1 | gate | Hold gate for digit 1: while the level is high this digit's Bell dual tone (697 Hz + 1209 Hz) plays, stopping on the falling edge. ORs with the on-card "1" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_2 | gate | Hold gate for digit 2 (keypad letters ABC): while the level is high this digit's Bell dual tone (697 Hz + 1336 Hz) plays, stopping on the falling edge. ORs with the on-card "2" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_3 | gate | Hold gate for digit 3 (keypad letters DEF): while the level is high this digit's Bell dual tone (697 Hz + 1477 Hz) plays, stopping on the falling edge. ORs with the on-card "3" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_4 | gate | Hold gate for digit 4 (keypad letters GHI): while the level is high this digit's Bell dual tone (770 Hz + 1209 Hz) plays, stopping on the falling edge. ORs with the on-card "4" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_5 | gate | Hold gate for digit 5 (keypad letters JKL): while the level is high this digit's Bell dual tone (770 Hz + 1336 Hz) plays, stopping on the falling edge. ORs with the on-card "5" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_6 | gate | Hold gate for digit 6 (keypad letters MNO): while the level is high this digit's Bell dual tone (770 Hz + 1477 Hz) plays, stopping on the falling edge. ORs with the on-card "6" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_7 | gate | Hold gate for digit 7 (keypad letters PQRS): while the level is high this digit's Bell dual tone (852 Hz + 1209 Hz) plays, stopping on the falling edge. ORs with the on-card "7" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_8 | gate | Hold gate for digit 8 (keypad letters TUV): while the level is high this digit's Bell dual tone (852 Hz + 1336 Hz) plays, stopping on the falling edge. ORs with the on-card "8" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_9 | gate | Hold gate for digit 9 (keypad letters WXYZ): while the level is high this digit's Bell dual tone (852 Hz + 1477 Hz) plays, stopping on the falling edge. ORs with the on-card "9" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_0 | gate | Hold gate for digit 0: while the level is high this digit's Bell dual tone (941 Hz + 1336 Hz) plays, stopping on the falling edge. ORs with the on-card "0" key — either path holds it down. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). Keys that share a frequency collapse onto one phase accumulator inside the worklet, so two simultaneous presses of frequency-sharing digits make a single louder tone rather than two beating oscillators. gate / trigger |
gate_bluebox | gate | Hold gate for the BLUEBOX key: while the level is high the single 2600 Hz supervisory sine plays, and it stops on the falling edge. ORs with the on-card BLUEBOX button — either source can hold the tone open. Level-sensitive, not edge-triggered: the worklet reads the LEVEL every sample and detects no edge anywhere. There is no musical envelope you can dial — just a one-pole anti-click ramp (τ ≈ 1 ms) that is inaudibly fast on the way up and takes about 15 ms to reach silence on release. gate / trigger |
gate_redbox | gate | Hold gate for the REDBOX key: while the level is high the 1700 Hz + 2200 Hz coin-tone pair plays and it stops on the falling edge. ORs with the on-card REDBOX button. Level-sensitive, not edge-triggered — the worklet reads the level, never an edge. No musical envelope: a one-pole anti-click ramp only (τ ≈ 1 ms up, about 15 ms to silence on release). gate / trigger |
outputs
| id | cable | what it does |
|---|---|---|
out | audio | Mono sum of every currently-held key. With nothing held it is silent; each held digit/phreaker key adds its tone(s) (frequency-sharing keys reinforce on a shared oscillator rather than detuning against each other). Patch it into a mixer, an effect, or straight to the output. audio signal |
params
| id | label | range | default | curve |
|---|---|---|---|---|
btn_1 | 1 | 0..1 | 0 | linear |
btn_2 | 2 | 0..1 | 0 | linear |
btn_3 | 3 | 0..1 | 0 | linear |
btn_4 | 4 | 0..1 | 0 | linear |
btn_5 | 5 | 0..1 | 0 | linear |
btn_6 | 6 | 0..1 | 0 | linear |
btn_7 | 7 | 0..1 | 0 | linear |
btn_8 | 8 | 0..1 | 0 | linear |
btn_9 | 9 | 0..1 | 0 | linear |
btn_0 | 0 | 0..1 | 0 | linear |
btn_bluebox | BLUEBOX | 0..1 | 0 | linear |
btn_redbox | REDBOX | 0..1 | 0 | linear |
controls
| control | what it does |
|---|---|
| Bluebox tonebank {n} | THE TONE BANK — ten bars, one per oscillator, and the picture of what this module actually is. There is no oscillator per key: there is ONE fixed bank of ten sines (the four DTMF rows 697/770/852/941, the three columns 1209/1336/1477, and 1700 / 2200 / 2600), and a held key raises the target amplitude of each frequency it lights by a quarter. That word "raises" is the module: two keys that share a tone drive ONE bar twice as hard instead of running two independent voices, which is why holding 1 and 4 (both pull column 1209) is 1.76 dB louder than holding 1 and 5 — even though both hold two keys, both make four tone activations, and both peak at the same level. A bar carrying more than one held key is marked with its count, so the stacking is labelled rather than inferred, and every bar is outlined to its CAPACITY — how many keys could ever light it — so column 1336 reads as the tall one (2, 5, 8 and 0 all pull it) before anything is pressed. The bars are tinted by band: DTMF rows, DTMF columns, and the in-band tones that belong to no digit at all. The vertical scale is FIXED at four keys, the most any one slot can stack, so a bar growing is a bar growing rather than the axis rescaling under your hand. The label button flips the captions between each oscillator's frequency and the keys that light it, which is the Bell grid read backwards and the direct answer to "why did those two stack"; it is a display setting, private to your screen, not shared with the rackspace and not saved with the patch. Every height is computed from the live key state through the worklet's own frequency table, so it is the target the bank is heading for rather than an analyser reading. It does NOT move while you hold a key down on the faceplate or drive one from a gate cable: a momentary press writes only the audio engine and a gate is an audio-rate input, so neither is visible to any host-side reader — the bank lights when the keys are set durably (an instrument or group bar, a MIDI-mapped control, an automation lane, a preset recall, or the classic card). |
| 0 | Digit 0 (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (941 Hz + 1336 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 1 | Digit 1 (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (697 Hz + 1209 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 2 | Digit 2 (keypad letters ABC) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (697 Hz + 1336 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 3 | Digit 3 (keypad letters DEF) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (697 Hz + 1477 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 4 | Digit 4 (keypad letters GHI) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (770 Hz + 1209 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 5 | Digit 5 (keypad letters JKL) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (770 Hz + 1336 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 6 | Digit 6 (keypad letters MNO) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (770 Hz + 1477 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 7 | Digit 7 (keypad letters PQRS) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (852 Hz + 1209 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 8 | Digit 8 (keypad letters TUV) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (852 Hz + 1336 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| 9 | Digit 9 (keypad letters WXYZ) (held = 1, released = 0): plays the Bell-System dual tone for this keypad position (852 Hz + 1477 Hz). Held by the on-card key or by a gate into the matching gate input; multiple held keys sum into the single mono OUT. |
| BLUEBOX | The BLUEBOX key (held = 1, released = 0): plays a single 2600 Hz sine — the in-band supervisory tone AT&T used on long-distance trunks, the basis of the 1970s blue-box phreaking lineage. Held by the on-card button or by a gate patched into BLUEBOX in; multiple held keys sum. |
| REDBOX | The REDBOX key (held = 1, released = 0): plays 1700 Hz + 2200 Hz together — the US payphone coin-acceptance tone pair. Held by the on-card button or by a gate patched into REDBOX in; sums with any other held keys. |
source
bluebox.ts on GitHub.