Skip to content

Midi Event Editor

Version 0.3

Technical discussion which is not directly related to VGM files. Talk about Hardware and Software.

Moderator: Staff

  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Midi Event Editor

Post by Tom »

In the past days I've been writing a Midi Event Editor (if you are a regular visitor of our IRC Channel you should already know about that).

You can download version 0.3 HERE.

It is a 32-bit Windows executable, it should technically run fine in any 32-bit and 64-bit version of Windows, from 95 onwards. It requires the MicroSoft Visual Basic Virtual Machine 5.0 (msvbvm50) DLL, which can be obtained from Microsoft's website here: http://support.microsoft.com/kb/180071.

It is quite simple and it's not finished yet. But it can be useful.

Discuss.

Valley Bell EDIT 2018-01-28: fixed link
Also known as nineko.
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

i'm trying it on my work comp - MSVBVM50.DLL is listed as missing, and i don't have admin privileges on this comp, therefore it's not completely portable.

maybe try to remove VB dependencies (or build them in as static or bundle the DLL w/the exe)? i really want to check this out and verify how well it works, as i've made it a point to learn as much abt MIDI on the PC as possible.

(edit - here is the msdn link for the missing DLL; i'd also like to request the source for perusal, personal education, and possibly try to recreate it using byuu's nall+phoenix for possible integration into vgmtool)
Last edited by neologix on 2012-08-13, 19:16:28, edited 2 times in total.
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

I am sorry I forgot to mention msvbvm50.dll, I usually add a link to that library whenever I release one of my programs, in fact I did so when I posted this same program on another forum, just a few minutes after I posted it here. I don't really know how I could forget about it. I usually provide this link, however, so the users will know what he's downloading instead of directly linking them to an exe. I added this information to my first post. Thanks for pointing this out.

As for the source code: sure, not now though. Right now it's quite messed up (and I'm fixing some major bugs that somehow ended up in the 0.1 beta, so 0.1.1 will come soon). I will probably send it to ValleyBell privately first, but I indeed plan to open this eventually.

Thanks for the interest you expressed about this, by the way, it's very much appreciated :)
Also known as nineko.
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

Ok, loaded it up, here are a few thoughts while I have a moment at work:
  • The track list dropdown should probably find the first "Track Name" meta event and put that in brackets next to Track # (eg, "Track 1" becomes "Track 1 [ Song Name ]" (cuz Track 1 is the master track) "Track 2" becomes "Track 2 [ Track Name ]" , etc)
  • I like that Note On w/vel 0 is listed as Note Off*, but for consistency I think it should list what the event ACTUALLY is first (Note On vel=0), THEN list Note Off in parentheses. Even better is if you can add the ability to 1-click convert Note On vel=0 to Note Off vel=previousVel instead of me having to manually do it.
  • In the event list, how abt column headers? This would also allow listing the channel separately from the rest of the info in a much smaller column (titled "CH#" or something similarly small). Headers could be {Time, Ch#, Type, Name/Value/Data}
  • Given that PPM can be changed during a song, the Time Division field at the top would only be reliable if it updates based on your position in the event list. This may be more advanced functionality, but it'd be really useful to have.
I'll have more feedback as I use it properly; also, I'll send you a more complete list of CC names when I get to my laptop.
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

neologix wrote:In the event list, how abt column headers? This would also allow listing the channel separately from the rest of the info in a much smaller column (titled "CH#" or something similarly small). Headers could be {Time, Ch#, Type, Name/Value/Data}
I had columns and headers at a certain point in time, but I didn't like them so I ditched them in favour of the new layout.
neologix wrote:Even better is if you can add the ability to 1-click convert Note On vel=0 to Note Off vel=previousVel instead of me having to manually do it.
Ironically, I implemented this just a few hours ago, I actually wanted this feature to be included in version 0.1, but I later decided to postpone it, so it will be part of the next release. You will be able to convert between regular Note Off events to "fake" Note Off events.

I will release version 0.1.1 later today.
Also known as nineko.
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

In fact, here is a link to version 0.1.1, I just don't feel like programming more than this for today :P

It has some new features, and I fixed some of the horrible bugs which were present in 0.1 (I guess I just can't learn: I always release my programs one day sooner than I should, so the first version is always filled with avoidable bugs); also, there is now a rudimentary error handler.
Also known as nineko.
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

BTW, what's your personal preference re Note Off vs Note On vel=0? I know that the latter is used mainly for taking advantage of MIDI's running status feature, but nowadays it's more likely that a non-note on event on a potentially different channel is sent btwn Note On and Note Off time (even more so if it's a type 0 sequence).

I personally use Note Off for clarity and a greater chance of compatibility if I ever need to use something that doesn't implicitly read Note On vel=0 as Note Off.
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

I don't really have a preference (hence why I am completely supporting both of them in my program), if anything because I rarely work with Midi files at all, I very much prefer trackers and I usually deal with XM files instead. One of the reasons that led me to write this editor, in fact, is that I wanted to increase my knowledge of the Midi format in detail, learn how to handle Midi files at a low level, to focus on something which is outside of my normally preferred area, I like to challenge myself with things I'm not very familiar with. I already wrote at least 4 programs that dealt with Midi files[sup](1)[/sup], but none of them were as complex as this. I am doing this mainly for myself, as an exercise, which is actually proving to be quite interesting. But since I also think that the editor is shaping up quite nicely, I decided to release it to everyone in the hope it can also be an useful program.

For the record, I actually agree that "real" Note Off events are clearer to read and parse, but it's undeniable that using "fake" Note Off events can reduce the size of the file, especially if it's in format 1 and it's well formatted.

[hr]Note 1: Midi to S&KC, S&KC to Midi, Midi to YM2612 vgm, smps to Midi; interestingly enough, 3 of those have been improved by ValleyBell, who also indipendently wrote his own version of the 4th one, too.
Also known as nineko.
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

I released version 0.2; you can find it in the first post.

It fixes some bugs caused by Visual Basic's compiler itself, and I added many interesting features. Check it out :)
Also known as nineko.
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

for some reason my browser viewed it as a text file when regular clicking the link; had to do right-click->save as to bring up the dialog.

does your server not have .rar registered under a binary mime type?
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

That's weird; I've been hosting my stuff there in the past... 8 years maybe (I forgot, might be even more than that), and RAR files always worked fine for everyone so far, in fact I just tried to download it myself and it worked as intended.

I will upload the RAR on my Dropbox if someone else will report the same problem, though.
Also known as nineko.
  • User avatar
  • Sik Offline
  • Not a musician
    Not a musician
  • Posts: 75
  • Joined: 2011-12-12, 12:43:15

Post by Sik »

Late, but I can confirm the link working properly in Opera 12.01 too.
Sik is pronounced like "seek", not like "sick".
http://www.mdscene.net/
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

Please note the release of version 0.3, with even more features and even more bugs fixed.
You can find it in the first post, or here.

I don't think I will release other versions (unless someone finds a problematic bug, in which case I will quickly release a version 0.3.1), so I sent the source code to ValleyBell.
Also known as nineko.
  • Tom Offline
  • Ragequit Member
    Ragequit Member
  • Posts: 496
  • Joined: 2011-11-30, 17:26:44
  • Location: Italy
  • Contact:

Post by Tom »

You know what? Here, you can have the source. It's a prime example of bad coding, but maybe someone can do something good with it. Have fun and give credit if you want to reuse this.
Also known as nineko.
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

Tom wrote:...maybe someone can do something good with it....
someone = valleybell or myself :D thanks!
Post Reply