|
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 doest 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. Its 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). Havent seen the term nibble used in a while! Remember 4004 CPUs? In addition the value 0x7F is used to represent a space. Very strange.
Using these MIDI name document utilities Ive 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
Todays 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 youre 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
Heres a utility for getting the names of the internal patches from a Roland JD-990 and constructing a .midnam file from it. Its 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.
Heres 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.
|
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
|