|
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.
|
Objects for Chord Sequence Analysis
|
Friday January 30, 2004
Im getting ready to write some code to experiment with the analysis of chord sequences. Pachets paper An Object-Oriented Representation of Pitch-Classes, Intervals, Scales and Chords: the Basic MusES describes a very nice and complete design of object representation for chord sequences and related objects. MusES was written in Smalltalk so my first task will be to convert his classes to C++.
Meanwhile Ive finished reading most of the other papers that Ive collected on chord analysis. Unfortunately they arent that useful (so its not worth citing them). Ive also used up all the toner on my printer so perhaps its time to start writing some programs :-).
|
Rule-Based vs. Grammar-Based Tonality Analysis
|
Thursday January 29, 2004
I read some of Pachets other papers hoping to find more information on how rules are used in analyzing jazz chord progressions. Unfortunately I didnt find much more information than I already have yesterday.
When I was reading about analysis of jazz chord progressions, a paper by Steedman was referenced quite often. It doesnt seem to be available on-line. From some of his notes and other papers, I gathered that he represented chord substitutions using a set of (context-sensitive) grammar rules. Because his rules only deal with jazz blues, they arent very useful for my purpose.
I got my own idea on chord tonality analysis today. For each chord in a sequence (e.g., Dm7), find the set of scales (e.g., C major, F major, and Bb major) that may be played over it. Then find scales common to consecutive sequences of chords that minimize modulations. It appears this will reduce the number of rules that will be needed for further processing.
|
Analyzing Chord Sequences
|
Wednesday January 28, 2004
The first step in generating a walking bassline from a given chord sequence might be to analyze the tonality of each chord. I read the paper Computer Analysis of Jazz Chord Sequences: Is Solar a Blues? by Pachet today. It poses the problem in concrete terms, as a hierarchical decomposition of the chord sequence into a known set of shapes. It also describes in some detail the representation of analysis objects, design and representation of rules that are applied to recognize shapes, and circular view of a sequence. Unfortunately other than saying that production rules are used in a proof by forward chaining, nothing is said about the strategies used in prioritizing them.
Also reading A Meta-Level Architecture for Analysing Jazz Chord Sequences and Representing Knowledge Used by Jazz Musicians, both by Pachet, helps a little, where it was said that there are meta-rules and rule packs. Unfortunately these papers didnt get into too much details. You may also be interested in Pachets other papers.
|
Temporal Musical Objects and Reasoning
|
Tuesday January 27, 2004
I read the paper Representing Temporal Musical Objects and Reasoning in the MusES System by Pachet, Ramalho, Carrive, and Cornic today. It talks about the design of a hierarchy of classes for representing knowledge in tonal music. Objects of these classes are ones that a program such as an automatic accompaniment generator might need to manipulate. Theres also a more detailed explanation of PACTs which were used in the Ramalho-Ganascia paper. The ideas in this paper were implemented in a system called MusES. It doesnt appear that its code is publicly available. In any case it was written in Smalltalk. Not a language I want to use. It might be interesting to implement such a set of classes in C++ or Python. Surely the world needs a freely available class library for reasoning about jazz harmony in a modern programming language.
I also read the paper BoB: an Interactive Improvisational Music Companion by Thom. It was again a very high-level description of a program that claims to be able to "trade fours" with a jazz improviser. It wasnt really that informative for my purpose (which is to generate, say, walking basslines and comping from a chord grid). Perhaps Ill skim through her (very long) thesis tomorrow to see if theres anything useful. Pachet also has a few other papers on temporal musical objects which might be interesting.
Monday January 26, 2004
Im interested in programs thatll generate music played by a jazz rhythm section given, say, the chord sequence of a song. A number of commercial products will do that: Band-in-a-Box, MiBAC JAZZ, Jammer Pro, and Onyx Arranger. Theres also the GPL program Pymprovisator.
I have earlier versions of the first two programs, so Im able to play with these. But Im really more interested in studying how these programs work. I found a tutorial (part 1 and part 2) on using the StyleMaker utility to edit BIAB styles. From it one can deduce that BIAB uses a rather simple strategy for generating the accompaniment and depends on meticulous fine-tuning of styles to get results that sound realistic.
I then read the papers An Artificially Intelligent Jazz Performer by Ganascia, Ramalho, and Rolland, and Simulating Creativity in Jazz Performance by Ramalho and Ganascia. These are very high-level descriptions of how automatic accompaniment programs might be implemented and structured. A lot of details such as the exact rules (called PACTs) that were used were left out. One thing useful about the papers are they point to the work of Pachet on knowledge representation, which Ill look into and report back tomorrow.
|
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
|