Skip to content

VGMCK (v1.1)

MML compiler to VGM (hopefully eventually support all chips)

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

VGMCK (v1.1)

Post by zzo38 »

I made a program VGMCK, which is MML compiler into VGM format. I hope to eventually add support of all chipsets, but currently it only has some. It also includes documentation and source-codes.

Download: http://zzo38computer.org/vgm/vgmck.zip

You are free to contribute to documentation and/or to program to implement the other chips of VGM, as long as the program has a license which is compatible with GNU GPL v3 or later version.

Please write other question/comments/suggestion/complaints too.

Chip support:
  • SN76489 PSG
  • OPL2
  • HuC6280 (PC-Engine)
  • Famicom (2A03)
  • GameBoy
  • NeoGeo Pocket (T6W28)
  • QSound
  • OPLL
  • OPN2
  • Pokey
  • OPL3
  • General Instruments AY-3-8910
  • AY8930 (supported by the VGM format, but not by the emulator)
  • OPL4
VGMCK does have a large number of other features, including:
  • Detune
  • Transpose
  • Text macros
  • Track questioning
  • Custom musical scales with up to ten letters
  • Custom pitches for the notes of the scale
  • Many (not all) chips can be doubled (as specified in VGM specification)
  • Full GD3 support (including Unicode)
  • Change the clock rate and options of any chips
  • Change the frame rate
  • Auto arpeggio
  • Local desynchronized loops
  • Entire song loops (which cannot be desynchronized, though)
  • Sample list macros
  • Auto track switching
  • Direct register write
  • Direct VGM write
  • Fast forward
  • Portamento
  • more...
Last edited by zzo38 on 2013-05-04, 22:47:28, edited 12 times in total.
  • User avatar
  • jrlepage Offline
  • Posts: 32
  • Joined: 2012-10-07, 3:33:28
  • Location: Canada

Post by jrlepage »

This looks very promising! I'll be sure to keep an eye on the development of this project. :)
  • User avatar
  • RichterEX2 Offline
  • Posts: 191
  • Joined: 2012-03-30, 9:28:37
  • Location: Georgia, USA

Post by RichterEX2 »

Oooh, sounds like the start of something great! :o
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

I added OPL2 now, and a few minor corrections. You can tell me if you want anyone added next! (Also, if you write any music with what it has so far, you can tell me if it is missing something or just let's see that music)
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

If you add OPN (YM2612), OPM (YM2151), and OPLL (YM2413), you'll have covered VGM spec at least up to 1.50. Glad to see the source is included, though!
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

neologix wrote:If you add OPN (YM2612), OPM (YM2151), and OPLL (YM2413), you'll have covered VGM spec at least up to 1.50. Glad to see the source is included, though!
Yes, it is GPL so the source is included; this is also use if you want to run the program on non-Windows computer (or if you want to modify the program). Documentation for OPM confuses me (I looked it up and did not understand very well), so I did not implement that yet.
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

I have added PC-Engine now, and fixed a few more defects in the main program, and have added some commands for changing the musical scales/temperaments used.

Here is an example of a input file for VGMCK it can show you how some things are working:

Code: Select all

#EX-PCENGINE AB,,C

@W0 = { 0:31 }
@W1 = { 0:15 15:0 }

@v0 = { 31:0 }
@v1 = { 30 25 20 20 8 0 }

ABC t120r16

A l4o4@q1@W0@v0 [cgag ccrr <]2
B l8o4@q0@W0@v0 [cegefabd' c'gecr2 <]2
C l8@q1@v1 ccrdarrr ccrdarrr cdefgabr ccrdarrr

ABC r16
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

I have added a few more chips, and a few other commands. I have also written better documentation, and improved the compiler script to make it only compile the files that are changed.
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

VGMCK version 0.5 is released. QSound is added, the default pitch of the middle C note is corrected, sample definition macros and sample list macros are now added, auto track switching is added, command NOE to change the note-off-event is added, and a few other (minor) things.

The auto track switching can be used to allow one note to continue playing while another note is entered, similar to what some .MOD/.S3M have.

Sample lists allow you to assign different samples to different notes.
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

VGMCK version 0.6 is released. OPLL is added. Fast forward command (causes all delays (on all channels) to be omitted until the fast forward command is reached) is added. There are also a few documentation fixes, and the default NGP clock rate has been corrected.

Please tell me any other suggestion/comment/questions/complaints too! If there is a defect in this program or the documentation, I would like to fix it.
neologix wrote:If you add OPN (YM2612)
YM2612 is OPN2, according to Wikipedia.
Last edited by zzo38 on 2013-03-01, 12:51:03, edited 2 times in total.
  • User avatar
  • jrlepage Offline
  • Posts: 32
  • Joined: 2012-10-07, 3:33:28
  • Location: Canada

Post by jrlepage »

Development on this is going at a phenomenal speed! I haven't tested this yet due to lack of time, but I'll try to give it a shot this weekend and report back once I have.
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

zzo38 wrote:
neologix wrote:If you add OPN (YM2612)
YM2612 is OPN2, according to Wikipedia.
Ah, thx. Brainfart on my part.

Looking forward to trying out Q-Sound!
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

OPN2 and Pokey is now added.

(Note to ValleyBell: If you read it, please remember that you forgot to mention QSound on your list)

VB edit: List fixed =P
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

OPL3 and AY-3-8910 is now added. AY8930 extended mode is also supported although the current version of VGMPlay will not properly play them (but the file is encoded properly for them, so it should automatically start working once VGMPlay is updated).
Last edited by zzo38 on 2013-03-11, 1:03:36, edited 1 time in total.
  • User avatar
  • MaliceX Offline
  • Posts: 226
  • Joined: 2012-09-29, 11:45:48
  • Location: Australia
  • Contact:

Post by MaliceX »

Whoa this is making massive leaps of progress. Will be keeping a close eye on this! Thanks zzo38!

<space reserved for potential demo if time permits>
-dj.tuBIG/MaliceX
Post Reply