Jaco

During our recent family vacation, we attempted to learn a few ’80s numbers and somehow after that I got to thinking of River People from Weather Report’s Mr. Gone LP. (A long time ago I attempted to create a MIDI sequence of River People.)

After arriving home, I found myself reading, watching and, listening to anything the internet has to offer about Jaco Pastorius. I always admired his playing but, I wasn’t a big fan when he was immensely popular in the ’70s and early ’80s but, for some reason the other night I ended up watching internet videos of him and reading all kinds of stuff about him. Some of the attraction is due to the tragic arc his life story makes; and some of it is due to parts of the story that take place in Ft Lauderdale – a city I’ve become familiar with over the last dozen years or so. (Turns out, I’ve been within a mile from his grave without even knowing it.)

While I was mostly ignoring what would prove to be his later life, I would also never hear the story of how, and why he died 20 years ago this weekend. Upon reading the Wikipedia entry, I couldn’t help but think of the movies Bird, Basquiat, and Pollock – and wonder about the lack of a Pastorius film.

Using the bigwinky.com midiToCSound Converter

The MIDI that I’m going to be working with is MIeHDaNHSt.mid, created, on a Korg X3. Far from a master work, it something I made very quickly nearly 10 years ago by recording each track in to the X3’s sequencer in real time. (An MP3 of the MIeHDaNHSt.mp3 is available.)

My plan will be

  • use midiToCSound to identify the sounds used by the MIDI file,
  • create an orchestra that produces each sound
  • create the mapping files that map MIDI patch numbers and MIDI percussion note numbers to CSound instrument numbers
  • run midiToCSound to create a .sco file and,
  • run csound to render the final recording

Here’s the command to list the sounds used in the MIDI file:

$ java -jar ../../miditocsound-alpha-1.jar -list -in Miehdanh03.mid
Percussion note numbers used:
[DrumTimbre: note#=36 name=Bass Drum 1]
[DrumTimbre: note#=38 name=Acoustic Snare]
[DrumTimbre: note#=65 name=High Timbale]
[DrumTimbre: note#=66 name=Low Timbale]
[DrumTimbre: note#=75 name=Claves]
Program numbers used:
[GenerMidiTimbre: prg#=9 name=Glockenspiel family=Chromatic Percussion]
[GenerMidiTimbre: prg#=17 name=Percussive Organ family=Organ]
[GenerMidiTimbre: prg#=35 name=Fretless Bass family=Bass]
[GenerMidiTimbre: prg#=91 name=Pad 4 (choir) family=Synth Pad]
[GenerMidiTimbre: prg#=115 name=Woodblock family=Percussive]

Hey! Wait a second. There is no Glockenspiel in that MIDI!

Indeed, there is a bug in the alpha-1 version that causes any program changes on channel 10 to be included in the analysis. The bigwinky.com midiToCSound alpha-2 will ignore these so, now we get:

$ java -jar ../../miditocsound-alpha-2.jar -list -in Miehdanh03.mid

Percussion note numbers used:
[DrumTimbre: note#=36 name=Bass Drum 1]
[DrumTimbre: note#=38 name=Acoustic Snare]
[DrumTimbre: note#=65 name=High Timbale]
[DrumTimbre: note#=66 name=Low Timbale]
[DrumTimbre: note#=75 name=Claves]
Program numbers used:
[GenerMidiTimbre: prg#=17 name=Percussive Organ family=Organ]
[GenerMidiTimbre: prg#=35 name=Fretless Bass family=Bass]
[GenerMidiTimbre: prg#=91 name=Pad 4 (choir) family=Synth Pad]
[GenerMidiTimbre: prg#=115 name=Woodblock family=Percussive]
$

That’s much better. (Its also good that there is one less instrument to come up with.)

So after some time, I came up with a crude CSound orchestra that could make these sounds used by the original MIDI file. I edited the progmap and notemap mapping files and then ran the command
$ java -jar ../../miditocsound-alpha-2.jar -convert -in Miehdanh03.mid -notemap MIeHDaNHSt-notemap.txt -progmap MIeHDaNHSt-progmap.txt -pre MIeHDaNHSt-header.txt -out MIeHDaNHSt.sco

and generated the .sco file. Next I ran csound

$ csound -o MIeHDaNHSt00.wav MIeHDaNHSt.orc MIeHDaNHSt.sco

Finally I encoded the mp3 with
lame --tt MIeHDaNHSt --ta bigwinky.com MIeHDaNHSt00.wav MIeHDaNHSt00.mp3
and / or
$ oggenc -a bigwinky.com -t MIeHDaNHSt -d20070908 -oMIeHDaNHSt00.ogg MIeHDaNHSt00.wav

To see the the mapping files, the orchestra, and the generated score, please download the bigwinky.com midiToCSound alpha-2 package.

Let me be the first to say that this effort might prove be a waste of time. There are MIDI CSound opcodes that can probably do this sort of thing but, I haven’t explored them yet. Also, the scenario described in this post is not like the way I intend to use midiToCSound in the first place. In this exercise, I already had an existing rendition that was hard to improve on (given musical limitations of the source performance.) I found myself attempting to ‘reinvent the wheel’ while comming up with a CSound orchestra that would sound remotely satisfactory compared to the X3’s sounds. I hope the experience will be more gratifying when I use the midiToCSound tool to leverage other MIDI sequence editors and trigger sounds that are uniquely my own creations.