A Windows app that visualizes note-based music files, inspired by Stephen Malinovski's MAM videos.
Supports midi, tracker and sid files. Can produce accompanying audio automatically or you can supply your own mixed-down audio file.
Can export mkv video files with support for 360-degree videos.
Example video
Run a Windows installer
- Install Visual Studio 2022 with the following components:
- Workloads
- .NET desktop development
- Desktop development with C++
- Individual components
- MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)
- Workloads
- Install Vcpkg, Fluidsynth and Ffmpeg:
git clone https://github.com/microsoft/vcpkg.git cd vcpkg git checkout cb1301e9977b5f10b49f7988f68b808f7a558970 bootstrap-vcpkg.bat vcpkg integrate install vcpkg install fluidsynth:x64-windows vcpkg install ffmpeg[x264]:x64-windows
- Clone repo with submodules:
git clone --recurse-submodules https://github.com/yousernaym/vm.git
- Build vm\VisualMusic.sln
- (Optional) To get audio from midi files, place a soundfont file named
soundfont.sf2
in the exe folder
- Press F2, F3 or F4 to go to one of the song browsers
- Click on a song download link (not a playback link)
- When returned to the visualization screen, press CTRL-Space or your keyboard's play button to start playback
Move: wasdrf
Rotate: Shift + wasdqe
Press CTRL-K to insert a key frame at the current playback position.
Changes to supported properties will be stored in the currently highlighted key frame. Currently only Viewport widht and Camera is supported.
- Remuxer (command-line tool) - Converts tracker and sid files to midi/wav. Based on libRemuxer which is based on the third-party libraries libsidplayfp, libmikmod and libopenmpt. libRemuxer should ideally have been linked directly to Visual Music but was not, because of a conflict between the Monogame and libsidplayfp licenses.
- Midilib (C# library) - Midi parser
- MidMix (C++ library) - Audio mixdown for midi files, based on Fluidsynth
- Media (C++ library)
- Video export, based on Ffmpeg
- Audio playback, based on Media Foundation
- MonoGame (C# library) - Graphics (with a few forked changes necessary for Visual Music to function properly)
- CefSharp (C# library) - Web browser
- XNA for WinForms (C# code) - Integration of MonoGame with Winforms