About project - shepherdvovkes/idmlatentspace GitHub Wiki

  1. IDM Latent Space - MediaWiki Documentation
    1. Main Page
IDM Latent Space is a machine learning research project focused on analyzing and generating Intelligent Dance Music (IDM) and electronic music through latent space representations of synthesizer presets.

Table of Contents

Project Overview

The IDM Latent Space project explores the relationship between synthesizer preset parameters and musical characteristics through dimensionality reduction and machine learning techniques. The project specifically focuses on Access Virus and Osiris synthesizer presets, creating reduced-dimensional representations suitable for AI/ML applications.

Key Features

  • SysEx Analysis: Parse and analyze SysEx preset files
  • Dimensionality Reduction: Convert 384-parameter presets into 32D, 64D, and 128D spaces
  • Genre Classification: Analyze preset suitability for different electronic music genres
  • MIDI CC Mapping: Maintain CC controller relationships for DAW integration
  • ML-Ready Outputs: Generate numpy arrays and structured data for machine learning

Repository Structure

Core Components

  • osiris_preset.syx - User/target preset for analysis
  • osiris_all_presets.syx - Factory presets database
  • Generated outputs - Analysis results in multiple formats
  • SysEx Toolkit - Primary library for SysEx parsing
  • NumPy - Numerical computing and array operations
  • JSON - Data serialization and storage

Technical Architecture

Analysis Pipeline

The analysis pipeline follows these stages:

  1. SysEx Parsing - Decode binary preset data using SysEx Toolkit
  2. Parameter Extraction - Convert raw bytes to normalized parameter values
  3. Baseline Comparison - Compare user preset against factory baseline
  4. Importance Calculation - Weight parameters by musical significance
  5. Space Reduction - Create dimensionally-reduced feature vectors
  6. Output Generation - Save results in multiple formats

Parameter Importance Weighting

Parameters are weighted based on their musical significance:

Category Base Weight Special Conditions
Filter +2.0 Cutoff: +3.0, Resonance: +2.5
LFO +1.5 Rate parameters prioritized
Oscillator +1.2 Wave and semitone parameters
Effects +1.0 Distortion: +2.0, Spatial: +1.5
Envelope +0.8 Attack and decay prioritized

Dimensionality Reduction

The system creates three reduced spaces:

  • 32D Space - Minimal representation for fast processing
  • 64D Space - Balanced detail/performance ratio
  • 128D Space - High-detail representation for complex analysis

Usage Guide

Basic Analysis

<syntaxhighlight lang="python"> from updated_preset_analyzer import OsirisPresetAnalyzer
  1. Initialize analyzer
analyzer = OsirisPresetAnalyzer()
  1. Analyze presets
results = analyzer.analyze_osiris_presets( user_preset_file="osiris_preset.syx", factory_sysex_file="osiris_all_presets.syx", baseline_name="Init" )
  1. Save results
analyzer.save_osiris_analysis(results, "my_analysis") </syntaxhighlight>

Output Files

Analysis generates several output files:

File Format Purpose
*_complete.json JSON Full analysis with metadata
*_32d.npy NumPy 32-dimensional feature vector
*_64d.npy NumPy 64-dimensional feature vector
*_128d.npy NumPy 128-dimensional feature vector
*_report.txt Text Human-readable analysis report
*_data.csv CSV Tabular data for spreadsheet analysis

Machine Learning Integration

Loading Vectors

<syntaxhighlight lang="python"> import numpy as np import json
  1. Load feature vector
vector_64d = np.load('osiris_analysis_64d.npy')
  1. Load full analysis
with open('osiris_analysis_complete.json', 'r') as f: analysis = json.load(f)
  1. Access metadata
cc_mappings = analysis['reduced_spaces']['64d']['cc_mappings'] genre_readiness = analysis['reduced_spaces']['64d']['dubstep_ready'] </syntaxhighlight>

Genre Classification

The system evaluates preset suitability for electronic music genres:

  • Dubstep Ready: Filter parameters ≥ 3, LFO parameters ≥ 2
  • EDM Ready: Filter parameters ≥ 2, Effects parameters ≥ 1
  • Filter Dominance: Ratio of filter parameters in top selections

MIDI CC Integration

Preserved CC controller mappings enable DAW automation:

<syntaxhighlight lang="python">
  1. Access CC mappings
