Giter VIP home page Giter VIP logo

vm's Introduction

Visual Music

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

Installation

Run a Windows installer

Building the source

  • 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)
  • 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

Basic usage

Import a song from the web

  1. Press F2, F3 or F4 to go to one of the song browsers
  2. Click on a song download link (not a playback link)
  3. When returned to the visualization screen, press CTRL-Space or your keyboard's play button to start playback

Camera control

Move: wasdrf
Rotate: Shift + wasdqe

Key frames (WIP)

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.

Sub projects

  • 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)

Third-party projects

  • 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

vm's People

Contributors

dependabot[bot] avatar yousernaym avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.