# Set volume of this example with Minim

**URL:** <https://discourse.processing.org/t/set-volume-of-this-example-with-minim/21628>\
**Category:** Libraries\
**Created:** [June 6, 2020, 5:49pm UTC](https://discourse.processing.org/t/set-volume-of-this-example-with-minim/21628 "2020-06-06T17:49:53Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![bking](https://avatars.discourse-cdn.com/v4/letter/b/dc4da7/32.png) [@bking](https://discourse.processing.org/u/bking)\
**Post date:** [June 6, 2020, 5:49pm UTC](https://discourse.processing.org/t/set-volume-of-this-example-with-minim/21628/1 "2020-06-06T17:49:53Z")

</div>

Hello,  
I would like to set the volume of this example. For example I would like to set the volume with mouse Y rather than resonance.

I think it is easy but I block. 🤨

```auto
// import everything necessary to make sound.
import ddf.minim.*;
import ddf.minim.ugens.*;

// create all of the variables that will need to be accessed in
// more than one methods (setup(), draw(), stop()).
Minim minim;
AudioOutput out;
MoogFilter moog;

// setup is run once at the beginning
void setup()
{
// initialize the drawing window
  size(300, 300);
  
  // initialize the minim and out objects
  minim = new Minim(this);
  out = minim.getLineOut();
  // construct a law pass MoogFilter with a 
  // cutoff frequency of 1200 Hz and a resonance of 0.5
  moog = new MoogFilter( 1200, 0.5 );
  
  // we will filter a white noise source,
  // which will allow us to hear the result of filtering
  Noise noize = new Noise( 0.5f, Noise.Tint.RED );  

  // send the noise through the filter
  noize.patch( moog ).patch( out );
}

// we'll control the frequency and resonance of the filter
// using the position of the mouse, in typical x-y controller fashion
void mouseMoved()
{
  float freq = constrain( map( mouseX, 0, width, 200, 12000 ), 200, 12000 );
  float rez = constrain( map( mouseY, height, 0, 0, 1 ), 0, 1 );
  
  moog.frequency.setLastValue( freq );// difference avec -freq
  moog.resonance.setLastValue( rez );
}

void keyPressed()
{
  if ( key == '1' ) moog.type = MoogFilter.Type.LP;
  if ( key == '2' ) moog.type = MoogFilter.Type.HP;
  if ( key == '3' ) moog.type = MoogFilter.Type.BP;
}

// draw is run many times
void draw()
{
  // erase the window to black
  background( 0 );
  // draw using a white stroke
  stroke( 255 );
  // draw the waveforms
  for( int i = 0; i < out.bufferSize() - 1; i++ )
  {
    // find the x position of each buffer value
    float x1 = map( i, 0, out.bufferSize(), 0, width );
    float x2 = map( i+1, 0, out.bufferSize(), 0, width );
    // draw a line from one buffer position to the next for both channels
    line( x1, 50 + out.left.get(i)*50, x2, 50 + out.left.get(i+1)*50);
    line( x1, 150 + out.right.get(i)*50, x2, 150 + out.right.get(i+1)*50);
  } 
  
  text( "Filter type: " + moog.type, 10, 225 );
  text( "Filter cutoff: " + moog.frequency.getLastValue() + " Hz", 10, 245 );
  text( "Filter resonance: " + moog.resonance.getLastValue(), 10, 265 ); 
}

```

---

<div class="post-metadata">

**Author:** ![josephh](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/josephh/32/210_2.png) [@josephh](https://discourse.processing.org/u/josephh)\
**Post date:** [June 7, 2020, 8:41am UTC](https://discourse.processing.org/t/set-volume-of-this-example-with-minim/21628/2 "2020-06-07T08:41:31Z")

</div>

Hi,

To set the volume, you can look at the [`setVolume()`](http://code.compartmental.net/minim/audiooutput_method_setvolume.html) method for the `AudioOutput` class.

However I’ve tested myself on Processing 3.5.4 and it seems that this method is not supported :

- [Minim setting volume of an audioPlayer](https://discourse.processing.org/t/minim-setting-volume-of-an-audioplayer/3596/5)

So you can use the [`setGain()`](http://code.compartmental.net/minim/audiooutput_method_setgain.html) method in the `mouseMoved()` function that accepts decibels :

```auto
out.setGain(((float)mouseY / height) * 10);

```

However when printing the gain to the console, it stays limited at 6.0206 dB… Maybe someone have the solution 🙂

(`mouseY / height` return a number between `0` and `1` and since you want to have a float division, you cast the first number before)
