Getting started with MML (mck, ppmck)

Discuss NSF files, FamiTracker, MML tools, or anything else related to NES music.

Moderator: Moderators

User avatar
therue
Posts: 3
Joined: Sat Sep 03, 2016 7:27 am

Getting started with MML (mck, ppmck)

Post by therue »

Hello,

Just wondering if anyone here is using MML (Music Maco Language) for creating their NES(nsf) music instead of using a tracker like famitracker or perhaps a modern daw?

As a programmer myself, the idea of being able to create music through codes while staying in the comfort of my favorite editor is something that's very enticing.

Aside from the obvious differences in workflow and the representation of music notes (which one can perhaps get used to overtime) what are some of the things that you liked or didn't like about MML compared to trackers? What would you say are the advantages(strength) and disadvantages(weakness) of MML? Which area does it excel in? or did it ends up being overly tedious and un-intuitive for you?
----------------------------------------------------------------------------------------------

I searched a bit online, but there doesn't seem to be an over abundance of material on MML comapred to its counter part: famitracker, which, of course has a strong following in the community and a few fantastic and detailed youtube tutorials. However, for MML, these two seems to be the only available sources right?

Learning Materials:
1. http://www.nullsleep.com/treasure/mck_guide/
2. http://woolyss.com/chipmusic/chipmusic- ... _guide.php
* http://wikiwiki.jp/mck/?MML (now this one is very well made and contains a wealth of information, but sadly it's in Japanese so it's a bit hard to utilize even with google translate)

Does anyone know of any other materials by any chance?
------------------------------------------------------------------------------------------------------
Now, when it comes to setting up MML, the primary steps seems to be:

1. Obtaining VirtuaNSF、 NSFplay
2. Get ppmck. 09a being the latest pack I believe?
-unzip and extra the files and use them to set up the enviornment

That's pretty much it right? (are there any utilities that are essentials when it comes to mml, ppmck? hoot? syntax color scheme, analyzer? )
----------------------------------------------------------------------------------------------

*Lastly, all of these packages and software seems to be made for Windows, does anyone know if it's possible to set it all up in Linux? ^_^ If so, could someone perhaps show me how? Thanks in advance!*


By the way, I know a lot of the nes game's music were composed with MML in the past, but when it comes to modern chiptunes, what are some of the composers or musicians I can check out who use MML as their weapon of choice when it comes to music creation?
Last edited by therue on Sun Sep 04, 2016 3:29 am, edited 1 time in total.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting started with MML (mck, ppmck)

Post by tepples »

I use Pently, an NES music engine whose input format is based on MML and LilyPond. The tools are in Python, so they'll work on both Windows and Linux.

Otherwise, if you use Linux on x86 (or Linux on x86-64 with 32-bit libraries installed), you can use Windows tools in Wine.
User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Getting started with MML (mck, ppmck)

Post by rainwarrior »

There's this website:
https://www.mmlshare.com/

It has lots of examples to learn from, and a built-in web interface for building and listening to the resulting MML. (Also a good place to find people to talk to about it.)

As for what the advantages/disadvantages are...
  • It has a lot of extra flexibility if you want to do some very specific/specialized stuff, but for most music this isn't really much of an advantage.
  • Since it's all text you could potentially have a mouse-free working environment, if that's important to you.
  • The lack of immediate feedback is a huge disadvantage compared to Famitracker. Being able to hear a sound right away, and hear it in context of the rest of the music as you're working is so important. It speeds up composing tremendously (i.e. you make better music in less time). This is the single reason I don't really use MML unless I have to.
If you want some examples of very good PP/MCK MML, I think the very best work has been done by Robokabuto:
http://www.geocities.jp/robokabuto/
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Getting started with MML (mck, ppmck)

Post by Pokun »

I could never really get into trackers so I'm more for MML. I'm no musician but I can read sheet music, and MML is basically like writing sheet music but with symbols easily typed on a PC keyboard rather than stripes and tadpoles.

One problem with MML is that there is no Famitone for it. PPMCK is feature-rich but it seems to be mainly for making NSFs rather than homebrew development, and also you are restricted to NESASM. NSDL seems good but with that you are restricted to CC65/CA65.

In the end I decided it was a good idea to learn how to make my own sound engine, and it was very worthwhile. It shouldn't be too hard to make an MML interpreter for it.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting started with MML (mck, ppmck)

Post by tepples »

Pokun wrote:One problem with MML is that there is no Famitone for it. PPMCK is feature-rich but it seems to be mainly for making NSFs rather than homebrew development, and also you are restricted to NESASM. NSDL seems good but with that you are restricted to CC65/CA65.
Pently also requires ca65 at the moment. Do you prefer ASM6? Others have asked me to add ASM6 support, but I haven't been able to work much on Pently due to other obligations. Or do you prefer a different assembler?
zzo38
Posts: 1096
Joined: Mon Feb 07, 2011 12:46 pm

Re: Getting started with MML (mck, ppmck)

Post by zzo38 »

It is true ppMCK is meant for making .NSF and is not meant to make a game. But I think ppMCK can be compile on Linux it is a C code and is probably portable, although I have not tried it yet (try going into that directory and typing make and see if it compiles without errors). I have made some improvement of ppMCK, but have not tried it since I have this new computer (with Linux). I do not use syntax colours.

It is possible that many people will not want to use ca65 and will prefer ASM6; or in my case, I prefer NESASM.

I have also once made a music engine for a Famicom game and used Csound and CsoundMML, but that don't work so well. There is AmigaMML to make music output to .MOD/.XM formats, but that isn't actually suitable for NES/Famicom anyways. (But, possibly a program can be based on modified version of such things, to do something else.)
(Free Hero Mesh - FOSS puzzle game engine)
User avatar
therue
Posts: 3
Joined: Sat Sep 03, 2016 7:27 am

Re: Getting started with MML (mck, ppmck)

Post by therue »

any idea why BouKiCHi's ppmck section has been taken down on github? :(

i found this http://deadbeef.sourceforge.net/portable.html
deadbeef is a popular linux music player and upon testing, it does seems to play nsf file so that's good, but when it comes music players for nsf, do accuracy matter? is that why custom players such as nsfplay was created? because it's able to more accurately play the nsf files than the commercial players and able to detect and accurately play all the pitches?

played a sing in both deadbeef in linux and NSFplay in windows.. NSFplay seems so much clearer.
is it possible to run NSFplay in linux via Wine?
Last edited by therue on Sun Sep 04, 2016 4:30 am, edited 1 time in total.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Getting started with MML (mck, ppmck)

Post by Bregalad »

MML is for music MACRO language, not micro, because it uses macro in order to register instrument sounds.

I like MML better than trackers. It's more flexible and all, and is basically platform independant. You'd in theory just need to change macros and you'll be ready to play the same song on another platform. Also, if you want say a channel to echo another channel (play the same melody with a delay), with MML it's trivial, but with a tracker... welcome to hell.

MML is also the sole format that allow you to compose with a different tempo for different tracks, or to have not all tracks looping at the same time. It also allow you to control more directly the memory of what's in the music replayer, much like programming in assembly.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting started with MML (mck, ppmck)

Post by tepples »

Bregalad's points put Pently solidly in the MML camp.

By using named instruments in Pently, I've left the multi-platform option open. The prospect of a port to Super NES is why I pushed for a 65C02-style SPC700 instruction macro pack in ca65, so that I could share song and pattern interpretation code between NES and Super NES versions. But you'd still have to change channel names in arrangements of a piece for different sound chips.

A 2-channel echo in Pently looks like this:

Code: Select all

at 9:1
play melody_a with flute on pulse2
at 9:1:3
play melody_a with quiet_flute on pulse1
This waits for measure 9 beat 1, starts a pattern on pulse channel 2, waits until 3 rows after the start of the beat, and starts the same pattern on pulse channel 1 with a different instrument.

A 1-channel echo looks like this:

Code: Select all

at 9:1
attack on pulse2
play fanfare_b with staccato_horn on attack
at 9:1:3
play fanfare_b with echo_horn on pulse2
Independent looping per channel in Pently was inspired by the short drum track loops in the ground, Starman, and water themes of Super Mario Bros. And it saves a lot of space, which was important for the NROM-128 games for which I originally developed Pently. A loop can also be interrupted, which makes drum fills practical.
Bregalad wrote:MML is also the sole format that allow you to compose with a different tempo for different tracks
How can tracks be kept in sync like this?
User avatar
therue
Posts: 3
Joined: Sat Sep 03, 2016 7:27 am

Re: Getting started with MML (mck, ppmck)

Post by therue »

where are you getting your ppmck from?
https://github.com/BouKiCHi/ppmck is no longer available for some reason

there's this older ppmck09a.zip release from http://ppmck.web.fc2.com/installppmck.html#UNIX
but then all the future releases are unavaiable due to the missing section on his github page.

i do see 2-3 forks of his ppmck on github, is anyone using any of them? or has anyone found more updated versions from japanese web sites that he may have released to?
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Getting started with MML (mck, ppmck)

Post by Pokun »

tepples wrote:
Pokun wrote:One problem with MML is that there is no Famitone for it. PPMCK is feature-rich but it seems to be mainly for making NSFs rather than homebrew development, and also you are restricted to NESASM. NSDL seems good but with that you are restricted to CC65/CA65.
Pently also requires ca65 at the moment. Do you prefer ASM6? Others have asked me to add ASM6 support, but I haven't been able to work much on Pently due to other obligations. Or do you prefer a different assembler?
I'm an ASM6 guy. I have tried ca65 and don't really mind it at all, but since all my projects are in ASM6 I don't like to have to switch to different assemblers all the time. Also I like the simplicity of ASM6, and it's the one I'm most comfortable with.
User avatar
freem
Posts: 176
Joined: Mon Oct 01, 2012 3:47 pm
Location: freemland (NTSC-U)
Contact:

Re: Getting started with MML (mck, ppmck)

Post by freem »

rainwarrior wrote:https://www.mmlshare.com/
For some reason, a different site pops up for me using that URL... weird.

In any case, I managed to find http://boukichi.github.io/mckjs/
rainwarrior wrote:The lack of immediate feedback is a huge disadvantage... Being able to hear a sound right away, and hear it in context of the rest of the music as you're working is so important. It speeds up composing tremendously (i.e. you make better music in less time). This is the single reason I don't really use MML unless I have to.
I'm going to second this, because you don't realize just HOW important it is until you don't have it.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Re: Getting started with MML (mck, ppmck)

Post by Bregalad »

Bregalad wrote: How can tracks be kept in sync like this?
This feature is when you do not want to tracks to be kept in sync obviously. This happens rarely, but if you want to do it, you can. With a tracker you can't.

The most obvious use is to include sound effects such as birds tweet in a music, and you don't want your birds tweet exactly at the same place in music every loop for instance. Not useful on NES, but definitely useful on platform with more sound channels.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting started with MML (mck, ppmck)

Post by tepples »

rainwarrior wrote:There's this website:
https://www.mmlshare.com/
Do you know its administrator? If so, could you pass along this message:

Code: Select all

www.mmlshare.com uses an invalid security certificate.

The certificate is only valid for the following names:
  app.fisiozero.pt, www.app.fisiozero.pt

Error code: SSL_ERROR_BAD_CERT_DOMAIN
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: Getting started with MML (mck, ppmck)

Post by thefox »

rainwarrior wrote:The lack of immediate feedback is a huge disadvantage compared to Famitracker. Being able to hear a sound right away, and hear it in context of the rest of the music as you're working is so important. It speeds up composing tremendously (i.e. you make better music in less time). This is the single reason I don't really use MML unless I have to.
I always wondered how well something like this could be worked into a text editor specifically customized for use with (a specific variant of) MML.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
Post Reply