Skip to main content

Universal SysEx decoder/encoder library for synthesizers

Project description

SysEx Toolkit

Universal SysEx decoder/encoder library for synthesizers and music production.

🎹 Features

  • Universal SysEx Support: Works with any synthesizer through configuration files
  • Built-in Definitions: Access Virus C, Roland JP-8000, and more
  • ML Ready: Normalized parameters for machine learning applications
  • Easy Integration: Simple API for quick adoption
  • Extensible: Add new synthesizers via JSON/YAML configs

🚀 Quick Start

Installation

pip install sysex-toolkit

Basic Usage

from sysex_toolkit import decode_sysex_file, SysExFormat

# Decode a preset
presets = decode_sysex_file('my_preset.syx', SysExFormat.ACCESS_VIRUS)

# Access parameters
for preset in presets:
    print(f"Preset: {preset['metadata']['preset_name']}")
    
    # Filter parameters (great for wobble bass analysis)
    filter_params = {
        name: data for name, data in preset['parameters'].items() 
        if data['category'] == 'filter'
    }
    
    print(f"Filter cutoff: {filter_params['filter_cutoff']['normalized_value']:.3f}")

Advanced Usage

from sysex_toolkit import SysExLibrary, SysExFormat

# Create library
library = SysExLibrary()

# Get decoder for specific synthesizer
decoder = library.get_decoder(SysExFormat.ACCESS_VIRUS)

# Decode multiple presets
presets = decoder.decode_file('factory_presets.syx')

# Analyze for machine learning
ml_features = []
for preset in presets:
    # Extract normalized values for ML
    feature_vector = [
        param['normalized_value'] 
        for param in preset['parameters'].values()
    ]
    ml_features.append(feature_vector)

🎛️ Supported Synthesizers

  • Access Virus C (Full support)
  • Roland JP-8000 (Basic support)
  • Custom synthesizers via configuration files

🔧 CLI Tools

# Decode a SysEx file
sysex-decode my_preset.syx --synth access_virus

# Analyze unknown SysEx format
sysex-analyze unknown_synth.syx

# Batch process multiple files
sysex-batch /path/to/presets/ --synth access_virus

📊 Machine Learning Integration

Perfect for electronic music ML research:

# Extract features for latent space
import numpy as np
from sysex_toolkit import decode_sysex_file

presets = decode_sysex_file('dubstep_presets.syx')

# Create feature matrix for VAE training
feature_matrix = []
for preset in presets:
    # Focus on filter parameters for wobble analysis
    wobble_features = []
    for param_name, param_data in preset['parameters'].items():
        if param_data['category'] in ['filter', 'lfo']:
            wobble_features.append(param_data['normalized_value'])
    
    feature_matrix.append(wobble_features)

feature_matrix = np.array(feature_matrix)
# Ready for β-VAE training!

🎵 Use Cases

  • Music Production: Analyze and modify synthesizer presets
  • ML Research: Extract features for generative models
  • Preset Management: Organize and categorize sound libraries
  • Sound Design: Understand parameter relationships
  • Academic Research: Study electronic music characteristics

📚 Documentation

Visit our wiki for detailed documentation.

🤝 Contributing

Contributions welcome! Please read our contributing guidelines.

📄 License

MIT License - see LICENSE file for details.

🎯 Citation

If you use this library in research, please cite:

@software{sysex_toolkit_2025,
  title={SysEx Toolkit: Universal SysEx Library for Music Production},
  author={Ovcharov, Vladimir},
  year={2025},
  url={https://github.com/SystematicLabs/sysex-toolkit}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sysex_toolkit-1.0.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sysex_toolkit-1.0.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file sysex_toolkit-1.0.0.tar.gz.

File metadata

  • Download URL: sysex_toolkit-1.0.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for sysex_toolkit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0ff080809dd8c59f0401e69c8e654b89c8f659555c5cae2cc4b85aeab1870746
MD5 80766fc1567414966d4a8a641d583d87
BLAKE2b-256 3c5d798aebb8a7dd135bb3ba6214d105cd9a218c6ff84372dad6043e8606692d

See more details on using hashes here.

File details

Details for the file sysex_toolkit-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: sysex_toolkit-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for sysex_toolkit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2360c48aedfeaafb4a8866769726f3665c1cb00c8e08cb05e04c9c0e72a13661
MD5 72e098fe3a5dfc37d10a8b4672618bee
BLAKE2b-256 039d736866d3f948bf0162f89132546887f3ac937ab7bec92622c05f3298e4b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page