2

adobesflash.media.SoundMixerクラスのソースを入手することは可能ですか?

ある場合、どこで見つけて入手できますか?

.computeSpectrum()マイク入力から生の音波 ( byteArray ) を周波数スペクトルに変換する関数を「複製」します。

このような例をいくつか見つけました -> http://pierrickpluchon.fr/blog/as3-how-to-plug-your-microphone-with-a-soundspectrum-in-flash-player-10-1 /

私が見つけた他のすべての方法はほとんど同じです。

問題は、Sound()私が望んでいない演奏が常にあることです。(ループバックはしたくない)

しかし、サウンドを再生していない場合、SoundMixer.computeSpectrum()関数を使用しMicrophoneて、FFTMode を true に設定して からの ByteArray を周波数スペクトルに変換することはできません ( computeSpectrum(myByteArray,true)) 。

また、生の音波から周波数スペクトルを取得する他の方法を知っている場合は、お知らせください。

アップデート

私のコード:

var bytes:ByteArray = new ByteArray();

var mic:Microphone = Microphone.getMicrophone();
mic.rate = 44;
// mic.gain = 100; // gain
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);

function onSampleData( event:SampleDataEvent ):void {
    graphics.clear();
    graphics.lineStyle(1, 0xFF0000);
    for( var i:uint = 0; i < 256; i++ ) {
        var num:Number = event.data.readFloat() * 100 + 100; // -Math.abs( )
        if( i == 0 ) {
            graphics.moveTo( i, num );
        } else {
            graphics.lineTo( i, num );
        }
    }
}
4

2 に答える 2

3

「..また、生の音波から周波数スペクトルを取得する他の方法を知っている場合は、お知らせください。」

Joe Beuckman が私を打ち負かし、Gerry Beauregard の FFT コードへのリンクを教えてくれました。これは、2 年前に見つけて以来、これまでに見た中で最高の AS3 です。コメントから、実装方法を疑問に思っていることがわかります...実装コードを確認するには、彼のブログの別のページを参照する必要があります。

http://gerrybeauregard.wordpress.com/2010/08/06/real-time-spectrum-analysis/

  1. そのコードを自分でテストするには、最初に次のリンクに示されているクラスを保存する必要があります: http://gerrybeauregard.wordpress.com/2010/08/03/an-even-faster-as3-fft/
    各パッケージのコードをそれぞれFFT2.as および FFTElement.as

  2. ドキュメント クラスに次のコードを 追加します。

ただし、そのコードでは、他の保存された .as クラスをインポートする行も追加する必要があります

import __AS3__.vec.Vector;
import flash.display.Sprite;
import flash.events.*;
import flash.media.Microphone;
import flash.text.*;
import flash.utils.*;

import FFT2;
import FFTElement;

これで、エラーなしで実行され、彼のブログのスクリーンショットと同じものが表示されるはずです。オンライン デモは以前は機能していましたが、現在は機能していないため、正常に機能したときに何が期待できるかがわかるように、スクリーンショットを使用しています。

それが役に立てば幸い。VC:1

于 2013-07-26T15:43:42.817 に答える
1

FFT は高速フーリエ変換を意味します。これはまさに、生の音波の値を周波数空間に変換するアルゴリズムです。AS3 で FFT の実装を見つける (または移植する) ことができるはずです。

于 2013-07-26T03:10:34.753 に答える