bfxr2-music-generator

bfxr2-music-generator

Generates music and sound effects using Bfxr2, with preset or custom parameter control.

Category
Visit Server

README

Bfxr2 MCP Server

License: MIT Node.js Version MCP

A Model Context Protocol (MCP) server that provides music and sound effect generation tools using the existing Bfxr2 codebase.

Table of Contents

Features

  • Sound Effect Generation: Create preset sound effects (pickup, laser, explosion, etc.)
  • Custom Sound Creation: Full parameter control for custom sounds
  • Random Generation: Generate random sounds with optional seeding
  • WAV Export: Export generated sounds as WAV files (base64 or data URI)
  • Parameter Inspection: View and modify sound parameters
  • Zero Code Duplication: Uses existing Bfxr2 JavaScript files directly

Installation

cd mcp
npm install

MCP Server Configuration

To use the bfxr2 MCP server with Cline or other MCP clients, add this configuration:

{
  "mcpServers": {
    "bfxr2-music-generator": {
      "autoApprove": [
        "list_presets",
        "get_parameters",
        "generate_sound_effect",
        "randomize_sound"
      ],
      "disabled": false,
      "timeout": 30,
      "type": "stdio",
      "command": "node",
      "args": [
        "/path/to/your/bfxr2/mcp/src/server.js"
      ]
    }
  }
}

Note: Update the path in args to match your actual bfxr2 installation directory.

Usage

Start the MCP Server

npm start

Available Tools

  1. generate_sound_effect

    • Generate preset sound effects
    • Types: pickup, laser, explosion, powerup, hit, jump, blip
    • Optional custom parameter overrides
  2. generate_named_sound

    • Generate sounds from precomputed named presets
    • Presets: cry, pluck, splash, droplet, rip, woof, pushrock, glass, bark, powerdown, smallbark, bounce
    • Each preset has carefully tuned parameters for specific sound characters
  3. create_custom_sound

    • Full control over all sound parameters
    • Specify waveType, frequency, envelope, effects, etc.
  4. create_sound_with_wave

    • Create sounds using wave type by name
    • Wave types: Square, Saw, Sin, White, Triangle, Rasp, Tan, Whistle, Breaker, Bitnoise, FMSyn, Voice
  5. randomize_sound

    • Generate completely random sounds
    • Optional seed for reproducible results
  6. mutate_sound

    • Create variations of the last generated sound
    • Slightly randomizes parameters while maintaining general character
  7. export_wav

    • Export last generated sound as WAV
    • Formats: base64 or data URI
  8. get_parameters

    • View current sound parameters
  9. list_presets

    • List available generator presets (pickup, laser, etc.)
  10. list_named_presets

    • List available named presets with descriptions (cry, bark, splash, etc.)
  11. list_wave_types

    • List all available wave types with descriptions

Example Tool Calls

{
  "name": "generate_sound_effect",
  "arguments": {
    "type": "laser",
    "customParams": {
      "frequency_start": 0.7,
      "attackTime": 0.1
    }
  }
}
{
  "name": "create_custom_sound",
  "arguments": {
    "parameters": {
      "waveType": 2,
      "frequency_start": 0.5,
      "sustainTime": 0.3,
      "vibratoDepth": 0.2
    }
  }
}
{
  "name": "generate_named_sound",
  "arguments": {
    "preset": "bark",
    "filepath": "/tmp/bark.wav"
  }
}
{
  "name": "create_sound_with_wave",
  "arguments": {
    "waveType": "Whistle",
    "parameters": {
      "frequency_start": 0.6,
      "sustainTime": 0.4
    },
    "filepath": "/tmp/whistle.wav"
  }
}
{
  "name": "mutate_sound",
  "arguments": {
    "filepath": "/tmp/mutated.wav"
  }
}

Architecture

The MCP server uses a lightweight wrapper approach:

  • bfxr-wrapper.js: Provides minimal browser API mocks and loads existing Bfxr2 files
  • server.js: MCP server implementation with tool handlers
  • No code duplication: Directly imports from ../js/ directory

Wave Types

ID Name Description
0 Square Classic square wave, good for retro game sounds
1 Saw Sawtooth wave, raspy and buzzy
2 Sin Pure sine wave, clean and simple
3 White White noise, good for explosions and static
4 Triangle Triangle wave, softer than square
5 Rasp Periodic 1-bit noise, digital buzz
6 Tan Tangent wave, potentially crazy/distorted
7 Whistle Sin with overtone, breathy/hollow
8 Breaker Quadratic wave, smooth and slick
9 Bitnoise Periodic 1-bit white noise, glitchy
10 FMSyn FM synthesis, dense and breathy
11 Voice Digital voice sample

Named Presets

Pre-configured sounds with carefully tuned parameters:

Name Wave Type Description
cry Voice A crying/whimpering voice sound
pluck Voice A plucked string instrument sound
splash Sin A water splash effect
droplet Whistle A water droplet sound
rip Voice A tearing/ripping sound
woof Square A dog bark/woof sound
pushrock White A heavy object pushing/scraping sound
glass Whistle A glass breaking/tinkling sound
bark Rasp A sharp bark sound
powerdown White A power-down/shutdown sound
smallbark Rasp A small/quiet bark sound
bounce FMSyn A bouncy/springy sound

Sound Parameters

Key parameters you can control:

  • waveType: Wave shape (0-11)
  • frequency_start: Base frequency (0-1)
  • frequency_slide: Frequency sweep (-0.5 to 0.5)
  • attackTime: Volume envelope attack (0-1)
  • sustainTime: Volume envelope sustain (0-1)
  • decayTime: Volume envelope decay (0.03-1)
  • vibratoDepth: Vibrato strength (0-1)
  • vibratoSpeed: Vibrato speed (0-1)

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to get started.

Changelog

See CHANGELOG.md for a list of changes in each version.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured