【小白篇】Processing 配合麥克風的實時聲音可視化


歡迎來到聲音的世界。
Processing如何實現聲音可視化呢?

  • 必要條件:音頻文件數字化;
  • 實現方式:逐點取出音頻頻率;
  • 呈現方式:基本形狀,DIY……創意才是靈魂
    本教程主要介紹如何獲取麥克風的立體聲輸入,並對其進行簡單的可視化操作
    ##初識Minim
    Minim是一個使用JavaSound API、一丟丟Tritonus和Javazoom中的MP3SPI共同搭建的音頻庫。所有底層的工作都無須你操作,其盡可能簡單地將音頻整合到你的草圖中,同時也為高級用戶提供了合理的靈活性。

以下是Minim部分features:

  • AudioPlayer:WAV、AIFF、AU、SND和MP3文件的單聲道和立體聲道播放。
  • AudioMetaData:存有文件元數據的對象,如ID3標簽。
  • AudioRecorder:錄制單聲道和立體聲音頻,緩沖或存入磁盤。
  • AudioInput:監控單聲道和立體聲輸入,如,本文涉及到的麥克風。
  • AudioOutput:合成單聲道和立體聲。
  • FFT:對音頻數據進行傅立葉變換后生成頻譜。
  • BeatDetect:用於進行拍頻檢測的類。

##獲取麥克風輸入編碼套路

① 導入音頻庫——Minim;

import ddf.minim.*;

② 聲明Minim和AudioInput對象;

Minim minim;
AudioInput in;

③ Minim和AudioInput對象的實例化(創建)

  minim = new Minim(this);
  in = minim.getLineIn();

④ 最后,各種函數調用……
##聲之形
聲學工程師馬克·菲舍爾痴迷於海洋之聲,他將美妙的海豚聲轉化為可見的視覺圖像(原文鏈接):

偽虎鯨的叫聲
這里寫圖片描述

座頭鯨的叫聲
這里寫圖片描述
自己動手實現聲音可視化的小程序,去捕捉更多生命的細節。具體代碼下載

/*
 * The shape of voice
 * by Hewes.
 * 2017.10.28
 */
 
//第一步,導入音頻庫:Minim
import ddf.minim.*;

//第二步,聲明Minim、AudioInput對象
Minim minim;
AudioInput in;  //AudioInput:單聲道和立體聲輸入監控

void setup() {
  size(800, 600, P2D);
  background(0);
  stroke(255);

  //第三步,Minim、AudioInput對象的實例化
  minim = new Minim(this);
  in = minim.getLineIn();
}

//第四步,各種函數調用
void draw() {
  //saveFrame("聲之形.png");  //保存最后一幀圖片
  /**
   * 獲取音頻緩沖區的大小,
   * 接着按圓周平分,
   * 最后,對相鄰緩沖區樣本值進行連線操作。
   */
  float a = 0;
  float angle = (2*PI) /100;
  int step = in.bufferSize() / 100;
  for (int i=0; i < in.bufferSize()-step; i+=step) {
    //mix.get(i)鄰返回的值在-1和1之間,放大且平移
    float x1 = width/2 + cos(a) * (1000 * in.mix.get(i) + 100);
    float y1 = height/2 + sin(a) * (1000 * in.mix.get(i) + 100);
    float x2 = width/2 + cos(a + angle) * (1000 * in.mix.get(i+step) + 100);
    float y2 = height/2 + sin(a + angle) * (1000 * in.mix.get(i+step) + 100);
    stroke(random(255), 100,100);
    line(x1, y1, x2, y2);
    a += angle;
  }
}

大致效果如下:

這里寫圖片描述

試試斑原海豚聲:
這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM