私の音楽ビジュアライザー

私は長い間、ある種の音楽ビジュアライザーを書きたいと思っていましたが、興味深いアイデアはありませんでした。 それから私はこれを見ました- 悪魔の音叉オーディオゲームで 、似たようなことをしたかったのです。













はじめに



私は、それがどんな動物であるかを同時に見るために、 処理言語で書くことにしました。







言語を含むフォルダーには多くの例があり、さらに重要なことには、 FFTが既に実装されているサウンドを操作するためのライブラリーがあります。 周波数が3つのグループに分けられ、画面上で3つの単語が音楽のリズムにジャンプする、さらに重要な例があります(例はFrequencyEnergyと呼ばれます)。









作業実演







コード



処理の観点からスケッチと呼ばれる新しいプロジェクトを作成しています。 スケッチは3つのファイルで構成されます。 1つ目はBeatListenerです。これは、FrequencyEnergyの例から単純にドラッグしたもので、音楽のリズムを検出するために必要です。 2番目はキューブのクラスで、次のようになります。





class Box {<br> // <br> int x,y,z;<br> // <br> int boxSize;<br> // ( 0 255) <br> int bright;<br> <br> Box( int x, int y, int z, int boxSize) {<br> this .x = x;<br> this .y = y;<br> this .z = z;<br> this .boxSize = boxSize;<br> this .bright = 0; // <br> }<br> <br> // <br> void setBright( int bright) {<br> if (bright > 255) bright = 255;<br> if (bright < 0) bright = 0;<br> this .bright = bright;<br> }<br> <br> // <br> int getBright() {<br> return bright; <br> }<br> <br> // <br> void display() {<br> // <br> fill(bright);<br> // <br> pushMatrix();<br> // <br> translate(x,y,z);<br> // <br> box(boxSize);<br> // <br> popMatrix();<br> }<br>} <br><br> * This source code was highlighted with Source Code Highlighter .







さて、3番目のファイルは、実際にすべての有用なnishtyakiを生成します。





// <br>import ddf.minim.*;<br>import ddf.minim.signals.*;<br>import ddf.minim.analysis.*;<br>import ddf.minim.effects.*;<br><br>import processing.opengl.*;<br><br> // <br> int boxSize = 40;<br> //- <br> int build_width = 20;<br> //- <br> int build_length = 20;<br> //- <br> int build_height = 10;<br> // <br> int space = 10;<br> // <br>Box[][][] build;<br><br> //, , .., FrequencyEnergy <br>Minim minim;<br>AudioPlayer song;<br>BeatDetect beat;<br>BeatListener bl;<br><br> // setup <br> void setup() {<br> // <br> size(800,600, OPENGL);<br> // <br> background(0);<br> build = new Box[build_width][build_length][build_height];<br> // <br> for ( int i = 0; i < build_width; i++) {<br> for ( int j = 0; j < build_length; j++) {<br> build[i][j][0] = new Box((boxSize+space)*i,(boxSize+space)*j,0,boxSize);<br> }<br> } <br> // <br> for ( int i = 0; i < build_width; i++) {<br> for ( int j = 1; j < build_height; j++) {<br> build[i][build_length-1][j] = new Box((boxSize+space)*i,(boxSize+space)*(build_length-1),(boxSize+space)*j,boxSize);<br> }<br> }<br> // <br> for ( int i = 0; i < build_length; i++) {<br> for ( int j = 1; j < build_height; j++) {<br> build[build_width-1][i][j] = new Box((boxSize+space)*(build_width-1),(boxSize+space)*i,(boxSize+space)*j,boxSize);<br> }<br> }<br> // <br> for ( int i = 0; i < build_width; i++) {<br> for ( int j = 1; j < build_height; j++) {<br> build[i][0][j] = new Box((boxSize+space)*i,0,(boxSize+space)*j,boxSize);<br> }<br> }<br> // <br> for ( int i = 0; i < build_length; i++) {<br> for ( int j = 1; j < build_height; j++) {<br> build[0][i][j] = new Box(0,(boxSize+space)*i,(boxSize+space)*j,boxSize);<br> }<br> }<br> // <br> for ( int i = 0; i < build_width; i++) {<br> for ( int j = 0; j < build_length; j++) {<br> build[i][j][build_height-1] = new Box((boxSize+space)*i,(boxSize+space)*j,(boxSize+space)*(build_height-1),boxSize);<br> }<br> } <br> <br> // <br> build[9][9][1] = new Box((boxSize+space)*9,(boxSize+space)*9,(boxSize+space),boxSize);<br> build[10][9][1] = new Box((boxSize+space)*10,(boxSize+space)*9,(boxSize+space),boxSize);<br> build[9][10][1] = new Box((boxSize+space)*9,(boxSize+space)*10,(boxSize+space),boxSize);<br> build[10][10][1] = new Box((boxSize+space)*10,(boxSize+space)*10,(boxSize+space),boxSize);<br> <br> build[18][10][1] = new Box((boxSize+space)*18,(boxSize+space)*10,(boxSize+space),boxSize);<br> build[17][10][1] = new Box((boxSize+space)*17,(boxSize+space)*10,(boxSize+space),boxSize);<br> build[16][10][1] = new Box((boxSize+space)*16,(boxSize+space)*10,(boxSize+space),boxSize);<br> build[16][9][1] = new Box((boxSize+space)*16,(boxSize+space)*9,(boxSize+space),boxSize);<br> build[16][8][1] = new Box((boxSize+space)*16,(boxSize+space)*8,(boxSize+space),boxSize);<br> build[17][8][1] = new Box((boxSize+space)*17,(boxSize+space)*8,(boxSize+space),boxSize);<br> build[18][8][1] = new Box((boxSize+space)*18,(boxSize+space)*8,(boxSize+space),boxSize);<br> <br> build[10][18][1] = new Box((boxSize+space)*10,(boxSize+space)*18,(boxSize+space),boxSize);<br> build[10][17][1] = new Box((boxSize+space)*10,(boxSize+space)*17,(boxSize+space),boxSize);<br> build[10][16][1] = new Box((boxSize+space)*10,(boxSize+space)*16,(boxSize+space),boxSize);<br> build[9][16][1] = new Box((boxSize+space)*9,(boxSize+space)*16,(boxSize+space),boxSize);<br> build[8][16][1] = new Box((boxSize+space)*8,(boxSize+space)*16,(boxSize+space),boxSize);<br> build[8][17][1] = new Box((boxSize+space)*8,(boxSize+space)*17,(boxSize+space),boxSize);<br> build[8][18][1] = new Box((boxSize+space)*8,(boxSize+space)*18,(boxSize+space),boxSize);<br> <br> // <br> //x,y,z , x,y,z , , , <br> camera(50, 50, 250, 500, 500, 150, 0, 0, -1);<br> <br> // <br> minim = new Minim( this );<br> // ( ) <br> String loadPath = selectInput();<br> // <br> song = minim.loadFile(loadPath, 2048);<br> // <br> song.play();<br> // <br> beat = new BeatDetect(song.bufferSize(), song.sampleRate());<br> // , 100 <br> beat.setSensitivity(100); <br> bl = new BeatListener(beat, song); <br>}<br><br> // draw <br> void draw() {<br> // <br> for ( int i = 0; i < build_width; i++) {<br> for ( int j = 0; j < build_length; j++) {<br> for ( int k = 0; k < build_height; k++) {<br> if (build[i][j][k] != null ) {<br> build[i][j][k].display();<br> // <br> if (build[i][j][k].getBright() > 0)<br> {<br> <br> if (i-1 >= 0 && build[i-1][j][k] != null )<br> {<br> build[i-1][j][k].setBright(build[i-1][j][k].getBright()/2 + 18*build[i][j][k].getBright() / 32);<br> } <br> if (i+1 < build_width && build[i+1][j][k] != null )<br> {<br> build[i+1][j][k].setBright(build[i+1][j][k].getBright()/2 + 17*build[i][j][k].getBright() / 32); <br> }<br> if (j-1 >= 0 && build[i][j-1][k] != null )<br> {<br> build[i][j-1][k].setBright(build[i][j-1][k].getBright()/2 + 18*build[i][j][k].getBright() / 32); <br> }<br> if (j+1 < build_length && build[i][j+1][k] != null )<br> {<br> build[i][j+1][k].setBright(build[i][j+1][k].getBright()/2 + 17*build[i][j][k].getBright() / 32);<br> }<br> if (k-1 >= 0 && build[i][j][k-1] != null )<br> {<br> build[i][j][k-1].setBright(build[i][j][k-1].getBright()/2 + 17*build[i][j][k].getBright() / 32); <br> }<br> if (k+1 < build_height && build[i][j][k+1] != null )<br> {<br> build[i][j][k+1].setBright(build[i][j][k+1].getBright()/2 + 17*build[i][j][k].getBright() / 32); <br> }<br><br> build[i][j][k].setBright(3 * build[i][j][k].getBright() / 4); <br> }<br> }<br> }<br> }<br> }<br> <br> // - <br> // <br> if ( beat.isHat() ) {<br> process(15,15,0,255);<br> }<br> if ( beat.isKick() ) {<br> process(15,5,0,255);<br> }<br> if ( beat.isSnare() ) {<br> process(5,15,0,255);<br> }<br>}<br><br> // , x,y,z <br> void process( int x, int y, int z, int bright) {<br> build[x][y][z].setBright(bright);<br>} <br><br> * This source code was highlighted with Source Code Highlighter .








All Articles