2019 Apr 02

QMK - Weekly song post

Added some random things I've been listening to this week link:

  1. Fantasie Impromptu and Nocturne Op. 9 No. 1 in B flat minor by Chopin
  2. Isabella's Lullaby from The Promised Neverland
  3. Renai Circulation and Platinum Disco from Monogatari
  4. Terra's theme from Final Fantasy 6


2019 Mar 24

QMK - Added songs from Nier and Nier Automata

I decided the Nier franchise deserved a week all to itself. Here's this weeks contribution, with the following songs:

  1. Song of the ancients
  2. Kaine Salvation
  3. Amusement Park theme
  4. Coped City
  5. Vague Hope/Cold Rain
  6. Weight of the world


2019 Mar 18

QMK - Added some more songs

Here is this weeks commit:

  1. Liebesleid - Kriesler/Rachmaninoff
  2. Michishirube - Ending song from Violet Evergarden
  3. Melodies of Life - Main song from Final Fantasy IX
  4. Eyes on Me - Main song from Final Fantasy VIII


2019 Mar 09

QMK - Added some songs and note types

I've decided to start adding songs to the QMK song list on a weekly basis (since my music format conversion framework makes it really easy to do).

Here is my weekly commit - I added La Campanella by Liszt, Kataware Doki from Kimi no na wa and Megalovania from Undertale.

I also added the breve note type to musical_notes.h, since the default tempo in QMK is very high, so a higher duration note seemed necessary for a lot of slower songs.


2019 Mar 09

Cambiare - A Lightweight Music Conversion Framework

I was messing around with QMK (popular firmware used with mechanical keyboards) a few days ago and was adding custom songs to my Preonic keyboard, and it was taking forever. So I wrote a small utility to convert MusicXML files to a string output format that could easily be added to a QMK song list.

Here's an example input:

Here's an example output:

I later decided to use this utility as the basis of a small framework to convert single staff music inputs into custom outputs, so I could use it for other output types later.

Inputs are modules that implement the MusicImporter abstract class, and outputs must implement the MusicWriter abstract class. The process of adding a new input module mainly consists of converting notes in the input type to a CNote, and adding a new output module mainly consists of converting a CNote into the output format.

The next type of output format I'm planning to implement is for Ocarina tabs, specifically for 12 hole ocarina's with a range of A4-F6.

Github: Link