Skip to content

zszushi/UltraFast-MidiRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UltraFastMidiRenderer

A high-performance MIDI to audio renderer written in Rust, optimized for speed and efficiency using SIMD and parallel processing.

日本語版はこちら (Japanese version)

Warning

Alpha Version: This software is currently in an alpha state. You may encounter bugs or unexpected behavior.

Features

  • Extreme Performance: Optimized rendering engine utilizing SIMD (Single Instruction, Multiple Data) and multi-core parallel processing via Rayon.
  • SoundFont Support: Supports both SF2 and SFZ formats.
  • MIDI Analysis: Built-in fast MIDI analysis tool to visualize note distribution, track counts, and estimated polyphony.
  • Streaming Engine: Efficient memory usage by streaming MIDI data and pre-loading samples.
  • Batch Processing: Convert multiple MIDI files simultaneously.
  • Built-in Limiter: High-quality look-ahead limiter to prevent clipping and ensure consistent output levels.
  • Modern GUI: Intuitive interface built with egui, featuring real-time system monitoring (CPU/Memory) and taskbar progress integration (Windows).
  • Flexible Export: Supports multiple output formats including WAV, MP3, OGG, FLAC, and M4A (via FFmpeg).
  • Customizable Output: Wildcard support for dynamic filename templates (e.g., {name}, {notes}, {duration}).

Limitations (Alpha)

  • Basic MIDI Support: Currently focuses on high-speed rendering and does not support advanced MIDI events such as Pitch Bend, Modulation, or Expression. Only Note On/Off and Velocity events are processed.
  • Stability: As an alpha version, stability is not guaranteed. Please back up important data before use.

Tech Stack

  • Language: Rust
  • GUI Framework: egui / eframe
  • Audio Engine: Custom SIMD-optimized renderer using components from rustysynth and midly.
  • Parallelism: rayon
  • Audio I/O: hound, cpal, memmap2

Requirements

  • Rust: Latest stable version.
  • FFmpeg (Optional): Required for non-WAV export formats (MP3, OGG, etc.). Must be in your system PATH.

Build and Run

To build and run the application:

cargo run --release

The application is highly optimized in --release mode. It is recommended to use release builds for production rendering.

Usage

  1. Add SoundFonts: Click "Add Source" to load your SF2 or SFZ files.
  2. Add MIDI: Drag and drop or click "Add MIDI" to select files.
  3. Configure Settings: Adjust volume, limiter settings, and output format in "Audio Settings".
  4. Render: Click "Start Rendering" to begin the process.

License

MIT License

About

Render midis very fast (Fully made by Antigravity)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages