Skip to content

Presets Browser

The Presets Browser provides quick access to bundled NeuroScript examples and user-created presets, making it easy to explore MIDI transforms without starting from scratch.

Opening the Presets Browser

In Route Editors:

  1. Create or edit a route with a NeuroScript transform
  2. Click the "Browse Examples" button (book icon) in the script editor
  3. The Presets Browser opens as a sheet

The browser displays all available presets organized by category, with search and filtering capabilities.

Preset Sources

Bundled Presets

Shipped with Neurode MIDI, located in Resources/Presets/Examples/.

  • Artifact-backed - Stored as .nssigned artifacts with embedded NeuroScript source
  • Source-first in the browser - The browser opens the embedded source into the editor
  • Verification-aware - Signed compiled fallback handling still depends on the current signing readiness and security policy
  • Examples - Demonstrate language features and common patterns
  • Read-only - Cannot be modified (but can be duplicated to user presets)

Categories include:

  • Filters - Drop unwanted events (drum filtering, CC noise reduction)
  • Transforms - Modify events (transposition, velocity scaling, channel remapping)
  • Routing - Advanced routing logic (keyboard splits, multi-destination routing)
  • Effects - MIDI effects (echo, stutter, arpeggiation)
  • Examples - Teaching examples for language features

User Presets

Created by you, stored in ~/Library/Application Support/NeurodeMIDI/Presets/.

  • Unsigned - No signature verification (trust your own code)
  • Editable - Full control over content
  • Discoverable - Automatically detected and shown in browser
  • Exportable - Share with other users or back up to cloud storage

To create a user preset:

  1. Write a NeuroScript transform you want to save
  2. Save the file to ~/Library/Application Support/NeurodeMIDI/Presets/
  3. Use .ns extension (e.g., my-transform.ns)
  4. Reopen the Presets Browser to see it appear

Naming conventions:

category-name-description.ns

Examples:

  • filter-drums-kick-snare-only.ns
  • transform-transpose-octave-doubler.ns
  • effect-echo-two-taps.ns

Browsing Presets

Category Filtering

Tap category pills at the top to filter by category:

  • All - Shows all presets (default)
  • Filters, Transforms, Routing, Effects, Examples - Bundled categories
  • User - Shows only your user presets

Active category is highlighted with accent color.

Use the search field to find presets by:

  • Name - Preset title
  • Description - Preset description text
  • Tags - Metadata tags (e.g., "velocity", "channel", "transpose")

Search is case-insensitive and matches partial words.

Example searches:

  • velocity - Finds all presets that manipulate velocity
  • channel - Finds channel filtering/routing presets
  • transpose - Finds transposition examples

Loading a Preset

  1. Tap a preset row to load it
  2. Loading indicator appears while preset is loaded
  3. Editor closes and preset source populates the script editor
  4. Compilation begins automatically

Preset does not replace your current script - you can undo by pressing Cmd+Z or closing without saving.

Preset Metadata

Each preset row displays:

  • Icon - Category-specific icon with color coding
  • Name - Preset title
  • Description - What the preset does
  • Tags - Keywords for search and categorization
  • Source badge - "User" badge for user presets

Color coding:

CategoryColorIcon
FiltersOrange3 horizontal lines with decrease
TransformsBlueTriangle swap arrows
RoutingGreenBranch arrows
EffectsPurpleWaveform ECG
ExamplesTealBook
UserGrayPerson

Managing User Presets

Adding User Presets

Method 1: Save from Editor

  1. Write a NeuroScript transform
  2. Click FileExportSave as Preset
  3. Choose location: User Presets folder opens automatically
  4. Save with .ns extension

Method 2: Manual File Creation

  1. Create a .ns file in a text editor
  2. Save to ~/Library/Application Support/NeurodeMIDI/Presets/
  3. Add optional metadata as comments at top of file:
neuroscript
# Name: My Custom Transform
# Category: transforms
# Description: Does something cool with velocities
# Tags: velocity, scaling, dynamics

# Your NeuroScript code here
when type == note : {
  velScale(0.8)
  send
}

Revealing User Presets Folder (macOS)

Quick access:

  1. Open Presets Browser
  2. Click "Open Presets Folder" button (folder icon in toolbar)
  3. Finder opens to user presets directory

Manual navigation:

~/Library/Application Support/NeurodeMIDI/Presets/

In Finder:

  1. Go → Go to Folder (Cmd+Shift+G)
  2. Paste path above
  3. Click Go

Organizing User Presets

Subfolders are supported - create categories:

