A powerful and customizable MIDI music visualizer that turns your music into art. (一个强大且可定制的MIDI音乐可视化工具,将你的音乐变成艺术。)
- 🎵 MIDI Visualization: Transform MIDI files into stunning visual art
- 🎨 Customizable Themes: Multiple color themes and visual styles
- 🎹 Piano Tiles Mode: Classic piano tiles visualization
- 🌊 Soundscape Mode: Experimental audio-reactive visualizations
- 📹 Video Export: Export your visualizations as high-quality MP4 videos
- 🎛️ Advanced Controls: Fine-tune vibration, fade effects, and timing
- 🌍 Multi-language: Support for Chinese, English, and Traditional Chinese
- 💾 Preset System: Save and load your favorite visualization settings
Download the latest release for your platform:
- Windows: MidiArt-Pro-Windows.zip
- macOS: MidiArt-Pro-macOS.zip
- Linux: MidiArt-Pro-Linux.zip
- Download the appropriate file for your operating system
- Extract the archive to your desired location
- Run the executable file:
- Windows:
MidiArt-Pro.exe
- macOS: Double-click
MidiArt-Pro.app
- Linux:
./MidiArt-Pro
- Windows:
- Python 3.8 or later
- pip (Python package manager)
Use the provided build scripts for your platform:
# Run the batch script
build.bat
# Make the script executable and run it
chmod +x build.sh
./build.sh
# Install dependencies
pip install -r requirements.txt
pip install pyinstaller
# Build the executable
pyinstaller MidiArt-Pro.spec
# The executable will be in the dist/ directory
Ubuntu/Debian:
sudo apt-get install -y \
libgl1-mesa-glx libglib2.0-0 libsm6 libxext6 \
libxrender-dev libgomp1 libfontconfig1 libice6 \
libxrandr2 libxss1 libxtst6 libxi6 libxcomposite1 \
libxdamage1 libxfixes3 libxcursor1 libasound2-dev \
portaudio19-dev ffmpeg
macOS:
brew install portaudio ffmpeg
Windows: No additional system dependencies required.
This project includes a complete GitHub Actions workflow for automated building and releasing across multiple platforms.
- Fork or clone this repository
- Update the repository URLs in README.md and workflow files
- Create a release tag:
git tag v1.0.0 git push origin v1.0.0
- The GitHub Action will automatically:
- Build executables for Windows, macOS, and Linux
- Create a new release
- Upload the built executables as release assets
You can also trigger the build manually:
- Go to the "Actions" tab in your GitHub repository
- Select "Build and Release MidiArt-Pro"
- Click "Run workflow"
- Enter a version tag (e.g., v1.0.1)
MidiArt-Pro/
├── visualizer.py # Main application file
├── requirements.txt # Python dependencies
├── MidiArt-Pro.spec # PyInstaller configuration
├── build.py # Cross-platform build script
├── build.bat # Windows build script
├── build.sh # Unix build script
├── version_info.py # Version information for Windows
├── hooks/ # PyInstaller hooks
│ └── hook-customtkinter.py
├── presets/ # Visualization presets
├── images/ # Application screenshots
├── .github/workflows/ # GitHub Actions workflows
│ └── build-and-release.yml
├── SourceHanSansSC-*.otf # Font files
└── icon.ico # Application icon
- Launch the application
- Select your files:
- Click "选择 MIDI" to choose a MIDI file
- Click "选择音频" to choose an audio file (MP3/WAV)
- Customize settings:
- Adjust resolution, BPM, and visual parameters
- Choose color themes and visualization modes
- Fine-tune effects and timing
- Start rendering:
- Click the render button to begin processing
- Wait for the video to be generated
- Find your output video in the project directory
- Standard Mode: Classic note visualization with customizable effects
- Piano Tiles Mode: Falling tiles visualization similar to popular mobile games
- Solo Mode: Focus on individual notes with enhanced effects
- Soundscape Mode: Experimental audio-reactive visualizations
Save and load your favorite settings using the preset system:
- Use the preset dropdown to load existing configurations
- Modify settings and click "保存" to save new presets
- Presets are stored in the
presets/
directory as JSON files
- Vibration Effects: Control note vibration intensity and timing
- Fade Effects: Adjust fade-in and fade-out durations
- Compression: Control vertical spacing of notes
- Dynamic Range: Choose between static and dynamic note range modes
The project uses the following main libraries:
customtkinter
- Modern GUI frameworkmido
- MIDI file processingmoviepy
- Video processing and exportlibrosa
- Audio analysispygame
- Graphics renderingopencv-python
- Video encodingnumpy
- Numerical computations
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Aclameta - Original developer
- AI Partner - Development assistance
- Open Source Community - For the amazing libraries used in this project
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Include your operating system and error messages
- Initial release
- Multi-platform support
- Automated build and release system
- Complete GUI with multiple visualization modes
- Preset system for saving configurations
Made with ❤️ by Aclameta & AI Partner