All Projects → kosua20 → Midivisualizer

kosua20 / Midivisualizer

Licence: mit
A small MIDI visualizer tool, using OpenGL

Projects that are alternatives of or similar to Midivisualizer

Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-47.84%)
Mutual labels:  opengl, graphics
Overload
3D Game engine with editor
Stars: ✭ 335 (-3.46%)
Mutual labels:  opengl, graphics
Possumwood
Possumwood is a graph-based procedural authoring tool, in concept not dissimilar to popular CG packages like Houdini, Blender or Maya. It is intended to serve as a sandbox for computer graphics algorithms and libraries, providing a user-friendly and coding-free UI for libraries that would otherwise be inaccessible for an average user.
Stars: ✭ 197 (-43.23%)
Mutual labels:  opengl, graphics
Gaiasky
Mirror of Gaia Sky repository hosted on Gitlab: https://gitlab.com/langurmonkey/gaiasky
Stars: ✭ 162 (-53.31%)
Mutual labels:  opengl, graphics
Ofelia
A real-time cross-platform creative coding tool for multimedia development
Stars: ✭ 269 (-22.48%)
Mutual labels:  opengl, graphics
Glitter
Dead Simple OpenGL
Stars: ✭ 2,040 (+487.9%)
Mutual labels:  opengl, graphics
Glhf
openGL Have Fun - A Go package that makes life with OpenGL enjoyable.
Stars: ✭ 217 (-37.46%)
Mutual labels:  opengl, graphics
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+3293.66%)
Mutual labels:  opengl, graphics
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (-24.21%)
Mutual labels:  opengl, graphics
Polymer
🎨 graphics + interaction engine
Stars: ✭ 243 (-29.97%)
Mutual labels:  opengl, graphics
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+3708.36%)
Mutual labels:  opengl, graphics
Fbg
Lightweight C 2D graphics API agnostic library with parallelism support
Stars: ✭ 349 (+0.58%)
Mutual labels:  opengl, graphics
Bsf
Modern C++14 library for the development of real-time graphical applications
Stars: ✭ 1,640 (+372.62%)
Mutual labels:  opengl, graphics
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (+558.21%)
Mutual labels:  opengl, graphics
Gcanvas
A lightweight cross-platform graphics rendering engine. (超轻量的跨平台图形引擎) https://alibaba.github.io/GCanvas
Stars: ✭ 1,705 (+391.35%)
Mutual labels:  opengl, graphics
Csfml
Official binding of SFML for C
Stars: ✭ 211 (-39.19%)
Mutual labels:  opengl, graphics
Klayge
KlayGE is a cross-platform open source game engine with plugin-based architecture.
Stars: ✭ 1,646 (+374.35%)
Mutual labels:  opengl, graphics
Veldrid
A low-level, portable graphics library for .NET.
Stars: ✭ 1,784 (+414.12%)
Mutual labels:  opengl, graphics
Skui
Skia-based C++ UI framework
Stars: ✭ 218 (-37.18%)
Mutual labels:  opengl, graphics
Bansheeengine
Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting
Stars: ✭ 2,906 (+737.46%)
Mutual labels:  opengl, graphics

MIDI Visualizer

CI

A small MIDI visualizer, written in C++/OpenGL. Binaries for Windows, macOS and Ubuntu (experimental) are available in the Releases tab. See the troubleshooting section if you encounter any issue.

Result image

Usage

On Windows and macOS platforms, you can now run the application by simply double-clicking on it. You will then be able to select a MIDI file to load. A Settings panel allows you to modify display parameters such as color, scale, lines,... Images and videos of the track can be exported. Note that MIDIVisualizer is currently not able to play soundtracks, only display them.

Press p to play/pause the track, r to restart at the beginning of the track, and i to show/hide the Settings panel.

Result image

Command-line use

You can also run the executable from the command-line, specifying a midi file and display options. You can also trigger a video export directly from the command line. For instance:

./MIDIVisualizer --midi path/to/file.mid --size 1920 1080 --config my/config.ini --export video.mp4  --format MPEG4

