A module, held in its author's own repository.
tid
Timestamp-based ID
Properties
audioInputs
array
of
ref
#port
Required
Zero or more individually identified audio inputs.
audioOutputs
array
of
ref
#port
Required
No description available.
automation
array
of
ref
#automation
Optional
Scheduled AudioParam envelopes. Web Audio has no envelope node, so these are their own structure.
connections
array
of
ref
#connection
Required
No description available.
createdAt
string
datetime
Required
An RFC 3339 formatted timestamp.
description
string
Required
No description available.
maxLength: 3000 bytesdescriptionVersion
integer
Required
Version of the module description this record follows. A reader accepts any version at or below its own.
minimum: 1forkedFrom
ref
#lineage
Optional
No description available.
midiInputs
array
of
ref
#port
Required
Zero or more note inputs. A note input carries note events — what is played, and when — from any note source: a sequencer's note output, or the player, which is the on-screen keys, the computer keyboard and every MIDI device at once. "MIDI" is the historical name; nothing arriving here need have come from MIDI.
moduleId
string
Required
Stable identity shared by every published version of this module.
maxLength: 128 bytesname
string
Required
No description available.
maxLength: 200 bytesminLength: 1 bytesnodes
array
of
ref
#node
Required
No description available.
noteOutputs
array
of
ref
#port
Optional
Zero or more note outputs. A note output carries note events — what is played, and when — rather than a signal, so it is wired to another instance's note input (`midiInputs`) rather than to an audio input. A module that declares one is a source of what is played; a module that declares none is what plays it.
noteSource
string
Optional
What this module emits notes by, where it is not made of Web Audio nodes at all. A note source has no `nodes` and no `connections`: it produces note events, and the behaviour that produces them is named here rather than described, because there is no vocabulary of nodes for a thing that makes no sound. `range` emits none of its own: it passes on the notes wired into its input that fall inside the range its instance names (`noteRange` on the patch's instance), each still the note of whatever played it. `transpose` and `assign` emit none of their own either: they pass on every note wired into their input at another pitch — moved by the semitones the instance names (`transpose`), or at the one note it names (`assignedNote`) — each still the note of whatever played it, and starting and stopping when it did. `oneshot` emits none of its own either: it passes on every note wired into its input lasting as many milliseconds as the instance names (`noteLength`), however long whatever played it held it — each still the note of whatever played it, at its own pitch, and starting when it did. A reader that does not know the named behaviour cannot run the module, and says so rather than guessing.
maxLength: 64 byteskeyboard, sequencer, range, transpose, assign, oneshotparameters
array
of
ref
#parameter
Optional
No description available.
patternSource
string
Optional
What this module chooses a sequencer's loops by, where it is not made of Web Audio nodes at all. A pattern source emits neither sound nor notes: it is wired to a sequencer's pattern input and decides which of that sequencer's loops is played, and when. Like a note source it has no `nodes` and no `connections`, and its behaviour is named here rather than described. A module is a note source or a pattern source, never both. A reader that does not know the named behaviour cannot run the module, and says so rather than guessing.
maxLength: 64 bytesarranger, scenessampleSlots
array
of
ref
#sampleSlot
Optional
No description available.
versionKey
string
Optional
The record key this version is published under, repeated in the record so a reader holding only the record knows which version it is. A patch's `moduleRef.versionKey` is this value, and it is the record key a reader fetches: a record whose `versionKey` differs from its own key is pinned by the key and misdescribed by this field.
maxLength: 128 bytesView raw schema
{
"description": "A module, held in its author's own repository.",
"key": "tid",
"record": {
"properties": {
"audioInputs": {
"description": "Zero or more individually identified audio inputs.",
"items": {
"ref": "#port",
"type": "ref"
},
"type": "array"
},
"audioOutputs": {
"items": {
"ref": "#port",
"type": "ref"
},
"type": "array"
},
"automation": {
"description": "Scheduled AudioParam envelopes. Web Audio has no envelope node, so these are their own structure.",
"items": {
"ref": "#automation",
"type": "ref"
},
"type": "array"
},
"connections": {
"items": {
"ref": "#connection",
"type": "ref"
},
"type": "array"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"description": {
"maxLength": 3000,
"type": "string"
},
"descriptionVersion": {
"description": "Version of the module description this record follows. A reader accepts any version at or below its own.",
"minimum": 1,
"type": "integer"
},
"forkedFrom": {
"ref": "#lineage",
"type": "ref"
},
"midiInputs": {
"description": "Zero or more note inputs. A note input carries note events — what is played, and when — from any note source: a sequencer's note output, or the player, which is the on-screen keys, the computer keyboard and every MIDI device at once. \"MIDI\" is the historical name; nothing arriving here need have come from MIDI.",
"items": {
"ref": "#port",
"type": "ref"
},
"type": "array"
},
"moduleId": {
"description": "Stable identity shared by every published version of this module.",
"maxLength": 128,
"type": "string"
},
"name": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"nodes": {
"items": {
"ref": "#node",
"type": "ref"
},
"type": "array"
},
"noteOutputs": {
"description": "Zero or more note outputs. A note output carries note events — what is played, and when — rather than a signal, so it is wired to another instance's note input (`midiInputs`) rather than to an audio input. A module that declares one is a source of what is played; a module that declares none is what plays it.",
"items": {
"ref": "#port",
"type": "ref"
},
"type": "array"
},
"noteSource": {
"description": "What this module emits notes by, where it is not made of Web Audio nodes at all. A note source has no `nodes` and no `connections`: it produces note events, and the behaviour that produces them is named here rather than described, because there is no vocabulary of nodes for a thing that makes no sound. `range` emits none of its own: it passes on the notes wired into its input that fall inside the range its instance names (`noteRange` on the patch's instance), each still the note of whatever played it. `transpose` and `assign` emit none of their own either: they pass on every note wired into their input at another pitch — moved by the semitones the instance names (`transpose`), or at the one note it names (`assignedNote`) — each still the note of whatever played it, and starting and stopping when it did. `oneshot` emits none of its own either: it passes on every note wired into its input lasting as many milliseconds as the instance names (`noteLength`), however long whatever played it held it — each still the note of whatever played it, at its own pitch, and starting when it did. A reader that does not know the named behaviour cannot run the module, and says so rather than guessing.",
"knownValues": [
"keyboard",
"sequencer",
"range",
"transpose",
"assign",
"oneshot"
],
"maxLength": 64,
"type": "string"
},
"parameters": {
"items": {
"ref": "#parameter",
"type": "ref"
},
"type": "array"
},
"patternSource": {
"description": "What this module chooses a sequencer's loops by, where it is not made of Web Audio nodes at all. A pattern source emits neither sound nor notes: it is wired to a sequencer's pattern input and decides which of that sequencer's loops is played, and when. Like a note source it has no `nodes` and no `connections`, and its behaviour is named here rather than described. A module is a note source or a pattern source, never both. A reader that does not know the named behaviour cannot run the module, and says so rather than guessing.",
"knownValues": [
"arranger",
"scenes"
],
"maxLength": 64,
"type": "string"
},
"sampleSlots": {
"items": {
"ref": "#sampleSlot",
"type": "ref"
},
"type": "array"
},
"versionKey": {
"description": "The record key this version is published under, repeated in the record so a reader holding only the record knows which version it is. A patch's `moduleRef.versionKey` is this value, and it is the record key a reader fetches: a record whose `versionKey` differs from its own key is pinned by the key and misdescribed by this field.",
"maxLength": 128,
"type": "string"
}
},
"required": [
"descriptionVersion",
"moduleId",
"name",
"description",
"audioInputs",
"audioOutputs",
"midiInputs",
"nodes",
"connections",
"createdAt"
],
"type": "object"
},
"type": "record"
}