EL Tape Music Visualiser
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
ELシールドとコネクタ SeeedStudioのELシールド付きELテープは、ArduinoUNOで使用されました。テープは4チャンネルのうち3チャンネルでシールドに接続されました。
それが完了したら、コードをアップロードして音楽の再生を開始します!
このコードは、ProcessingとProcessingArduinoライブラリを利用しています。使用するには、これらの両方を機能させる必要があります。
ここでArduinoのライブラリを入手してください。
https://processing.org/
で処理を取得します
すべてがインストールされたら、arduinoライブラリを処理スケッチブックフォルダのライブラリフォルダに移動し、処理エディタでコードを開きます。
行を変更します:
song =minim.loadFile( "/ home / paul / Music / dope.mp3"、2048);
BeatWriteの38行目でコンピュータのローカルMP3ファイルにアクセスし、[再生]をクリックします。
コード
- BeatWrite
- BeatListener
BeatWrite Java
処理2のBeatWriteスケッチ/ ** *このスケッチは、FREQ_ENERGYモードでBeatDetectオブジェクトを使用する方法を示しています。
*isKick
、isSnare
を使用できます。 、 isHat 、isRange
、*およびisOnset(int)
は、追跡しようとしているビートの種類を追跡するために、* trueを報告します。または分析の状態に基づいてfalse。分析を「チェック」するには、オーディオの連続するバッファを使用してdetect
*を呼び出す必要があります。これはdraw
内で行うことができますが、これを行うと、一部の*オーディオバッファを見逃す可能性があります。スケッチは、BeatListener
*と呼ばれるAudioListener
を実装しているため、バッファを繰り返さずに、システムによって処理されるオーディオのすべてのバッファでdetect
を呼び出すことができます*または1つがありません。 **このスケッチは曲全体を再生するため、読み込みに少し時間がかかる場合があります。 * / importprocessing.serial。*; importddf.minim。*; importddf.minim.analysis。*; importcc.arduino。*; Minim minim; AudioPlayer song; BeatDetect beat; BeatListener bl; Arduino arduino; int ledPin =1; // ELチャネルに接続されたLED1int ledPin2 =2; // ELチャネルに接続されたLED2int ledPin3 =3; // ELチャネルに接続されたLED3float cockSize、snareSize、hatSize; void setup(){size(512、200、P3D); minim =new Minim(this); arduino =new Arduino(this、 "/ dev / ttyACM1"、57600);歌=minim.loadFile( "/ home / paul / Music / dope.mp3"、2048); song.play(); // FREQ_ENERGYモードのビート検出オブジェクト//曲のバッファサイズの長さのバッファを期待します//曲のサンプルレートでキャプチャされたサンプルbeat =new BeatDetect(song.bufferSize()、song.sampleRate()); //感度を300ミリ秒に設定します//ビートが検出された後、アルゴリズムは300ミリ秒待機してから//別のビートが報告されるようにします。誤検知が多すぎる場合は、これを使用して//アルゴリズムを弱めることができます。デフォルト値は10です。//これは基本的にダンピングなしです。感度を負の値に設定しようとすると、//エラーが報告され、代わりに10に設定されます。 beat.setSensitivity(100);キックサイズ=snareSize =hatSize =16; //新しいビートリスナーを作成して、分析用のバッファーを見逃さないようにしますbl =new BeatListener(beat、song); textFont(createFont( "Helvetica"、16)); textAlign(CENTER); arduino.pinMode(ledPin + 3、Arduino.OUTPUT); arduino.pinMode(ledPin2 + 3、Arduino.OUTPUT); arduino.pinMode(ledPin3 + 3、Arduino.OUTPUT); } void draw(){background(0); fill(255); if(beat.isKick()){arduino.digitalWrite(ledPin + 3、Arduino.HIGH); // LEDをkickSize =32に設定します; } if(beat.isSnare()){arduino.digitalWrite(ledPin2 + 3、Arduino.HIGH); // LEDをsnareSize =32に設定します; } if(beat.isHat()){arduino.digitalWrite(ledPin3 + 3、Arduino.HIGH); // LEDをhatSize =32に設定します; } arduino.digitalWrite(ledPin + 3、Arduino.LOW); // LEDをオフに設定しますarduino.digitalWrite(ledPin2 + 3、Arduino.LOW); // LEDをオフに設定しますarduino.digitalWrite(ledPin3 + 3、Arduino.LOW); // LEDをオフに設定しますtextSize(kickSize); text( "KICK"、width / 4、height / 2); textSize(snareSize); text( "SNARE"、width / 2、height / 2); textSize(hatSize); text( "HAT"、3 * width / 4、height / 2);キックサイズ=制約(キックサイズ* 0.95、16、32); snareSize =Constraint(snareSize * 0.95、16、32); hatSize =Constraint(hatSize * 0.95、16、32); } void stop(){//終了したら、Minimオーディオクラスを常に閉じますsong.close(); // minim.stop();を終了する前に常にMinimを停止します。 //これでスケッチが閉じますsuper.stop();}
BeatListener Java
classBeatListenerはAudioListener {private BeatDetectbeat;を実装します。プライベートAudioPlayerソース; BeatListener(BeatDetect beat、AudioPlayer source){this.source =source; this.source.addListener(this); this.beat =ビート; } void samples(float [] samps){beat.detect(source.mix); } void samples(float [] sampsL、float [] sampsR){beat.detect(source.mix); }}
製造プロセス