{
  "$type": "at.atmosynth.module",
  "descriptionVersion": 1,
  "moduleId": "noise",
  "versionKey": "1",
  "name": "White noise",
  "description": "Every frequency at once and none of them held: the source behind wind, waves, breath, and most of a snare or a hi-hat. It is not pitched, so a note does not move it — shape it with an envelope for a hit, or leave it running underneath. Tone takes the top off it, wide open by default. This is the one module in the library that carries code: no node in the description makes a random signal, so the generator is eleven lines of an audio processor and everything after it is ordinary nodes.",
  "audioInputs": [],
  "audioOutputs": [
    {
      "id": "out",
      "label": "Out"
    }
  ],
  "midiInputs": [],
  "nodes": [
    {
      "id": "gen",
      "kind": "audioWorklet",
      "options": {
        "code": "// White noise, a sample at a time: the one thing the node vocabulary cannot\n// make out of the nodes it has, so it is the only part written as code.\nclass AtmosynthNoise extends AudioWorkletProcessor {\n  process(inputs, outputs) {\n    for (const channel of outputs[0]) {\n      for (let index = 0; index < channel.length; index += 1) {\n        channel[index] = Math.random() * 2 - 1;\n      }\n    }\n    return true;\n  }\n}\n\nregisterProcessor('atmosynth-noise', AtmosynthNoise);\n",
        "declaredParams": [],
        "numberOfInputs": 0,
        "numberOfOutputs": 1,
        "processorName": "atmosynth-noise"
      }
    },
    {
      "id": "tone",
      "kind": "biquadFilter",
      "options": {
        "type": "lowpass"
      }
    },
    {
      "id": "out",
      "kind": "moduleOutput",
      "options": {
        "output": "out"
      }
    }
  ],
  "connections": [
    {
      "from": {
        "node": "gen",
        "output": 0
      },
      "to": {
        "node": "tone",
        "input": 0
      }
    },
    {
      "from": {
        "node": "tone",
        "output": 0
      },
      "to": {
        "node": "out",
        "input": 0
      }
    }
  ],
  "automation": [],
  "parameters": [
    {
      "id": "tone",
      "label": "Tone (Hz)",
      "range": {
        "min": "20",
        "max": "20000"
      },
      "default": "20000",
      "targets": [
        {
          "node": "tone",
          "param": "frequency"
        }
      ]
    }
  ],
  "sampleSlots": [],
  "createdAt": "2026-08-29T00:00:00.000Z"
}