Java Music Specification Language JMSL MusicShape

JMSL Tutorial Table of Contents

    Hierarchies
  1. The song form as a sequential hierarchy
  2. The string quartet as a parallel hierarchy
  3. Hierarchies within hierarchies

 
    MusicJob
  1. What a MusicJob is, and how it is scheduled
  2. Two ways you can customize a MusicJob
  3. Overriding repeat() to print a "hardwired" message
  4. A more flexible approach: PrintingJob
  5. Using Playable instead of overriding methods
  6. Two MusicJobs with custom start, repeat, and stop Playables
  7. Using a MusicJob's Instrument to perform data

 
    Collections
  1. Hierarchies as collections of Composables
  2. Sequential Collections
  3. Sequential Collections acting "behaviorally" (choosing which child to launch)
  4. Parallel Collections
  5. Collections, like MusicJobs, have start, repeat, and stop PlayListeners

 
    MusicShape
  1. A MusicShape has Elements and Dimensions
  2. Adding data to a MusicShape by hand
  3. Creating data using chance operations, and displaying MusicShapes in the ShapeEditor
  4. DimensionNameSpace maps dimension numbers to dimension names
  5. Creating data using an algorithm
  6. Creating data using Interpolators
  7. Smoothly changing playback rate using JMSL.clock.setRate()

 
    Instruments and Interpreters
  1. Instruments interpret abstract data
  2. Overriding play() to customize Instrument
  3. Playing a MusicShape with a custom Instrument
  4. Doing the same with Interpreters
  5. Interpreting MusicShape data as color
  6. MIDI

 
    JSyn and JMSL
  1. JSyn and JMSL: intro
  2. JSyn and JMSL: JSynUnitVoiceInstrument
  3. JSyn and JMSL: playing a JSynUnitVoiceInstrument with a MusicShape
  4. JSyn and JMSL: Controlling all input ports of a JSyn Circuit
  5. JSyn and JMSL: designing a UnitVoice in Syntona
  6. JSyn and JMSL: Signal Processing Instruments

  7.  

 
    JMSL's score package
  1. JMSL's score package
  2. Add measures using the api
  3. Add algorithmically generated notes using the api
  4. Transforming notes algorithmically: Unary and Binary Copy Buffer Transforms
  5. Implementing your own Unary Copy Buffer Transform, part 1
  6. Implementing your own Unary Copy Buffer Transform, part 2
  7. Binary Copy Buffer Transforms
  8. Implementing your own Binary Copy Buffer Transform, part 1
  9. Implementing your own Binary Copy Buffer Transform, part 2
  10. JMSL Score instruments, part 1: overview
  11. JMSL Score instruments, part 2: Midi Instruments
  12. JMSL Score instruments, part 3: JSyn UnitVoices
  13. Importing a preexisting JSyn UnitVoice and playing it immediately.
  14. JMSL Score instruments, part 4: Designing a UnitVoice by hand
  15. JMSL Score instruments, part 5: Hear it in JMSL Score
  16. JMSL Score instruments, part 6: Accessing other ports of a UnitVoice to alter its timbre note-by-note

 
    JMSL's Transcriber: notating algorithmically generated music
  1. Introduction
  2. Customizing the transcriber
  3. Generating data for the transcriber
  4. Specifying time signatures and tempos
  5. Edit a MusicShape and notate it (Applet)
  6. TranscriberListener, The Big Picture, and a Live Performance Example

 
    JMSL Plugin Tutorial
  1. How to deploy a JMSL Plug-in
  2. How the plug-in scanner works
  3. Building hierarchical menus

 
    MISC
  1. Tuning Tutorial 1: Equal tempered tuning
  2. Tuning Tutorial 2: Using a tuning table
  3. Using WeightedIntegerSequence to generate melody
  4. Using WeightedObjectChooser as a Behavior
  5. PlayLurker Tutorial
  6. Calculate & plot spectra of simple FM pair

 
    Advanced topics
  1. Advanced JMSL Instrument Design
  2. Playing a well designed JMSL Instrument

JMSL Tutorial Index
JMSL Home
  JMSL Tutorial by Nick Didkovsky
  (C) Nick Didkovsky and Phil Burk, All Rights Reserved
  JMSL is based upon HMSL (C) Phil Burk, Larry Polansky and David Rosenboom.