ISE575 / EE675 / CSCI575 / PSYCH675
University of Southern California, Spring 2007

 

Final Project : Macro and Micro musical attributes controller

 

                                                                               

ChangHyun Kim

                   Electrical Engineering Ph.D.student

 

Introduction

Program Description

Program Instruction

Technical Challenges

For the future

Reference

 

 

Introduction

Because computer music generated from the stochastic or statistical model is hard to understand and untouchable to me, I wanted to design a program, which uses my piano playing as an input data. And I want to transform or change some musical attributes in my piano performance. During this semester, I learned that chaotic mapping1 can change existing classical music into very plausible variation piece, Gershwin’s music and Bach’s music. Also, I guess that many other statistical models, for example Gibbs Sampling2, can give me a satisfactory variation of my performance input. By the way, these models generate notes or transforms musical attributes microscopically. So I want to add some more musical attributes, which I can control in my music performance macroscopically. Volume and tempo contour drawing program makes me possible to do it.

[Home]

 

Program Description

I developed two UI programs. First, recording and variation UI program. Second, volume and tempo contour drawing program. Both of them used MIDI signals from real performer’s keyboard playing for recording and playing. Figure 1 and 2 shows these programs’ screenshot.

 

[Fig1. Recording and Variation UI program]

 

[ADAPTER SETUP] attribute have two setup options for MIDI input ports and output ports.  [MELODY RECORDING] attribute have three buttons, [RECORD], [STOP] and [PLAY]. [VARIATION] attribute are currently not implemented. This will be my future works. There are [Status] box, which updates the current status of the program and [Progress Bar], which shows you the current position of the whole piece.

 

 

 

 

[Fig2. Tempo and Volume Contour drawing Program]

 

Figure 2 shows tempo and volume contour control program. There are total 5 buttons, [TEMPO],[VOLUME],[CLEAR],[PLAY] and [STOP].  X-axis is the time axis, starting from 0 to the end of the piece(measurement: millisecond). Y-axis is the tempo and volume axis. In tempo control, red pen will draw from the bottom, which is mapped to the value of 0.1, to the uppermost, which is mapped to the value of 10. In volume control, blue pen will draw from the bottom, which is linearly mapped to the value of -40, to the uppermost, which is mapped to the value of 40.

[Home]

 

Program Instruction

1. MIDI Recording/Variation program

STEP1. Select Input and Output ports from the Adapter Setup by clicking [SET] buttons each. After clicking the [SET] button, you can check the status message in the status box.

STEP2. Push [RECORD] button for recording performance. In this moment, the progress bar moves quickly. This means now recording. Push [PLAY] button for hearing the performance you recorded right before. Click [STOP] button whenever you want while recording or playing.

STEP3. VARIATION part currently has not implemented yet.

 

 

 

2. Volume and Tempo Contour drawing program

STEP 1. Click the [TEMPO] button. That gives you red pen for drawing the tempo contour.

STEP 2. Click mouse left button for each turning point before clicking the end point.

STEP 3. Click mouse right button for the end point.

 

STEP 4. Click the [VOLUME] button. That gives you blue pen for drawing the volume contour. Do the Step from 1 to 3 again.

STEP 5. Click the [Play] button, when you draw both red and blue lines on the black board. While playing, you can immediately stop the playing by clicking [STOP] button.

STEP 6. Click the [CLEAR] button, if you want to redraw the [TEMPO] and [VOLUME] contour.

 

 

[Home]

 

Technical Challenges

  1. USER Keyboard INPUT using Sound Synthesis Toolkit(STK) library

-         a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language.

-         Using RtMidi class for midi input and output

  1. MIDI FILE FORMAT Understanding

-         Composed of three chunks, header chunk, track chunk and data chunk.

-         For changing the volume and tempo, data chunk’s event messages should be changed.

-         Note On 0X90, 0X91, Soft Pedal 0xB0, 0xB1 and  trash 0xF8, 0xFE

[Home]

 

For the future

I currently finished almost all of user interface programming. However, there are two variation models, which I have not implemented yet.

[Home]

 

Reference

Darrell Conklin (2003). Music Generation from Statistical Models. In Proceedings of the AISB 2003 Symposium on Artificial Intelligence and Creativity in the Arts and Sciences, Aberystwyth, Wales, pp.30-35, 2003

Diana S. Dabby (1996). Musical variations from a chaotic mapping. Chaos: An Interdisciplinary Journal of Nonlinear Science, June 1996, Vol.6, Iss.2, pp.95-107.

Visual C++6 Perfect guide 2nd Edition

http://ccrma.stanford.edu/software/stk/

http://www.music.mcgill.ca/~gary/rtmidi/

http://www.sonicspot.com/guide/midifiles.html

[Home]

 

Download

SourceCode

[Home]

 

Copyright (c) 2007 ChangHyun Kim

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

The University of Southern California does not screen or control the content on this website and thus does not guarantee the accuracy, integrity, or quality of such content. All content on this website is provided by and is the sole responsibility of the person from which such content originated, and such content does not necessarily reflect the opinions of the University administration or the Board of Trustees