サウンドプログラミング4 at TECH
サウンドプログラミング4 - 暇つぶし2ch1:デフォルトの名無しさん
07/07/25 14:07:56
音のプログラミング処理について語りましょう

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

サウンドプログラミング3
スレリンク(tech板)

サウンドプログラミング2
スレリンク(tech板)

サウンドプログラミング
URLリンク(pc5.2ch.net)


2:デフォルトの名無しさん
07/07/25 14:52:49
2get

3:デフォルトの名無しさん
07/07/25 16:24:53
用語を統一するために

リアルタイム
 バッチ処理の対語で、ゼロレイテンシの事ではない。 
 遅延はあっても途切れずに処理する事をいう

レイテンシ
 ADCからDACまでにかかる時間の事だったり
 DSPの掛け算なんかで命令から実際に答えが出るまでの命令サイクル数の事だったり

DSP
 デジタル・シグナル・プロセッサ の場合は信号処理用のMPUの事
 デジタル信号処理の事を言う場合もある

4:デフォルトの名無しさん
07/07/25 16:41:43
最近サウンドプログラミングに目を向け始めたんだけど
ソフトシンセに関して書かれた本とかってないの?

5:デフォルトの名無しさん
07/07/26 07:35:52
            ,,.-‐'''"´ ̄ ̄ ̄``丶、
        ,,.-'"´             ``丶、
       /    :/    .、   、     丶
     /  :::.:/! :::/ :|.     T:、_.:::.:ヽヽ.:::.:::   ヽ
     /:/ ::::l:ア.:::/|.::::|! ::.:::.:::  |.:::l、.:::.::丶.:::.:::.:::.:::. ヽ
    /.::/ .:::.:l|!.::/ .|.:::|!.:::.:::.:::.:::.:|:.:::lヽ.:::.:::.:ト、.:::.:::.:::.:::.::::l
   l.::/! .:.:::.:::|!.:::|  |.::|」 .:i:.:::.:::.::|.:::メ、_ ヽ.::::l ヽ.:::.:::.:::.i::.::l
   .|::/ |:::::::::::::|!::| _,,.イ!_ヽ:::l::::::::::|!ソr _二ニァi- l::::::::::::l:l:::ト
   |!:l |::::::::::_,.ィ匕.r=テミ、 ヽ:l:::::::| ! イ 于ミヽ、 |:::::::::::|ア!:|:ヽ   出席番号5番
    l!  |::::::::、:::l::|'´i'丿;;ヽ  ヽ::::|   l‐'´;;;::|! `|:::/:::::l|::l:lt、::l  和泉亜子が5get
   !  ト、:::::l::::l! _|_::::::::_i!.  ヾ!   丶--≡‐、l::イ::::/.`l!l::l!ヽl
       |::ヽ:::ヽ:|.イ-' ̄   丶       `´ソノ/::/ ノ!ヽ::l 丶、
     .|:::::入:ヽヽ        _,,.--、   ソ l∠ィ'l´j  ヽ!
     |:/ヽヽヽ.Y-、_ 「 ̄  ̄       ン‐、 ,.イソ/ .レ'   !
      '´   ヽ/_,,.-‐'''`L    _,,.∠__\!l/   !
     ,r─‐ァ'´  .-‐'''"ヽヘ__/,⊥,,__   ヽr──‐-、
    /.|   ヽ    -‐'''"´┤ 〉L__    /       入
  /  ヽ   \         |   {       /      /  ヽ

6:デフォルトの名無しさん
07/07/26 09:25:38
>>3
リアルタイムじゃなくてインタラクティブと呼ぶと良さげ

7:デフォルトの名無しさん
07/07/26 11:19:38
マルチメディアなスレみーっけ!

8:デフォルトの名無しさん
07/07/26 11:45:14
   __i.\,/!_
  ゝ, ''´⌒`ヽ   
   ノノメノハノ〉〉  
 |\ルリ!゚ ヮ゚ノ∩ やっぱり最強なあたいが⑨ゲットよ!
  \ と)i`\´iノ  
  ∠ ,く// i ゝ
   '`"!ンィン'´

9:デフォルトの名無しさん
07/07/28 22:35:32
とある音源Aと、イコライザなどを使いAの特定の部分の周波数を強調した音源Bから
周波数のどの部分が加工されたかを知るにはどうすればいいんでしょうか。

10:デフォルトの名無しさん
07/07/28 22:57:20
Spectrogram を PrintScreen して Photoshop に hariko して XOR を掛ける

11:デフォルトの名無しさん
07/07/28 23:01:40
☆SHI☆NE☆YO☆

12:名無しさん@そうだ選挙に行こう
07/07/29 07:42:58
周波数の強調などのフィルタは普通は線形だから
入力A 出力B フィルタF なら B = F*A

だからFを求めて、このFの周波数特性を求めるという事になる。

方法は
1、A,BをFFTして、 周波数軸上でB/Aを求める

2、適応フィルタ PARCORフィルタなどで、Fの近似値を求めて
 このFの係数から特性を出したり、
 Fにホワイトノイズや周波数スイープを入れて特性を出す


13:名無しさん@そうだ選挙に行こう
07/07/29 09:37:50
単純にB-AをやってからFFTして、
一番でかかった周波数帯を見れば良いんじゃないかしら?

14:名無しさん@そうだ選挙に行こう
07/07/29 12:49:30
それは旨くゆかない。イコライザーなどはIIRフィルターなので、位相も変化してるし
FIRフィルターであっても、BとA間には遅延があるので B-Aではダメだよ

15:デフォルトの名無しさん
07/08/03 21:11:19
即死判定予防

16:デフォルトの名無しさん
07/08/03 22:32:46
サウンドカードの入出力を利用してオーディオ用のディジタルフィルタ(リアルタイム)を
実現してみたいので参考になるホームページお願いします。

17:デフォルトの名無しさん
07/08/04 08:42:33
基本的にサウンドカードの入出力でエフェクトするのは環境依存。

最近のマザー付属のものでは、入出力を同時に出来るものも増えてきてるけど
一昔前は、入出力を同時にすると、入力がそのままハード的に出力に出て来たりとかのが多かった。

2枚刺しなどで入力と出力を別ボードとなると、サンプリングレートの微妙なずれでだんだんとズレてゆく
あるいは1枚のものでもズレるものが多かった。

つまり、エフェクトするには、まず入出力でサンプリングが同期して、
かつ入出力がハード的に分離してるハードである事が条件だ。

それを解決していれば、あとはwindowsなら低レベルオーディオAPIで -->ヘルプ【低レベル オーディオの概要】

WAVEHDR 構造体を、in/out用に複数用意して それをコールバックかメッセージ駆動で
順に再利用してやればいい。

C++でもDelphiでもそういうコンポーネントを1回作っておけば、後はとても楽チン

18:デフォルトの名無しさん
07/08/04 22:22:51
アドバイス有難うございます。
開発環境はBCC5.5.1(C言語)とWin32APIを使ってます。
ハードは比較的新しいマザーP5Bですので対応大丈夫と思います。
ただ、ゴーグル検索でオーディオ入出力を同時に行っているサンプルが見つからず???な状態です。
良いサンプル落ちてないですか?

19:デフォルトの名無しさん
07/08/05 11:41:57
たとえば、ここは2個用意して交互に利用してるけど、
URLリンク(www13.plala.or.jp)
こんな感じで2個3個を順に利用させる。
URLリンク(www7a.biglobe.ne.jp)

入力側も同じように、マルチバッファリングで処理する。

入力--WAVEHDRのマルチバッファリング-->FIFO-->出力のWAVEHDRのマルチバッファリング


プログラムの開始時は、
1waveOutPrepareHeade/waveInPrepareHeade で WAVEHDRを全部登録
2,waveOutPause
3,出力のWAVEHDRによるマルチバッファをwaveOutWriteで全部埋めて
4,入力のWAVEHDRによるマルチバッファを連続してwaveInAddBuffer
5,waveInStart

以後は、コールバックか窓メッセージで
最初の MM_WIM_DATA で waveOutRestar

入力はMM_WIM_DATA$3C0 出力はMM_WOM_DONE $3BD
それぞれ 帰ってくる WAVEHDRを再利用する
片方ではFIFOに書き出し、片方ではFIFOから読み出す。
どっちかの処理でエフェクトをかければいい


20:18
07/08/05 16:44:55
>>19 すごい親切な方熱烈感謝です。
先ははるかに遠いですが、なんとなく流れの概要がつかめました
(全体の流れがつかめないとどうしようもないですから助かりました)
先ずは入力を出力に出すだけの音声スルーを実現にしたいと思います。

3.で出力用データが用意されてないのにwaveOutWriteしてますが、
出力用データはどうするのでしょうか?

MM_WIM_DATA、MM_WOM_DONE処理はこんな感じでよいですか?
*MM_WIM_DATAを受け取ったら、
最初のMM_WIM_DATA ならwaveOutRestartする
入力データに対するを処理する(エフェクト)
それFIFOに書き込む
受け取ったWAVEHDRをwaveInAddBufferする(WAVEHDRの再利用処理)

*MM_WOM_DONEを受け取ったら、
受け取ったWAVEHDRをwaveOutUnprepareHeaderする
出力データをFIFOから読み込み、受け取ったWAVEHDRのlpDataバッファに転送する
そのWAVEHDRをwaveOutPrepareHeaderする
waveOutWriteする

21:デフォルトの名無しさん
07/08/05 20:00:02
>3.で出力用データが用意されてないのにwaveOutWriteしてますが

まあ途中のFIFOがいっぱいになってから、出力WAVEHDRを書いてもいいんだけど
>入力--WAVEHDRのマルチバッファリング-->FIFO-->出力のWAVEHDRのマルチバッファリング
と、全部が遅延要素だから、出力側のマルチバッファリングにはゼロでも埋めて
出力をスタートしようって事

後はOK

22:デフォルトの名無しさん
07/08/06 10:51:32
すみません。
wavOutWriteで2つ以上の波形をミックスした音を出したいのですが、合成のやり方がわかりません。
データは16ビットモノラルです。

char* buf1,buf2,out_buf;//元データ

short* in1 = (short*)buf1;
short* in2 = (short*)buf2;
short* Out = (short*)out_buf;

for(int i=0;i<BUFFER_SIZE/2;i++)
{
Out[i] = in1[i] + in2[i];
}

こんな風にすると、音割れが発生してしまいます。どうすればよいのでしょう。

23:デフォルトの名無しさん
07/08/06 11:04:15
そりゃぁ、単純に足しちゃダメだろ。安直にやるなら平均だけど、それで事が足りないなら調べて工夫すればいい。

24:デフォルトの名無しさん
07/08/06 14:18:20
>22
in1[i] + in2[i] の結果を -32768 ~ 32767 でクリップするだけでもだいぶマシになる。
真面目にやるならソースの音量を調整するなりコンプレッサつけるなりしないとダメ。

25:デフォルトの名無しさん
07/08/06 15:49:16
サウンドプログラムってやったことないおれがいいかげんレスすると
演算のオーバーフローで音割れ発生なら
Out[i] = in1[i]/2 + in2[i]/2;

int tmp = in1[i] + in2[i];
Out[i] = tmp/2;
したらどう?

26:デフォルトの名無しさん
07/08/06 16:14:25
>>25
それ、>23で指摘している平均ですから。

27:デフォルトの名無しさん
07/08/06 16:15:19
俺は夏の間だけ2乗平均するゼ

28:デフォルトの名無しさん
07/08/06 17:56:35
平均てか、オーバーフローしないように音量下げてるだけでしょ。

単純に足すの自体は正しいけど、フルボリュームの音2つ混ぜればレベルオーバーして割れる、ってあたりまえの話し。
割れないようにするには基本音量調節だけど、
クリップ処理はしといたほうがいい。でないとクリップしたとき醜いことになる。
整数処理の場合、混ぜた結果をクリップ処理するならshortじゃなくてlongとかで足し算しないとね。

29:デフォルトの名無しさん
07/08/06 18:11:40
色々と突っ込みどころだらけだな。

>単純に足すの自体は正しいけど、フルボリュームの音2つ混ぜればレベルオーバーして割れる、ってあたりまえの話し。
「混ぜる」が「足す」であることが前提となっているが、「混ぜる」ことと「足す」ことはイコールではないぞ。
フルボリュームの音を足すとレベルオーバーするから、そうならないように混ぜないといけないという、当たり前の話だね。
×話し
○話

>クリップ処理はしといたほうがいい。でないとクリップしたとき醜いことになる。
何が言いたい。字義通りに解釈すると、「クリップしないとクリップしたときに醜い」となって意味不明なのだが。

30:デフォルトの名無しさん
07/08/06 19:29:40
重箱の隅

31:デフォルトの名無しさん
07/08/06 19:36:32
隅の多い重箱だな

32:デフォルトの名無しさん
07/08/06 19:43:20
石頭

33:デフォルトの名無しさん
07/08/06 20:14:12
>28
アホだコイツw
レベルオーバーで割れるのはクリップしても割れるだろうが、嘘教えてんな
それを言うならオーバーフローだろボケ
用語は正しく使え、知らないなら黙ってろ

34:デフォルトの名無しさん
07/08/06 21:23:01
クリップ処理すればレベルオーバーしても割れないなんてだれも書いてないと思うけど、
とりあえず、君が正確な用語で簡潔に説明してやればいいんじゃない?

35:18
07/08/06 21:32:43
>>21 有難うございました。
また、質問すると思いますが、そのときはよろしくです。

36:デフォルトの名無しさん
07/08/06 23:15:12
>>25
細かいことだけど、CやC++の仕様ではintより短い整数型は演算中は自動的にintに格上げされるから、
intが32ビット以上の環境なら単純に Out[i] = (in1[i]/2 + in2[i])/2; と書いてもオーバーフローしないよ。
これは Out[i] = (int)(in1[i]/2 + in2[i])/2; とまったく同じ挙動になる。

37:36
07/08/06 23:17:48
コピペしたら /2 消し忘れた・・・orz
正しくは Out[i] = (in1[i] + in2[i])/2; と Out[i] = (int)(in1[i] + in2[i])/2; です。

38:デフォルトの名無しさん
07/08/06 23:20:06
>>36
それって仕様でなくて、処理系によるんでない?

39:デフォルトの名無しさん
07/08/06 23:36:17
てかシンプルなことなのに、やたら難しいことみたいにじれったいやりとりだなw

40:デフォルトの名無しさん
07/08/06 23:44:20
>>38
charやshortが被演算数になったときのintへの自動格上げはANSI Cの言語仕様だよ。
K&R第2版のA6.1節に書いてある。

41:デフォルトの名無しさん
07/08/07 01:55:28
自動作曲ソフトのようなものを作りたいです
そこでまず何を勉強すればいいですか?

42:デフォルトの名無しさん
07/08/07 01:56:32
midi(笑)

43:デフォルトの名無しさん
07/08/07 01:57:41
>>41
スレリンク(tech板)

44:デフォルトの名無しさん
07/08/10 13:03:58
音源Aが 波形x + 波形a
音源Bが 波形y + 波形a
で構成されている時、
A - B = (x + a) - (y + a) = x - y
でaを消す事が可能ですけど、逆にxとyを消してaだけで構成された音源を作る事は不可能ですよね?

45:デフォルトの名無しさん
07/08/10 13:13:09
変数が3つあって方程式が2つしかない場合、一般的に全ての変数は求まりません。

46:デフォルトの名無しさん
07/08/10 14:44:43
>>44
x と y が無相関なら、A, B の無相関化である程度の除去はできるかも。
x, y がそのままとりだせるかどうかは知らないけど。

47:デフォルトの名無しさん
07/08/10 15:23:04
歌がセンター定位である事を利用した カラオケ器 なんてのが趣味の工作で流行ったけど

その逆にセンターの歌だけ取り出すのは まだまだ無理だよ。
リアルタイムに音声認識⇒音声合成をやらないといけないからね

48:デフォルトの名無しさん
07/08/10 16:18:18
>>47
それは、センターにボーカル以外の音も混ざってるからでは。
左右の音の、ボーカル以外の部分が完全に無相関なら
結構いいせんで分離できると思う。

まあ、「完全に無相関」なんて仮定が通じるわけもなく、
結局、ボーカル抽出は音声認識的な技術も使わないと無理くさい
ってことだと思う。


49:デフォルトの名無しさん
07/08/10 16:55:02
完全に無相関かどうかは、この場合関係ないでしょ。

L(x)+S(x) と R(x)+S(x)から、どうやってS(x)を分離するというのだい?

50:デフォルトの名無しさん
07/08/10 17:01:26
うん

51:デフォルトの名無しさん
07/08/10 17:29:44
相関ベースのブラインド信号処理でも、
2チャネルだと分離できるのは2信号までか。

52:デフォルトの名無しさん
07/08/11 00:34:44
歌声りっぷで同名ファイル選んで中央定位抽出できるけど
FFTでなんとかかんとか

53:デフォルトの名無しさん
07/08/11 00:53:48
ノーマルバージョンからカラオケバージョンを減算すればいいんじゃね

54:デフォルトの名無しさん
07/08/11 02:44:09
歌声りっぷでググれって

55:デフォルトの名無しさん
07/08/11 03:00:45
誰もツールの話なんかしてねー

56:デフォルトの名無しさん
07/08/11 03:48:49
FFTでなんとかかんとか

57:デフォルトの名無しさん
07/08/11 06:11:53
離散フーリエ変換なんて糞

58:デフォルトの名無しさん
07/08/11 07:52:14
>>57
具体的に書かないと、ただの「自分に判らないものは糞ってことにしておきたい人」にしか見えませんよ。

59:デフォルトの名無しさん
07/08/11 07:59:34
A = a + x, B = b + x から得られるのは a - b, b - a しかないけれど、そのどちらかをFFTで何とか何とかすることにより、a + b の周波数が得られる。
あとは A + B = a + b + 2x = C, C - (a + b) = 2x, 2x / 2 = x で終了。

60:デフォルトの名無しさん
07/08/11 08:08:14
FFTを魔法の道具と思ってないかい?
a+b +2*x から、 2*x をどうやって消せるの?

それが出来るなら自動車の運転中の音声認識なんかに威力を発揮する大発明さ。
他にも、携帯電話で話者の声だけ取り出して送信するとか応用はすごいぞ。


大金持ちになれるチャンスだよ。 がんばれ


61:デフォルトの名無しさん
07/08/11 08:37:37
だから離散フーリエ変換なんて糞なんだよ。
アナログ回路最強。

62:デフォルトの名無しさん
07/08/11 12:36:56
DFT単体で考えてる人が多いな
あれはツールなんであって、何かと組み合わせんとね

で、到達方向が違うならビームフォーミングでいけるんちゃうの?と適当に言ってみる

63:デフォルトの名無しさん
07/08/11 14:36:32
>>62
ビームフォーミングって、分離の精度上げようと思うと、
>>51 あたりで言ってる相関ベースのブラインド信号処理になるんだけど、
マイク2本だと2音源までしか分離できないよ。

フーリエ変換でどうこうって言ってるのは、
a, b, x のそれぞれが、違う基本周波数のハーモニックトーンだとすると、
周波数領域でその倍音成分だけとれば分離できるかもって話かと。

64:デフォルトの名無しさん
07/08/11 20:18:37
>61
板違い

>63
ぶっちゃけ出来ないけどな。
そりゃソース次第では出来るだろうけど、汎用は出来ない。

65:デフォルトの名無しさん
07/08/12 14:58:50

555 名前:名無しさん@そうだ選挙に行こう 投稿日:2005/09/11(日) 07:27:19
簡単そうに見えて簡単に出来ない事がある

1.CDをかけるとカラオケで再生してくれるプレイヤーってあるよね。
  逆に歌手だけ抜き出すってのも簡単?

2.アナログ時代の電話線のエコーキャンセラーってあったよね?あれと同じで
 ビデオカメラにメカノイズが載るのはカメラ上に別のマイクつけて適応処理したら簡単に消せるよね?


3.最近3Dサウンドってあるよね。 2スピーカーなのにヘリコプターが立体的に飛び回って聞こえるよ。
  だから、狭い間隔でおいた2スピーカーを広げて置いたように聞かせるのも簡単だよね

4.ホール効果とか残響のある部屋を再現する機能がついてるじゃん。 アレの逆でさ
  残響の多い部屋から残響を消すのは、マイク付ければ簡単だろ?
  マイクで部屋の特性取りながら逆位相の信号を足せばいいだけだろ?

---------------------------
前スレにあった話の、この1の問題だね。 この4つとも、とても難しいのだけど、難しさを説明するのも難しい

66:デフォルトの名無しさん
07/08/12 17:08:41
ボーカルのみを消去するソフトがあったけど、出来はどんなもんだろ?

67:デフォルトの名無しさん
07/08/12 17:50:19
ヒロフのやつ?

68:デフォルトの名無しさん
07/08/13 03:46:01
>>55
FFTで中央定位抽出が一応出来る
どうやってるかはしらん

69:デフォルトの名無しさん
07/08/13 04:23:58
誰もツールの話なんかしてねー

70:デフォルトの名無しさん
07/08/13 10:15:09
定位が中央、右、左の3点だけって状態はまずない、ってので説明終わりにならない?

71:デフォルトの名無しさん
07/08/13 10:34:47
無理だろうな
L(t) := A1*sin(w1t+C1)*D(r1*t,T1) + A0*sin(w0t+C0)*D(r0*t,T0)
R(t) := A2*sin(w2t+C2)*D(r2*t,T2) + A0*sin(w0t+C0)*D(r0*t,T0) 関数Dはアタック+リリース

みたいな単純モデルがタマタマあてはあまるなら別だろうけど

72:デフォルトの名無しさん
07/08/13 15:33:02
動的フィルタ使えば? このあいだAESとかいう学会で展示されてたのが単純な仕組みでなかなかの効果だったよ。

73:デフォルトの名無しさん
07/08/14 06:32:06
動的フィルタってどうゆうの?

74:デフォルトの名無しさん
07/08/14 06:54:00
えっ

75:デフォルトの名無しさん
07/08/16 13:25:50
>>73
Adaptive Filter のことかな。
入力によって、係数をどんどん更新していくようなタイプのフィルタ。

伝播路推定とか、音源推定に使えたりするんで、
それで、音源分離しようって話かも。
もちろん、入力信号の種類にまったく過程を置かない場合は
2マイクだと2信号までしか分離できないんだけど、
ある程度、信号が独立だとか、基底周波数が違うとかの条件があればいい線いくかも。

76:デフォルトの名無しさん
07/08/16 21:28:08
東京から大阪まで行きたいんだ

新幹線使うといいよ

電車ってのに乗るといいらしいよ

そんな流れ…?

77:デフォルトの名無しさん
07/08/17 14:01:38
目的地は大阪じゃなく月だな

78:デフォルトの名無しさん
07/08/17 14:12:55
まあ、今の所不可能という点じゃ火星に有人飛行くらいじゃないかな

79:デフォルトの名無しさん
07/08/17 16:57:03
遠いお星に行きたいよ

ロケット使えば何とかなるかもよ、でも難しい

ちょっとそこで目をつぶって拝んでろ

80:デフォルトの名無しさん
07/08/17 17:15:15
そして79は星になった

81:デフォルトの名無しさん
07/08/17 18:22:38
2信号ってのは、f1(t) と f2(t) の2信号が

L = L1 * f1(t) + L2 * f2(t)
R = R1 * f1(t) + R2 * f2(t) という関係になって L1..R2が定数(畳み込み)なら分離出来るか

というような問題 って事?

82:デフォルトの名無しさん
07/08/20 22:40:29
フーリエ変換ってものすごく簡単なことなんだろうけど、大學の教科書のわざわざアホみたいに難しい形に書いてる数式見たらやる気なくします(^^)

83:デフォルトの名無しさん
07/08/20 22:42:42
一応、理論自体はそれなりに難しいと思うがな。

84:デフォルトの名無しさん
07/08/20 22:43:38
理論をちゃんと理解できてる人の方が少ないと思う

85:デフォルトの名無しさん
07/08/21 00:22:06
あの難しい形の式も、数学の発展には大きく寄与してるのよ。
音響関係ではというか、工学系ではあんまり役に立たないけど、
理学系、特に数学科とかにいくとあれが必須。

86:デフォルトの名無しさん
07/08/21 00:56:53
直交変換(とその考え方)は工学系全般で役に立ちまくってるがな

87:デフォルトの名無しさん
07/08/21 04:18:24
>>86
ここの先生連中は正規直交基底については博士級の知識がある。
直交基底を用いた変換を理解しないで音プログラムは開発できないからな。

88:デフォルトの名無しさん
07/08/21 05:34:25
博士級(笑)

89:デフォルトの名無しさん
07/08/21 06:56:05
...を理解しないで音プログラムは開発できない?
どんだけ狭い意味での音プログラムなのさ

90:デフォルトの名無しさん
07/08/21 09:17:06
直交(笑)座標変換

91:デフォルトの名無しさん
07/08/21 09:35:10
>>82
ミクシンスキー の演算子法 なんて読んでないなら読むといいかも

92:デフォルトの名無しさん
07/08/21 10:05:26
直交基底の説明ってなんで揃いも揃ってあんなに日本語が不自由なんですか。
国語能力に優れている人間だけが数学に関する書物を書けるようにする法律を作るべきだと思います。
あと、数学に非直観的でわけわからん記号を導入した人間や、人間の名前を法則につけた人間も死刑。
そして、心理学や人間工学の見地から数学記号のデザインを一新するべきですね。
あんなアリの這ったようなギリシャ文字は人類の負の遺産ですよ。

93:デフォルトの名無しさん
07/08/21 10:35:55
必要は発明の母と申しますが

改善点を見つけられた貴方は幸せですね。
直交基底の判り易い日本語説明をすれば、きっと大ヒット間違い無しですよ
そして人間工学に基づいた数学記号のデザインを一新すればきっと神と崇められますよ。

これは発案者の貴方の権利であり義務ですから私たちは見てるだけしか出来ませんが
頑張って下さいね。 

94:デフォルトの名無しさん
07/08/21 11:32:28
「オレが理解できないのはあんたの説明が悪いからだ!」と堂々と言うのは最近の風潮だねえ。
その図太さが羨ましくもある今日この頃…

日本語で書かれた理工学書の分け分からん度の高さには同意ですが、
己の意識改善も必要だと思いますよ。

金谷さんの本なんかは結構噛み砕いて書いてあるんで読んでみたらどう?

95:デフォルトの名無しさん
07/08/21 12:12:57
"最近の風潮"ではない。2chは当初からそういう風潮

96:デフォルトの名無しさん
07/08/21 12:20:04
内積・外積とか直交基底とか、ネーミングセンスゼロだな
大昔のオッサンが勝手に決めた不可解な和訳の用語をそのまま現代でも使っていいものか
異議を唱える者は居ないのか

97:デフォルトの名無しさん
07/08/21 12:40:51
>>96 そりゃ皆んなその言葉で考えたり仕事したりしてるからね。
新人は常に少数派だから、受け入れるのが普通。

圧力単位を急にパスカルに変えられても、水柱につい換算してしまうように、変更にはコストが伴うからね。

まあ、あなたが素晴らしい小学生でも高等概念が身に付くような総合入門書を作れば皆んな解決

98:デフォルトの名無しさん
07/08/21 12:57:43
素晴らしい小学生でも

99:デフォルトの名無しさん
07/08/21 13:16:39
クソネーミングをした大昔のオッサンは大罪人だな
後の人間のことを考えない自分勝手な考えでつけた名前のせいでみんなが迷惑している

100:デフォルトの名無しさん
07/08/21 13:30:35
あ、そのみんなってどこにいるの?

101:デフォルトの名無しさん
07/08/21 13:32:44
物理学において、最大の罪人は電流の向きを決めた香具師だと思うんだ。
もし逆にしておいてくれたら電子の流れと同じ向きになってどれだけ理解しやすかったことか。

102:デフォルトの名無しさん
07/08/21 13:55:49
それはそれで頭が固くならなくていいじゃない。
begin ~ end を嫌う { ~ } 派じゃあるまいし

103:デフォルトの名無しさん
07/08/21 14:07:08
if (...)
end
...;
begin
って書いてあったら嫌だけどなぁ。

104:デフォルトの名無しさん
07/08/21 14:49:08
ほほう
それはどういうコードかね

105:デフォルトの名無しさん
07/08/21 14:58:41
なんだこのスレ

106:デフォルトの名無しさん
07/08/21 15:31:06
摂氏は当初の様に0度を水の沸点とし、100度を水の凝固点にすべきだ!!!!11!!!!1!!

107:デフォルトの名無しさん
07/08/21 15:38:30
摂氏イラネ
1リットル=1キログラムとか、なんでもかんでも水中心て

108:デフォルトの名無しさん
07/08/21 15:47:55
博士級だかなんだか知らんが、数学や理論一辺倒の人ばっかりで
人の耳で聴く音を扱うソフトウェア書いてなさそう

109:デフォルトの名無しさん
07/08/21 15:53:37
理論のないサウンドプログラミングってどんなん?

アナログ回帰?

110:デフォルトの名無しさん
07/08/21 16:23:09
アナログフィルタも理論バリバリじゃん

111:デフォルトの名無しさん
07/08/21 17:35:36
フーリエってどの学年で習うんでしょう? 高校?大学?
高校で、統計と確率を勉強しなかったのが悔やまれる。

112:デフォルトの名無しさん
07/08/21 18:01:33
今勉強すれば悔やまなくてもよくなるよ

113:デフォルトの名無しさん
07/08/21 18:20:16
高2だけどフーリエ習ったよ

114:デフォルトの名無しさん
07/08/21 18:41:33
理論はもちろん必要だけど、
感覚的なものを扱うのに理論一辺倒じゃろくなもん作れんってことですよ

115:デフォルトの名無しさん
07/08/21 19:18:33
>>114
失礼を承知で申し上げますが、そのまま逆にも同じことが言えます。
感覚的なものだけで音のプログラミングができれば皆さん苦労しません。

スレの主旨もアルゴリズムに関わる議論なはずですよね?

不毛な煽り合いはエネルギーの無駄な気がします。

116:デフォルトの名無しさん
07/08/21 19:33:47
音吉陽一を思い出した

117:デフォルトの名無しさん
07/08/21 20:20:02
なんかずれてるけどまあいいや

118:デフォルトの名無しさん
07/08/21 21:04:52
え?あっ!
俺のカツラずれてるのなんで分かった!?

119:デフォルトの名無しさん
07/08/21 21:31:53
面白くないよ

120:デフォルトの名無しさん
07/08/21 21:38:54
115が不毛といったとこで確信したよ

121:デフォルトの名無しさん
07/08/21 21:43:49
何を?

122:デフォルトの名無しさん
07/08/21 21:52:57
だからズラだよもう

123:デフォルトの名無しさん
07/08/21 21:54:09
あ、なるほどね

124:デフォルトの名無しさん
07/08/23 00:22:33
>>113
今はフーリエって高校で習うのか.....
ということは、内積・外積・直交基底なんかも高校で習てるってことか
ひょっとしてZ変換やマキシマムエントロピーメソッド(MEM)も優秀な工業高校なら教えてるのかな?
なら、ゆとり世代って、超すごないな

125:デフォルトの名無しさん
07/08/23 16:03:42
SoundEngine FreeっていうFreeのWave編集ソフトにある
マスタリングプロセスCV制限ってどういった処理をしてるんでしょう ?

126:デフォルトの名無しさん
07/08/24 19:02:20
スレ違いじゃないか?
実際にどうゆう処理をしてるかは作者に聞かなきゃわからないだろうし。

127:デフォルトの名無しさん
07/08/24 19:07:32
どうでもいいけど、そのCV制限とやらのCVって何?

128:デフォルトの名無しさん
07/08/25 02:03:06
Constant Voltage(定流電圧)のことだろうなぁ

129:デフォルトの名無しさん
07/08/25 10:55:48
"定流電圧" に一致するページは見つかりませんでした。

130:デフォルトの名無しさん
07/08/25 11:11:36
定電圧
定電流

131:デフォルトの名無しさん
07/08/25 11:32:02
conは女性性器の俗称

132:デフォルトの名無しさん
07/08/31 19:36:44
FFTAnalyzerというwaveファイルのスペクトラムを表示してくれるソフトがあるんだけど↓

URLリンク(www2.tky.3web.ne.jp)

残念なのはシェアウェアという点なんだよね。フリーウェアで似たようなスペクトラムを
表示してくれるツールって無いだろうか?

133:デフォルトの名無しさん
07/08/31 21:19:49
ここはいつからツールのスレになったんだ?

134:デフォルトの名無しさん
07/08/31 21:23:00
Audacity

135:デフォルトの名無しさん
07/08/31 21:58:47
>>134
サンクス( ´∀`)

136:( ´∀`)
07/09/01 00:13:16
( ´∀`)ノ
16bitの音用濾波器の係数ってfloat,doubleのどちっがいいの?
みんなはどっちつかてるの?

137:デフォルトの名無しさん
07/09/01 01:29:57
doubleのどちっ

138:デフォルトの名無しさん
07/09/01 07:41:14
FIRでもIIRでもフィルタの係数なら単精度 で十分

IIRの場合は帰還用メモリは倍精度が欲しいのと

ただ、IIRの構成によっては (1-w) のようなのをそのまま持たせないなら wは単精度でも (1-w)は倍精度欲しい
でも wのまま掛け算させたらいいと思うけどな

139:デフォルトの名無しさん
07/09/03 18:08:49
MP3をWAVに変換するデコーダを作ってるのですが、
ID3タグの情報をWAVのチャンクに収めたいと思います。
ID3を入れるチャンク名などは仕様で決まってるのでしょうか?

140:デフォルトの名無しさん
07/09/03 18:44:01
ああ、ここは「音楽」ではなく、ただの「音」のプログラムをするスレでしたか。
スレ違いすみませんでした。

141:デフォルトの名無しさん
07/09/03 19:24:13
>>139-140
URLリンク(www.geocities.co.jp)

142:デフォルトの名無しさん
07/09/03 20:07:29
仮にミュージックプログラミングだとすると、純粋に音芸的な話になったり、
あるいは自動で曲をつくttあrい

143:デフォルトの名無しさん
07/09/03 20:42:44
いやDTM板を教えてやりなよ

144:( ´∀`)
07/09/03 21:02:59
( ´∀`)ノ
>>138 非常感謝
あいやー、おら、doubleでしてたよ

145:デフォルトの名無しさん
07/09/03 21:50:15
別に全部doubleでも全然問題ないよ

146:( ´∀`)
07/09/03 22:27:50
( ´∀`)ノ
>>145
floatに比べでぶでのろまにならないの?

147:デフォルトの名無しさん
07/09/03 22:40:33
実測すれば済む事。
些細な事だ。

148:デフォルトの名無しさん
07/09/03 23:38:01
むしろVCなんかだと
floatを勝手にDoubleに最適化しやがったりするしな

149:デフォルトの名無しさん
07/09/04 01:59:06
CPU的にdoubleの方が速けりゃその方がいいだろ

150:デフォルトの名無しさん
07/09/04 06:39:59
やってみればわかる事。 きっとメモリが少ない方が勝つよ

151:デフォルトの名無しさん
07/09/04 10:42:55
intel系CPUなら浮動小数点命令は確か80bitだし、
メモリへのアクセスもキャッシュ効くから、フィルタの係数程度なら目に見えての差は出ないと思われ。

152:デフォルトの名無しさん
07/09/04 12:45:17
だったらdoubleでいいや
実測しても全然かわらんかったというか
コンパイラがdoubleにしやがるし

153:デフォルトの名無しさん
07/09/04 15:42:41
処がだ、SSE命令における浮動小数点ニモニックは64/32ビットしかないんだな。
でもって、超越関数を使わない限り基本的にはFPUなんて要らないから最近のコンパイラは
80ビットニモニックは殆ど使わなくなっていたりするわけで。
勿論、ベクタ化を期待するようなパフォーマンスを目的とするなら、2並列より4並列の方がずっと
速いからfloatで済むならそれに越したことはないし。
# ということで、簡単なサンプルで速い遅いと言っても無駄。

154:デフォルトの名無しさん
07/09/04 16:16:38
いや、そう主張するならそれでもいいけど
精度はやっぱり下がるしさ
SSEの4並列を使うのは、コンパイラの最適化程度では期待できないでしょ

というわけで、自分でアセンブリ書かない人はdoubleでいいお

自分でアセンブリ書いて完璧にSSEで最適化できて精度いらん人はfloatでいいじゃん

155:デフォルトの名無しさん
07/09/04 16:35:36
>>154
iccでもgccでも最適化でベクタ化できるけど?

156:デフォルトの名無しさん
07/09/04 17:07:26
>>155
ちゃんとコード全体をうまく並び替えてコンパイラが4列使い切っているかってことだろ

で、結局、人間がちゃんと4列使い切るような書き方をしてやらんと効率悪いってことだろ

157:デフォルトの名無しさん
07/09/04 17:08:36
まあ、普通はdoubleで何も問題ない
floatでも特に問題はない

で、精度が高いのはdouble

158:デフォルトの名無しさん
07/09/04 17:08:44
>>154
基本的に精度が何ビット必要かという視点の方が大事だと思うよ
16bit入力のFIRフィルタなら doubleはあきらかに無駄でしょ

159:デフォルトの名無しさん
07/09/04 17:12:58
>>158
んなことねーよ
作業中の演算精度が高くて少なくとも時間以外の損は無い

160:デフォルトの名無しさん
07/09/04 17:14:44
まあ、0から255までの結果しかいらないやつで
わざわざintを使わず演算するやつもいないしな

161:デフォルトの名無しさん
07/09/04 17:15:24
結論

・それぞれ好きにやれ

162:デフォルトの名無しさん
07/09/04 17:54:50
>>159
メモリサイズも当然違ってくるだろ。
あと、パソコン以外の環境にも移動させ易いのは大きなメリットだよ

163:デフォルトの名無しさん
07/09/04 17:57:37
逆に言えば、PC環境では全く問題ないってことだろそれ

164:デフォルトの名無しさん
07/09/04 17:59:30
もう、>>161が結論でいいよもう

165:デフォルトの名無しさん
07/09/04 18:34:04
確かに
FADD命令 レイテンシ3、スループット1/サイクル
FMUL命令 レイテンシ5、スループット1/2サイクル1,2
FDIV命令 レイテンシ-単精度17サイクル、倍精度36サイクル、拡張精度56サイクル

割算以外では単精度にしても早くならないね。

166:デフォルトの名無しさん
07/09/05 08:01:46
>153
お前の使ってるコンパイラが世の全てだと思ってるなら大間違い。

>157,>161でFAだな。

167:デフォルトの名無しさん
07/09/05 08:32:08
>>165
今がそうだとしても、過去そうでなかったし、
将来 単精度ならレイテンシが短くなるかもしれないし、
使ってるコンパイラが将来SSE命令をサポートするかもしれない。

何でも倍精度は楽かもしれないが、不必要に使うのはどうかと思う。
IIRならともかく、16bit入力16bit出力のFIRで倍精度にするメリットはまったくないのだから

168:デフォルトの名無しさん
07/09/05 10:08:36
>>167
将来doubleならレイテンシが短くなるかもしれない可能性もあるし、
将来も入出力が整数型16bitであり続ける保証も無いんだが?
今現在だって入出力形式でfloatはありうる。

未来の仮定の話をしたいのか、現状の話をしたいのかターゲットくらい絞れ。

169:デフォルトの名無しさん
07/09/05 10:48:55
単精度だ倍精度だと騒げるのが羨ましいよ。ホント贅沢な悩みだと思うよ
MP3あたりだと16ビット、高級なもので24bit DSPの世界はまだそんなもの

170:デフォルトの名無しさん
07/09/05 11:05:00
FA

>>161

171:デフォルトの名無しさん
07/09/06 14:40:54
なんかよう分からんけど、これ関係してる?
URLリンク(www.pro.or.jp)

172:デフォルトの名無しさん
07/09/06 15:59:25
>>171
>ほとんどのCでは、float型よりdouble型で計算した方が数倍高速になります
といいながら 基準にしてるのは SPARCだけ

SPARCは倍精度どころか128bit幅の浮動小数点演算器を持っているわけで
それを基準にするというのもどうかと思うよ。

ゲーム機や組込用のCPUのコンパイラの殆どは当然のように単精度が早い。

173:デフォルトの名無しさん
07/09/06 19:56:17
>ゲーム機や組込用のCPUのコンパイラの殆どは当然のように単精度が早い。
そもそも浮動小数点演算装置がなかったり(全部ソフト)倍精度はソフトとかそんなのばっかりだからね
倍精度がハードウェア実装されている今時のCPUだとメモリアクセスが律速になることはあるかもしれないけど
double,floatどちらもそれほど速度に違いはでないよ。(int,double,floatの間を行ったり来たりするような型変換する方が単純な演算より遅いし)

結論としちゃ、自分が使いたいターゲットで使い易い型を使うってことでいいんじゃないの?


174:デフォルトの名無しさん
07/09/06 20:54:08
それでも IIRフィルタの遅延器は単精度では厳しいからなあ
計算方法を工夫すればある程度カバー出来るけど

175:( ´∀`)
07/09/06 21:05:28
( ´∀`)ノ
先生!
IIRフィルタの遅延器って、なんで高い精度必要なんですか?
精度低いとどうなるのですか?

176:デフォルトの名無しさん
07/09/06 21:08:27
無限インパルス応答だから

177:デフォルトの名無しさん
07/09/06 23:58:36
フィードバック=計算誤差が累積
でもま普通は(要求がシビアでなけりゃ)単精度でも十分じゃない?

178:デフォルトの名無しさん
07/09/07 00:09:54
なんでもいいよ
場合によっては固定小数点数でも可

179:デフォルトの名無しさん
07/09/07 07:26:55
>>175

たとえばf0の低い 1次のLPF 
y := y*(1-r) +x*r;  とやると、rが小さいので(1-r)の精度が悪くなる
y := y +(x-y)*r; とやればソレは解決する。


1次の場合は、yが単精度でも単に誤差が累積するだけだけど
2次になると、yが単精度だとf0が低かったりQが高いとノイズが出てくる。
 それも ピーとかいう類のノイズ

180:デフォルトの名無しさん
07/09/07 16:35:54
>171
この人こんな記事書いてたのか、ターゲット絞れないバカの典型だな。
用途や環境にあわせられない奴は最適化語るなよ・・・

181:最早厭われてはいるが
07/09/07 22:19:07
>>180
あの本を書いた時点で既に、自称翁だ。バカだなんてとんでもない。年寄りは労われ。

182:デフォルトの名無しさん
07/09/08 03:05:32
多少配慮足らずでも、誰かの参考にはなる記事をネット上で公開してるんだし
それをバカの典型と言い切れるやつよりは敬われる権利あるよ。

183:デフォルトの名無しさん
07/09/08 06:29:03
90年台に「floatよりdoubleの方が速い」とか嘘かかれても、参考にならないと思いまーすw
ましてや「敬われる」とかありえませーんwww

184:デフォルトの名無しさん
07/09/08 06:41:17
floatよりdoubleの方が速いって言うのは、昔のプロセッサはfloatを内部で動的にdoubleに変換してたからだろ。
今はそういうのが無いからどう考えてもfloatの方が速いし、データが短い分キャッシュにも残りやすいから最適化も効き易い。

185:デフォルトの名無しさん
07/09/08 07:25:16
どうでもいい。結局処理系による。
つか180の食いつきかた見ry

186:デフォルトの名無しさん
07/09/08 07:33:02
うちのMacBook Pro (CoreDuo 2.0GHz) で試してみたけど、
floatよりdoubleのほうが速いぉ。

187:デフォルトの名無しさん
07/09/08 07:34:34
Mac(笑)

188:デフォルトの名無しさん
07/09/08 07:41:17
>>184
専用機はしらないけど、96年当時主流だったインテルもモトローラも内部80bitだよ。
内部で動的にdoubleに変換してる石って何?

189:デフォルトの名無しさん
07/09/08 07:42:30
>>179 2次でノイズが出るのは リミットサイクルって現象だろ?

なんかリミットサイクルの出ないフィルタとか論文があるけど、理解出来ないんだよな

190:デフォルトの名無しさん
07/09/08 08:09:02
>>188
内部80bitの場合も、floatよりdoubleの方がしばしば速い。
で、翁が想定しているのはSparcとx86だろ。

191:デフォルトの名無しさん
07/09/08 10:37:39
処理速度が問題になるほどのタップ数の多い FIRフィルタならキャッシュに収まるかどうかの方が
速度を決めてしまうと思うけどな 命令サイクルがギガに対してメモリは1桁下なんだから

192:( ´∀`)
07/09/08 13:21:01
( ´∀`)ノ
>>175-179 先生、有難うございました。
無限インパルス応答だからの回答に超感動しました。
精度が低いと、無限の過去の影響を細かく現代に反映できない。反映できないものは誤差として累積され、
現代を惑わす魍魎を生み出すことになる。怖いですね。

193:デフォルトの名無しさん
07/09/08 14:48:57
double が速いのはC言語の math.h が double に対してしか定義されていなかったり、
自動昇格が多数発生するためでしょ

x87 の FPU は内部で 80bit に昇格するのがデフォだけど、それにしたって内部精度は命令を
発行して設定できるわけで、慎重に書かれたソースなら当時から float の方が速かったよ

194:デフォルトの名無しさん
07/09/08 15:11:02
今ならc99のお蔭でhypotf()なんかが使えるからねぇ。

195:デフォルトの名無しさん
07/09/08 15:30:39
今がどうだとか昔はどうだとかこのCPUではとかいつまでやってんだ?馬鹿馬鹿しい

196:デフォルトの名無しさん
07/09/08 17:58:56
>>161

197:デフォルトの名無しさん
07/09/08 18:14:47
>>195 じゃネタだしてよ。 >>189の話を膨らませるとかさ

198:デフォルトの名無しさん
07/09/08 18:21:01
>>197
じゃあ>>189の話を膨らませろ馬鹿

199:デフォルトの名無しさん
07/09/08 20:23:28
ようし、じゃグーグルさん使ってふくらませるぞ。

リミットサイクル+フィルタ でポチっとな
URLリンク(www38.tok2.com)
> IIRなんかでフィルタ等の信号処理をすると384kFsだと係数 語調は32ビットでは
>低域でリミットサイクルによる発振現象の影響が出てきますので不足で48ビットもしくは64ビット必要になりますな。
なるほどな。 

お!これだ
URLリンク(www.mk.ecei.tohoku.ac.jp)
>リミットサイクルのない 感度最小形ディジタルフィルタの合成

えと? 状態空間ディジタルフィルタ? って何? もいちどグーグルさんお願い。ポチっとな

カルマンフィルタ? いや応用カルマンフィルタ って本は持ってるんだが・・・・こりゃ退散だ

200:( ´∀`)
07/09/12 21:38:18
( ´∀`)ノ 、先生
WindowsメッセージMM_WIM_DATA(録音バッファの録音完了)を受けての処理手順について何ですけど
下記の1,2のどちらが正しいですか? 

1.waveInUnprepareHeader,waveInPrepareHeaderを用いる
// 録音バッファの登録解除
waveInUnprepareHeader

録音データ、lpDataを処理する

// 録音バッファの再登録
waveInPrepareHeader
waveInAddBuffer

2.waveInUnprepareHeader,waveInPrepareHeaderを用いない
録音データ、lpDataを処理する

// 録音バッファの再登録
waveInAddBuffer

201:デフォルトの名無しさん
07/09/13 07:32:05
>>200 さあ? どっちが正しいかはしらないけど 2でやってて不具合にあたった事はないな

202:( ´∀`)
07/09/16 12:46:06
( ´∀`)ノ
>>201、先生、ども、ども、有難うございました。そっそうなんですか...
なんか、waveInもwaveOut処理同様に>>200の1.のようにするのが正しいのかなと思たですけど

203:デフォルトの名無しさん
07/09/16 13:16:46
URLリンク(up2.viploader.net)

204:デフォルトの名無しさん
07/09/16 13:42:54
>>203
毎年見れば無問題

205:デフォルトの名無しさん
07/09/16 13:50:12
それなんて3年峠?

206:デフォルトの名無しさん
07/09/16 14:35:02
どうして周波数が低いと大きな音を出すのに、高周波と比べて指数的に高いエネルギーが必要なの?
蝸牛が低音を捕らえようとするとどうしても指数的に音量が小さくなってしまうからなの?
だったら低音は凄く耳に悪いね。難聴の原因だ。

207:デフォルトの名無しさん
07/09/16 15:58:19
動かす媒質の量

208:デフォルトの名無しさん
07/09/16 16:34:37
同じエネルギーを出すのに低いほどストロークが必要という事じゃないて
同じエネルギーを与えても、小さく感じるという事ならその通り
URLリンク(www.yacmo.co.jp)


209:デフォルトの名無しさん
07/09/17 00:58:06
100人飛べる大縄跳びで二重飛びしようとするとものすごく大変なのと一緒・・・ではないな

210:デフォルトの名無しさん
07/09/17 01:52:12
>>207
マジレスありがとう。
1Hzで動く量と100Hzで動く量が違うのは当たり前ですね。

211:デフォルトの名無しさん
07/09/18 06:37:18
>206
真面目に低音は耳に悪いので注意。
スピーカー飛ばす原因も低音の出力が高すぎるってのが多いし。

212:デフォルトの名無しさん
07/09/18 07:12:34
スピーカーが飛ぶのは2つの現象

電力は 電流*電圧だけど、ボイスコイルは、コイルと名前が付くようにL成分を持ってるから
同じ電圧振幅でも電流は低周波程流れてしまう。 発熱は電流の2乗に比例するので、低音程 焼損し易い

また、コントロールして同じV*Aを与えたとしても、ボイスコイルには質量があるから
同じV*Aを与えても振幅は低周波程大きくなる。 結果、大振幅で可動域を外れ物理的に変形してしまう。

213:デフォルトの名無しさん
07/10/05 21:15:13
waveOutOpenの引数にコールバックを指定した場合、waveOutProcはスレッドセーフっぽくないんですが。
なんか現在のスレッドの処理に割り込んで呼び出されませんか?
WM_DONEで再びWaveOutWriteしようとするとかなりの割合でスタックが破壊されています。

214:デフォルトの名無しさん
07/10/06 10:20:53
手順が間違ってる

215:デフォルトの名無しさん
07/10/06 13:40:55
>>213
そういうもんだよ。
waveOutProcはスレッドセーフじゃないと、しっかり覚えておくといいんじゃない。



216:デフォルトの名無しさん
07/10/07 01:54:40
どこにもスレッドに関わることが書かれてなかったような気がするんですが、スレッドセーフではないんですね
サウンド関連の生APIはむずかしいです

217:デフォルトの名無しさん
07/10/07 05:24:12
でもそんなの関係ねぇ

218:デフォルトの名無しさん
07/10/07 14:00:21
>>216
サウンド関連の生APIはむずかしいです
じゃなく
APIでプログラム作るのはとてもむずかしいです
が正しい。

219:デフォルトの名無しさん
07/10/08 20:27:23
極めてどうでもいい揚げ足取りだな

220:デフォルトの名無しさん
07/10/08 22:02:30
>>212
ブラウン管モニタを壊すにはデバイスドライバレベルでの制御が必要だけど
ひょっとすると、スピーカーはユーザープログラムで壊せてしまう可能性がある?
超低周波を出すとか、DCオフセットをかけ続けるとか。

221:デフォルトの名無しさん
07/10/08 22:09:13
ドライバレベルで保護してないかな。してなきゃまずいね。

222:デフォルトの名無しさん
07/10/08 22:26:59
ユーザープログラムも何も
曲作ってるときうっかり変な音を鳴らしてスピーカ飛ばすって時々あるもんじゃないの?

223:デフォルトの名無しさん
07/10/08 22:51:08
ない

224:デフォルトの名無しさん
07/10/08 23:03:21
俺もそんなに詳しいわけじゃないが、もちっとだけアナログの勉強をしてもいいと思うんだ。

スピーカーが飛ぶのは>212にあるようにスピーカーが想定以上の入力を受けた時。
なので出力波形だけでなく、アンプのパワーやボリュームによる所が大きい。

225:デフォルトの名無しさん
07/10/08 23:16:44
>>220
直流を通すオーディオアンプなんてほとんど存在しないだろ。
アンプにデジタルで直結したとしても、
普通はスピーカ出力の直前にコンデンサが入ってたりしてHPF特性がかかるから、
スピーカに超低周波や直流がかかることはない。

226:デフォルトの名無しさん
07/10/08 23:22:58
ああ、でも、直流そのものは通さないとしても、
ステップ関数とかガンと入れられたら階段部分はスピーカ的に結構きついかもな。

227:デフォルトの名無しさん
07/10/09 20:02:28
ステップ関数は階段部分ではなく、その後のフラットな部分がキツイわけで

228:デフォルトの名無しさん
07/10/09 20:33:14
フラットな部分はHPFで除去されるんじゃね?

229:デフォルトの名無しさん
07/10/09 22:05:52
インパルス連続攻撃で敵を倒せないですか?

230:デフォルトの名無しさん
07/10/09 22:10:36
URLリンク(premiumtv.12gbfree.com)

231:デフォルトの名無しさん
07/10/09 22:11:43
URLリンク(proforceone.web.fc2.com) ⇒ Processed input data

Chick+Corea[777]
Herbie+Hancock[999]

URLリンク(proforceone.web.fc2.com) ⇒ Calculation processing

d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("["));
s=encodeURIComponent(s).split("%2B").join("+");
n=d[j].substring(l+1,d[j].indexOf("]")).split(".");
n=eval(n[0].split(",").join(""));n=(n-n%20)/20+(n%20>0);br();
for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query=");
write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();


232:デフォルトの名無しさん
07/10/09 22:12:53
>>227-228
カットオフ周波数10Hzの1次HPFの場合、
ステップ関数のフラット部分は時定数0.016秒であっという間に指数減衰するね

233:デフォルトの名無しさん
07/10/09 22:13:06
デジタルピークメーターテスト用 -12db標準音量サンプル
URLリンク(www.barks.jp)
URLリンク(www.barks.jp)
URLリンク(www.barks.jp)

フリーソフトの音量確認用 ステレオ・デジタル・メーターを使おう
赤い●をクリックする 次にスピーカーマークをクリックする 
標準のは-12dbぐらいで、-6dbを超えない様に音量調節する。
URLリンク(www.forest.impress.co.jp)


234:デフォルトの名無しさん
07/10/09 23:52:44
ageんなカス

235:デフォルトの名無しさん
07/10/30 09:04:46
あのー、非常に初歩的なことなんですが、
このページでバッファは441000bytesといいつつ441000*2bytes
確保しているのはなぜなんでしょう?
URLリンク(homepage3.nifty.com)
ただのミスだと思い、ループのところを
for ( i = 0; i < BUFSIZE/2; i ++ ) {
t = ( total / (BUFSIZE/2) ) * i;
と変えてみると、出力周波数が880Hzになってしまいますし。

236:デフォルトの名無しさん
07/10/30 10:57:38
ただのミスだと思うよ。 でもあなたの修正が間違っている


237:デフォルトの名無しさん
07/10/30 11:29:54
>>235
量子化ビット数が16だから3528000[bits]なら441000[bytes]だけれど、こう計算した方がわかりやすい。
44100[Hz] * 5[sec] = 220500[samples]
だから、#define BUFSIZE 220500 とすればいい。

238:デフォルトの名無しさん
07/11/01 04:02:20
リアルタイムのスペアナ表示を作りたい。
FFTしてlog(re*re+im*im)的なことをして振幅を対数軸にするのはok。
問題は、周波数軸を対数にしたいのだが、どうするべき?
低い方は補完なので適当にごまかすとして、高い方は間引いてしまうと情報が失われるのが
いやなので避けたい。
好みとしては、ピンクノイズ(-3dB/oct)を入力したときに表示がフラットになりたい
のだが(きっと聴感に近いので)
絶対値の和? 平均?

239:デフォルトの名無しさん
07/11/01 04:42:24
普通、Octave band pass filter bank をかけるかな。

240:デフォルトの名無しさん
07/11/01 06:44:19
>238
ロスしないってんなら最大使うとか。

241:デフォルトの名無しさん
07/11/01 07:50:06
>>238
前半、俺は、
たとえば5点あったら、その最大と最小と5個平均の3つを求めて
最大から最小への薄い垂直線を引いておいて
その上から平均を結んた線を引いてる。

こうやるとホワイトノイズでフラットになる。
ピンクノイズでフラットにするのは気持ち悪いように思うけど、
実現したいなら-3dB/Octの補正をかければいいのでは?


242:デフォルトの名無しさん
07/11/01 09:49:01
>>238
用途によると思うよ。
ピーク検出したいなら、ピクセルに対応するバンド内で最大値かな。

逆に荒く(1/6octとか1/3とか)で全体的な特性を見たいなら、両対数にしてからバンド内で
平均とか。ただその場合、各バンド内でデータのある周波数点に偏りが出る(バンド内で高域に
集まる)んで、平均した場合は必ずしもバンド中央の周波数での値にならないことに注意。

>>241
Windows Media Playerのバー表示がそんな仕様じゃなかったけか

243:デフォルトの名無しさん
07/11/01 13:47:13
>Octave band pass filter bank
なるほど、FFT以外のやりかたもあるのね。検討してみます。

ピンクノイズは各オクターブ(とかの対数で等間隔の帯域)のエネルギーの密度が等しいと
何かで読んだので、正しく計算すれば自ずとフラットになるのではないかと思ったのです。
でもどう計算するとそうなるのかわからない。
logとる前の絶対値かその2乗を足すか平均するかしたあと√とる?

244:デフォルトの名無しさん
07/11/01 14:07:08
> ピンクノイズは各オクターブ(とかの対数で等間隔の帯域)のエネルギーの密度が等しいと
> 何かで読んだので、正しく計算すれば自ずとフラットになるのではないかと思ったのです。

その考えで問題ないと思います。
こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット

> logとる前の絶対値かその2乗を足すか平均するかしたあと√とる?

バンド毎に log(sum(sqrt(re*re+im*im))) で大丈夫なはず。
DCTなら log(sum(abs(re)))

245:デフォルトの名無しさん
07/11/01 21:02:04
>こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット

ピンクノイズの、だよね。
ありがとう~


246:デフォルトの名無しさん
07/11/01 21:46:59
>>245
> ピンクノイズの、だよね。

いや、ホワイトノイズ

247:デフォルトの名無しさん
07/11/01 21:52:15
説明不足だったかも。すまん
フラットの意味によるんだけど、両対数軸上で直線って
意味なら>>245でホワイトでもピンクでもフラット。
直線かつ水平って意味なら>>245ではホワイトのみフラット。

248:デフォルトの名無しさん
07/11/01 23:22:35
直線かつ水平のつもりでした。>フラット
あいまいな言葉を使ってごめんね。

> 直線かつ水平って意味なら>>245ではホワイトのみフラット。

高域にいくにしたがって加算する数が増えるからホワイトノイズは右上がりに
なりませんか?

249:デフォルトの名無しさん
07/11/02 01:10:35
↑からさらに自分で考えてみた。
>>244 log(sum(sqrt(re*re+im*im)))
の方式で仮に1バンド=1octで出力することを考える。
1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、
結果は+6dB/octの右上がりになるはず。

問題は、ホワイトノイズを入れると+3dB/octの右上がりになってほしい。
sqrtとsumの順番を入れ替えると(sqrtを消して20→10でも等価)、
数が2倍になると3dB上がるので+3dB/octになる。

つまり、20*log10(sqrt(sum(re*re+im*im)))
最初に書いた、絶対値の2乗で足して平方根をとる、でいいみたい。

ピンクノイズの各バンドの平均値は1バンド上がると-3dBずつ下がっていくはず
つまり1/√2に減っていくはずで、これの2乗の次元(1/2ずつ減ってく)で
数が2倍になっていくものを合計していくと皆同じになるという理屈。

ちなみに、素直に(?)、ホワイトで水平、ピンクで右下がりにするには、
sumのところを平均にすればいいはず。
(1バンド上がるごとに2倍になる個数で割ったやつをsqrtするので、1バンド上がると
1/√2つまり-3dBさがっていく)
root mean squareってやつですね。

あ~すっきりした。


250:デフォルトの名無しさん
07/11/02 02:46:03
>>249
> 1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、
> 結果は+6dB/octの右上がりになるはず。

データ数が増えてもデータ値は高域に従って指数的に減っていくので、
よほど高域強調されてない限り合計しても右上がりにはなりません。

251:デフォルトの名無しさん
07/11/02 09:22:34
>>249
> sqrtとsumの順番を入れ替えると

平方根の合計と合計の平方根は別のものなので入れ替えられません。
平方根の合計 sqrt(1)+sqrt(2) = 1 + 2 = 3
合計の平方根 sqrt(1 + 2) = sqrt(3) = 1.732...
素直に 20log10(sum(sqrt(re*re+im*im))) で各バンド計算して
+3dB/oct補正掛けた方が実装の見通しも良くなるような。

252:デフォルトの名無しさん
07/11/02 09:47:43
まちがえた、20log10(ave(sqrt(re*re+im*im)))です。

あとsqrt(re*re+im*im)の部分は複素数の絶対値計算なので、
RMS以前のデータ準備の段階。|z|^2=re*re+im*im
RMSやりたいなら、|z|=sqrt(re*re+im*im)の各値の二乗平均平方根、
つまりsqrt(ave(|z|^2)) = sqrt(ave(re*re+im*im))にしないと変なことになる。

253:デフォルトの名無しさん
07/11/02 21:32:20
> データ数が増えてもデータ値は高域に従って指数的に減っていくので、
> よほど高域強調されてない限り合計しても右上がりにはなりません。

なんか根本的な勘違い? >自分
ホワイトノイズはデータ値が(確率的には)全部等しいと思ってたのですが?

> 平方根の合計と合計の平方根は別のものなので入れ替えられません。

もちろんそうです。計算方法を変えるという意味です。

> あとsqrt(re*re+im*im)の部分は複素数の絶対値計算なので、
> RMS以前のデータ準備の段階。|z|^2=re*re+im*im
> RMSやりたいなら、|z|=sqrt(re*re+im*im)の各値の二乗平均平方根、
> つまりsqrt(ave(|z|^2)) = sqrt(ave(re*re+im*im))にしないと変なことになる。

>>249でRMSといってるのは、 20*log10(sqrt(sum(re*re+im*im))) のsumを平均に
変えたもののことで、あなたの式と同じです。


254:デフォルトの名無しさん
07/11/10 11:42:09
CD-TEXT の規格か仕様か、これを読み込むサンプルのあるサイトか分かりませんか。

ぐぐる用語でも分かると助かります。お願いします。

255:デフォルトの名無しさん
07/11/10 12:00:14
>>254
REDBOOK

256:254
07/11/10 22:29:04
>>255
有難うございます。お陰で参考になりそうなのを1つ見つけました。
英語版で 1996/12月ソニーが配布したものですが、データ構造についても
書いてあるようです。

余談ながら、ソニーは普及させたかったような雰囲気。
添付のソフト(3本)用に VB4 runtime routine が付いている。

257:すみません素人です
07/11/20 11:00:15
最近卒研でDSK使って音声処理する実験始めたんですけど、
高周波や低周波だけカットするLPFやHPFのプログラム(C言語)を組んだんですが、
逆に高周波とか低周波だけ増幅させるプログラムって書けるんでしょうか。
本やネットではちょっとわからなかったので、式とかサイトとか知ってる人がいたらどうかお願いします。

258:デフォルトの名無しさん
07/11/20 11:10:17
カットしたのを元のに足す引く

259:デフォルトの名無しさん
07/11/20 12:28:09
>>258さんの通り、
高周波だけをカットした結果を元の信号に(遅延・位相を合わせて)足せば低周波だけ増幅出来るわけだけど


どうして、普通はカットしか書かないのかというと、
ゲインが1を超えると、固定小数点演算だとオーバーフローするし
そもそも出力DACのレンジを越えてしまうと歪ませるしかなくなるからさ。



260:デフォルトの名無しさん
07/11/20 12:43:36
>>257
増幅したいところ以外をカットして全体のゲインを上げる
あとは双二次で検索

261:デフォルトの名無しさん
07/11/20 12:58:40
まあ、あと、増幅は、ノイズまで増幅しちゃうしね。

262:257
07/11/20 15:41:55
なるほど、カットするプログラムを応用するんですね!どうりでみつからないわけです…
それではオーバーフローやノイズの問題も考えつつ取り組んでみたいと思います。
皆さん、丁寧なご回答ありがとうございました。

263:デフォルトの名無しさん
07/11/20 21:37:12
カットして増幅とか、カットしたのをもとに足す引くとかでなくて、
ローシェルビング、ハイシェルビングフィルタでしょ。
双二次にはちがいないけど。
いわゆるトーンコントロールのロー・ハイで一般的なやつね。

ブーストするんだから、振幅に気をつけなきゃいけないのは当然

264:デフォルトの名無しさん
07/11/20 21:52:08
>>263
内部的には同じことじゃね?

265:デフォルトの名無しさん
07/11/21 04:06:49
>>264
まぁこのあたりは言い方の問題も結構あって、カットって言った場合に
シェルビングEQによるカットなのか、ハイパス・ローパスによるカットなのか、
ここまでのレスでもみんなバラバラの前提で喋ってたりするからねぇ。

カットして増幅しても、ただ増幅しても、相対的なゲインカーブが同じなら同じで良いと思う。
(アナログだとレベルによる非線形性がからむんで違うって話になるけど)

ハイパス・ローパスでカットして増幅する場合は、
例えばハイパスの場合カットオフ以上が-6dB/octとかの傾きで一様に減衰していく。
対してローシェルビングで持ち上げる(orハイシェルビングで落とす)方法だと、
ある時点で減衰/増幅が頭打ちになるって違いがある。

チラ裏失礼

266:デフォルトの名無しさん
07/11/21 06:39:16
>高周波とか低周波だけ増幅させる

カットした結果と元信号の足し引きみたいなのは、位相や遅延を考慮しないといけないから
普通わざわざやらないよね?

267:デフォルトの名無しさん
07/11/21 07:09:13
でも、数式を良く見ればf0が同じなら分母は固定で、分子だけが違う。
で、分子の変数は3つなので、
HPF/LPF/BPFの3つの組み合わせで何でも作れる事になる

ただ、ピーク位置が違うので多少f0は調整しなければいけない。

268:デフォルトの名無しさん
07/11/21 07:58:32
HPFとBPFはLPFの組み合わせで作れるんじゃね

269:デフォルトの名無しさん
07/11/21 08:14:14
実は2次の同じf0の HPF+LPF+BPF を加算すると理論的にはフラットになる
もっとも、計算精度が有限だからノイズは出るけどね。

だから1-HPF は LPFではなくて LPF+BPFになる。
その場合の特性は -6dB/Octではなくもっと悪い(1次の特性に近い)

270:デフォルトの名無しさん
07/11/21 08:30:47
それシェルビング1っ個やるのよりメリットあんの?

271:デフォルトの名無しさん
07/11/21 08:37:47
特性を可変したい場合は実際に分割するけど(可変出来るのは特性の上下だけでf0は無理だけど)

固定なら単にIIR計算としては1個でやるよ?
係数を足し算するだけだし

272:デフォルトの名無しさん
07/11/21 09:08:45
3つのフィルタの係数を
gH*HPF + gM*BPF + gL*LPF
として、gH,gM,gL を調整すれば、イコライザの特性が出せる
分母は共通だから分子の係数を加算すればいい。
左右を上下させる場合、
gMは gH,gLの加重平均 gM = √(gH*gL) 程度がイーカンジ

バンドを調整する場合、綺麗にポコンと上下させるにはQも調整しないと
上下非対称に

273:デフォルトの名無しさん
07/11/21 09:50:47
言葉で動作原理を述べるのは簡単だが、それをプログラムで作るのが分からない。

274:デフォルトの名無しさん
07/11/21 11:35:53
藻前ら、先人の知恵はちゃんと活用しようぜ。

Robert Bristow-Johnson氏のCookbookの式を使えば、2次IIRフィルタ1個だけで
ピークEQもシェルビングEQも実現できるぞ。
URLリンク(www.musicdsp.org)


275:デフォルトの名無しさん
07/11/21 11:47:05
やっぱり、HPF+BPF+LPFの合成だね。 BPFは加重平均だ。

公式を見るだけじゃなくて原理が判ると多少楽しいよね。

276:デフォルトの名無しさん
07/11/21 13:02:41
>やっぱり、HPF+BPF+LPFの合成だね。
どーしてそうなる?
HPF+BPF+LPFの合成だと4次以上にならないか?

277:デフォルトの名無しさん
07/11/21 14:20:52
>>274
それが263とかがいってる双二次フィルタですよ。
先人の知恵どころか、いま話に出てるEQなどでいちばん一般的な方法かな。
わざわざフィルタ合成みたいな概念でやるなんて聞いたことないなあ。

278:デフォルトの名無しさん
07/11/21 21:33:53
>>276
合成じゃなくてフィルタ出力の加算のことを言ってるんじゃない?
lpf(bpf(hpf(x))) じゃなくて lpf(x)+bpf(x)+hpf(x) (式は適当)
普通合成っていうと前者だから>>275はかなり紛らわしいけど。

279:デフォルトの名無しさん
07/11/24 01:28:36
根本的なことを聞きますが、LPFを作成する場合、

・FIRフィルタを用いる(入力信号に対し、フィルタ係数を畳み込み計算することで
低域通過させた出力信号を直接求める)

・FFTを利用する(入力を一旦FFTし、通過させる帯域のみを保持し、
他はゼロ埋めさせたスペクトラムを逆FFTすることで出力信号を得る)

この2通りのやり方は理想的には全く同じ挙動になるのですか?
今までFIRを使ったやり方が原理的に良く分からなかったので、FFTを使ったLPFを
作成していたのですが(周波数帯域の通過が直感的によく分かるので)、
最近勉強しなおしてFIRフィルタについて学んだところ、
時間領域において計算するだけでそのまま出力信号が得られるのが
非常に不思議に感じ、質問させていただきました。

280:デフォルトの名無しさん
07/11/24 01:33:20
FFTのことも良く分かってないんじゃないの

281:デフォルトの名無しさん
07/11/24 01:34:01
何度もすみません。追記です。

もしそうであれば、両者の特徴として
FIRの方が処理速度が速いが、後者の方が精度が高い(遷移周波数帯域幅が狭い)結果が得られる
という認識であってますか?


282:デフォルトの名無しさん
07/11/24 02:14:06
FIRフィルタをFFTで高速計算させる事が出来るけど
それをやってるなら、そういう事は書かない筈だけどな

FFTでフィルタを作った場合、バッチ処理でやるかブロックで処理する事になる。
ブロックで処理するとブロック同士がつながらない問題が出てくると思うのだが・・・・


283:デフォルトの名無しさん
07/11/24 02:56:12
>>282
ヒント: MDCT

284:デフォルトの名無しさん
07/11/24 03:18:06
>>279
時間領域における入力信号とFIR係数列の畳み込み演算は、
周波数領域におけるFFTされた入力信号とFFTされたFIR係数列の各項乗算に対応する。
つまり時間領域でのFIRフィルタ係数をFFTしたのが周波数領域でのフィルタ特性。

> FIRの方が処理速度が速いが、後者の方が精度が高い(遷移周波数帯域幅が狭い)結果が得られる

FIRはn^2 FFTはnlognなのでFFTの方が速い。

周波数領域での直接設計なら遷移周波数帯域幅も何もスパっと切れるけど、
実際にはあんまり急峻に切ると時間領域のFIR係数の収束が悪くなって(要するに
Sincに近づく)、逆に打ち切り誤差が出やすくなったりして、そう簡単にはいかない。

285:デフォルトの名無しさん
07/11/24 09:01:03
>>283 MP3でやってるように1/2 づつ窓関数をかけてズラシテフィルタをかけた後で合成すれば誤魔化せる
という事なんだけどうけど、やっぱり低い周波数にひずみが出るけどなあ

286:デフォルトの名無しさん
07/11/24 11:06:17
「ズラシテ」フィルタってなんだろと思ったのは漏れだけでいい。

287:デフォルトの名無しさん
07/11/24 20:44:38
>>285
ヒント: Time Domain Alias Cancellation (TDAC)

288:デフォルトの名無しさん
07/11/24 23:33:29
ズラシテフィルタ=comb filter

289:デフォルトの名無しさん
07/11/25 00:15:00
>>288
面白いがこの流れでそれはないww

290:デフォルトの名無しさん
07/11/25 10:38:11
こういう事だろ? たとえばFFTのサイズを4096としたら
1024毎に分けて、1ブロック毎に、 2ブロックを取ってくる。
それに窓関数をかけるけど、このときに (1-cos)/2 みたいな 1ブロック分ズレたものと加算するとフラットになるような窓関数を使う。
で、これにFFTをかけてフィルタをかけて、逆FFTして、1ブロック前の分と加算して出力してゆく。

問題は、フィルタをかけて戻した結果が、はじめと終わりがキチンと0になって戻ってればいいけど
そうじゃないとこれがノイズになる。
だから再度窓関数をかけられるように 最初にかける 窓関数を √(1-cos)/2 つまり半角公式でsinになるわけだけど
これを2度かけると確かに戻るけど、窓関数としての性能がだいぶ悪くなる

291:デフォルトの名無しさん
07/11/25 13:16:44
>>290
短時間FFTだね。2回掛ける方法の場合、有名どころがsin窓とかVorbis窓。
でも、FFTサイズ4096なのになんで1024ずらしで使ってるの?
2048ずらしで十分だと思うけど

MDCTで使われるTDACは、処理ブロックを重ね合わせるまで同じだけど、最初の段階で、
重ね合わせた部分でプリエコー・ポストエコーが最終的に相殺されるように処理するのが違う。

292:デフォルトの名無しさん
07/11/25 13:21:33
あ、あと、窓関数の性能が悪いっていってるけど、
目的に合わせたトレードオフだから、一概に良い悪いは言えないと思われ
周波数分解能なら矩形窓最強ってことになる。

293:デフォルトの名無しさん
07/11/26 00:51:35
音響レンズのシミュレーションをしてみようと思うのですが
どこから手を付けていいのやらわかりません


294:デフォルトの名無しさん
07/11/26 00:56:29
いまの話では用途が解析じゃないから、矩形窓はありえないでしょうけど


295:デフォルトの名無しさん
07/11/26 01:23:37
用途以前にまず何の性能か言わないと意味無い

296:デフォルトの名無しさん
07/11/26 19:59:27
AGC、オート・ゲイン・コントローラが必要で、Waves MaxxVolumeは高くて
買えないため自作(VSTでもオフラインでも)しようかと思うんですが、
原理としては固定ゲイン+超長アタック/リリース(10秒~)の
先読みリミッタという理解で正しいでしょうか?

297:デフォルトの名無しさん
07/11/26 21:38:30
AGCってけっこう大雑把な呼び名で、
単にゲインアップ+リミッターだったり、RMSコンプ+リミッターだったり、
もっと別のアイデアが入っていたり、、、いろいろのような
思うように作ったらいいんでは。
ある程度まともなの作るなら先読み(リアルタイムなら出力の遅れだけど)は必要だろね。

ま、フリーのコンプやリミッターもいろいろあるけどねえ。

298:デフォルトの名無しさん
07/11/26 23:35:05
どこで質問すればいいか分からなかったので、ここで質問させてください。
フーリエ変換の本を読んで、自分もWAVEファイルを読み込んで試してみたいと思ったのですが、
肝心のプログラミングがさっぱり分かりません。
Turbo C++でやろうと思っているのですが、WAVEファイルの読み込み方も、読み込んだデータの処理の仕方も
実際にFFTを行う方法も全然分かりません。
C++自体の使い方は基本的な命令文は知っていますが、マルチメディア関連はやったことがないです。
実際のプログラミングの仕方や、参考になる本など教えていただけたら幸いです。

299:デフォルトの名無しさん
07/11/27 00:00:52
あきらめたら?

300:298
07/11/27 02:06:25
ありがとうございました。もうあきらめます。

301:デフォルトの名無しさん
07/11/27 03:05:16
waveの読み込みぐらいgoogleに聞いてみればいいのに

302:デフォルトの名無しさん
07/11/27 03:32:44
URLリンク(www13.plala.or.jp)


303:デフォルトの名無しさん
07/11/27 03:46:57
釣りだろ? jk

304:デフォルトの名無しさん
07/11/27 06:14:46
>>297
TDの最後で、全体の音量をオートメーションで調整していくのが面倒、
というのがあって、楽したいなぁと思いまして。
とりあえず先読みリミッタ式で作ってみたところ、やはりレベルの急な変化にはついて
いけないことが多いですね。かといってアタックを短くすると数秒のポンプになりますし。
大雑把に手動調整、細かいところは自動調整って形で運用してみます。
ありがとうございました。

305:デフォルトの名無しさん
07/11/27 09:15:55
もしかしてみなさんはFIRだのFFTだのと言った物は既成の物があってそれを利用しているのでしょうか?

306:デフォルトの名無しさん
07/11/27 10:03:54
>>305
定番もののソースはどこにでも転がってる。流用してるやつもいるだろうよ。

307:デフォルトの名無しさん
07/11/27 11:22:13
パソコンの場合、転がってるのを使ってもいいし、自作しても何倍も速度が違わない

DSPなんかの場合、メータが必死ならFFTのライブラリなんかも公開してくれる
そうでないと当然、自分で作りこまないといけない。


308:デフォルトの名無しさん
07/11/27 13:08:48
理系じゃない高校生ぐらいの数学知識でフーリエの冒険読んでみて5日くらいでFFT書けたよ。
多少あやふやなとこもあったけど。
ただしゲーム作れる程度のC言語の知識はあった。
実際にやってみて詰まったところ質問しないと意味ないよ。

309:デフォルトの名無しさん
07/11/27 14:34:09
社会人になってだんだん時間なくなって、ライブラリ探すところから
始めるようになった。どうしても無かったり、仕様がゴミだったら自分で書くけどね。
目的が、使いたい機能を最小の手間で作る(で、使う)、になってるからなぁ。

310:デフォルトの名無しさん
07/11/28 15:41:45
>>308先生
そのFFTソースを開示してください
ついでに chirp-Z transformも作ってください

311:デフォルトの名無しさん
07/11/28 21:32:36
単にFFTを使いたいだけだったら(プログラム作成が目的でないのなら)
Scilab か GNU Octave を使ったら?
FFT機能は標準装備だし、確かWAVファイルの読み書きも出来たはず。

312:デフォルトの名無しさん
07/11/29 00:00:55
まそれいっちゃうと他にも選択肢はたくさんあるけどな。
Mac OSなんかはSIMD使ってアクセラレートされたFFTライブラリが標準で提供されてたな。

313:デフォルトの名無しさん
07/11/29 03:37:54
FFT(笑)

314:デフォルトの名無しさん
07/11/29 04:39:36
308じゃないが、だいぶ昔に書いたFFTのコードとサンプルアプリをようやっと発掘してきたが・・・そういう空気じゃないなw

315:デフォルトの名無しさん
07/11/29 10:09:13
FFTのライブラリって結構いっぱいあるけど
定番とかオススメってある?


316:デフォルトの名無しさん
07/11/29 10:19:50
定番は自作。
オススメも自作。 
FFTそのものは20行もあれば書ける。
ビット逆順とか入れても40行。
面倒だったり頭を悩ませるのはソコじゃない。

317:デフォルトの名無しさん
07/11/29 10:35:29
FFTで有名な場所
URLリンク(www.kurims.kyoto-u.ac.jp)

Delphiなら
URLリンク(pc.2ch.net)
ここの207以後。


318:デフォルトの名無しさん
07/11/29 11:58:53
完全自作にこしたとはないけれど、
十分な完成度というか性能というか(速度面とか)出すとこまで含めると、
それなりに時間と労力いるよね?
そこまでコミットできないし、結果が得られれば良いヘタレな俺は
やっぱりライブラリ活用でし・・・

(でもそのためのライブラリ

319:デフォルトの名無しさん
07/11/29 12:14:43
コード見れば判るだろうけど、
FFTそのものの速度はチューニングしてもしなくても2倍も違わない。
というかチューニング出来る要素はそんなにない。
仮に2倍違ったとしても、パソコンの場合、それでどうしたのって程度の差でしかない。
リンク先のように最大の素数を求めてるとかならともかくさ


320:デフォルトの名無しさん
07/11/29 12:30:14
SIMD化するだけで数倍速くなるよ。
ただ、PC上での話なら5年前のCPUですら素のサンプルをそのまま使っても十分な性能出てたけどね。

321:デフォルトの名無しさん
07/11/29 17:26:14
Delphi使いがこのスレにたまにいるようだけど、Delphiでサウンドプログラミングなんて邪道だろ

322:デフォルトの名無しさん
07/11/29 20:53:08
ナンセンス
好きなの使えばいいじゃないの

323:デフォルトの名無しさん
07/11/30 00:00:45
FFTで何をするか、に興味がある
FFT実装には興味ないなぁ

324:デフォルトの名無しさん
07/11/30 01:52:15
Playerでグラフィックイコライザみたいな
棒グラフがぐにゃぐにゃ動く画面は
リアルタイムにFFTしながら描画してるのでしょうか?


325:デフォルトの名無しさん
07/11/30 02:43:33
そうですけど

326:デフォルトの名無しさん
07/11/30 12:15:32
MP3の場合、FFTというかある程度の周波数情報は復調時に得られるのかも
あと、グライコそのものはFFTでやるより、バンドパスや同調(Q無限大の)フィルタでも負荷量は
バンド数によっては小さい。


327:デフォルトの名無しさん
07/11/30 17:10:11
きっちりと理論の実装をするのが得意なやつもいれば、
理論はそこそこ、それらを利用したアプリケーションとか書くのが得意なやつもいるよな。
あんがい両方に長けてるやつって少なかったり

328:デフォルトの名無しさん
07/11/30 21:46:30
糞文系が理系を支配する構図ってやつ

329:デフォルトの名無しさん
07/11/30 23:31:49
>>326
低域で精度を得ようとするとタップ数が増えるからFFTというかFIR系はつらいね…
グライコならフィルタした音聴くわけじゃないし、パワーだけ得られればいいから
位相回りまくってもIIR系で急峻に落とす方が計算量としては少なそう

>>327
正しい分業の姿ですな

330:デフォルトの名無しさん
07/12/01 02:39:10
>328
327は本来両方とも理系の担当分野だと思うけどな。
つか文系は基本的にある程度以上の国家資格持ってるのならともかく大半は高卒の方がマシな連中だからな。

331:デフォルトの名無しさん
07/12/01 02:58:11
文理ではなく理学と工学の関係に近いかな

332:デフォルトの名無しさん
07/12/01 03:17:09
学の無い人は壁を作りたがる

333:デフォルトの名無しさん
07/12/01 05:27:54
理系は文系をカバー可能だが
文系で理系をカバーできないやつは使い物にならない
しかしそういうのに限って
他人だまして金儲けるのだけはうまかったりする
でスレ違いな訳だが

334:デフォルトの名無しさん
07/12/01 06:18:12
理系でも文系でもいいけど
こんなところでストレスぶちまけないでよw

335:デフォルトの名無しさん
07/12/02 15:29:45
社会を支配しているのって文系の奴ら何だからね。


336:デフォルトの名無しさん
07/12/03 02:45:02
FFTSSってのがあるな
暫くこれ使わせてもらおう

337:デフォルトの名無しさん
07/12/03 05:59:45
大浦氏のCのやつをラッパークラス書いてC++で使ってる

338:デフォルトの名無しさん
07/12/05 10:53:18
グライコならラジオの原理で言う、超再生方式が比較的効率がいいよ
表示だけなんだから処理時間が足りないなら間欠的にやればいいわけだし

339:デフォルトの名無しさん
07/12/05 12:54:29
IIRのバンドパスとかとはどうちがうの?

(グライコって、スペアナでしょ

340:デフォルトの名無しさん
07/12/05 13:14:43
ああ、スペアナだな。 みんながグライコって書いてたから勘違いしちゃった。

IIRでいえばバンドパスではなくて分子が1でQが無限大のLPF
つまり、サイン波ジェネレータに使う構成があるでしょ?

分子が1だから掛け算の回数がそれだけ少なくなる。
バンド幅は検出時間で調整する。 つまり低周波程周期に比例して長くする。

341:デフォルトの名無しさん
07/12/05 13:18:05
ただ、間欠的にデータ取るから窓関数は必要。だからそれも足したらバンドパスと変わらないけど
間欠的にデータが取れるから処理時間が余った時だけとかの調整が可能なのが有利。

バンドパスでも間欠的にデータ取れるけど、その場合だって結局窓関数かけないといけないから。

342:デフォルトの名無しさん
07/12/06 01:19:10
バンドパス
窓とかかけないでも、低いほうの周波数帯だったら
1サンプル飛ばしでsr半分として、2サンプル飛ばしでsr1/3として、みたいなかんじで
計算すりゃよくない?

あくまで精度は重要でなくて、少しでも軽く処理したいって前提だけど

343:デフォルトの名無しさん
07/12/06 01:40:20
あぁでもエイリアスひろっちゃうかな、、

344:デフォルトの名無しさん
07/12/06 09:04:42

b0 + b1*z^-1 + b2*z^-2
------------------------
a0 + a1*z^-1 + a2*z^-2

BPFの分母は b0=-b2,b1=0 か b0=-b1,b2=0(こっちは特性が悪いから普通は使わない)
だから計算量が b0=1, b1=b2=0 に比べて極端に悪いとは思えない

345:デフォルトの名無しさん
07/12/09 02:20:33
マルチバンドコンプ用に帯域分割フィルタを作りたいんだけど、
線形位相・完全再構成な不等分割フィルタバンクの設計法を調べるので方向性合ってる?

346:デフォルトの名無しさん
07/12/09 02:29:32
>> 279
>> 345
オープンソースのがすでにあるぞ。車輪の再発明はやめなはれ。
URLリンク(freeverb3.sf.net)
FIRのLPF/BPF/HPFとかも入ってるみたい。


347:デフォルトの名無しさん
07/12/09 02:39:55
JWAVEを聴きながらVeohを見てみた
URLリンク(youtubetv.atspace.com)

348:デフォルトの名無しさん
07/12/09 11:36:04
>>336
FFTSSはライセンスがGPLじゃないんだね。
上記の著作権情報をソース/バイナリどちらであっても
含めないといけないとあります。
ダウンロードに名前とemailと目的まで入力か...


349:デフォルトの名無しさん
07/12/09 15:41:18
>>346
ども。参考にするよ。FFTとかFIRの仕組み自体の実装には興味ないんだけど、
設計法は勉強したいと思ってて、そのあたりは結局のところ自分で作らないと
勉強にならないから自分でやるよ。

ちなみに、車輪の再発明って物事の実現効率しか見てなくて、
逆に学習とか、車輪の再発明そのものが必要になる場面もあったりする。
ツッコミいれるときはその意図に注意した方がいいかも。
(今回はそのあたりの前提を言ってなかったんですまんかった)

350:デフォルトの名無しさん
07/12/09 17:15:08
学習目的のそれは、再「発明」とは違うんじゃないかな。
再開発とか再実装あたりが適切じゃないかと思う。
既存の発明の情報を得て、理解した上で実際にやってみるって作業でしょ。

再発明ってのは、まだどこにも存在してないと思い込んで、既存の発明を参考にせずに一から自分で作る話。
実装とか設計以前の着想とか発案から始めて、先人達がとっくに解決したような問題で延々悩むことになる。
まず調べろ、ってこと。

351:デフォルトの名無しさん
07/12/09 17:52:01
>>350
車輪の再発明、ってのは単に言い回しでそうなっているだけで、
最初から>>350の言う厳密な発明よりも広い、開発をも含む意味で使われてるよ。
ほぼ同じ文脈で使われるNot Invented Here症候群(自前開発以外を採用しない)の場合も、
厳密な発明って意味の他に開発の意味も含むし。

とりあえず、バタワースあたりの振幅特性だけもってくる直接設計法で
一番上のバンドで誤差吸収ってのを考えた。

352:デフォルトの名無しさん
07/12/09 20:43:06
>> 345
CiNii - 線形位相完全再構成不等分割フィルタバンクの設計
CiNii - 線形位相完全再構成不等分割FIRフィルタバンクの設計
論文みたいだね。やくにはたちそう:)



353:デフォルトの名無しさん
07/12/09 22:09:36
>>352
ありがとー! 論文は読み慣れてる(分野違うけど工学系)んで問題ないです。
FIRの方をざっくり読んだけど、他の方法で漸近的に設計しておいて
最後の1or2バンドで補償してる感じかな……。

354:デフォルトの名無しさん
07/12/28 04:01:10
>>293
音響レンズってなんだ??

355:デフォルトの名無しさん
07/12/28 04:03:00
すまん自己解決


(問題-18)
音響レンズとは何か。
どんな機能を果たしているのか。
どんな材質で出来ているのか。どのような特性があるのか。


--------------------------------------------------------------------------------
(解答-18)
音響レンズとは探触子の圧電素子より前面に配置してある構造体で、音波を収束させる目的を持つ。
生体での音速に比べ遅い音速約1000m/secのシリコンで出来ている。
凸面形状をとることにより探触子から出た超音波を収束させることが出来る。
もし、音響レンズに生体より早い音速を持つ物質を使用した場合は
凹面形状をとらないと探触子から出た超音波を収束させることが出来ない。

356:デフォルトの名無しさん
08/01/03 16:51:20
DSPの経験が全くないのですが、2nd order Butterworth lowpass filterの、カットオフ周波数(1)での、ある周波数(2)の入力の位相の変化ってどうやったら求められますか?
ディレイのフィードバックで発振させて、フィルター入れたらピッチが変わって音痴になってしまいました。位相ズレ分のディレイを補正したいんです

357:デフォルトの名無しさん
08/01/04 07:24:01
普通はZ変換にw*i を突っ込めば出ますが?

でもディレイ入れるだけでピッチが変わるって・・・・何かその前にお間違えでは?

358:デフォルトの名無しさん
08/01/04 12:35:24
サウンドプログラミングって面白いね!

359:デフォルトの名無しさん
08/01/10 00:29:29
PCM出力用のバッファからリアルタイムでスペクトルを取得する為に
自分でコーディングしたFFTに short(signed 2bytes) 要素数65536 を処理させたんですが、
頑張っても 0.22 秒ほど掛かってしまうようです。
車輪の再発明をするのもあれなので、「FFTをするなら普通はこれを使う」といった手段、
例えばもっと高速に動作する既成dllやライブラリなどは無いでしょうか?

360:デフォルトの名無しさん
08/01/10 00:50:34
速度を求めるならfftw
俺は呼び出しの簡単さ優先なんで大浦氏のFFTライブラリ
(それでも自分で書くよりも断然速い)

361:デフォルトの名無しさん
08/01/10 03:08:34
fftwなら、MKLにも同梱されているしちょっとした修正でCUFFTにも移植可能だし、
使っている人が多いと言うのも魅力だね。後は、2の冪に縛られずに済むのも手抜きにはいい。

362:デフォルトの名無しさん
08/01/10 07:21:11
>>359
整数ではなく浮動小数点でデータを与えた方が変換時間が短いと思う
もっと少ないサイズでやるなら固定小数点も考えられるけど、2^16個では固定小数点では無理

あと、そもそも1秒分以上のサンプリングデータを0.22秒で処理出来ているのだから十分高速だと思うよ。
スペクトル表示が目的なら 4096か8192点で十分でしょ。

363:デフォルトの名無しさん
08/01/10 07:22:50
>>359 SINのテーブルや、ビット反転アドレスなんかのテーブルは事前に作ってるんだよね?
これを毎回作ったり、sinを毎回計算させてたら遅いよ

364:デフォルトの名無しさん
08/01/10 08:34:20
>359
この手の最適化話するならマシンスペックと施した最適化くらいは書いとけ、といつも思う。

365:デフォルトの名無しさん
08/01/11 00:37:22
>>363
>これを毎回作ったり、sinを毎回計算させてたら遅いよ
CUDAなら毎回計算した方が早い罠。

366:デフォルトの名無しさん
08/01/12 13:05:31
OpenALを使って3Dサウンドをやってみたいのですがググって見ても断片的なblogの記事くらいしか
日本語資料が見つかりません
どなたか日本語の各種ドキュメント、書籍等をご存じの方がおりましたら教えていただけると助かります
よろしくお願いします

367:デフォルトの名無しさん
08/01/12 14:12:10
>>366
URLリンク(www.google.co.jp)

368:デフォルトの名無しさん
08/01/12 17:23:21
義務教育受けてないなら諦めろ
受けてるならなんとかなる

369:デフォルトの名無しさん
08/01/13 15:41:44
ジュニアハイスクールレベルの英語教養を舐めるなよ

370:デフォルトの名無しさん
08/01/13 16:12:26
大丈夫、いみじくも「ジュニアハイスクール」と呼ばれるところに行っている生徒程度の英語教養があるなら。

371:デフォルトの名無しさん
08/01/15 13:08:52
フェーズメータを作成しようと思うのですが、知識が無くて
困っています。参考文献や参考になるサイトがあったら教えてください。

372:デフォルトの名無しさん
08/01/15 13:19:09
フェーズメータって事は、サイン波オシレータと
そのオシレータとの位相差を表示したいって事?

それをどういう環境で作りたいの?

パソコンの場合、ディレイがハード毎に違うし、そもそも出力と入力が同じサンプルクロックとは限らないから
2CH 入力して 出力を L/Rのどっちかの端子から入力させて位相を比較するとかじゃないと
汎用性が無いだろうな

位相の測定は出力オシレータを90度位相差が出る sin/cosのベクトル積型にしておいて
sin/cos成分との掛け算で出すのが一番簡単だと思うよ


373:デフォルトの名無しさん
08/01/20 13:17:27
>>372ありがとうございます。
"sin/cosのベクトル積型"というのはどういう
事なのでしょうか。すみません馬鹿で。

374:デフォルトの名無しさん
08/01/20 16:23:40
LRでリサージュ描くんじゃだめ?
URLリンク(ja.wikipedia.org)
(なんか根本的に勘違いしてたらごめん。)

375:デフォルトの名無しさん
08/01/21 09:42:03
ベクトル積じゃなくて回転行列との掛け算だろう
| c , s |
|-s , c |

376:デフォルトの名無しさん
08/01/25 01:10:48
( ゚д゚)ノ ハイ!シツモンデス!
文書では上手く説明できないと思ったので、グラフ描きました。
URLリンク(www-2ch.net:8080)

デジタルオーディオのミキシング用に、IIRフィルタを掛けて目標の周波数帯域を取り出そうとしています。
また、リアルタイムに取得する周波数帯を変更していく予定です。

そこで、まずはsin波形で色々と試しているところなのですが、
現象の呼び名が分からないので検索できませんでした。
グラフを見て頂いて、問題箇所を確認してもらえるでしょうか。

① IIRフィルタを掛けた場合、波形が後方へズレる?と思いますが、これは正しい現象ですよね?
その場合、ズレ幅はなんと呼ばれるのでしょうか?
また、その幅をIIRの係数か何かから事前算出できるものなのでしょうか?

② また①のズレ幅ですが、周波数によって変わると思うのですが、これは正しい現象でしょうか?

③ フィルタの開始、終了時に不安定?になる区間があると思いますが、これを排除する事は可能でしょうか?
また、区間の長さを事前算出できるものなのでしょうか?

④ グラフにはありませんが、IIRフィルタの係数を徐々に変更した場合、
例えば low-pass の通過帯域を 100hz → 1サンプルづつに+1 → 1000hz と変更し、
リアルタイムに取得帯域を変更した場合、正しく計算できるものなのでしょうか?


宜しくお願いします。

377:デフォルトの名無しさん
08/01/25 01:38:35
位相という言葉すら知らずにいきなりデジタルフィルタに手を出す時代なのね・・・

378:デフォルトの名無しさん
08/01/25 02:49:15
馬鹿は際限無く馬鹿ということ

379:デフォルトの名無しさん
08/01/25 03:25:54
>>378

とりあえず、位相と窓関数とRBJAudioEQCookBookとピーキングフィルタとウェーブレット
を愚ぐれ。

しかし位相も知らずにIIRとかどうやって知ったんだろ...。

380:デフォルトの名無しさん
08/01/25 05:00:54
>>379
>>>378
>>376

381:デフォルトの名無しさん
08/01/25 09:12:27
>>376
IIRフィルタに限らずデジタルフィルタは Z変換して、そこにe^(iw) をぶち込むと
周波数特性が出ます。
周波数特性は、 複素数の絶対値がゲインで、複素数の角度が位相です。

だから、貴方がやるべきことは、Z変換を理解する事です。
それには複素数を知らなければいけませんし、
そのついでにラプラス変換とフーリエ変換も勉強しないといけません。

その後でしたら説明出来ますが、今は説明が難しいです。

382:デフォルトの名無しさん
08/01/25 09:16:58
なお、最後の質問は、Z変換を理解した段階でも、まだ答えるのは難しい問題です。
実用的には十分ゆっくり変更するなら大丈夫ですけどね

383:376
08/01/25 22:19:20
>>377
>>379
SCILAB使ってます。便利な世の中です。

>>381
とりあえずz変換を勉強中です。
今のところ、離散時間信号から複素数平面への写像と捉えてます。
まだ複素数平面状で何ができるのか勉強不足なので、相違のズレが(言葉遣いあってます?
なぜ発生するかは理解してませんが。

>>382
リアルタイムにグリグリできるパラメトリックイコライザっぽいものを
作ろうと思ってるんですが、もしかして使う手法を間違ってます?



>>378
罵倒するのはいいけど、せめて1単語でもヒント書いてよ
でないと、オレと同階層の住人。

384:デフォルトの名無しさん
08/01/25 22:21:14
>>381 相違のズレ>位相のズレ

“そうい”ってなんだよオレ...orz

385:デフォルトの名無しさん
08/01/25 22:55:33
>>384
僧衣でググれ

386:デフォルトの名無しさん
08/01/25 23:18:18
まあ、なんだ。せっかくのスレなんだしギスギスしないでも...

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

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

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

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

388:デフォルトの名無しさん
08/01/26 03:37:28
>>383

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

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


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

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

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

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

391:デフォルトの名無しさん
08/01/26 13:48:51
グリグリって書いてるじゃん

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

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

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

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

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

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

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

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

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

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

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


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch