2017-05-11 7 views
0

Minimを使用しているProcessingスケッチでAudioInputの最大しきい値を取得する方法を理解しようとしています。私は他のパラメータを調整できるように信号を正確にマッピングしようとしています。Minimオーディオ入力最大しきい値マッピング

import ddf.minim.*; 

Minim minim; 
AudioInput in; 

void setup() 
{ 
    size(512, 200, P3D); 

    minim = new Minim(this); 

    // use the getLineIn method of the Minim object to get an AudioInput 
    in = minim.getLineIn(); 
} 

void draw() 
{ 
    background(0); 
    stroke(255); 

    // draw the waveforms so we can see what we are monitoring 
    for(int i = 0; i < in.bufferSize() - 1; i++) 
    { 
    line(i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50); 
    line(i, 150 + in.right.get(i)*50, i+1, 150 + in.right.get(i+1)*50); 
    } 

    String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; 
    text("Input monitoring is currently " + monitoringState + ".", 5, 15); 
} 

void keyPressed() 
{ 
    if (key == 'm' || key == 'M') 
    { 
    if (in.isMonitoring()) 
    { 
     in.disableMonitoring(); 
    } 
    else 
    { 
     in.enableMonitoring(); 
    } 
    } 
} 

答えて

1

あなたは、マッピングのために、それらの後にプラグキープの最高のトラックと遭遇した低い値の変数のカップルを使用することができます:あなたは拍手場合や、作ること

import ddf.minim.*; 

Minim minim; 
AudioInput in; 

//keep track of the lowest and highest values 
float minValue = Float.MAX_VALUE; 
float maxValue = 0; 

void setup() 
{ 
    size(512, 200, P3D); 

    minim = new Minim(this); 

    // use the getLineIn method of the Minim object to get an AudioInput 
    in = minim.getLineIn(); 
} 

void draw() 
{ 
    background(0); 
    stroke(255); 
    strokeWeight(1); 
    // draw the waveforms so we can see what we are monitoring 
    for(int i = 0; i < in.bufferSize() - 1; i++) 
    { 
    line(i, 50 + in.left.get(i)*50, i+1, 50 + in.left.get(i+1)*50); 
    line(i, 150 + in.right.get(i)*50, i+1, 150 + in.right.get(i+1)*50); 

    //update min,max values 
    if(in.left.get(i) < minValue) { 
     minValue = in.left.get(i); 
    } 
    if(in.left.get(i) > maxValue) { 
     maxValue = in.left.get(i); 
    } 
    } 
    //simple demo, plot the min/max values, feel free to plug these into map() 
    strokeWeight(3); 
    stroke(192,0,0); 
    line(0,50 + minValue * 50,width,50 + minValue * 50); 
    stroke(0,192,0); 
    line(0,50 + maxValue * 50,width,50 + maxValue * 50); 

    String monitoringState = in.isMonitoring() ? "enabled" : "disabled"; 
    text("Input monitoring is currently " + monitoringState + ".", 5, 15); 
} 

void keyPressed() 
{ 
    if (key == 'm' || key == 'M') 
    { 
    if (in.isMonitoring()) 
    { 
     in.disableMonitoring(); 
    } 
    else 
    { 
     in.enableMonitoring(); 
    } 
    } 
} 

大きな騒音は、最高のジャンプし、そこにとどまります。スケッチの長さによっては、しばらくしてからこれらの値をリセットすることができます。さらに、イージングをこれらの値に追加することもできます。そのため、静かな環境から大きな環境に戻ったり戻ったりするときにマッピングがあまりにも不快に感じることはありません。

関連する問題