Jump to content

Decent, free, open-source MIDI editor for Windows: Sekaiju!


Kazinator

Recommended Posts

  • Members

 

Recently, I've spent several days getting my hands on every piece of MIDI freeware that runs on Windoze, with the goal of finding a good one with real-time input capability, decent editing, and all round usability.

Soon it became apparent, to my dismay, that I'm dealing with raw manure.

I lowered my expectations from: "Find great program" to "Find program that comes with source code, and is close enough to perfect that I'm willing to put in the time to fix it".

The only wortwhile program turned out to be Sekaiju. You can forget everything else; it is unusable garbage. (The only hope may be some of the Linux-only programs I didn't try).

It was still a rough start with Sekaiju:

  • The first aggravation turned out ot be a dumb default configuration: it was generating some clock data and sending it out to MIDI.  My synth interpreted that as notes and was playing garbage together with legit notes. I found the root cause and turned off the offending setting.

     

     

  • Next, Sekaiju was not able to open my  USB Midi device upon being restarted. It would always show "unable to open" error dialogs, but would always successfully open the device if I went to the config and selected it.  At this point, it was clear I would have to build the program from source to solve this.   I had a bit of a hard time wrestling with the code, which is in a Japanese SHIFT-JIS encoding rather than Unicode (causing the compiler to choke, unless you switch your entire Windoze OS to Japanese locale). I converted the whole  project to Visual Studio 2008 and the character encoding to UTF-8.  Running under the debugger, I root caused the problem: my MIDI dongle has a device name with trailing spaces, which Sekaiju was not preserving in its .ini file. (No registry use in this puppy, by the way! Blow away the files and it is uninstalled!)  I fixed the bug and started my own public GIT repository for Sekaiju on my server.

     

     

  • Then I ran into the problem that all notes were being doubled. It turned out that Sekaiju 3.6 had no way to disable loopback (MIDI thru) other than to disable output on specific tracks (which also mutes playback!) I was told by the author that disabling of loopback is not implemented, and I should kick my synth out of local control mode to use it with a sequencer.  I didn't think that was good enough, so I implemented a new feature: I took out all the logic which causes Sekaiju to echo  real-time being pumped through its tracking system. Echoing is now implemented by a separately configured "thru binding" map where for each MIDI input device, you can tell the program to echo events to some designated output device. If you use 0 for the mapping, then echo from that input is disabled.

     

     

  • After this, I discovered a bug: the metronome was not aways playing the first bar accented beat, even when recording after rewinding to the very beginning. Sometimes, it was replaced by silence, which is annoying and throws you off. This was due to a faulty timing assumption between the main UI and the record/playback thread which also generates the metronome. Fixed that one and have not heard a missed accented beat since.
  • Finally, not home free yet, I ran into a crash bug when editing the score: cutting and pasting of MIDI events triggered corrupt behavior and application crashes.  This turned out to be a buffer overflow in the handling of the clipboard buffer. Fixed! I've beat up on the program, cutting and pasting thousands of events randomly like a monkey, with no crash.

     

     

  • By fortuitous coincidence, I study Japanese, so I can make Japanese comments in the code, and maintain the Japanese language UI in parallel which work on the English side. LOL!

So, after a week's ordeal, I have a MIDI tracker I can actually use that doesn't make me curse at the computer and want to punch the goddamned programmers.

You can get the executables with my changes here.  The README explains how to use these, and has a pointer to the GIT repo.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...