General options

--midi              path to a MIDI file to load
--config            path to a configuration INI file
--size              dimensions of the window (--size W H)
--fullscreen        start in fullscreen (1 or 0 to enabled/disable)
--gui-size          GUI text and button scaling (number, default 1.0)
--version           display the current version and build information
--help              display a detailed help of all options

Export options

If you want to directly export a video/images, --export ... is mandatory. You can completely hide the application window using --hide-window.

--export            path to the output video (or directory for PNG)
--format            output format (values: PNG, MPEG2, MPEG4)
--framerate         number of frames per second to export (integer)
--bitrate           target video bitrate in Mb (integer)
--png-alpha         use transparent PNG background (1 or 0 to enabled/disable)
--hide-window       do not display the window (1 or 0 to enabled/disable)

Configuration options

If display options are given, they will override those specified in the configuration file. Almost every option available in the GUI can be specified on the command line, refer to the detailed help for a complete list (./MIDIVisualizer --help). Options include:

--color-bg          Background color (R G B in [0.0, 1.0])
--flashes-size      Flash effect size (number in [0.100000,3.000000])
--particles-count   Particles count (integer in [1,512])
--preroll           Preroll time in seconds before starting to play (number)
--quality           Rendering quality (values: LOW_RES, LOW, MEDIUM, HIGH, HIGH_RES)	--show-keyboard     Should the keyboard be shown (1 or 0 to enable/disable)
...

Result image

Troubleshooting

Please note that MIDIVisualizer requires OpenGL 3.2 or higher on all platforms.

  • MIDIVisualizer is not playing any sound.
    MIDIVisualizer is only a MIDI viewer, and does not currently support audio playback.

  • I have encountered an issue while using MIDIVisualizer.
    You can open an issue ticket here. Please also check the issue page, as some other people might have encountered a similar issue or offer help to your questions.

Windows

  • I can't open the application as it is blocked by Safeguard.
    MIDIVisualizer is not generated with a Microsoft developer certificate, thus the warning. You can still run the application by allowing it in the Safeguard message panel.

  • I get an error message about a missing vcruntime140_1.dll.
    This is a Windows component (part of the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019) that is often updated, you should try installing the latest version from the Microsoft support website (vc_redistx64).

macOS

  • I can't open the application as it is considered unsafe.
    MIDIVisualizer is not generated with an Apple developer certificate, thus the warning. You can still run the application by doing a right-click on it and selecting 'Open', this will mark the application as 'authorized' for future use.

Ubuntu

  • I can't run MIDIVisualizer by double-clicking it in the file manager.
    This seems to be a limitation of the Nautilus file manager, you can either double-click the companion script, or create and register a .desktop file.

Compilation

The project is configured using Cmake. You can use the Cmake GUI ('source directory' is the root of this project, 'build directory' is build/, press 'Configure' then 'Generate', selecting the proper generator for your target platform and IDE); or the command line version, specifying your target generator.

Depending on the target you chose in Cmake, you will get either a Visual Studio solution, an Xcode workspace or a set of Makefiles. You can build the main executable using the MIDIVisualizersub-project/target. If you update the images or shaders in the resources directory, you will have to repackage them with the executable, by building the Packaging sub-project/target.

Dependencies

MIDIVisualizer depends on the GLFW3 library, the Native File Dialog library and RtMidi17, all included in the repository and built along with the main executable. It also optionally relies on FFMPEG v4.2 for video export. For licensing reasons only MPEG-2 and MPEG-4 exports are supported for now in the release builds.

On macOS and Windows, no additional dependencies are required. On Linux, you will need to have the following packages installed: xorg-dev libgtk-3-dev libasound2-dev, and if you plan on using FFMPEG, ffmpeg libavcodec-dev libavformat-dev libavdevice-dev.

Development

The main development steps were:

  • loading a MIDI file, and parsing the notes contained,
  • displaying a scrolling score with these notes,
  • adding visual effects to embellish the visualization,
  • maintaining the application and listening to user requests :)

More details on the initial project on my blog.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].