Friday, January 29, 2016

Documentation day. I've done the first draft of the manual pages for the plugin stuff and started a developers "how to" as well. And, in between all that word-smithing I managed to go though the existing docs and fix some typographic stuff to do with footnotes at the end of sentences (note to self: the footnote reference number comes after the punctuation!).

Tuesday, January 26, 2016

I have more work done on the plugin mechanism. Plugin names and their associated directories are now totally case-insensitive. They can now reside in three different locations:

      the current directory (.),
      the directory of the current file being processed,
      the plugins directory.

Also added a bunch of debug stuff and sanity tests.

And, while hacking away, I've made the pretty printer for error/warning messages even pretty by using the terminal width for formatting.

All is very cool. Release coming soon.

Friday, January 22, 2016

In addition to my house chores (snow shovelling and getting a room ready to paint) I did manage a bit of MMA work today: Changed the error and warning report to pretty print (line wrap) messages. Wow, only took how many years to get around to this task? Well, it's done. Hurrah.

Thursday, January 21, 2016

I wrote the documentation for the enhanced subroutine code today. Getting it proofread right now. Hopefully that will now be done (I've been stalling way to long on this).

Next, I write the docs for the new plugin stuff. That's actually pretty easy ... the hard part is pushed off to plugin writers :)

So, a new developer release is getting closer and closer! Hopefully within a week.

Tuesday, January 19, 2016

And the name decision has been made. Plugins will reside in a directory with the same name as the plug ... so the "hello" plugin will live in plugins/hello. When the plug is registered it will be called "@hello".

This should make it easy to see plugin commands in mma source files.

Monday, January 18, 2016

I have the plugin business working quite nicely. Yes, soon there will be a beta for you all to try out!

But, first a question: How to name a plugin?

Up to now my test code has been accepting a name (for example "Hello") and adding that to the command tables currently in MMA. This means that you can use "Hello" just like any other command.

It might be just a bit too easy and quite hard to spot in MMA source files. So, I'm suggesting that we convert "Hello" to "*Hello" in the internal tables.

Any comments?


MMA -- Musical MIDI Accompaniment generates background tracks for your songs. Get it at http://www.mellowood.ca/mma .

Friday, January 15, 2016

So, a bit more work. A bit more searching for useful Python code (where would the world be without Google?). A bit more head-scratching. But, worthwhile!

MMA now has the ability to use plugin commands for both its basic and track operations. The process, once the plugin is written, is seamless and invisible to the user.

Cool.


MMA -- Musical MIDI Accompaniment generates background tracks for your songs. Get it at http://www.mellowood.ca/mma .

Wednesday, January 13, 2016

I have just added code to permit plugins. Very cool ... and very beta just now.

The idea is that code can be written to extend mma's current command set in a python module outside of the main distribution.  Once registered, these user supplied modules work just like any other mma command.

Right now one needs to use a PLUGIN keyword preface, but I'm working on eliminating that.

The next developer release is going to be lots of fun!


MMA -- Musical MIDI Accompaniment generates background tracks for your songs. Get it at http://www.mellowood.ca/mma .

Sunday, January 10, 2016

Remember what I said about bugs the other day? Well, squashed another one! There was a timing issue with offsets in the Plectrum code. Thanks Iganzio good eyes it was found and squished. Gone. Out damned bug.



Friday, January 8, 2016

I am always amazed by the feedback my little MMA program gives me and how much I learn from it. Here's a cool little example: The other day I created a short MMA file for the Nat King Cole (and many others ... including Lady Gaga) song "Orange Colored Sky". I used the ModernJazz groove. Pretty simple stuff ... but then I figured it'd be cool to have some brass hits on the "Flash Bang" stuff. So, I programmed in a BrassSection voice for this with the default articulate of 90. Sounds fine, until I played my horn with it. I kept hearing this echo of the brass after my notes. So, I ended up shorting the notes using "articulate 70" and this pretty much duplicated my played notes. Interesting just how much I was cutting the notes!
So Ignazio  sent me a big patch for the function code in MMA. Once this is completely implemented we'll have default values, local variables and full recursion. All I have to do is to figure out how it all works and write the damn docs :) This code is a BIG DEAL and I'm really grateful for the work and effort. It will certainly be part of the next beta!

Tuesday, January 5, 2016

You know, it's amazing how bugs persist.

I just got notified of a bug in the If/Then code which meant that most string comparisons weren't being done correctly. And, I have no idea how long this bug has been around (and, no, I'm not going to look at old versions to see either).

Anyway, it's fixed now and will be in the next beta release. If this bug is bugging you, send me a mail and I'll send a fix.

Friday, January 1, 2016

Chord octave adjustment

I have modified the chord parser octave adjustment. In previous versions of MMA you could only have a single "+" or "-" in front of a chord name to adjust the octave of the chord. You can now have a nearly unlimited number. Great for the occasional beat you might want to punch out.

MMA 20.02a posted

I just posted 20.02a to the website:    https://mellowood.ca/mma/downloads.html#developer Some nice little fixes including a bug in plug...