[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/01 09:09 / Filesize : 249 KB / Number-of Response : 981
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

サウンドプログラミング4



1 名前:デフォルトの名無しさん [2007/07/25(水) 14:07:56 ]
音のプログラミング処理について語りましょう

各エフェクタの組み合わせとか、
プログラミング外の話題はDTM板の方がいいよ

サウンドプログラミング3
pc11.2ch.net/test/read.cgi/tech/1145573675/

サウンドプログラミング2
pc8.2ch.net/test/read.cgi/tech/1091054082/

サウンドプログラミング
pc5.2ch.net/tech/kako/996/996171508.html


386 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:18:18 ]
まあ、なんだ。せっかくのスレなんだしギスギスしないでも...

>>376
キーワードは「直線位相」だ。

387 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:29:40 ]
>>383
プログラミングの現実的な側面から言うと、
4)1サンプル毎に変化させるような仕様は事実上不必要かと
本当に1サンプルの時間精度で制御したいなら別だけど。
実際問題として、たとえばVST plug-inならDAWによるが
数千〜数万サンプル単位で波形データが渡される。
# 丸数字はやめて……

オフライン処理なら意味のある仕様かな。
その場合は1ステップ毎に係数書き換えで済むような気がする

キーワードとしては、後は群遅延とかかなぁ。

388 名前:デフォルトの名無しさん [2008/01/26(土) 03:37:28 ]
>>383

パライコっぽいってことはパライコとは微妙に違うの?
1サンプルごとになぜ係数を変えるの?

単にパライコなら379に書いてあるように、RBJAudioEQCookBookの係数を使って
複数のピーキングフィルタを実装してつなげればできるけど。


389 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 08:36:43 ]
>>383
Z変換して複素数を突っ込めば、位相のズレが起きるのは当然と判る
位相のズレを起きないようにするには、虚数成分がゼロにならなければならない。
それには、分母が(1+aZ+...)なんてなってると分子が同じ係数、つまりフィルター
でない状態でなければ無理。

パラメトリックイコライザなら1サンプル毎に係数をゆっくり変更するので合ってる。
ただ、IIRの場合、その係数の変更途中で分母のゲインが変わってくるから
構成方法によっては更新速度の影響が出て来る。

でも、実用的には、ひたすらユックリ変更するという事で逃げればいい。

390 名前:デフォルトの名無しさん [2008/01/26(土) 13:26:38 ]
よくわかってないんだけど、1サンプル毎に係数をゆっくり変更と言ってるのって、
パライコのフェーダー操作したときの話?

391 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:48:51 ]
グリグリって書いてるじゃん

392 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 17:55:34 ]
そういえばというか、
IIRが係数を急激に変化させたとき不安定になるのって
遅延器内の値も適切に補正できれば回避できたりしないかね?

393 名前:376 mailto:sage [2008/01/27(日) 17:49:43 ]
みなさん、ありがとうございます。キーワードを参考に、ネット記事と書籍を読みふけってます。

>>386
「直線位相」でググるとFIRの記述が多く見つかりましたが、IIRにも同様の内容があてはまるのでしょうか?
現在、複素数平面とかに関して勉強してるので、そのうちにでてくる気もしていますが・・・

>>387
オフライン処理になるとは思いますが、上手くいけばリアルタイムも考えてます。
それも担ってステップが少ないIIRを選んだのですが、間違いだったかな。

「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか?
一応、サイトとかまわってみたのですが、どうもシックリくる説明が見つからなくて困ってます。

>>388
説明不足でした。スミマセン
パライコのように目標の周波数を引き上げるのではなくて、その周波数帯を取り出したいんです。
さらに、その帯域をリアルタイムでグリグリと移動させたいなと考えてます。

なので、ピーキングではなくてバンドパスを組み合わせたいのですが、
バンドパスさせた複数の波形をそのままミキシングすると波形が壊れてしまったので、問題と原因を探してるところです。
# 根本は数学を分かってないところが大問題なのですがw

↑改行制限で分割されました↓

394 名前:376 mailto:sage [2008/01/27(日) 17:50:14 ]
>>389
>構成方法によっては更新速度の影響が出て来る。
この影響範囲(時間?)を事前に算出するような事は可能なのでしょうかあ?
# まぁ、今の僕にはできないとしてw
勉強を進めていくうちにできるようになるのか、現実的に不可能なのかだけでも教えてもらえると助かります。

>>390-391
中心周波数をリアルタイムでグリグリと変更して取り出したいと考えてます。
グライコのようにピークを線形移動させるというイメージです。
十分なサンプリングレートが取れていれば、ゆっくり係数を移動させる事ができそうなので、その方向で考えてます。
25Hz -> 20kHz へ1秒で移動の場合、44.1kHz/secで1サンプル +22.32Hzの変更となってしまいますが、
まぁ、ここまで過激な対応が可能かどうかは別として。

>>392
急激な移動が起こる各バンド帯を並列で計算しておいて、移動時に遅延させるという事でしょうか?



395 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:04:37 ]
FIRの場合は遅延を入れただけの信号に対しての直線位相となる。
つまりZ^n で割った時に、
Zに複素数を入れた結果の虚数成分が常に0である必要がある。

だから、分母に遅延要素以外がある IIRでは直線位相は実現出来ない。

直線位相でなければいけないのならFIRにするしかない。
しかし、FIRで25HzのBPFなんて作ろうとしたらどれだけタップ数が必要か
しかもそれをリアルタイムにf0を更新しようとしたら、まあ無理。

やるとしたらFFTで計算させるしかないね。
常にそういうスイープするなら、
FFTで時間引き伸ばしパルスなんて作るといいのかも

とりあえず、どうして直線位相でなければいけないのか
どういう用途か判れば、アドバイスしてくれる人がいるのかも


396 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:37:53 ]
>>393
>「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか?

簡単にいうと、(位相遅れによる)各周波数での遅延時間。定義は位相遅れの周波数微分。
(全体で一つの群遅延ではなく、周波数毎に群遅延値が出てくる点に注意)
位相遅れ量が等しくても、周波数によって波長が変わるので遅延時間は変化する。
波長によって遅延時間が違えば当然波形が歪むので、それをチェックするために群遅延を使う。

で、周波数-位相遅れのグラフが直線になる場合を直線位相といって、
グラフが直線→位相遅れの周波数微分が一定→遅延時間(群遅延)が
全帯域で一定→波形が壊れない→(゚Д゚)ウマー

397 名前:デフォルトの名無しさん [2008/01/28(月) 06:15:24 ]
いまいち何を実現したいのかがわからないな。
FFTして取り出したい帯域をぶっこぬくのじゃだめなの?
目的は解析?それとも音色?

398 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 11:15:19 ]
>バンドパスさせた複数の波形をそのままミキシングする
といってたから直線位相なんじゃまいか。
>ミキシング用 >グリグリ
ということだからVSTエフェクトでも作りたいんだろうとは読み取れるけど。

まここはDTM板じゃないので、住人も幅広く
絞って説明しないとわかってもらえないときあるかもね

単にグリグリだったらIIRのバンドパスで
f0急激に変化しないように制限すれば良さそうだけど、
複数の周波数帯取り出して合成しなきゃいけないんなら、FFTが現実的かもね。
ただこの場合はグリグリするにも周波数方向の分解能は制限をうけるから
なめらかさは犠牲になるかなあ。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:49:43 ]
DFTおよびFFTのプログラムを作ってみたのですが
DFTとFFTで結果がまるで違います。
しかし両方とも逆変換をすると、元の値に戻るのは確認したので
計算はあってると思うのですが、さっぱりわかりません。

実験は以下のようにやってみました。

・元信号をsin関数で作って配列Xに入れる
・XにDFTおよびFFTをかけたものを配列Fに入れる
・FにIDFTおよびIFFTをかけたものを配列Yに入れる
・XとYの実軸の値はほぼ同じ。
 虚軸に誤差と思われる値が入っているのは確認しています。

何か誤差が発生していたりするのでしょうか?


400 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:20:47 ]
Σsin*Xn で求めたものと FFTで求めたものでは 誤差の種類は違うよ。 

80bit浮動小数点で計算してる? 
64bitのdoubleだと結構4096点くらいでも気になる誤差だよ。

でも計算があってるかどうかは、サイン波を合成したのを入力してみればいいと思うのだが?


401 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 05:32:14 ]
まさかとは思うが
DCTとFFT比較してたりしないよな

402 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 14:58:25 ]
レス下さった方には申し訳ないのですが
もっと初歩的でした。
振幅と位相の計算をしてませんでした・・・

結果がまるで違うように見えたのは
有効数字やcos、sinなどの関数の誤差によって
あまり関係の無いパラメータが変動しているためでした。

無事FFTの計算はできるようになったので
いろいろやって見ようと思います。
ありがとうございました。

403 名前:デフォルトの名無しさん [2008/02/02(土) 02:47:09 ]
すみません質問です。

ステレオでLRの位相を90度ずらすと、左右に音が分離して聞こえますが、
この左右に離れている音の位置間隔を中心寄りに縮めるには、どうしたらよいのでしょうか?

0〜90度の間で左右の位相幅をいじっても、90度近くないと結局音が分離したようには聞こえず、
90度近いと逆に左右に音が離れすぎてしまいます。

LRのパンニングではなく、コーラスとしてステレオ感を調節するエフェクターを実装したいのですが、
良い実装方法などありましたらご教授ください。



404 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 03:13:36 ]
MSバランス



405 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:27:20 ]
位相を弄るんじゃなくて、遅延時間を弄る方がいいと思うよ。
ただ、遅延時間をスムースに変更するのは
・100タップくらいのFIRの係数を多数用意しておく
・あらかじめ高域をカットしておいて6タップくらいのFIRで1/2遅延と按分
・内部で4倍くらいオーバーサンプリングして//

あと、遅延時間だけでは移動感が出ない。音量も変更しないと

406 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:05:08 ]
音楽から和音抽出ってむずいねw

407 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:50:35 ]
フーリエ変換すれば何とかならんこともない

408 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:58:37 ]
そんなもんで出来るんなら苦労しないわ。 
和音抽出するには、まず識別する事が必要。フーリエ変換だけじゃ無理。

409 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:17:04 ]
倍音が邪魔だし

410 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:58:26 ]
倍音成分含む音なら基音を簡単に見つけられる。
倍音成分が少ない(無い)音やピッチが揺れる音(ベル系)は難しい。
その音が和音だと解っているなら和音も見つけられる。調も解れば精度が上がる。
ただ、和音の中に倍音がある場合(ギターのコード等)はフーリエだけじゃ多分無理。

411 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:07:39 ]
ドラムとかシンセとかいろいろ入ってると難しいだろうな

412 名前:403 [2008/02/03(日) 05:37:33 ]
皆様回答ありがとうございます。

>>404
MSバランスって初めて聴きました。
MIDをモノラルにしてLRをステレオとして合計3つの音源で広がり感を
調節するものようですね。
なるほど、中央に音源を置いたほうがいいのかも。
ちょっと試してみたいと思います。

参照:
stagesounds.blog74.fc2.com/blog-entry-53.html

413 名前:403 [2008/02/03(日) 05:38:06 ]

>>405
遅延時間をいじるというのは、LRそれぞれに別のFIRをかけて、
左右の遅延時間に差をつけるということでしょうか?

コーラスの場合は、左右のディレイ分の変化、つまりピッチ感の変化の位相を
ずらすことによって、同じ音源を微妙に違うものとして耳に届けることで、ステレオ感が表現できると理解しているのですが、
FIRの場合は、左右のフィルタの係り具合、つまり音色の微妙な違いによって、ステレオ感を表現するということでしょうか?

その場合、ステレオ音の広がりの間隔をどのようにして調節するのかが理解できていないのですが、
もう少しヒントをお願いできないでしょうか?

414 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 09:00:34 ]
遅延時間を変更するのに1サンプル遅延するのに苦労は無いけど
0.5遅延するのにどうする? 単に2つの平均を取ると、これはLPFになってしまう。
高域をあまりカットしないで0.5遅延したいというような場合には
比較的長いFIRフィルタが必要。



415 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:41:33 ]
というか、コーラス等のエフェクタ用途だったら、
遅延時間の解像度はサンプル単位で十分なのでは?
というか経験的には十分だったような。(44.1KHzとかのサンプリングレートなら)

どの程度のS/Nになるかは計算できないんだけどさ。

416 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:00:51 ]
それで十分というならソレでいいんじゃない?
両耳の距離が17cmとして 170/340E3*44100 で22サンプルの遅延分
1サンプル単位にカクカクと変更しても気にならないといえばならない。

とりあえず思うような特性になるかどうか試してみるといいよ

417 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:06:18 ]
コード抽出なら離散ウェーブレットじゃないの
再構成しないならオクターブバンドより狭く解析できるし
時間解像度的にも有利

418 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:46:12 ]
その手の題材って、研究目的とかじっくりと取り組めるのでなけりゃ、
なかなか手を出しにくいね。
いくらかうまくいったとしても、道具としての実用レベルまでは遠い道のり・・・

419 名前:403 [2008/02/05(火) 03:52:34 ]
>>405
>>414
>>415
>>416

回答ありがとうございます。

両耳への到達時間を1サンプル以下の単位で操作するためにFIRを利用するという意味なんですね。
やっと理解しました。

ちょっと実験してみたいと思います。
ありがとうございました!

420 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:54:50 ]
サウンドカード付属のマイク入力(3.5ミニ)から入力された音声を
リアルタイム(非バッチ処理)にディジタル処理するプログラムの作成を考えています.

計測機器などはその製品ごと(というか会社ごと?)にコマンドが異なりますが,
サウンドカードも同様なのでしょうか?

windows Visual C++6 での開発を考えていますが,
後にUNIX系に移植するつもりです.
関数の使いまわしが出来るのかが心配になり質問しに来ました.

お願いします.

421 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:23:42 ]
入出力は処理系依存だと思うけど

422 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:46:24 ]
Windowsの場合は
1 低レベル オーディオAPI
 waveInOpen/waveInAddBuffer/
 waveOutOpen/waveOutPrepareHeader/waveOutWrite
 窓へのメッセージで貰うか、CallBackを使う。

利点:サウンドカードをインストールすれば、ほぼ確実に使え、サウンドカードを意識する必要がない
欠点:色んなサウンドカードで音切れしないように考えるバッファを大きくとってレイテンシが大きくなりがち
   ステレオ以上のマルチチャンネルは対応が難しい

2 DirectSound
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/directsound.asp
利点:エフェクタ等、便利な機能が既にそろってしまっている。
欠点:DirectXがインストールされ、一部機能は対応サウンドカードである必要がある

3 ASIO
利点:低遅延


423 名前:420 mailto:sage [2008/02/07(木) 16:19:16 ]
>>421-422
ありがとうございます.
低レベルオーディオAPIを使ってみます.

424 名前:デフォルトの名無しさん [2008/02/11(月) 00:00:11 ]
板違いかもしれませんが、質問させてください。
WindowsMediaPlayerのプレイビューのような、音楽にシンクロしてグラフィングが
変化する物(名前がわかりません)の作成の仕方が知りたいのですが、
どのように調べていいのかもわからず困っております。
ご存知の方がいましたら、調べ方についておしえてください。



425 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:04:29 ]
>>424
それはグラフィクイコライザというものです。
音の高さに合わせて、それぞれの音の高さの音の大きさを棒グラフで表示します。
WMP等はこれをリアルタイムで行います。
原理は、フーリエ変換というものを使って信号を処理してそれぞれの周波数のゲインを解析しています。
手がかりは書いた。あとは検索しろ。

426 名前:デフォルトの名無しさん [2008/02/11(月) 00:09:05 ]
ありがとうございます。
大変重要な手がかりをいただけました。
早速検索してきますー。

427 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:53:23 ]
ス ペ ク ト ラ ム ア ナ ラ イ ザ だ

428 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:00:52 ]
ワロタ

429 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:24:13 ]
>>425
あれって本当にフーリエ変換なんてやってるのだろうか?
大体のふいんきが分かれば十分だからもっと簡単な実装で良いんじゃないかと思わなくもない。

430 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 04:20:34 ]
フィルタした音を再構成して使うんじゃなければただのIIRバンドパスで十分かもね。位相回ってもパワーには影響しないし。
IIRで完全なクロスオーバー作るのは難しいから、各バンドのパワーの和を厳密に元信号と一致させたいときは使えないけど、
棒グラフ程度なら十分だと思う

431 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 04:48:13 ]
出てくる絵が変わっていけばいいだけなら、
無理にfftかけなくてもいいだろうけど、
スペクトル出すならなんかやってんだろうね。

432 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:05:56 ]
パソコンの場合は十分な演算能力あるからFFTでもOK
ただ、FFTの都度CPUの負荷が上がるから消費電流の変動がノイズとなって聞こえるという困った事に

なおMP3はそもそも周波数毎に分割されてるのを再構成してるから、その時の情報を残している
可能性もある。

マイコン内蔵のDSPなんかで実現してる場合は
IIRフィルタでも共振型というかサイン波オシレータの構成だろう。
ようするにQ無限大の共振器に単発の窓関数かけて結果を見る
1個の共振器を時分割で使い回せば負荷も軽い

433 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:00:41 ]
いつもは過疎スレなのにネタが落とされるとすぐにレスが付くな。

434 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:22:10 ]
なんか前スレあたりでもほぼ同じ流れみたような
そしてそこでも、スペアナをグライコとよんでるやつがw



435 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:25:59 ]
前スレじゃなかったこのスレだわ>>324

436 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:57:35 ]
グライコがスペアナの意味で使われてて混乱してたけど、やっぱり違ったか。

437 名前:デフォルトの名無しさん [2008/02/11(月) 15:20:50 ]
>>436

なんか多くの素人が同じ間違いをしてる。
音楽やってたことある人でも多いし。
おそらくコンポやカーステレオでスペアナとグライコの表示が似てるせいだろう。

438 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:08:10 ]
グライコはどうやってるんだろな
IIRフィルタだっていうけど、係数を全部いっぺん変更してるんだろか?

439 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:45:44 ]
双二次で検索

440 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 15:20:24 ]
多分、一番多い実装は、
RBJ Audio-EQ-Cookbook で言うところの
双二次のピーキングIIRを複数つないでる。

441 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:22:50 ]
  b0 = 1 + alpha*A
  b1 = -2*cos(w0)
  b2 = 1 - alpha*A
  a0 = 1 + alpha/A
  a1 = -2*cos(w0)
  a2 = 1 - alpha/A
コレって、 1/Aの部分で割算が必要だし
結局 a0で割らないといけないから、リアルタイムにこのまま計算してるとは思えないなんだよね

442 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:41:00 ]
>>441
その割り算(a_i, b_i の計算)は、イコライザの設定変更時だけしかしなくて、
毎サイクルは必要ない。

443 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:16:13 ]
イコライザだからAの変更は必要だよね? そうすると 1/a0も計算しないといけないよね?

だから、割り算しなくていいような構成方法あるんじゃないの?

444 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:31:03 ]
設定変更時だけだし多少遅くても割り算やってる。



445 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:31:23 ]
A の変更の頻度、それほど高くないはずだから、
割り算のコストをそこまでシビアに考えなくてもいいんじゃないかと。

除算器乗ってないプロセッサでも、除算表持ったり近似計算したりで、
割り算全く出来ないわけではないし。

446 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:04:53 ]
逆数を乗算してもいいな
そういう話をしてるんじゃないのは分かってるけどw

447 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:14:14 ]
イコライザいけるならHPFでもいけるかと思って
リアルタイムで係数書き換えたらあっさり発振した。
やっぱだめか。

448 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:18:37 ]
イコライザも係数を一気に書き換えたら発振するよ
書き換えでフィードバックゲインが大きく変わるから、
結果オーバフローすると不安定になる。


449 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 03:26:05 ]
だから俺はFIR派

450 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:04:25 ]
FIRで、RBJみたいに簡単に扱える方法はあるの?

451 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:26:34 ]
FIRでバンドパスフィルタを作っておけば直線位相だから
元の信号の遅延信号と加減算できるんだよ。
元の信号に足せば、そのバンドだけポコンの持ち上がるし
足せば下げられる。

IIIRでも同じなんだけどね

452 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:57:31 ]
IIRは結果の加減算やろうとすると位相差のせいでうまくいかないからねぇ
てかRBJって何?

453 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:32:31 ]
ググレカス
www.google.co.jp/search?q=RBJ+IIR

454 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:02:04 ]
いや、バンドパスの頂点はゼロ位相だから 加算は可能だよ。
その特性は IIR-ピーキングイコライザのものと殆ど同じ

ただQはだいぶ調整必要なのとf0も少しズレるように思ったな



455 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:08:33 ]
頂点以外ずれるから問題なんだろう

456 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:11:20 ]
それを言うならIIRのピーキングイコライザも問題って事になる

457 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:19:57 ]
いや、位相がずれたものを元音に加減算することが問題って話ですよ


458 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:34:02 ]
だからIIRピーキングイコライザも、位相はピークでは一致するけど
その前後では 〜 になる。
そして、IIRバンドパスのを加算しても、これは同じだから、同じだって

459 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:28:44 ]
ん?ピーキングでもバンドパスでも位相がずれるのは当然、そりゃわかってる
問題はそれを元音に加減算することだと言ってるわけですよ。
位相がずれた音を元音に加減算したら周波数特性に影響が出るしょ?

までも、バンドパスは位相のズレ幅と同じスロープで減衰してるから、
大きな特性変化にはならないかもだけど。

まちがってたらすまん


460 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:45:59 ]
速い話
IIRピーキング = 元音 + IIRバンドパス
でははない。ということ。
周波数特性が崩れる。

461 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 18:10:16 ]
だからさあ
BPFの係数と
  b0 = alpha
  b1 = 0
  b2 = -alpha
  a0 = 1 + alpha
  a1 = -2*cos(w0)
  a2 = 1 - alpha
>>441 を比べてごらん
構造の違いは b1がゼロかどうかだろ?
BPFと元信号1遅延したのと重みを調整して加算したら区別付かないんだって

462 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:43:28 ]
>>453
なんだ、それか。妙な略し方だなぁ……。

>>462
よく分かってないんだけど、
>>441でA=1として
  b0 = 1 + alpha
  b1 = -2*cos(w0)
  b2 = 1 - alpha
  a0 = 1 + alpha
  a1 = -2*cos(w0)
  a2 = 1 - alpha
a系列は共通だから分母は無視するとして、

441のH(z)の分子 = 1 + alpha - 2*cos(w0)*z^-1 + (1 - alpha)*z^-2
462のH(z)の分子 = alpha - alpha * z^-2

分子部分の違いは
1 - 2*cos(w0)*z^-1 + z^-2
これが
> BPFと元信号1遅延したのと重みを調整して加算
でどう区別つかなくなるのか知りたい……。

463 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 19:29:47 ]
A=1の時
BPF/alpha *(1+alpha) + -2*cos(w0)*z^-1 とすれば一致するようだね



464 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:20:39 ]
他スレから誘導されてきました
if文で、if (音を感知したら)
do ○○ っていう感じのプログラムを考えているのですが

その音を感知する部分で何か有効的な物ありますか?
(音はその時しか扱いません)



465 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:17:53 ]
リアルタイム処理なら常に音量のゲインを見張って、
それが閾値に達したら別スレッドでdo○○に相当する関数を実行させるとか。

466 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:14:40 ]
>>464
環境は? そして、その入力元は何? たとえばwindowsでマイク入力なのか、スピーカー出力なのか

467 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:05:30 ]
>>465-466
ありがとう
windowsのマイク

何がしたいかっていうと
音を感知したら(どんな小さな音でもいいんだけど)、
HDDに録画をするっていうプログラムを作りたいんです。
だからゲインまでは必要ないかなとは思っています。

468 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:05:52 ]
連続ごめん
マイク入力のこと↑

469 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 20:34:24 ]
どんな小さな音でもっていうけど
録音状態でマイクからの入力が0フラットのまま安定することってなかなか無い気がするけど。
ゲインを監視しなかったら録画しっぱなしになるな。

ていうかひょっとして、聞きたいのは録音するためのAPIとか、そんな程度じゃねぇの?

470 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:06:25 ]
あ、そっかそうだよね... まぁとりあえず、ゲインは後で考えます

そう、APIとかの事でした、質問が明確じゃなくてごめん。
何か良いのないかなと思って

C++を考えてるけど

471 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:38:08 ]
トリガの音にもよるんじゃね?
チャイムとか時報みたいな単音かつ短い物ならFFTなりで周波数成分見て判別出来そうだけど、
比較的長めのジングルみたいなのはどこまで一致したらトリガ音と認識させるのかとか、
マイクからの入力だとちょっとした事で入力状態も変わってくると思うんだよなぁ。

472 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:02:27 ]
ちょっと話はズレるんだけど、プログラムを走らせるパソコン外部の装置からのデータ入力の際に
ノイズが完全に入らないデジタルな接続ふyふyふゆいおjhy「

473 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:34:41 ]
ふじこ!

474 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 04:25:26 ]
>>467
物音がしたら一定時間録画、防犯システムみたいなもんか。

スレ一通り見た?Winでのマイク入力については
>>16 以降とか、
>>420 以降あたりが参考になりそう。

当然、環境音やアナログ回路由来のノイズとかあるから、静かだったら入力0ってことはない。
ある値を超えたら、って具合に感度(スレッショルド)は設ける必要ありますよ。
それから常に空調が入っているような部屋の場合は、
ハイパスフィルタなどを使って検出に不要な帯域をできるだけカットする必要があるかもね。



475 名前:デフォルトの名無しさん [2008/02/20(水) 05:07:39 ]
質問なのですが、ここらへんの技術で食べていくにはどうしたら良いのでしょう、

この中でプロで音響関連のプログラマーをやってる方っていますか?
やはりゲーム業界や計測器系の会社が多いんでしょうか?

DAWの開発会社に勤めている方とかいましたら、ぜひ職場の雰囲気など教えてほしいです。

職場での立ち位置なんかも気になります。
やっぱりマニアックな分野の分だけ、発言権は低いのでしょうか。

大学での専攻分野が音響/信号処理関連でないと難しいとかやっぱりあるのでしょうか。


476 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 06:01:23 ]
発言権てw

477 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:06:59 ]
国産DAWやシーケンサーは、プログラマ1人で作ってるものがほとんど(過去のものも含む)。
1人の作業に雰囲気もなにもない。

478 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:59:44 ]
職場の雰囲気なんて社風によったり、部署毎に違ったり、面白いやつが一人いるだけで変わるもんだから聞くだけ無駄。
ゲーム業界におけるサウンドの地位は基本的に底辺。
サウンド専用のメモリをメイン側で使われたって話も聞いたことがある程。
唯一コナミだけはサウンドの発言権が強いってんで有名だったけど、それも10年くらい昔に聞いた話だし現状どうなってるかは知らない。
組み込み系やサウンドツールはボチボチ仕事転がってるから需要あるかもしんない。

ってかマ板向けの内容だなw

479 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:18:01 ]
Q ここらへんの技術で食べていくには
A 自分を差別化出来るだけの技術を付けるしかない
音しか出来ないのでは駄目。
色んな事が出来た上で音も出来るのでなければならない。

算数や工業数学には強くないといけないね

480 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 13:02:34 ]
算数は機械がやってくれるので問題ないだろ。
数学をやれ。

481 名前:デフォルトの名無しさん [2008/02/20(水) 20:14:33 ]
スタインバーグとか開発が海外でしかも音響専門のソフトウェア会社ならどうなのか気になる。
みんな楽しそうにやってるのか、デスマーチで死んでるのか。

482 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:06:48 ]
>>479
技術よりネタだろうな、なんつーかもう何もかもやり尽された分野だし
FM音源が流行っていた時代、ソフトで音を作っていた時代が懐かしい。
今やるとするなら初音ミクみたいな奴とか

あえて技術で攻めるなら、このデータは効き難い事で有名といところで、圧縮、だがこれももう限界に近い。
他には音声認識もまだやれる事が多いかな、これは出力ではなくて入力なのでこのスレとはちょっと違う雰囲気か。

483 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:07:34 ]
たしかに雰囲気は違うか
でも語らうとしたらこのスレくらいしかって気もするな

484 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:23:11 ]
Visual C++ 6
SDKにて開発をしています.

こちらをコピーして,マイクから録音したものをwav形式で保存しています.
ttp://www7a.biglobe.ne.jp/~lshen/EternalWindows/Sound/WAVE/WAVE11.html

処理の流れを見ると,
waveInOpen
waveInPrepareHeader
waveInAddBuffer
waveInStart
>録音中
waveInStop
waveInReset
waveInUnprepareHeader
waveInClose
で,最後にSaveWave関数内で wav ファイルに落としています.

ここで,信号を wav に落とさずに信号処理を行いたいのです.
おそらく wh.lpData 内にデータが書かれていると思うのですが,
サンプリング周波数(例では8kHz)によってデータを配列に並べる処理等が分かりません.

具体的には,録音をしたデータをフーリエ変換し,そこから別の処理へと繋げるつもりです.
ご教授願います.



485 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:20:36 ]
>484
>474

486 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 08:37:57 ]
>>484
wf.nChannels = 1;
wf.wFormatTag = WAVE_FORMAT_PCM;
wf.wBitsPerSample = 8;
wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;
wf.nSamplesPerSec = 22050;

wh.lpData に  モノラル 8bit 22.05KHzの配列として入力されている
FFTするなら、
wf.wBitsPerSample = 16;
として 16bit 符号付の配列として wh.lpData を扱えばいい。

連続して処理するなら、
waveInPrepareHeader
を2つ以上確保しておいて、MM_WIM_DATAメッセージを貰う都度、バッファを使いまわす事だ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef