問題タブ [spectrum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actionscript-3 - FlashPlayer11のチャンネルごとにサウンドを分析する
私の古い質問AS3を参照してください:フラッシュプレーヤー11でSound.extractを使用して、サウンドスペクトルを1つずつ、一度に1つのチャネルで分析します。単一のチャネルを抽出し、そのスペクトルを操作/視覚化することは可能ですか?
つまり、2つのサウンドを1つのファイルにミックスした場合、それらを別々に制御して、音波や音量などに作用させることはできますか?
audio - 高調波は音楽サンプルでカウントされます
音の豊かさを判断するために、音楽のサンプルの倍音の数を判断したいと思います。そのために、 FFTで完全なスペクトルを提供するMinimライブラリでProcessingを使用しています。FFTによって生成されたスペクトル内のすべてのピークをカウントする方法を知りたいのですが、基本周波数にも興味がありません。
java - 正弦サンプルの離散フーリエスペクトル分析からの予期しない結果
http://jvalentino2.tripod.com/dft/index.html
私のコードは実際には上記のコピーにすぎません。
このサンプルで実行すると:http://vigtig.it/sin440.wav
私はこの結果を得る:
440 hzで最高の応答が期待できますが、そうではありません。誰かがバグを見つけたり、結果をどのように誤解しているのかを教えてくれますか?
編集
バイト/整数変換を調べた後、代わりにByteBufferを使用するようにスクリプトを変更しました。現在、意図したとおりに機能しているようです。作業コピーは次のとおりです。
c# - Bass.dll スペクトル データ C#
ビートとスペクトルの検出に基づいてゲームを作成しようとしています。私は現在、配列が完全に割り当てられていないため、関数が必要なものを返さないことに固執しています。埋められた最後の要素が間違っていて、その理由がわかりません。
配列サイズは 20 で、このコードは 12 以下しか埋めません。
質問は次のとおりです。
- 私は正しくやっていますか?
- すべての値を返さないのはなぜですか?
- 必要なデータを取得する最も簡単な方法は何ですか?
すでに回答ありがとうございます。
そして、私の悪い英語で申し訳ありません......
[編集]
if ステートメントまたは Times の計算方法が間違っていることがわかりました:-(
したがって、4000 要素の配列から 20 要素の配列にデータを取得する方法についてより良いアイデアがあれば、ここにアドバイスを投稿していただければ幸いです。
r - NMR ascii ファイルからピークリストへの変換
プロジェクトの一部としてプログラムを作成するために使用している Bruker NMR スペクトルがいくつかあります。私のプログラムは、実際のスペクトルで動作する必要があります。そこで、Bruker NMR スペクトルの 1r ファイルを ASCII に変換しました。カルニチンの場合、ASCII ファイルは次のようになります (これは完全なリストではありません。完全なリストは数千行に及びます。これは単なるスナップショットです)。
これがスペクトルです: (出典: wisc.edu )
私のプログラムは、このデータからピークを識別しなければなりません。したがって、これらの数値を解釈する方法を知る必要があります。そして、それらがスペクトル内の適切な値にどの程度正確に変換されるか。これまでのところ、これは私が学んだことです:
1.) 最初の列は、スペクトル ポイントの位置 (ppm) を表します。
2.) 2 番目の列は、各ピークの強度を表します。
3.) 2 番目の列には、完全には整列していないが、最初の列に近い数値がいくつかあることに注意してください。例:-34613、-28925、-19395。これは重要なことだと思います。
完全な開示のために-私はRでプログラミングを行っています.
注: 私は Biostar でもこれを尋ねましたが、ここで質問に答えている人はあまりいないので、ここよりもここで答えを得る可能性が高いと思います。
編集:これは、私が見つけた1つの解決策がもっともらしいです:
友人から、awk スクリプトを使用して、ファイル内の強度が正から負に変化する正確な場所を確認し、極大値を見つけるというアイデアがありました。ここに作業スクリプトがあります:
わからなかったら教えて。解説を充実させます。
また、私が尋ねたこの関連する質問があります。
c# - Bass Library を使用して libmfcc を C# に移植する
私は現在、FFT を計算して配列として返すことができるオーディオ分析用の Bass ライブラリを使用しています。libmfcc はこのデータを使用して、必要な MFCC 係数の値を計算します。(情報: MFCC はオーディオ スペクトルに似ていますが、人間の聴覚と周波数スケーリングの仕組みにより適合します) ベース ライブラリは 0 から 1 までの値を FFT 値として返します。
今、私はいくつかの問題と質問に遭遇しました:
- 彼らのFFTサンプルデータは異なるフォーマットを持っているようです.値は非常に高く、8192 FFT値の合計は10739.24になります.[/li]
- 彼らの例のアプリケーションでは、次のように関数を呼び出します。8192 個の値をロードしただけなのに、FFT 配列サイズとして 128 を使用するのはなぜですか?
- C# の構文/関数に一致するように少しコピーして編集した MFCC クラスを使用すると、一部の係数で負の値が得られますが、そうあるべきではないと思います。
なぜそれが負の値を返すのか、または私が間違ったことを誰かが助けてくれますか? 上記を実行し、デバッグに役立つ簡単なサンプル Ready to Try Program を作成しました。
リンク: http://www.xup.in/dl,17603935/MFCC_Test.rar/
私の C# アプリケーションからの出力 (正しくない可能性が高い)
Coeff 16 = 0,017919318626506 Coeff 17 = -0,155580763009355 Coeff 18 = -0,76072865841987 Coeff 19 = 0,108961510335727 Coeff 20 = 0,819025783804398 Coeff 21 = -0,660508603974514 Coeff 22 = -0,951623924906163 Coeff 23 = 0 ,424922129906254 Coeff 24 = 0,0129727009313168 Coeff 25 = -0,388796833267654 Coeff 26 = 0,270839393161931 Coeff 27 = -0,138515788828431 Coeff 28 = -0,454837674981149 Coeff 29 = -0,448629344922371 Coeff 30 = -0,11908663618393 Coeff 31 = 0,237500036702818 Coeff 32 = 0,114874386870208 Coeff 33 = -0,100822381384326 Coeff 34 = 0,144242143551012 Coeff 35 = 0,209338502838453 Coeff 36 = 0,247588420953066 Coeff 37 = -0,451654204112441 Coeff 38 = 0,0346927542067229 Coeff 39 = 0,180816031061584
彼らの例のFFTデータ(異なるフォーマット?)
14.524506 38.176063 10.673860 3.705076 2.102398 1.461585 1.145616 0.974108 0.878079 0.825304 0.798959 0.789067 0.789914 0.797102 0.808576 0.822048 0.836592 0.851101 0.864869 0.877625 0.888780 0.897852 0.905033 0.910054 0.912214 0.912414 0.909593 0.904497
fft - オーディオ サンプルから個々のギター コードを認識する
コード検出アルゴリズムに関しては、すでにかなりの数の質問があることを認識しています。ただし、これらのほとんどは、曲をコードのセットまたはコードの転写に解釈することに関連しているようです。私の問題は、ギターコードの単一のストラムを録音し、これを分析して演奏されたコードを返すことにのみ関心があるため、はるかに単純なはずです。また、これが難しすぎると判明した場合は、特定のコードが正しく演奏されているかどうかを簡単に判断できれば、ある程度は十分です。アプリケーションは、正しいコードを演奏したかどうかを教えてくれます (記憶ゲームのようなものです)。アプリケーションは期待するコードをすでに知っているため、この 2 番目のオプションの方が簡単だと思います。
同じアプリケーションの一部として、ギター チューナーに FFT とハーモニック プロダクト スペクトルを既に使用しています。FFT が出力する周波数スペクトルを分析してギターのコードを認識する方法について、アドバイスをお願いします。また、この件に関する他の提案にもオープンであり、私が得ることができるどんな助けにも本当に感謝しています.
ありがとう
java - Java で高調波積スペクトル アルゴリズムを実装する
私は現在 Java でギター チューナー プログラムに取り組んでおり、基本周波数を決定するためにハーモニック プロダクト スペクトル アルゴリズムを実装しようとしています。
とりあえず、スペクトルを係数fでダウンサンプリングするメソッドを作成しました。
私は今、すべての異なるダウンサンプリングされたスペクトルを一緒に乗算しようとしています。私はJavaでコーディングし、配列を操作しています。その結果、ダウンサンプリングされたインデックスの配列と、スペクトルのさまざまな値の配列があります。私は今、すべての異なる配列を同じサイズに配置し、それらの値を整理して、正しいダウンサンプリングされたインデックスに対応するようにしています。私はサイズと値に多くの問題を抱えています....
さらに、紙にある例に基づいてこのアルゴリズムを実装しようとしています...したがって、このアルゴリズムは4つのダウンサンプリングされたスペクトルでのみ実装できますが、実際の音声信号を実際に使用する場合、これで十分であるとは思えません.
downsample メソッドのコードは次のとおりです。
この方法は有効のようです。
これまでのところ、HPSアルゴリズムの私の方法は次のとおりです。
私はここで立ち往生しています。長さの異なる 2 つの配列を乗算するメソッドを実行したいと思います。
基本的に、ご覧のとおり、スペクトログラムをダウンサンプリングすると、次の 2 つの配列が得られます。
- ダウンサンプルされたインデックスを持つもの
- もう 1 つはダウンサンプル後の値です。
私がやりたいのは、 : と同じサイズの配列を作成することindexDownSample
ですvaluesDownSample
。たとえば、 がありますindexDownSample[0] = 0
。これらの配列はすべてインデックス 0 ( 、 ) に対応する値を持っているためvaluesDownSample[0]
、 の積が必要です。valuesSpectCut[0] *valuesSpect2[0]*valuesSpect3[0]*valuesSpect4[0]
indexSpectCut[0] = 0
indexSpect2[0] = 0 = indexSpect3[0] = indexSpect4[0]
for の場合、
デフォルトで 0 forindexDownSample[1]=0.25
しかないことがわかります。indexSpect4[1]= indexDownSample[1] = 0.25
valuesDownSample[1]
そして、配列がいっぱいになるまでこれを続けます。
すべてがスムーズに進むと、最後に次のようになります。
- 製品のさまざまな値を含む valuesDownSample
- 異なるダウンサンプリングされたインデックスを含む indexDownSample。
基本周波数を見つけるには、最大ピークを見つける必要があります。
私の唯一の問題は、乗算の方法がわからないことです.....
誰かがアイデアを持っているなら、私はそれを大いに感謝します!
ios - iOS FFT Accerelate.frameworkは、再生中にスペクトルを描画します
更新2016-03-15
このプロジェクトをご覧ください:https ://github.com/ooper-shlab/aurioTouch2.0-Swift 。これはSwiftに移植されており、ここでカムした場合、探しているすべての答えが含まれています。
私は多くの調査を行い、FFTとAccelerateFrameworkについて多くを学びました。しかし、何日もの実験の後、私はちょっとイライラしています。
再生中のオーディオファイルの周波数スペクトルを図で表示したい。時間間隔ごとに、X軸のFFTによって計算されたすべての周波数(私の場合は512の値)のY軸(赤いバーで表示)に大きさをdbで表示する必要があります。
出力は次のようになります。
最初に左チャンネルのみを抽出する1024サンプルでバッファーを埋めます。それから私はこのすべてのFFTのことをします。
これまでの私のコードは次のとおりです。
いくつかの変数の設定
FFTを実行します。FrequencyArrayは、512個のfloat値を保持する単なるデータ構造です。
音楽に合わせて動くように見えますが、出力はいつもちょっと変に見えます。
このようないくつかの非常に良い投稿のおかげで、これまでに来たことをうれしく思います: アップルのFFTを使用してフレームワークを加速する
でも今はどうしたらいいのかわからない。私は何が欠けていますか?