cc_mappings = results['reduced_spaces']['64d']['cc_mappings']
  1. Example: {'CC74': 'filter_cutoff', 'CC71': 'filter_resonance'}
  1. Use for MIDI automation in DAW
for cc_number, parameter in cc_mappings.items(): print(f"Automate {parameter} via {cc_number}") </syntaxhighlight>

Research Applications

Generative Models

The reduced-dimensional vectors are suitable for:

  • Variational Autoencoders (VAE) - Smooth latent space interpolation
  • Generative Adversarial Networks (GAN) - Preset generation
  • Diffusion Models - High-quality preset synthesis

Classification Tasks

Feature vectors enable classification of:

  • Genre Compatibility - Electronic music subgenre matching
  • Timbral Characteristics - Bright/dark, warm/cold, aggressive/smooth
  • Musical Context - Lead, bass, pad, percussion roles

Clustering Analysis

Dimensional reduction enables:

  • Preset Families - Group similar-sounding presets
  • Parameter Relationships - Identify correlated controls
  • Evolution Tracking - Analyze preset development over time

Installation

Requirements

<syntaxhighlight lang="bash"> pip install sysex-toolkit numpy </syntaxhighlight>

Repository Setup

<syntaxhighlight lang="bash"> git clone https://github.com/shepherdvovkes/idmlatentspace.git cd idmlatentspace python updated_preset_analyzer.py </syntaxhighlight>

API Reference

OsirisPresetAnalyzer

Methods

analyze_osiris_presets(user_file, factory_file, baseline_name)
Main analysis function
Parameters:
  • user_file (str): Path to user preset SysEx file
  • factory_file (str): Path to factory presets SysEx file
  • baseline_name (str): Name of baseline preset to compare against
Returns: Analysis results dictionary
compare_presets(user_preset, baseline_preset, threshold)
Compare two presets and identify differences
Parameters:
  • user_preset (dict): User preset data
  • baseline_preset (dict): Baseline preset data
  • threshold (float): Minimum difference threshold (default: 0.01)
Returns: List of significant differences
create_reduced_spaces(significant_changes, target_dimensions)
Generate dimensionally-reduced feature spaces
Parameters:
  • significant_changes (list): Parameter differences
  • target_dimensions (list): Target dimensions [32,]
Returns: Dictionary of reduced spaces
save_osiris_analysis(results, output_prefix)
Save analysis results in multiple formats
Parameters:
  • results (dict): Analysis results
  • output_prefix (str): Output filename prefix
Returns: Dictionary of created file paths

Data Structures

Analysis Results

<syntaxhighlight lang="json"> { "user_preset": { "metadata": {"preset_name": "User Preset", ...}, "parameters": {"filter_cutoff": {"normalized_value": 0.75, ...}, ...} }, "baseline_preset": { "metadata": {"preset_name": "Init", ...}, "parameters": {...} }, "differences": [ <pre>], "reduced_spaces": { "32d": { "dimension": 32, "feature_vector": [0.85,], "feature_names": ["filter_cutoff",], "cc_mappings": {"CC74": "filter_cutoff", ...}, "dubstep_ready": true, "edm_ready": true } } } </syntaxhighlight>

Contributing

Development Setup

  1. Fork the repository
  2. Create feature branch
  3. Implement changes with tests
  4. Submit pull request

Code Standards

  • Python 3.7+ compatibility
  • PEP 8 style guidelines
  • Type hints for function signatures
  • Docstrings for all public methods
  • Unit tests for core functionality

Research Papers

Related Work

  • Latent Space Models for Musical Audio - Analysis of dimensional reduction in audio
  • Synthesizer Preset Generation using VAEs - Generative modeling approaches
  • MIDI Controller Mapping for Electronic Music - CC parameter relationships

Citing This Work

<syntaxhighlight lang="bibtex"> @software{idmlatentspace2025, title={IDM Latent Space: Synthesizer Preset Analysis for Machine Learning}, author={Shepherd Vovkes}, year={2025}, url={https://github.com/shepherdvovkes/idmlatentspace}, note={Electronic music analysis toolkit} } </syntaxhighlight>

License

This project is released under the MIT License. See LICENSE file for details.

External Links

Category:Machine Learning Category:Electronic Music Category:Audio Analysis Category:Synthesizers
⚠️ **GitHub.com Fallback** ⚠️