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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ff080809dd8c59f0401e69c8e654b89c8f659555c5cae2cc4b85aeab1870746
|
|
| MD5 |
80766fc1567414966d4a8a641d583d87
|
|
| BLAKE2b-256 |
3c5d798aebb8a7dd135bb3ba6214d105cd9a218c6ff84372dad6043e8606692d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2360c48aedfeaafb4a8866769726f3665c1cb00c8e08cb05e04c9c0e72a13661
|
|
| MD5 |
72e098fe3a5dfc37d10a8b4672618bee
|
|
| BLAKE2b-256 |
039d736866d3f948bf0162f89132546887f3ac937ab7bec92622c05f3298e4b8
|