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. Launching two PrintingJobs in an applet
  6. Using JMSL.out to re-route printed output
  7. Launching two printing jobs with JMSL.out redirected to a TextArea
  8. Using Playable instead of overriding methods
  9. Two MusicJobs with custom start, repeat, and stop Playables
  10. Choosing a Playable randomly at runtime
  11. 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

 
    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: using a common clock
  2. JSyn and JMSL: playing a SynthNote
  3. JSyn and JMSL: playing a SynthNote designed in Wire
  4. JSyn and JMSL: control all input ports of a JSyn SynthNote, using our Wire SynthNote
  5. JSyn and JMSL: control all input ports of a JSyn SynthNote, using complex SynthNote
  6. JSyn and JMSL: Signal Processing Instruments
  7. JSyn and JMSL: creating a SynthCircuit from scratch
  8. JSyn and JMSL: creating a JSyn Instrument from scratch
  9. JSyn and JMSL: an Applet with homemade circuit and instrument

 
    Players
  1. Players hold a number of MusicShapes and one Instrument
  2. Using a Player to perform a sequence of MusicShapes
  3. Using two Players to perform the same MusicShape differently

  4.  

 
    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. Building your own JScore instrument, part 1: JMSL Score instrument design
  11. Building your own JScore instrument, part 2: Midi Instruments
  12. Building your own JScore instrument, part 3: JSynInstrument
  13. Importing a preexisting SynthNote and playing it immediately.
  14. Building your own JScore instrument, part 4: A simple SynthNote class
  15. Designing a SynthNote by hand
  16. Building your own JScore instrument, part 5: Hear it in JMSL Score
  17. Loading your SynthNote using JScore's API
  18. Building your own JScore instrument, part 7: Sample Playing Instrument

 
    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

JMSL Tutorial Index
  JMSL Tutorial by Nick Didkovsky, didkovn@mail.rockefeller.edu
  (C) 1997-2003 Nick Didkovsky and Phil Burk, All Rights Reserved
  JMSL is based upon HMSL (C) Phil Burk, Larry Polansky and David Rosenboom.