Fractal Music Generator
Generate unique melodies based on Mandelbrot set fractal patterns.
GitHub: gddickinson/fractal_music_generator
Overview
A creative music generation system that translates mathematical patterns from the Mandelbrot set into musical compositions. Each unique coordinate in the fractal space generates a distinct melody, creating an infinite palette of algorithmic music.
Features
Fractal-to-Music Mapping
- Mandelbrot Set Calculation: High-precision fractal generation
- Pattern Recognition: Extract musical patterns from fractal iterations
- Coordinate-Based Generation: Each point produces unique music
- Infinite Variations: Unlimited unique melodies from fractal space
Musical Output
- Melodic Generation: Convert fractal patterns to notes
- Rhythmic Patterns: Derive timing from iteration counts
- Harmonic Structure: Map fractal features to musical harmony
- Audio Synthesis: Generate playable audio files
Customization
- Zoom Levels: Explore different fractal scales
- Coordinate Selection: Choose specific fractal regions
- Musical Parameters: Adjust scales, tempo, instruments
- Export Options: Save as MIDI or audio files
Installation
# Clone repository
git clone https://github.com/gddickinson/fractal_music_generator.git
cd fractal_music_generator
# Install dependencies
pip install numpy matplotlib scipy midiutil
# Run the generator
python fractal_music.py
Usage
Basic Generation
from fractal_music_generator import FractalMusicGenerator
# Create generator
generator = FractalMusicGenerator()
# Generate melody from coordinates
melody = generator.generate_from_coordinates(
x=-0.7,
y=0.27015,
zoom=1.0
)
# Export to MIDI
generator.export_midi(melody, "fractal_melody.mid")
Advanced Options
# Configure musical parameters
generator = FractalMusicGenerator(
scale='major', # Musical scale
tempo=120, # Beats per minute
octave_range=(3, 6), # Note range
max_iterations=100 # Fractal precision
)
# Generate with custom parameters
melody = generator.generate(
center_x=-0.5,
center_y=0.0,
zoom_level=2.0,
resolution=128
)
How It Works
Fractal Calculation
- Generate Mandelbrot set for specified coordinates
- Calculate iteration counts for each point
- Extract pattern sequences from iteration data
- Map patterns to musical parameters
Music Mapping Algorithm
- Pitch: Iteration count modulo scale length
- Duration: Normalized iteration values
- Velocity: Gradient between adjacent points
- Timing: Sequential processing of fractal coordinates
Parameters
| Parameter | Description | Default |
|---|---|---|
x, y |
Fractal coordinates | (-0.7, 0.27015) |
zoom |
Magnification level | 1.0 |
scale |
Musical scale (major, minor, pentatonic, etc.) | 'major' |
tempo |
BPM | 120 |
max_iterations |
Fractal calculation depth | 100 |
resolution |
Grid size for calculation | 64 |
Musical Scales Supported
- Major
- Minor (Natural, Harmonic, Melodic)
- Pentatonic
- Blues
- Chromatic
- Whole Tone
- Custom scales
Example Coordinates
Interesting fractal regions for music generation:
# Classic Mandelbrot antenna
x=-0.75, y=0.1
# Seahorse valley
x=-0.7, y=0.27015
# Elephant valley
x=0.3, y=0.03
# Triple spiral
x=-0.7269, y=0.1889
Output Formats
- MIDI: For further editing in DAW
- WAV: Direct audio output
- Visualization: Fractal pattern plots
- Musical Notation: Score generation (optional)
Technical Stack
Libraries
- NumPy: Fractal calculations
- SciPy: Audio processing
- Matplotlib: Visualization
- MIDIUtil: MIDI file generation
- PyAudio (optional): Real-time playback
Applications
- Generative Music: Algorithmic composition
- Ambient Soundscapes: Evolving musical textures
- Educational Tool: Visualize mathematics through sound
- Sound Design: Unique audio material for production
- Art Installations: Interactive fractal music exhibits
Future Enhancements
- Real-time audio generation
- 3D fractal exploration
- Additional fractal types (Julia sets, Burning Ship, etc.)
- Polyphonic harmony generation
- Interactive GUI with visual feedback
- Integration with music software via OSC/MIDI
Mathematical beauty transformed into musical patterns