Giter Club home page Giter Club logo

midivisualizer's Introduction

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
--device                           name of a MIDI device to start a live session to (or VIRTUAL to act as a virtual device)
--config                           path to a configuration INI file
--size                             dimensions of the window (--size W H)
--position                         position of the window (--position X Y)
--fullscreen                       start in fullscreen (1 or 0 to enable/disable)
--gui-size                         GUI text and button scaling (number, default 1.0)
--transparency                     enable transparent window background if supported (1 or 0 to enable/disable)
--forbid-transparency              prevent transparent window background(1 or 0 to enable/disable)
--help                             display a detailed help of all options
--version                          display the current version and build information

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, PRORES)
--framerate                        number of frames per second to export (integer)
--bitrate                          target video bitrate in Mb (integer)
--postroll                         Postroll time after the track, in seconds (number, default 10.0)
--out-alpha                        use transparent output background, only for PNG and PRORES (1 or 0 to enable/disable)
--fix-premultiply                  cancel alpha premultiplication, only when out-alpha is enabled (1 or 0 to enable/disable)
--hide-window                      do not display the window (1 or 0 to enable/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 sr_gui 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 libnotify 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.

midivisualizer's People

Contributors

fabien-chouteau avatar kosua20 avatar mosesalexander avatar sreich avatar todd-herbert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

midivisualizer's Issues

Improve rendering

Hello. I am SO HAPPY that there is a way to do a synthesia style recording. I have a problem, though. When I render I get 5,000 images and have to figure out how to convert them to a video without loosing the quality. I don't know if it is possible, but could you allow a 'render as video' feature? Thank you!

Can't compile RPI

Probably due to my ignorance but i can't get it to compile on my RPI 3. Im new to RPI and tried to follow this https://www.youtube.com/watch?v=IZgYViHcXdM.
I personally have the feeling that i'm missing some library, i installed GLFW3 and NFDL.

When trying to compile with " make midiviz" i get a lot of compiler errors. Is is even compatible?

CODE:

`

  1. pi@raspberrypi:~/Downloads/MIDIVisualizer-master/MIDIVisualizer-master $ make midiviz
  2. Linking midiviz...
  3. g++: error: OpenGL: No such file or directory
  4. g++: error: Cocoa: No such file or directory
  5. g++: error: IOKit: No such file or directory
  6. g++: error: CoreVideo: No such file or directory
  7. g++: error: AppKit: No such file or directory
  8. g++: error: unrecognized command line option ‘-framework’
  9. g++: error: unrecognized command line option ‘-framework’
  10. g++: error: unrecognized command line option ‘-framework’
  11. g++: error: unrecognized command line option ‘-framework’
  12. g++: error: unrecognized command line option ‘-framework’
  13. make: *** [Makefile:45: midiviz] Error 1

`

Other features I think this visualizer would benefit from

Hello, it's me again! I thought of more additions for this visualizer, such as the ability to change the color of the horizontal/vertical lines. This can help increase contrast against backgrounds (like bright red) or darken lines for a more subtle effect. Another feature that I thought of was the ability to change the color of the sharp and flat notes. The ability to choose a different color for these notes should give the visualizer more color variety. The last feature that I would want is the ability to replace the flashes with other images (like the particles) for more aesthetic. The ability to change the size and color of the flashes would be great too. Thank you for this awesome visualizer, keep up the great work!

Vertex shader error

Hi, thanks for amazing app. I really like it.
I found some issue on v3.4

vertex shader error

With v3.4, I got this error. Particles are messed up.
In v3.3, I don't have issue like this.

Modifying particle/blur velocity?

Hello,
I am trying to find the function that controls the velocity for the particles+blur.
(I'm new to c++/openGL so I apologize if this question is trivial)
Many thanks!

Display pedal actions and improve keyboard looking

It will be great if MIDIVisualizer can display pedal actions and improve keyboard looking.

For reference, here is a piano tutorial I created by combining MIDIVisualizer and other software, the pedal at the bottom right corner and the keyboard are from other software.

test

Thanks for MIDIVisualizer, it really help creating piano tutorial.

Different color hands

Hi! I just stumbled upon your visualizer and I love it!

If I may ask about anything more, could it be possible to have a way to decide either or not the visualizer plays the midi sounds or not? Also, would it be possible to have a feature that makes the two hands played different colors? If these were a thing, you program would, in my opinion, be just about perfect!

Not opening

Hey! When i download and double click the exe file, it doesn't start instead, a command prompt window flashes for a second and disappears. I am using Windows 7 ultimate 32 bit version. And i have tried the 32 bit version of midi visualizer. Please help me. I took a video of the screen and paused it to know what the command prompt says. It says "ERROR Could not open window with GLFW3"
I don't know coding. I am a pianist and i opened a github account just to get this fixed. So kindly help me out. 🙂 I dont know coding. How can i make the exe file work? Anyone please help

Forking this repo for a different KB layout

People,

I know a bit about C but less about C++ but can someone comment on the possibility of forking this code and changing it so it would work with the attached KB layout?

Screenshot_2020-06-25_03-06-01_AXiS-49_KB_Layout

Thanks,

Phil.

Particle layer order

I have a suggestion for this program!
I think particle layer should be above the notes layer. It's more natural.

003

This shows that particle layer is at the bottom(in v3.3). Notes are hiding particles.

.
.
.

004

I changed order of layers with photoshop. Now particle layer is above the notes layer.
Notes are broken into particles. So particles should be above the notes, I think.
And it's more pleasing to see.

Support for using different BG images for every frame

I would like to create visualizations with animated backgrounds.

The end result is something like this:

https://www.youtube.com/watch?v=WIqP2BWB628

For a general introduction to the problem, see #51. As I have stated there, the easiest way to achieve the desired result would be the save the alpha channel into the generated PNG files. This issue describes an alternate approach.

In theory, when doing the off-line rendering to PNG files, MIDIVisualizer could take a different bg image for each frame.

I could extract the frames from the animated background video into files in a directory, and give that directory to MIDIVisualizer. Then for each frame, MIDIVisualizer could read input000n.png, do the magic, and save it to output000n.png.

When compiling those saved images to a video again, I could get my video, with MIDIVisualizer's visualization plus the animated bg.

What do you think?

Thank you.

Open GL 3.1 is available, yet getting Open GL error on launch

Hello! I'm looking forward to using this software but I've run into a bit of an issue. I was hoping to get this working on my laptop but unfortunately I'm getting that open GL error some other users have had. I ran a GPU viewer to make sure I had Open GL 3, and turns out I've got Open GL 3.1 on my card.

OpenGL 3.1 (129 ext) - Intel(R) HD Graphics 3000

Is 3.3 required to run this software? Let me know as soon as possible! Thanks!

display chords / notes

Thanks for this great visualisation.

I come from a logicProX with midi and have to visualize what has to be played to some band members.
It would be cool if there is a possiblity to display the note name (A1, D1) on the note or the chords on the keybord.

Just an review - i'm not able to extend that c++ otherwise i would make a PR ;)

Particles disappearing

The particles seem to be abruptly disappearing when the same note is struck in succession. Any guidance on how to correct this?

thanks!

Fully non-interactive work-flow

I would like to integrate MIDIVisualizer into my automatic workflow for creating educational videos based on MIDI files. Basically, I would like to use it is a filter within a scripted workflow: the MIDI file comes in, and the rendered images come out.

Currently, I have to manually open the MIDI file, then manually load the settings, set the image size (via setting window size), set the FPS, then start the button for offline rendering, select the directory, etc.

Ideally, I would like to specify all of these either as command like arguments, or as part of the settings file to load. (And then the name of the setting file should be added as a command line argument.)

When running the app in this mode, the GUI shouldn't even be shown; just execute the task at hand, and then exit.

What do you think about this? Would you accept a PR that enables this?

Unable to export.

[INFO]: 0 notes extracted and sorted.
[INFO]: 1204 notes extracted and sorted.
[INFO]: 917 notes extracted and sorted.
[INFO]: 359 notes extracted and sorted.
[INFO]: 2035 notes extracted and sorted.
[INFO]: 20315 notes extracted and sorted.
[INFO]: 2174 notes extracted and sorted.
[INFO]: 3740 notes extracted and sorted.
[INFO]: 4398 notes extracted and sorted.
[INFO]: 4002 notes extracted and sorted.
[INFO]: 2219 notes extracted and sorted.
[INFO]: 2208 notes extracted and sorted.
[INFO]: 3690 notes extracted and sorted.
[INFO]: Final track duration 93.8927 sec.

*--- Fragment shader failed to compile ---*
0:10(24): error: sampler arrays indexed with non-constant expressions are forbidden in GLSL 1.30 and later
*---------------------------------*

Failed loading program: error: linking with uncompiled/unspecialized shader
glError in src/helpers/ProgramUtilities.cpp (115) : GL_INVALID_VALUE


*clicks export button*

[EXPORT]: Will export 6234 frames to "/home/kitteh/Downloads".
[EXPORT]: Processing frame 1/6234.midiviz: malloc.c:2392: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Aborted (core dumped)

Running on arch linux with latest commit.
No idea what's causing this shrug
If you want to chat about it my contact details are on https://namedkitten.pw

Make fails: "cannot find -lnfd"

Sadly I can currently not get to build your project as the linker cannot find "lnfd" and I cannot find where to get it from.

Please add some installation instructions and required dependencies.

Current steps taken:

Clone project
cd projectfolder
make

(The requirement to install glfw3 is also only obtainable from reading the comments in the makefile)

Support live/realtime midi

Is support planned to listen on a midi port/ports and process the visuals there as opposed to loading a midi file?

No longer working under WINE

Hi,
Many thanks for your excellent work on this project.
I am using the windows 32bit version under WINE on Linux (I can't figure out how to compile a Linux version from source). However, since version 3.3, it no longer works under WINE (v3.2 is the last working version).

The error details are as follows:
Unhandled exception: page fault on execute access to 0x00000000 in 32-bit code (0x00000000).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:006b GS:0063
EIP:00000000 ESP:0033f408 EBP:0033f468 EFLAGS:00010202( R- -- I - - - )
EAX:00000001 EBX:7f4edf38 ECX:404237fd EDX:00000000
ESI:00000000 EDI:00000000
Stack dump:
0x0033f408: 00473bc0 00010060 00000000 00010060
0x0033f418: 00000000 00010060 0000001b 00000000
0x0033f428: 0033f82c 7f4edf38 7f5d9540 00000300
0x0033f438: 00000000 06c00000 00010060 7dd72c80
0x0033f448: 06c00000 00000014 0033f6bc 0000000f
0x0033f458: 0033f480 00000020 7f4edf38 4071c395
Backtrace:
=>0 0x00000000 (0x0033f468)
1 0x7f4a7b2c in user32 (+0x97b2b) (0x0033f498)
2 0x7f4a8239 in user32 (+0x98238) (0x0033f4e8)
3 0x7f4aa553 in user32 (+0x9a552) (0x0033f538)
4 0x7f46854e in user32 (+0x5854d) (0x0033f5a8)
5 0x7f46f2c9 in user32 (+0x5f2c8) (0x0033f608)
6 0x7f46f537 in user32 (+0x5f536) (0x0033f658)
7 0x7f49d89c in user32 (+0x8d89b) (0x0033f7e8)
8 0x7f496f39 in user32 (+0x86f38) (0x0033f878)
9 0x004795ee EntryPoint+0xffffffff() in midivisualizer (0x0033fa60)
10 0x00474e33 EntryPoint+0xffffffff() in midivisualizer (0x0033fe88)
11 0x0047c1e3 EntryPoint+0xffffffff() in midivisualizer (0x0033fed0)
12 0x7b464a82 in kernel32 (+0x44a81) (0x0033fee8)
13 0x7b466d5d in kernel32 (+0x46d5c) (0x0033ffd8)
14 0x7b464a8e in kernel32 (+0x44a8d) (0x0033ffec)
0x00000000: -- no code accessible --
Modules:
Module Address Debug info Name (37 modules)
PE 400000- 52a000 Export midivisualizer
PE 7a820000-7a824000 Deferred opengl32
PE 7b420000-7b5d1000 Export kernel32
PE 7bc10000-7bc14000 Deferred ntdll
PE 7da60000-7da64000 Deferred dwmapi
PE 7da80000-7da84000 Deferred uxtheme
PE 7dcd0000-7dcd4000 Deferred xinput1_4
PE 7dcf0000-7dcf4000 Deferred winex11
PE 7dd80000-7dd83000 Deferred usp10
PE 7ddd0000-7de4d000 Deferred comctl32
PE 7df40000-7df4b000 Deferred dinput8
PE 7df80000-7df89000 Deferred msacm32
PE 7dfb0000-7e028000 Deferred winmm
PE 7e080000-7e083000 Deferred msvcr120
PE 7e160000-7e163000 Deferred concrt140
PE 7e480000-7e483000 Deferred api-ms-win-crt-locale-l1-1-0
PE 7e490000-7e493000 Deferred api-ms-win-crt-filesystem-l1-1-0
PE 7e4a0000-7e4a3000 Deferred api-ms-win-crt-runtime-l1-1-0
PE 7e4c0000-7e4c3000 Deferred api-ms-win-crt-convert-l1-1-0
PE 7e4d0000-7e4d3000 Deferred api-ms-win-crt-math-l1-1-0
PE 7e4f0000-7e4f3000 Deferred api-ms-win-crt-utility-l1-1-0
PE 7e500000-7e503000 Deferred api-ms-win-crt-heap-l1-1-0
PE 7e520000-7e523000 Deferred api-ms-win-crt-stdio-l1-1-0
PE 7e530000-7e533000 Deferred api-ms-win-crt-string-l1-1-0
PE 7e550000-7e553000 Deferred vcruntime140
PE 7e580000-7e584000 Deferred ucrtbase
PE 7e6a0000-7e6a3000 Deferred msvcp140
PE 7e790000-7e794000 Deferred imm32
PE 7e7c0000-7e7c4000 Deferred rpcrt4
PE 7e850000-7e878000 Deferred ole32
PE 7e9a0000-7e9a3000 Deferred shcore
PE 7e9d0000-7e9d8000 Deferred shlwapi
PE 7ea40000-7f313000 Deferred shell32
PE 7f410000-7f4f8000 Export user32
PE 7f610000-7f614000 Deferred advapi32
PE 7f690000-7f697000 Deferred gdi32
PE 7ffd0000-7ffd4000 Deferred version
Threads:
process tid prio (all id:s are in hex)
00000008 (D) Z:\home\MyHomeDir\Downloads\MIDIVisualizer-windows-32bits\MIDIVisualizer.exe
00000009 0 <==
0000000e services.exe
00000032 0
0000002f 0
0000002a 0
00000023 0
00000010 0
0000000f 0
00000013 explorer.exe
00000026 0
00000022 0
0000001e 0
00000014 0
0000001c winedevice.exe
00000027 0
00000025 0
00000024 0
0000001d 0
0000001f GoogleUpdate.exe
00000039 0
00000038 0
00000036 0
00000034 0
00000020 0
00000028 plugplay.exe
0000002c 0
0000002b 0
00000029 0
0000002d winedevice.exe
0000003a 0
00000031 0
00000030 0
0000002e 0
System information:
Wine build: wine-4.0.2 (Ubuntu 4.0.2-1)
Platform: i386 (WOW64)
Version: Windows 10
Host system: Linux
Host version: 5.3.0-23-generic

Thanks again for this great software.

Separate colors for notes and effects

Hi! I really love this program and used it too, but I couldn't set separated colors for notes and the particles.
I wanna do this because if the blackground is black and I want a darker note color, the particles will be dark too and it's hard to see.

Notes width

Hey ! I think it would be very nice to have the ability to choose a custom size for black & white notes ! (fe. in pixels)

Help win10 bug!

Hi! I really want try your program. But when I open .mid file, it's freeze and don't work. Help!! It's work on 3.4 version. But in 4.1 not working!

Missing glew link on linux, segfault on launch

Hi,
When building on Manjaro (5.4.2-1), I needed to add a CMake link to GLEW. I fail when building normally with the error:

/usr/bin/ld: CMakeFiles/MIDIVisualizer.dir/src/libs/imgui/imgui_impl_opengl3.cpp.o: in function `ImGui_ImplOpenGL3_SetupRenderState(ImDrawData*, int, int, unsigned int)':
imgui_impl_opengl3.cpp:(.text+0x36): undefined reference to `__glewBlendEquation'

This is followed by a bunch of undefined glew references. I do have glew 2.1.0-1 installed, locally.
I added the following to CMakeLists.txt in order to link glew, which does let me successfully build:

find_package(GLEW REQUIRED)
if (GLEW_FOUND)
    include_directories(${GLEW_INCLUDE_DIRS})
    link_libraries(${GLEW_LIBRARIES})
endif()

However, once built, when launching MIDIVisualizer, the program shuts down after loading the midi file.
If using sandboxing (Firejail), I get a segfault after loading the MIDI file. Though, even running un-sandboxed, it still shuts down after loading the midi file, though no error is thrown to output.

[INFO]: 3 tracks (Use tempo (1)).
[INFO]: 1024 units per quarter note .
[INFO]: Reading track 0.
[INFO]: Track  (length: 149, instrument: , tempo: 545544, major, measure duration: 2.18218).
[INFO]: Reading track 1.
[INFO]: Track Acoustic Grand Piano (length: 24323, instrument: , tempo: 500000, major, measure duration: 2).
[INFO]: Reading track 2.
[INFO]: Track Acoustic Grand Piano (length: 24190, instrument: , tempo: 500000, major, measure duration: 2).
[INFO]: 0 notes extracted and sorted.
[INFO]: 2707 notes extracted and sorted.
[INFO]: 2726 notes extracted and sorted.
[INFO]: Final track duration 942.95 sec.
Segmentation fault (core dumped)

(that's sandboxed output above. If un-sandboxed it's the same, minus the segfault).

I tested multiple midi files, and it seems unrelated to any specific file, though I am happy to upload/link one if needed for reproducing.

Judging by the location of the crash in code, I'd guess I still probably have some issue with opengl versioning/glew (it seems to crash right before creating the opengl buffers, shaders, etc in MIDIScene, but I haven't debugged from source to pinpoint it.)

Anyhow, if it seems like a platform/distro issue, don't feel obliged to dig too deep on my behalf, just figured I'd forward my edge-case. If there's log somewhere, or a debug/verbose flag I can set to get more output let me know and I'll update my findings. Thanks!

Support delay before the play

It could be great to specify the number of seconds before the start of midi visualization. At this moment we need to add this gap to the midi file to avoid beginnings like that: (notes that start at 0:00)

obraz

It might be useful for video creators etc.

Midi files get stuck

I've tried loading 4 different midi files on a Macbook Air with Mojave. The visualization works great up to a point, but then notes become "stuck" or simply stop appearing.

Screen Shot 2019-04-07 at 5 05 33 PM

I verified this same behavior on the pre-compiled version all the way to 2.1, and I've also compiled it myself to come across the same behavior.

The midi for the above screen shot is at https://drive.google.com/open?id=1Er6lBhaKwV_liCMiDdjTvKAvIxUEAB06

It also doesn't get past the first two notes of this midi https://drive.google.com/open?id=1lAexUmJ2J93oEyaUIvO-FujWqKsS3N9o

I verified that these two midis could be visualized with http://qiao.github.io/euphony/#20 just fine.

Any idea what might be going on? I love this tool!

Problem with sound

I don´t know why but when I load a midi file, it plays but it is not heard.

Display pressed keys

Hi, I have an another wish to this awesome program!

It would be cool if there is a function to show pressed keys with color option while notes are coming and flashes are flashing.
.
.
key press
Something like this

Help with running on Windows

This isn't an issue but i am having issues running this on windows and was hoping for a detailed explanation on how to download and run this?

Offline video export mode

Offering a non-realtime export mode could be helpful for people who want to do video/music editing but don't necessarily have a powerful computer to render and record the graphics at the same time.

I've already started working on this, by providing a frame-by-frame output, which is the easiest way to achieve this without handling video generation/compression by myself. See 9b06026 and following.

Add alpha channel to saved PNGs

I would like to create visualizations with animated backgrounds.

The end result is something like this:

https://www.youtube.com/watch?v=WIqP2BWB628

Since there is no support for this in the current version, this is how I work around this:

  • I generate the PNG files with MIDIVisualizer, with a solid background
  • I use ffmpeg to compile the video out of it. (Adding all the other effects, the sound, etc.)

There is currently no alpha channel in the generated PNG files, so I use ffmpeg's colorkey filter to remove the solid background from the visualization, so that I can overlay it on the animated background.

The problem with this approach is that some parts of the animation are semi-transparent (ie. the blur effect, the regions around the flashes, etc.) In these cases, removing the solid background using colorkey doesn't work well. So, for now, I had to disable the blur effect, and I also used a solid bg that is similar to the color of the animated bg in the region of the flashes, so that the flashes don't look weird.

With these workarounds, the process kind of works, but it would be must easier if the alpha channel value could be saved into the generated PNG files.

Then I could simply use them as an overlay, without any further tricks.

Now I am not sure whether the OpenGL renderer is able to export this information. It definitely has it, because when drawing the flashes and the blur effect over an existing bg image, it applies alpha correctly... but maybe the end result is flattened? If that's the case, then there is no way to save the alpha channel into the generated PNG files... we would have to check and see.

What do you think about this?

Particles start lower than the notes

Hey, congrats on this project.

I've noticed that the particles are not created in the same place where the notes end.
This results in particles popping up out of sync with the track, specially noticeable for me since I was meaning to use 0.300 expansion.

image

This is especially noticeable if you remove the sparks:

image

Is this something that could be fixed? Or, if for some reason this is exactly how you want it, it wold be nice to have the option to dislocate it in the settings :)

Performance problem on Mojave

I recently upgraded to Mojave from High Sierra. When I run the make process the new executable is very laggy. It was using 5% CPU before, now it is at 40% cpu usage and it brings my CPU to 80 degrees temperature. Do you know if there is any way to fix this? Thanks.

Playback gets stuck on a single note

Trying to visualize a pair of trombones for a cover (midi attached as zip because github doesn't allow mids). The playback appears to get stuck continuously playing the first note for a very long time. This is on the 64-bit windows release 4.1. Thanks for this project!

Gerudo_Valley-Trombones.zip

The midi was exported from Musescore 3.2.3.7635 if it makes a difference.

No Glow Left Behind (With Blur On)

Hello! I think it would be great if the particles and notes had their own individual blur like this:
https://imgur.com/gallery/pBKu3rE
At the moment, the particles in the visualizer (when blur is turned on) leaves behind a glow, that can get messy when a lot of notes are on screen. Is there any way to remove this glow from being "left behind" like in the image?

Option to turn off notes

There is an option to turn off the particles, but not the notes. I would like an option for this when you have the time to get around to it.

Typo

All the resource directories are called ressources. I know it means the same in French, but it may look strange for other ppl in repository entirely in English.

License?

Hi there, I really love the look of your visualizer!

I don't have a visualizer for my LabMidi project, which is under a 2 clause BSD license. https://github.com/meshula/LabMidi

Since you haven't listed a license, I was wondering if it would be okay with you if I forked your code to form the basis of a demo for my project?

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.