JSyn - modular synthesis API for Java.
JMSL - Java Music Specification Language
PortAudio - cross platform audio I/O API for 'C'

WARNING - This tutorial describes the old original JSyn API. Please refer to the current docs for more up-to-date information.

JSyn Tutorial

Basic Template for a JSyn Application

Here is a basic template for a JSyn program. It shows how to import the JSyn package and how to make a simple sound. You can select, copy and paste this code into a text editor.

This program has a main() method which is the entry point for the program. In the main method, it instantiates an object and then plays a sound using that object.

/* Put program in a package to keep classes separate from others. */
package workshop;
/* Import JSyn classes so we can use them. */
import com.softsynth.jsyn.*;

/** Simple JSyn program that plays two tones with an oscillator.
 * @author Phil Burk (C) 2000
public class VerySimpleSound
// Declare unit generators that we will use.
        public SawtoothOscillatorBL  osc;
        public LineOut               lineOut;

/* Main entry point to program. Called by Java Virtual Machine. */
        public static void main(String args[])
        /* This is static method so we need to create an object that we can call. */
                VerySimpleSound app = new VerySimpleSound();
/** Start JSyn, play some sounds, then stop JSyn. */
        public void play()
                // Start JSyn synthesizer.
                // Create some unit generators.
                        osc       = new SawtoothOscillatorBL();
                        lineOut   = new LineOut();
                // Connect oscillator to both left and right channels of output.
                        osc.output.connect( 0, lineOut.input, 0 );
                        osc.output.connect( 0, lineOut.input, 1 );
                // Start the unit generators so they make sound.
                // Set the frequency of the oscillator to 200 Hz.
                        osc.frequency.set( 200.0 );
                        osc.amplitude.set( 0.8 );
                // Sleep for awhile so we can hear the sound.
                        Synth.sleepForTicks( 400 );
                // Change the frequency of the oscillator.
                        osc.frequency.set( 300.0 );
                        Synth.sleepForTicks( 400 );
                // Stop units and delete them to reclaim their resources.
                // Stop JSyn synthesizer.
                } catch( SynthException e )
                        System.out.println( "Caught " + e );