Cuaderno de laboratorio · vol. I

Generador de Trazos Sonoros — Síntesis Algorítmica y Diseño Sonoro

Un aparato para imaginar pequeños acontecimientos sonoros. Cada pulsación explora docenas de variantes por síntesis algorítmica — aditiva, FM, granular, modal, caótica, Karplus-Strong, texturas de ruido filtrado — encadenadas con waveshaping, delays con realimentación, difusión allpass y reverberación por FDN. Un curador interno descarta lo insulso y presenta sólo lo memorable.

Duración: 5–10 s por gesto
Motor: DSP nativo (boceto) · Csound WASM (HQ)
Export: WAV 32-bit float
Datos: 100% local (IndexedDB)
Sintetizador Csound · construcción explícita

Cómo se construye el sonido

Motor de render: Csound WebAssembly · render offline HQ · 96 kHz · 32-bit float · estéreo
Azar · tres niveles acotados
Global (todas las zonas)
⚄· fino (misma identidad) · ⚄·· amplio (otro carácter) · ⚄··· extremo (puede cambiar ondas, filtro y efectos). Cada paso tiene su propia botonera; lo bloqueado nunca se toca.
Estado del sonidopersonalizado
Duración
8.0 s
Envolvente
Sostenida · A 0.080 s · D 0.300 s · S 80 % · R 0.900 s
Osciladores
Saw + Triangle · fund. 220 Hz · unísono ×1
Filtro
Low Pass 1800 Hz · Q 0.20 · drive 15 %
Modulación
sin modulación
Efectos
Reverb 28 % (2.0 s) · Stereo width 1.10×
Espectro · armónicos producidoslínea roja = ahora · línea gris = render anterior (A/B)

Todavía no hay análisis. Usá la prueba rápida o renderizá el sonido para ver los armónicos.

Csound no es tiempo real: la prueba corta comprime la envolvente y renderiza en fracciones de segundo.
Longitud del sonido8.0 s
Duración total del evento (la cola de reverb/delay se agrega después).
Bloquear · el azar no toca lo bloqueado
✦ Sugerencias extrañas para este paso

Ataque medio y nivel de sustain alto y estable.

Attack — Tiempo desde el silencio hasta el nivel máximo.Attack0.080 s
Decay — Caída desde el máximo hasta el nivel de sustain.Decay0.300 s
Sustain — Nivel sostenido mientras dura el evento (amplitud, no tiempo).Sustain80 %
Release — Tiempo de extinción final tras el sustain.Release0.900 s
A 0.080 s · D 0.300 s · S 80 % durante 6.72 s · R 0.900 s
Azar global
Serie de variantes · misma base sonora

Explora entre 6 y 12 versiones del patch actual variando solo valores continuos (frecuencia, detune, cutoff, tiempos de envolvente, profundidades de modulación y mezclas de efectos). La estructura —tipos de onda, tipo de filtro y efectos activos— no cambia, y los grupos bloqueados quedan intactos. Después conserva las mejores 6 a 8 según curaduría MMR (calidad + diversidad).

Variantes exploradas8
Variantes conservadas6
Grado de variación14 %
✦ Dosis de rareza55 %
Probabilidad de que cada variante active ring mod, sample & hold, FM feedback, bitcrush, shifter o granular.
Ver parámetros Csound
{
  "version": 1,
  "durationSec": 8,
  "baseFreq": 220,
  "envelope": {
    "shape": "sostenida",
    "attack": 0.08,
    "decay": 0.3,
    "sustain": 0.8,
    "release": 0.9
  },
  "oscillators": [
    {
      "type": "saw",
      "on": true,
      "level": 0.7,
      "detuneCents": 0,
      "octave": 0
    },
    {
      "type": "triangle",
      "on": true,
      "level": 0.4,
      "detuneCents": 7,
      "octave": 0
    },
    {
      "type": "sine",
      "on": false,
      "level": 0.3,
      "detuneCents": 0,
      "octave": -1
    },
    {
      "type": "noise",
      "on": false,
      "level": 0.15,
      "detuneCents": 0,
      "octave": 0
    }
  ],
  "unison": 1,
  "filter": {
    "type": "lowpass",
    "cutoff": 1800,
    "resonance": 0.2,
    "drive": 0.15,
    "envAmount": 0.35,
    "lfoAmount": 0,
    "lfoRate": 0.4
  },
  "modulation": {
    "vibratoRate": 5,
    "vibratoDepth": 0,
    "tremoloRate": 4,
    "tremoloDepth": 0,
    "fmRatio": 2,
    "fmIndex": 0,
    "ringRatio": 1.5,
    "ringDepth": 0,
    "shRate": 6,
    "shDepth": 0,
    "fmFeedback": 0
  },
  "effects": {
    "reverb": {
      "on": true,
      "mix": 0.28,
      "size": 2
    },
    "delay": {
      "on": false,
      "mix": 0.18,
      "time": 0.24,
      "feedback": 0.3
    },
    "chorus": {
      "on": false,
      "depth": 0.4,
      "rate": 0.6
    },
    "distortion": {
      "on": false,
      "amount": 0.3
    },
    "saturation": {
      "on": false,
      "amount": 0.3
    },
    "pan": {
      "on": false,
      "position": 0
    },
    "width": {
      "on": true,
      "amount": 1.1
    },
    "bitcrush": {
      "on": false,
      "bits": 8,
      "downsample": 4
    },
    "freqShift": {
      "on": false,
      "hz": 55,
      "mix": 0.4
    },
    "granular": {
      "on": false,
      "mix": 0.35,
      "grainMs": 60,
      "spray": 0.5
    }
  },
  "locks": {
    "envelope": false,
    "oscillators": false,
    "filter": false,
    "modulation": false,
    "effects": false,
    "duration": true
  },
  "presetId": null
}
Ver código Csound
<CsoundSynthesizer>
<CsOptions>
-o trazo_render.wav -W -f -r 96000
</CsOptions>
<CsInstruments>

