|
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.
Thursday October 30, 2003
Xcode happily opens and builds my ProjectBuilder projects. Having used the latter for about two months, I'm a little disoriented in Xcode. But it looks easy enough to use. I like the way it deals with searches and symbols.
Panther installs a Python 2.3 framework in /System/Library/Frameworks/. Embedding Python in applications is therefore now easier.
Emacs works. Panther installs texinfo 4.6. So Emacs now really builds out of the box. A long standing problem with pseudo terminals has been fixed in Darwin 7.0. Emacs on OS X is now more consistent with itself on other Unixes.
Obtaining MIDI external devices connected to devices now seems to work differently. External devices now have ports (probably entities in CoreMIDI documentation), which are specified in MIDI Audio Setup. This messes up the strategy I was using for identify sysex devices. I need to fix this in FCM.
I read on the coreaudio-api list that MIDIThruConnection now works correctly in Panther. MIDIThruConnection is useful for implementing play-through instruments in a sequencer. MIDI event send and receive do not have high real-time requirements, so long as events are scheduled in time, and recording buffers are emptied fast enough.
Fonts are nicer in Panther. No noticeable increase in speed in Finder. Many human interface elements of Jaguar actually looked better. Brush metal is ugly. Blue bubbles behind filenames look like XP. Clock.app is gone (the one from 10.2 still works!). Very glad I discovered Mozilla Firebird today.
Wednesday October 29, 2003
It took a whole day to backup everything on my hard disk so I can install Panther! Just got Emacs back running again and it's already past midnight!
No programs today. Just a picture of birds on a tree in front of my window. Reminds me of the Hitchcock movie.

|
DX7 II MIDI Name Document Utility
|
Tuesday October 28, 2003
As promised, here is a program that fetches the names of the current performances and voices from a DX7-II and writes out a .midnam file that represents them.
It's quite easy to write once everything has been figured out, e.g., how to initiate a bulk dump from the DX7-II remotely. The latter I did by monitoring sysex messages sent by Opcode Galaxy when reading a bundle from the DX7-II.
I also went down to the store to get a copy of Panther today. They just came in! Will probably spend tomorrow backing up data and installing it.
|
A MIDI Name Document Generator!
|
Monday October 27, 2003
It's only logical that I also wrote this MIDI Name Document generator. It writes an in-core Foundation collection representation of a .midnam file, such as one produced by the parser in MidnamParserTest, to a .midnam file.
The test program reads a .midnam file named by the first argument, parses it using the MidnamParserTest parser, then writes out the corresponding .midnam file named by the second argument. Core Foundation's CFXMLTreeCreateXMLData function writes XML data without newlines. So use the .midnam program from libxslt to view the program's output as follows.
xmllint --format <xml file>
With this code, I can, e.g., write my own version of CherryPicker. More interestingly, with the sysex send and receive library, I can write a utility to read patch names from a synthesizer and write out a .midnam file corresponding to its current patches! That's much better than factory names if you ever edit patches on your synths :-). This will be my next project.
|
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
|