I wanted to share a few nuts and bolts of MIDI for iOS development. Specifically, the best frameworks out there, a process for exploring MIDI, etc.

MIDI Frameworks

  • AudioKit is by far the best for Swift developers.
  • Csound is a music computing system and has infinite potential.
  • MIKMIDI is great for Objective-C developers.

MIDI Utilities

Both of these links helped parse MIDI.


Research

My initial process always starts with research. When it comes to MIDI for iOS development, there are a lot of tools.

System

Javascript

MIDI

  • Sound.io Midi - This library makes it easy to attach MIDI controllers to web apps.

Swift


Publishing MIDI

Music XML

MusicXML looks scary, but there is Music JSON, so that's promising.

Music JSON

  • MusicJSON is a proposal for a standard way of creating music sequence data in JSON.

VexFlow

VexFlow is awesome. The tool precisely taught me how to "think" about music through:

  • Clef Properties - List of clef names.
  • Key Properties - List of note names.
  • Accidentals - List of accidentals.
  • Key Signatures - List of valid keys.
  • Duration - List of duration codes.
  • Articulations - List of articulations
  • Ornamentals - List of ornamentals

This table is what I needed to understand what to store.

I like VexFlow and look forward to using the language in the future guitar project.

Music Notation Kit

The author of Music Notation Kit, Kyle Sherman, decided to organize music into different classes, including:

  • Staff
  • Measure Repeat
  • Tone
  • Time Signature
  • Key
  • Note
  • Tuplet (Duplet, Triplet, Septuplet)
  • Note Collection
  • Note Duration
  • Repeated Measure
  • Measure

MIDI Tracks

Free MIDI Performances

Commercial MIDI Tracks


MIDI Sounds

SoundFonts


Tools for Devs

Testing SoundFonts

  • Buzzwood MIDI Test Page has a suite of MIDI tests you can use to determine if you have a strange-sounding instrument in your SoundFont files.

SoundFont Compression / Decompression

sfArk is a tool that compresses SoundFonts. The tool, developed by Melody Machine Github, provides a Zip-type format for sounds.


Intellectual Property Law


Business to Business


Web Audio API

Although I'm currently working on an iPhone app, I found these Javascript examples to be useful.


Interesting Advancements in MIDI

  • aeolus Aeolus is a synthesized (i.e., not sampled) pipe organ emulator that should be good enough to make an organist enjoy playing it. It is a software synthesizer optimized for this job, with possibly hundreds of controls for each stop, that enable the user to "voice" his instrument—first presented at the 2nd LAD conference in Karlsruhe, the end of April 2004.

  • rtpMIDI


Create Sounds for MIDI Using Soundfont 2 or EX24

If you ever want to create a sound library for MIDI, here are two simple ways: SoundFont or EX24.

SoundFont

SoundFont is old school but still useful. The idea is to assign a Wave file to a MIDI note.

C4 on a MIDI note is note 60.  

EX24

This should explain where EX24 originated from and how you can create an ex24 soundbank.

What is sfArk?

It's a lossless audio compression format optimized for SoundFont files. sfArk is free for non-commercial use. Programs to decompress sfArk files exist for Windows, macOS X, and Linux platforms.

sfArk is a closed source format created by a now-defunct company called Melody Machine. It's like a zip file for SoundFont files. When the company died, they also removed the extractor and decompressor utilities. These utilities are around but almost impossible to find. Having spent 2 hours searching for the utilities, I've decided to host them to save others time in the future!