GithubHelp home page GithubHelp logo

midiviz-prepare's Introduction

midiviz-prepare is a MIDI file pre-processor for MIDIVisualizer.

Problem

  • Once upon a time, there was a great utility called MIDIVisualizer, by @kosua20.
  • At some point, @ekuiter has decided that we need a fork of this app. He has pulled the trigger. Then he has added various enhancements, but alas he also broke modified one of the nifty features of the original app. The original app was able to color major and minor keys differently. The forked version uses the coloring to indicate different tracks, which is not very helpful when there is only one track.
  • So I was faced with a dilemma: use the original app, with the nice coloring, or use the new fork, with the fancy features:

Reaction

My answer is that I choose both. I need the fancy new features, and the correct coloring. One possible way to achieve this would have been to create yet another fork of the project, picking and choosing what I want from both versions.

But I didn't want to further fragment the already split landscape of the code. Also it would have been a PITA to maintain this version later on.

Solution

So I just created a small MIDI pre-processor utility, which is able to move the minor keys to a separate track, and thus achieve the desired coloring with the new version.

Installation

Just install with npm. The command with appear in your normal npm binary directory.

npm install midiviz-prepare

Usage

Just run it with the input output file names.

midiviz-prepare input.mid output.mid [start time in seconds]

But what does it do?

Well, it reads the music in the input (single-track) MIDI file, and creates a new MIDI file out of it, by copying all the major notes on the first track, and all the minor notes to the second track. It can optionally adjust the timestamps, so that the music starts at the requested time. (Which can be helpful to get more deterministic timing, in case you want to mix the resulting animation with sound.)

midiviz-prepare's People

Stargazers

 avatar

Watchers

 avatar  avatar

midiviz-prepare's Issues

Can generate output that can crash midiviz

For some MIDI file inputs we get an output which crashes the MIDIVisualizer fork.

It's not entirely obvious what is wrong with the MIDI file (if anything), because the upstream version of MIDIVisualizer can parse the generated output without any problem.

See the sample.

sample.zip

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.