vidi-timeline creates a video timeline starting from a MIDI file. The video clips are taken from a "VideoFont" in which each sample clip corresponds to a note. The samples are arranged following the time and value of the notes in the MIDI file. vidi-timeline allows to create more easily videos like these: * [Lasse Gjertsen - Hyperactive](https://youtu.be/o9698TqtY4A) * [Vittorio Saggiomo - Mario Bros Column Chromatography](https://youtu.be/mxi3z2vDV_0) How to create a VideoFont ========================= Synthetic VideoFont ------------------- Create a synthetic VideoFont: $ ./create_test_videofont.py videofont/ From a video recording ---------------------- A VideoFont can also be created by recording a video, and then splitting the recording in samples, one sample per note. For an example of a master VideoFont see [keyboard videofont master C4 B5](https://youtu.be/7Btp80LPqRs) A file like the one above can be analyzed with [Audacity][1] to find the start and the end time of the individual samples: * use the `Analyze -> Sound Finder...` to find the samples; * use the [`Pitch Detect" plugin`][2] to find the pitch of the samples and name them accordingly; * maybe add an interval named "rest" to represent the absence of sound; * export the labels track with `File -> Export Labels...`; [1]: http://www.audacityteam.org/ [2]: http://wiki.audacityteam.org/wiki/Nyquist_Analyze_Plug-ins#Pitch_Detect An example of such a file produced by audacity can be found in the `contrib/` directory and it can be used as follows: $ youtube-dl -t https://youtu.be/7Btp80LPqRs $ ./contrib/ges-split-samples.py \ "keyboard videofont master C4 B5-7Btp80LPqRs.mp4" \ "contrib/keyboard videofont master C4 B5-samples.txt" \ videofont/ > split.sh $ mkdir videofont/ $ sh split.sh && rm split.sh Examples of use =============== vidi-timeline.py ---------------- Play the timeline from a MIDI file using the samples from the VideoFont: $ ./vidi-timeline.py examples/Beyer\ Op.\ 101\ -\ Exercise\ 008.midi videofont/ Save the timeline to be edited somewhere else (e.g. in PiTiVi): $ ./vidi-timeline.py examples/Beyer\ Op.\ 101\ -\ Exercise\ 008.midi videofont/ Beyer_008.xges Render the timeline to a video file: $ ges-launch-1.0 --load Beyer_008.xges --outputuri Beyer_008.webm --format="video/webm:video/x-vp8:audio/x-vorbis" vidi-player.py -------------- Play a midi file in real time (if the CPU and the disk can keep up): $ ./vidi-player.py examples/Beyer\ Op.\ 101\ -\ Exercise\ 008.midi videofont/ vidi-sampler.py --------------- Play samples from the note hit on a midi controller: $ xset -r && vkeybd && xset r on & $ ./vidi-sampler.py 'Virtual Keyboard' videofont/ $ fg Similar projects ================ Of course if the idea is cool, chances are that others had it too. :) Midi-Vidi --------- A similar concept called midi-vidi has been developed by Marcus Fischer: * * * * Midi-Vidi is also a very cool name, it sound like the Italian "mi dividi" which means "you divide me". VidiBox ------- An interactive video mashup app: * *