~/Library/Application Support/NeurodeMIDI/Presets/
  ├── Filters/
  │   ├── drums-only-kick-snare.ns
  │   └── cc-noise-filter.ns
  ├── Transforms/
  │   ├── transpose-octave-up.ns
  │   └── velocity-boost.ns
  └── Live Set A/
      ├── intro-filter.ns
      └── chorus-transpose.ns

Presets are discovered recursively - subfolders are searched automatically when reloading.

Deleting User Presets

  1. Reveal presets folder (see above)
  2. Delete the .ns file in Finder
  3. Reload Presets Browser (close and reopen) to refresh list

Preset File Format

Bundled presets ship as .nssigned artifacts with embedded source and signature.

The browser reads that embedded source into the editor. Signed compiled fallback verification and import still depend on the current signing readiness and security policy.

User presets use .ns (plain NeuroScript source text).

Creating a User Preset

Minimum valid preset:

neuroscript
# User preset with just code
keep note

Recommended format with metadata:

neuroscript
# Name: Channel Filter - Piano Only
# Category: filters
# Description: Keep only channel 1 notes (piano part)
# Tags: channel, filter, piano

# Keep only channel 1 note events
keep note where ch == 1

Metadata fields (optional, all use # comments at top of file):

  • # Name: - Display name in browser (defaults to filename)
  • # Category: - Category ID (filters, transforms, routing, effects, user)
  • # Description: - What the preset does
  • # Tags: - Comma-separated search keywords

Signing User Presets (Advanced)

User presets are unsigned by default, but you can sign them for verification:

  1. Enable Script Signing in Settings → Security
  2. Use neuroscript-sign CLI tool (requires Neurode developer key)
  3. Signed presets use .nssigned extension

Most users do not need signing - it's primarily for distributing presets to other users and ensuring integrity.

Preset Examples

Filter: Drop Drums and CC Noise

neuroscript
# Name: Drop Drums and CC Noise
# Category: filters
# Description: Removes drum channel and high CC numbers
# Tags: filter, drums, cc, noise

drop note where ch == 10
drop cc where cc in 64..127

Transform: Octave Doubler

neuroscript
# Name: Octave Doubler
# Category: transforms
# Description: Adds a note one octave higher for each note
# Tags: transpose, octave, harmony

when type == note : {
  send through
  emit.noteOn(ch, note + 12, vel)
}

Effect: Stutter Echo (Two Taps)

neuroscript
# Name: Stutter Echo (Two Taps)
# Category: effects
# Description: Creates two delayed echoes at 1/16 and 1/8 notes
# Tags: echo, delay, stutter

when type == note : {
  send through
  send after 1/16
  send after 1/8
}

Troubleshooting

Preset Won't Load

Problem: Clicking a preset does nothing or shows an error.

Solutions:

  1. Check file exists - User preset file may have been deleted
  2. Verify syntax - Preset may contain compile errors (check logs)
  3. Reload browser - Close and reopen Presets Browser
  4. Check signing readiness/policy - Signed-binary-only imports may stay blocked until Settings → Security shows signing ready, and unsigned presets may also be blocked by policy

User Presets Not Appearing

Problem: User preset .ns files don't show up in browser.

Solutions:

  1. Check file extension - Must be .ns (not .txt or .neuroscript)
  2. Check file location - Must be in ~/Library/Application Support/NeurodeMIDI/Presets/
  3. Reload browser - Close and reopen Presets Browser to refresh list
  4. Check file permissions - Ensure files are readable (should be by default)

Preset Loads But Doesn't Compile

Problem: Preset loads into editor but shows compile errors.

Solutions:

  1. Read error message - Compiler shows specific line and issue
  2. Check language version - Older presets may use deprecated syntax
  3. Verify completeness - Preset file may be truncated or incomplete
  4. Report issue - If bundled preset fails, report as bug

Performance Considerations

  • Preset loading is async - Large presets (>1000 lines) may take 100-200ms to load
  • Compilation happens off-thread - Loading doesn't block UI
  • Search is fast - Metadata-only search, doesn't load full source
  • Signed fallback handling - Binary verification/import follows the current signing readiness and policy

Advanced: Preset Manifest Format

Bundled presets use a JSON manifest (Presets/presets.json):

json
{
  "categories": {
    "filters": {
      "name": "Filters",
      "description": "Event filtering and selection"
    }
  },
  "presets": [
    {
      "filename": "filter-drums",
      "name": "Drop Drums",
      "description": "Removes channel 10 drum events",
      "category": "filters",
      "tags": ["filter", "drums", "channel"]
    }
  ]
}

This manifest drives the browser UI and provides rich metadata for search and categorization.

Built with ❤️ for musicians