sr      = 96000
ksmps   = 32
nchnls  = 2
0dbfs   = 1

; ---- Tablas de onda (band-limited, GEN10) ----
giSine ftgen 1, 0, 16384, 10, 1
giTri  ftgen 2, 0, 16384, 10, 1, 0, 0.111, 0, 0.04, 0, 0.0204, 0, 0.0123
giSaw  ftgen 3, 0, 16384, 10, 1, 0.5, 0.333, 0.25, 0.2, 0.166, 0.142, 0.125, 0.111, 0.1, 0.0909, 0.0833
giSqr  ftgen 4, 0, 16384, 10, 1, 0, 0.333, 0, 0.2, 0, 0.142, 0, 0.111, 0, 0.0909
giPul  ftgen 5, 0, 16384, 10, 1, 0.95, 0.9, 0.85, 0.8, 0.72, 0.64, 0.56, 0.48, 0.4, 0.32, 0.24
giHann ftgen 6, 0, 16384, 20, 2, 1

instr 1
  iBase = 220.0000

  ; ---------- PASO 1 · Envolvente ADSR ----------
  aEnv linseg 0, 0.08000, 1, 0.30000, 0.80000, 6.72000, 0.80000, 0.90000, 0, 2.20000, 0
  kEnv linseg 0, 0.08000, 1, 0.30000, 0.80000, 6.72000, 0.80000, 0.90000, 0, 2.20000, 0

  ; ---------- PASO 4 · Modulación ----------
  kLfo   poscil 1, 0.40000, giSine
  kSh    randomh -1, 1, 6.000
  kVib   poscil 0.000, 5.00000, giSine
  kFreq  = iBase * cent(kVib + kSh * 0.000)
  aFmFb  poscil 0.000, 440.308, giSine
  aFm    poscil 0.000, 440.000 + aFmFb, giSine
  kTrem  poscil 1, 4.00000, giSine

  ; ---------- PASO 2 · Osciladores / fuente sonora ----------
  aO1  poscil 0.70000, (kFreq * 1.000000) + aFm, giSaw
  aO2  poscil 0.40000, (kFreq * 1.004052) + aFm, giTri
  aOsc = (aO1 + aO2) * 0.77273



  ; ---------- PASO 3 · Filtro y modificación tímbrica ----------
  aDrv distort1 aOsc, 0.30000, 0.4, 0, 0
  aDrv = aOsc * 0.85000 + aDrv * 0.15000
  kCutRaw = 1800.00 * (1 + 0.35000 * kEnv + 0.00000 * kLfo + 0.00000 * kSh)
  kCut limit kCutRaw, 30, 18000
  aFlt moogladder aDrv, kCut, 0.20000

  ; Trémolo (amplitud) + envolvente
  aBody = aFlt * aEnv * (1 - 0.00000 * 0.5 * (1 + kTrem))

  aL = aBody
  aR = aBody

  ; ---------- PASO 5 · Efectos ----------
  ; Reverb (reverbsc)
  aRvL, aRvR reverbsc aL, aR, 0.71000, 12000, sr, 0.5
  aL = aL * 0.72000 + aRvL * 0.28000
  aR = aR * 0.72000 + aRvR * 0.28000
  ; Stereo width (M/S)
  aMid = (aL + aR) * 0.5
  aSide = (aL - aR) * 0.5 * 1.10000
  aL = aMid + aSide
  aR = aMid - aSide

  outs aL * 0.8, aR * 0.8
endin

</CsInstruments>
<CsScore>
i1 0 10.2000
e 0.20
</CsScore>
</CsoundSynthesizer>
Ejemplos públicos

Escuchá muestras del laboratorio

Podés escuchar libremente. Para generar tus propios trazos, guardar en biblioteca o usar el Sampler, iniciá sesión.
Cargando ejemplos…