composition – Parerga und Paralipomena http://www.michelepasin.org/blog At the core of all well-founded belief lies belief that is unfounded - Wittgenstein Wed, 10 Oct 2012 14:59:57 +0000 en-US hourly 1 https://wordpress.org/?v=5.2.11 13825966 Composing at the metalevel http://www.michelepasin.org/blog/2012/03/09/composing-at-the-metalevel/ http://www.michelepasin.org/blog/2012/03/09/composing-at-the-metalevel/#comments Fri, 09 Mar 2012 12:20:17 +0000 http://www.michelepasin.org/blog/?p=1109 I’ve started reading “Notes from the Metalevel: An Introduction to Computer Composition“, by Heinrich Taube, and realised I should have done that a long time ago!

Notes From the Metalevel is a practical introduction to computer composition. It is primarily intended for student composers interested in learning how computation can provide them with a new paradigm for musical composition.

I happened to have a pdf version of the book, but the good news is that there’s an html version of it too, which includes also all the midi files of the numerous examples included in the book. So make sure you check that out, if you’re interested in computer-based composition. You might also be interested in this review on computer music journal, and this course materials from Taube’s class at Illinois.

The preface to the fist chapter contains this suggestive excerpt from Leonard Schlain’s book, The Alphabet Versus the Goddess, which Taube (page 19-20) uses as a metaphor of what algorithmic composition (i.e., metalevel composition) is::

The one crowded space in Father Perry’s house was his bookshelves. I gradually came to understand that the marks on the pages were trapped words. Anyone could learn to decipher the symbols and turn the trapped words loose again into speech. The ink of the print trapped the thoughts; they could no more get away than a doomboo could get out of a pit. When the full realization of what this meant flooded over me, I experienced the same thrill and amazement as when I had my first glimpse of the bright lights of Konakry. I shivered with the intensity of my desire to learn to do this wondrous thing myself.
(spoken by Prince Modupe, a west African prince who learned to read as an adult)

It is impossible to know exactly how Prince Modupe felt when he discovered a process by which his very thoughts could be trapped and released at will again into speech. But I think his epiphany must be close to what I experienced when, as a young composer, I was first shown how I could use a computer to represent my musical ideas and then “release them” into musical compositions.
At that instant it became clear to me that there was an entire level of notation above the scores that I had been writing in my regular composition classes, a level I knew nothing about! But I could see that in this level it was possible to notate my compositional ideas in a precise manner and work with them in an almost physical way, as “trapped words” that could be unleashed into musical sound whenever I wanted.

So what does it meant to compose at the meta level?

Given the existence of the acoustic and score representations one might ask if there is yet another representation that constitutes a level of abstraction above the performance score? The answer, of course, is yes; it is what this book terms the metalevel. If the score represents the composition then the metalevel represents the composition of the composition. A metalevel representation of music is concerned with representing the activity, or process, of musical composition as opposed to its artifact, or score.

This book is about using the computer to instantiate this level: to define, model and represent the compositional processes, formalism and structures that are articulated in a musical score and acoustic performance but are not literally represented there. By using a computer the composer can work with an explicit metalevel notation, or language, that makes the metalevel as tangible as the performance and acoustic levels.

 

]]>
http://www.michelepasin.org/blog/2012/03/09/composing-at-the-metalevel/feed/ 1 1109
JMusic: music composition in Java http://www.michelepasin.org/blog/2010/12/09/jmusic-music-composition-in-java/ Thu, 09 Dec 2010 18:38:04 +0000 http://www.michelepasin.org/blog/?p=903

jMusic is a project designed to provide composers and software developers with a library of compositional and audio processing tools. It provides a solid framework for computer-assisted composition in Java™, and is also used for generative music, instrument building, interactive performance, and music analysis.

I have no intention to leave Scheme and Impromptu, but when I run into jMusic the other day the thing that struck me is the extensive tutorial available on that website (also the references section is worth checking out).

I think I’m going to start re-doing all of those exercises with Impromptu, as a learning exercise (btw it marvels me that there’s no link to this site on the Impromptu one, given that Andrew Sorensen, the author of impromptu, was working on jMusic too)..

In particular there are various interesting sections that focus on how to represent algorithmically classic harmonic progressions. For example, the Chords in the cycle of fifths tutorial.

This example plays a progression of dominate seventh chords each a fifth away from the previous chord. In this way each of the 12 notes of the chromatic scale are used once as the root of a chord. This chord progression is common in western musical styles from Baroque to Jazz, and is often called the Cycle of Fifths.

The musical result is beautiful; here’s how I implemented it in scheme via Impromptu:

(define progression
   '((0 4 -2 -5) (-7) (0 4 7 10) (5)))

(define loop
   (lambda (beat note)
      (print note)
      (let ((dur  (random '(1 2 4 1/2))))
         (begin
          (for-each (lambda (x)
                       (play dls x 90 dur))
                     (map (lambda(x) (+ x note)) (list-ref progression 0)))
          (set! note (+ note (car (list-ref progression 1))))
          (for-each (lambda (x)
                       (play (/ dur 2) dls x 90 dur))
                     (map (lambda(x) (+ x note)) (list-ref progression 2)))
          (set! note (+ note (car (list-ref progression 3)))))                
         (if (> note 50)
             (callback (*metro* (+ beat (* 1/2 dur))) 'loop (+ beat dur) note)
             (for-each (lambda (x)
                          (play (eval dur) dls x 90 dur))
                       (pc:make-chord-fixed note  4 '(0 4 7 14)))
             ))))

(loop (*metro* 'get-beat) 50)

]]>
903