2017-06-08 5 views
0

processing.orgのサンプルファイル(Win8)を使用して、「マイクから録音」を取得してサウンドを再生しました。私は一度に10〜30秒を記録するだけです。しかし、現在、既存の録音を閉じて新しい録音を録音する方法はありません。
私はすでにあらゆる方法を試みました。私は別のキーを押すことができるようにしたい、 "r"をもう一度押して、語彙の練習などのようにもう数秒を記録したい。
私はcompartmental.net/minimの最小サンプルコードを使用しています。公式ドキュメントにはbeginRecord/endRecordのリストがありますが、既存の録音を閉じて別の録音を開始する方法はありません。 recorder.closeとしてはそのようなものはありません()または.RESET /再起動などマイクからの録音は終了しましたが、録音を終了することはできません

import ddf.minim.*; 
import ddf.minim.ugens.*; 
Minim minim; 
// for recording 
    AudioInput in; 
    AudioRecorder recorder; 
    boolean recorded; 
// for playing back 
AudioOutput out; 
FilePlayer player; 
void setup() 
{ size(512, 200, P3D); 
    minim = new Minim(this); 
    in = minim.getLineIn(Minim.STEREO, 2048); 
    // create an AudioRecorder 
    recorder = minim.createRecorder(in, "myrecording.wav"); 
    // get an output 
    out = minim.getLineOut(Minim.STEREO); 
    textFont(createFont("Arial", 24)); 
} 
void draw() 
{ background(255,240,128); 
    stroke(32); 
    if (recorder.isRecording()) 
    { text("Now recording, press the r key to stop recording.", 5, 15); } 
    else if (!recorded) 
    { text("Press the R key to start recording.", 5, 15);  } 
    else 
    { text("Press the S key to save the recording to disk and play it back in the sketch.", 5, 15); } 
} 
//end draw 
void keyReleased() 
{ 
    if (!recorded && key == 'r') 
    { // to indicate that you want to start or stop capturing audio data, 
      if (recorder.isRecording() ) 
      { recorder.endRecord(); 
       recorded = true;    } 
    else 
    { recorder.beginRecord();  } 
    } 
    if (recorded && key == 's') 
    { // now write it to file 
    // case of buffered recording, will freeze sketch for a bit if buffer is large 
    // case of streamed recording, will not freeze all that is being done 
    // all that is being done is closing the file. 
    // save returns the recorded audio in an AudioRecordingStream, 
    // which we can then play with a FilePlayer 
    if (player != null) 
     { player.unpatch(out); 
       player.close();   } 
    player = new FilePlayer(recorder.save()); 
    player.patch(out); 
    player.play(); 
    } 
    // my addition — this works for play-again 
    if (recorded && key == 'p') 
    { player.rewind(); 
    player.play(); 
    } 

私はミニムをクローズして再起動しますが、それは文句を言うてみましたがそうのような「ローカル変数xxxが使用されていません」 : 動作しません。

if (key == 'x') 
    { minim.stop(); 
    minim = new Minim(this); 
    AudioInput in; 
    AudioRecorder recorder; 
    AudioOutput out; 
    FilePlayer player; } 
+0

私たち自身を実行するためにコピー&ペーストできる小さなサンプルプログラムに問題を示す[mcve]を投稿してください。 –

答えて

0

あなたは、単にレコーダーを再初期化して逃げることができます:あなたは、以前の録音を上書きしないように、私は、タイムスタンプやファイルカウンタを使用することをお勧めします

recorder = minim.createRecorder(in, "myrecording.wav"); 

。あなたはむしろ使用したい場合は

/** 
    * This sketch demonstrates how to an <code>AudioRecorder</code> to record audio to disk. 
    * To use this sketch you need to have something plugged into the line-in on your computer, 
    * or else be working on a laptop with an active built-in microphone. 
    * <p> 
    * Press 'r' to toggle recording on and off and the press 's' to save to disk. 
    * The recorded file will be placed in the sketch folder of the sketch. 
    * <p> 
    * For more information about Minim and additional features, 
    * visit http://code.compartmental.net/minim/ 
    */ 

import ddf.minim.*; 

Minim minim; 
AudioInput in; 
AudioRecorder recorder; 

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

    minim = new Minim(this); 

    in = minim.getLineIn(); 
    // create a recorder that will record from the input to the filename specified 
    // the file will be located in the sketch's root folder. 
    recorder = minim.createRecorder(in, "myrecording - "+new java.util.Date()+".wav"); 

    textFont(createFont("Arial", 12)); 
} 

void draw() 
{ 
    background(0); 
    stroke(255); 
    // draw the waveforms 
    // the values returned by left.get() and right.get() will be between -1 and 1, 
    // so we need to scale them up to see the waveform 
    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); 
    } 

    if (recorder.isRecording()) 
    { 
    text("Currently recording...", 5, 15); 
    } 
    else 
    { 
    text("Not recording.", 5, 15); 
    } 
} 

void keyReleased() 
{ 
    if (key == 'r') 
    { 
    // to indicate that you want to start or stop capturing audio data, you must call 
    // beginRecord() and endRecord() on the AudioRecorder object. You can start and stop 
    // as many times as you like, the audio data will be appended to the end of the buffer 
    // (in the case of buffered recording) or to the end of the file (in the case of streamed recording). 
    if (recorder.isRecording()) 
    { 
     recorder.endRecord(); 
    } 
    else 
    { 
     recorder = minim.createRecorder(in, "myrecording - "+new java.util.Date()+".wav"); 
     recorder.beginRecord(); 
    } 
    } 
    if (key == 's') 
    { 
    // we've filled the file out buffer, 
    // now write it to the file we specified in createRecorder 
    // in the case of buffered recording, if the buffer is large, 
    // this will appear to freeze the sketch for sometime 
    // in the case of streamed recording, 
    // it will not freeze as the data is already in the file and all that is being done 
    // is closing the file. 
    // the method returns the recorded audio as an AudioRecording, 
    // see the example AudioRecorder >> RecordAndPlayback for more about that 
    recorder.save(); 
    println("Done saving."); 
    } 
} 

また、あなたがselectInput()をチェックアウトすることもできます。ここでは

は非常に最小限の微調整Creating an AudioRecorder例(例にも存在する>ライブラリ>ミニム>基本> RecordAudioInputを拠出)です.wavファイルの一意の名前を生成する代わりに保存ダイアログ。

関連する問題