tutorials – Parerga und Paralipomena http://www.michelepasin.org/blog At the core of all well-founded belief lies belief that is unfounded - Wittgenstein Sun, 03 Apr 2011 23:29:03 +0000 en-US hourly 1 https://wordpress.org/?v=5.2.11 13825966 Sound Reasoning: an open educational resource http://www.michelepasin.org/blog/2011/04/04/sound-reasoning-an-open-educational-resource/ Sun, 03 Apr 2011 23:29:03 +0000 http://www.michelepasin.org/blog/?p=1020 I ran into this resource by chance, it’s a complete tutorial on musical analysis by Anthony Brandt and Robert McClure. It’s being made available by Connexions, a “place to view and share educational material made of small knowledge chunks called modules that can be organized as courses, books, reports, etc.”, where anyone may view or contribute:

The summary says:

Sound Reasoning” is a web-based, introductory music appreciation course. It offers a new approach to music appreciation for adults, focusing on style-independent concepts. While the course concentrates primarily on Western classical and modern music, the concepts that are introduced apply to music of any style or era. The goal of “Sound Reasoning” is to equip you with questions that you may ask of any piece of music, thereby creating a richer and more comprehensive understanding of music both familiar and unfamiliar. Here are some additional features of the course. 1) ”Sound Reasoning” is completely listening based. No ability to read music is required. 2) The course assumes little or no musical background. A minimum of terminology is invoked. 3) Musical examples are interpolated directly into the text. 4) The course is interactive. A “listening gallery” with exercises follows each module, so that you may practice and refine your listening skills. 5) The modules may be studied in sequence or individually. 6)You may easily print a .pdf of any module.. “Sound Reasoning” is designed as both a stand-alone, self-paced course as well as a supplement to existing university classes. Thanks to Connexions, “Sound Reasoning” is available free of charge twenty-four hours a day in a cross-platform format. […] You must have the latest version of Macromedia’s free Flash plugin to play the musical examples. The course works best using Internet Explorer 6 on Microsoft Windows, or Mozilla on any platform.

]]>
1020
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