Minim
core | ugens | analysis
 

Minim

getLineOut

Description

An AudioOutput is used to generate sound in real-time and output it to the soundcard. Usually, the sound generated by an AudioOutput will be heard through the speakers or headphones attached to a computer. The default parameters for an AudioOutput are STEREO sound, a 1024 sample buffer (ie the size of the left, right, and mix buffers), a sample rate of 44100, and a bit depth of 16. To actually generate sound with an AudioOutput you need to patch at least one sound generating UGen to it, such as an Oscil.

Using setOutputMixer you can also create AudioOutputs that send sound to specific output channels of a soundcard.

Signature

AudioOutput getLineOut()
AudioOutput getLineOut(int type)
AudioOutput getLineOut(int type, int bufferSize)
AudioOutput getLineOut(int type, int bufferSize, float sampleRate)
AudioOutput getLineOut(int type, int bufferSize, float sampleRate, int bitDepth)

Parameters

type — Minim.MONO or Minim.STEREO
bufferSize — int: how long you want the AudioOutput's sample buffer to be (ie the size of the left, right, and mix buffers)
sampleRate — float: the desired sample rate in Hertz (typically 44100)
bitDepth — int: the desired bit depth (typically 16)

Returns

an AudioOutput that can be used to generate audio

Related

AudioOutput
UGen

Example

/**
  * This sketch demonstrates how to create synthesized sound with Minim 
  * using an AudioOutput and an Oscil. An Oscil is a UGen object, 
  * one of many different types included with Minim. By using 
  * the numbers 1 thru 5, you can change the waveform being used
  * by the Oscil to make sound. These basic waveforms are the 
  * basis of much audio synthesis. 
  * 
  * For many more examples of UGens included with Minim, 
  * have a look in the Synthesis folder of the Minim examples.
  * <p>
  * For more information about Minim and additional features, 
  * visit http://code.compartmental.net/minim/
  */

import ddf.minim.*;
import ddf.minim.ugens.*;

Minim       minim;
AudioOutput out;
Oscil       wave;

void setup()
{
  size(512, 200, P3D);
  
  minim = new Minim(this);
  
  // use the getLineOut method of the Minim object to get an AudioOutput object
  out = minim.getLineOut();
  
  // create a sine wave Oscil, set to 440 Hz, at 0.5 amplitude
  wave = new Oscil( 440, 0.5f, Waves.SINE );
  // patch the Oscil to the output
  wave.patch( out );
}

void draw()
{
  background(0);
  stroke(255);
  strokeWeight(1);
  
  // draw the waveform of the output
  for(int i = 0; i < out.bufferSize() - 1; i++)
  {
    line( i, 50  - out.left.get(i)*50,  i+1, 50  - out.left.get(i+1)*50 );
    line( i, 150 - out.right.get(i)*50, i+1, 150 - out.right.get(i+1)*50 );
  }

  // draw the waveform we are using in the oscillator
  stroke( 128, 0, 0 );
  strokeWeight(4);
  for( int i = 0; i < width-1; ++i )
  {
    point( i, height/2 - (height*0.49) * wave.getWaveform().value( (float)i / width ) );
  }
}

void mouseMoved()
{
  // usually when setting the amplitude and frequency of an Oscil
  // you will want to patch something to the amplitude and frequency inputs
  // but this is a quick and easy way to turn the screen into
  // an x-y control for them.
  
  float amp = map( mouseY, 0, height, 1, 0 );
  wave.setAmplitude( amp );
  
  float freq = map( mouseX, 0, width, 110, 880 );
  wave.setFrequency( freq );
}

void keyPressed()
{ 
  switch( key )
  {
    case '1': 
      wave.setWaveform( Waves.SINE );
      break;
     
    case '2':
      wave.setWaveform( Waves.TRIANGLE );
      break;
     
    case '3':
      wave.setWaveform( Waves.SAW );
      break;
    
    case '4':
      wave.setWaveform( Waves.SQUARE );
      break;
      
    case '5':
      wave.setWaveform( Waves.QUARTERPULSE );
      break;
     
    default: break; 
  }
}

Usage

Web & Application