My OS X Programming Blog
Mac OS X Cocoa and CoreMIDI Programming
About Andrew Choi


MIDI Programs

MIDI File Player (External Device)

MIDI Destination Pop-Up Button

MIDI File Player (Internal Synth)

MusicSequence Sample Code

MIDI File Writer

MIDI Name Document Parser

NameConfigSetup

Fish Creek MIDI Framework

MidnamUtility

SysExSenderX

Other Programs

FCBlogEditor

FCBlog and Patch

Chinese Checkers Program

jyut6 ping3 Cantonese Input Method

Cocoa Sample Programs

Syntax Coloring Using Flex

NSTextField and Undo

NSToolbar

Implementing File Import

Launch Application and Open URL

Saving Uncommitted Text Field Edits

Algorithms

Jazz Chord Analysis as Optimization

Optimal Line Breaking for Music

Optimal Chord Spacing

   

A blog where I will write mostly about programming in Cocoa and CoreMIDI, and experiences from my ports of Emacs and XEmacs to the Mac OS.

Python Extension in Xcode Project
Friday November 21, 2003

This Xcode project shows how the C source file of a Python extension and a C main program that uses that extension through an embedded Python interpreter can be put in the same project. Breakpoints can be set anywhere in the main program or extension during debugging. Unfortunately the “bundle” option for LIBRARY_STYLE build setting does’t seem to work correctly. Therefore the extension is build using a shell script build phase that invokes the Python distutils.

E-mu Morpheus MIDI Name Doc Utility
Thursday November 20, 2003

Yet another MIDI Name Doc utility for the E-mu Morpheus. Even among all my older synths, some, like the Morpheus, are more “modern” in design than others. It’s easier to write the MIDI name doc utilitiy for it because its sysex implementation includes name list requests.

Korg Wavestation A/D MIDI Name Doc Utility
Wednesday November 19, 2003

I only have this MIDI Name Doc utility for the Korg Wavestation A/D to post today. The sysex messages for the Wavestation are unusual in that each data byte is transmitted as two nibbles (4-bit values). Haven’t seen the term “nibble” used in a while! Remember 4004 CPU’s? In addition the value 0x7F is used to represent a space. Very strange.

Using these MIDI name document utilities I’ve been constructing, patch names can be retrieved from my synths and .midnam files created for them. These files can then be used in the “ensemble” interface I discussed some time ago. Patches can be selected by name rather than by program change numbers in the user interface. One can of course use the factory name .midnam files from MOTU. But without the ability to fetch the names of the current patches from the synths, one cannot use anything but factory patches, which really takes the fun out of using synths.

E-mu Procussion MIDI Name Doc Utility
Tuesday November 18, 2003

Today’s project is a .midnam utility for a E-mu Procussion. Once the sysex messages for the Procussion have been figured out, the program takes 10 minutes to write.

A note about Xcode projects I post on these web pages. To conserve space, code sense indexing in the project info panel has been turned off and the project cleaned before the archive is generated. Turn that back on to get nice Xcode features like code completion to work again.

If you’re bored by slightly different .midnam utilities for different synths, so am I writing them. There will be an interesting twist in the next few days. I promise. You just have to keep reading :-).

JD-990 MIDI Name Doc Utility
Monday November 17, 2003

Here’s a utility for getting the names of the internal patches from a Roland JD-990 and constructing a .midnam file from it. It’s not complete in the sense that it doesn't fetch patch names on a memory card if it's present, but extending it to do so should be easy. Unfortunately unless some delays are placed between consecutive sysex messages, the JD-990 can behave incorrectly. This causes the retrieval of 64 16-character names to take as much as 30 seconds.

Here’s a replacement for lexer.l in the FCBlogEditor project that does slightly fancier syntax coloring. It colors string arguments within tags in a different color. It makes use of start conditions, an interesting feature of flex. The syntax coloring operation remains very efficient since the generated scanner needs to make only one pass over the input.

November 2003
Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Oct  Dec

xml

Search this blog with


Lists

Less-Known Facts About Emacs

Emacs Rants

Chinese Restaurants in Calgary

Calgary/Banff Tourist Attractions

C++ Reading List

Science Fiction Series

Top-10 Reason I Stopped Working on Emacs

Top-10 Types of Questions I Get About Emacs

10 Defining Moments as Programmer


Misc

Carbon XEmacs

Emacs for Mac OS X


Copyright © 2003, 2004, 2005 Andrew Choi (Contact Information). Created with FCBlog