public static void main(String[] args) {
    AudioContext context = new AudioContext(1024);
    Gain gain = new Gain(context, 2);

    CrazySoundReactor csr = new CrazySoundReactor(context);
    gain.addInput(csr);
    gain.start();
    context.setRoot(gain);
    csr.start();
    context.start();
  }
    public void message(Bead message) {
      // muck around with the clock
      clock.setIntervalEnvelope(new Envelope(context, Math.random() < 0.5 ? 500.0f : 1000.0f));

      BeadArray stopTrigger = new BeadArray();
      WavePlayer sinePlayer =
          WavePlayer.newSinePlayer(context, (float) Math.random() * scale + 100.0f);
      sinePlayer.start();
      Gain gain = new Gain(context, 1);

      stopTrigger.add(sinePlayer);
      ((Envelope) gain.getGainEnvelope()).addSegment(0.1f, 200, 1, null);
      ((Envelope) gain.getGainEnvelope()).addSegment(0.01f, 500, 1, null);
      ((Envelope) gain.getGainEnvelope()).addSegment(0.1f, 500, 1, null);
      ((Envelope) gain.getGainEnvelope()).addSegment(0, 3000, 1, stopTrigger);
      gain.addInput(sinePlayer);
      gain.start();
      stopTrigger.add(gain);
      addInput(gain);
    }