Skip to content

MusicalBubbleColumn is a Python-based 3D music visualization project designed to dynamically display the rhythm and notes of MIDI music through 3D graphics. The project combines the Matplotlib and Pygame libraries to render real-time visual effects of the music, providing an immersive musical experience.

License

Notifications You must be signed in to change notification settings

NowLoadY/MusicalBubbleColumn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Musical Bubble Column!

Overview

让我们说中文

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.

Features

Piano Visualization

  • Piano key visualization (The virtual piano keys in the visualization do not strictly match the actual piano keys.)
  • Note display
  • MIDI playback

3D Visualization

  • 3D bubble animations
  • Fibonacci-sequence based layout
  • Adjustable viewing angles (Elevation & Azimuth)
  • Basic physics simulation

MIDI Processing

  • MIDI file support
  • Piano sound mapping
  • Volume-based visual effects

Getting Started

Prerequisites

Python 3.7+ and the following packages are required:

pip install matplotlib mido pygame numpy scipy PyQt5 numba

Running the Application

  1. Clone this repository
  2. Navigate to the project directory
  3. Run the main application:
    python musicalbubblecolumn.py
  4. 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.

Features in Detail

Visualization

  • Bubble generation based on notes
  • Floating animations
  • Volume-based visual effects

Interactive Controls

View adj: elev View adj: azim Zoom in/out

Technical Details

Components

  • PatternVisualizer3D: Visualization engine
  • MIDI Processor: MIDI data handling
  • Physics Sim: Bubble movement

Optimizations

  • Numba acceleration
  • Memory management

Notes

  • Optimized for standard MIDI files
  • Performance depends on system hardware

Contributing

welcome:

  • Bug reports
  • Feature suggestions
  • Pull requests

Collaboration

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

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0) - see the LICENSE file for details.

AI Project

This project heavily leverages AI-assisted programming.

Project Structure

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
Loading

similar to this, 12 years ago? Cool!

chatgpt found me this: similar to this, 12 years ago? cool

About

MusicalBubbleColumn is a Python-based 3D music visualization project designed to dynamically display the rhythm and notes of MIDI music through 3D graphics. The project combines the Matplotlib and Pygame libraries to render real-time visual effects of the music, providing an immersive musical experience.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages