Musical Bubble Column is a 3D music visualization project built with Python that displays MIDI music in a visual format. Using Matplotlib and Pygame, it creates a visual representation of musical notes arranged in a Fibonacci spiral pattern.
- Piano key visualization (The virtual piano keys in the visualization do not strictly match the actual piano keys.)
- Note display
- MIDI playback
- 3D bubble animations
- Fibonacci-sequence based layout
- Adjustable viewing angles (Elevation & Azimuth)
- Basic physics simulation
- MIDI file support
- Piano sound mapping
- Volume-based visual effects
Python 3.7+ and the following packages are required:
pip install matplotlib mido pygame numpy scipy PyQt5 numba
- Clone this repository
- Navigate to the project directory
- Run the main application:
python musicalbubblecolumn.py
- Select your MIDI file to start
Alternatively, you can download the precompiled .exe file from the releases section and run it directly without needing to set up the Python environment.
- Bubble generation based on notes
- Floating animations
- Volume-based visual effects
- PatternVisualizer3D: Visualization engine
- MIDI Processor: MIDI data handling
- Physics Sim: Bubble movement
- Numba acceleration
- Memory management
- Optimized for standard MIDI files
- Performance depends on system hardware
welcome:
- Bug reports
- Feature suggestions
- Pull requests
If you're interested in collaborating on this project or have any ideas for improvement, feel free to reach out! I'm open to discussions and welcome any contributions that could enhance this visualization tool.
You can:
- Open an issue for discussion
- Submit a pull request
- Contact me for any questions or suggestions
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) - see the LICENSE file for details.
This project heavily leverages AI-assisted programming.
graph TD
subgraph User Interface
A[/File Selection/]
B([3D Visualization Window])
end
subgraph Core Processing
C{{MIDI Event Processor}}
D{{Pattern Visualizer}}
E([Physics Engine])
end
subgraph Data Flow
F[(Pattern Data)]
G([Position Calculator])
end
A -->|MIDI File| C
C -->|Note Events| D
G -->|Bubble Positions| D
F -->|Pattern Buffer| D
E -->|Bubble Movement| D
D -->|Visualization| B
style A fill:#ffffff,stroke:#003366,stroke-width:2px
style B fill:#ffffff,stroke:#003366,stroke-width:2px
style C fill:#003366,stroke:#003366,stroke-width:2px,color:#ffffff
style D fill:#003366,stroke:#003366,stroke-width:2px,color:#ffffff
style E fill:#ffffff,stroke:#003366,stroke-width:2px
style F fill:#ffffff,stroke:#003366,stroke-width:2px
style G fill:#ffffff,stroke:#003366,stroke-width:2px