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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
音のプログラミング処理について語りましょう

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

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

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

サウンドプログラミング
http://pc5.2ch.net/tech/kako/996/996171508.html
2デフォルトの名無しさん:2007/07/25(水) 14:52:49
2get
3デフォルトの名無しさん:2007/07/25(水) 16:24:53
用語を統一するために

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

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

DSP
 デジタル・シグナル・プロセッサ の場合は信号処理用のMPUの事
 デジタル信号処理の事を言う場合もある
4デフォルトの名無しさん:2007/07/25(水) 16:41:43
最近サウンドプログラミングに目を向け始めたんだけど
ソフトシンセに関して書かれた本とかってないの?
5デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/07/26(木) 09:25:38
>>3
リアルタイムじゃなくてインタラクティブと呼ぶと良さげ
7デフォルトの名無しさん:2007/07/26(木) 11:19:38
マルチメディアなスレみーっけ!
8デフォルトの名無しさん:2007/07/26(木) 11:45:14
   __i.\,/!_
  ゝ, ''´⌒`ヽ   
   ノノメノハノ〉〉  
 |\ルリ!゚ ヮ゚ノ∩ やっぱり最強なあたいがHゲットよ!
  \ と)i`\´iノ  
  ∠ ,く// i ゝ
   '`"!ンィン'´
9デフォルトの名無しさん:2007/07/28(土) 22:35:32
とある音源Aと、イコライザなどを使いAの特定の部分の周波数を強調した音源Bから
周波数のどの部分が加工されたかを知るにはどうすればいいんでしょうか。
10デフォルトの名無しさん:2007/07/28(土) 22:57:20
Spectrogram を PrintScreen して Photoshop に hariko して XOR を掛ける
11デフォルトの名無しさん:2007/07/28(土) 23:01:40
☆SHI☆NE☆YO☆
12名無しさん@そうだ選挙に行こう:2007/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名無しさん@そうだ選挙に行こう:2007/07/29(日) 09:37:50
単純にB-AをやってからFFTして、
一番でかかった周波数帯を見れば良いんじゃないかしら?
14名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:49:30
それは旨くゆかない。イコライザーなどはIIRフィルターなので、位相も変化してるし
FIRフィルターであっても、BとA間には遅延があるので B-Aではダメだよ
15デフォルトの名無しさん:2007/08/03(金) 21:11:19
即死判定予防
16デフォルトの名無しさん:2007/08/03(金) 22:32:46
サウンドカードの入出力を利用してオーディオ用のディジタルフィルタ(リアルタイム)を
実現してみたいので参考になるホームページお願いします。
17デフォルトの名無しさん:2007/08/04(土) 08:42:33
基本的にサウンドカードの入出力でエフェクトするのは環境依存。

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

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

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

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

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

C++でもDelphiでもそういうコンポーネントを1回作っておけば、後はとても楽チン
18デフォルトの名無しさん:2007/08/04(土) 22:22:51
アドバイス有難うございます。
開発環境はBCC5.5.1(C言語)とWin32APIを使ってます。
ハードは比較的新しいマザーP5Bですので対応大丈夫と思います。
ただ、ゴーグル検索でオーディオ入出力を同時に行っているサンプルが見つからず???な状態です。
良いサンプル落ちてないですか?
19デフォルトの名無しさん:2007/08/05(日) 11:41:57
たとえば、ここは2個用意して交互に利用してるけど、
ttp://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_multibuf.html
こんな感じで2個3個を順に利用させる。
ttp://www7a.biglobe.ne.jp/~lshen/EternalWindows/Sound/WAVE/WAVE04.html

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

入力--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から読み出す。
どっちかの処理でエフェクトをかければいい
2018:2007/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デフォルトの名無しさん:2007/08/05(日) 20:00:02
>3.で出力用データが用意されてないのにwaveOutWriteしてますが

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

後はOK
22デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/08/06(月) 11:04:15
そりゃぁ、単純に足しちゃダメだろ。安直にやるなら平均だけど、それで事が足りないなら調べて工夫すればいい。
24デフォルトの名無しさん:2007/08/06(月) 14:18:20
>22
in1[i] + in2[i] の結果を -32768 〜 32767 でクリップするだけでもだいぶマシになる。
真面目にやるならソースの音量を調整するなりコンプレッサつけるなりしないとダメ。
25デフォルトの名無しさん:2007/08/06(月) 15:49:16
サウンドプログラムってやったことないおれがいいかげんレスすると
演算のオーバーフローで音割れ発生なら
Out[i] = in1[i]/2 + in2[i]/2;

int tmp = in1[i] + in2[i];
Out[i] = tmp/2;
したらどう?
26デフォルトの名無しさん:2007/08/06(月) 16:14:25
>>25
それ、>23で指摘している平均ですから。
27デフォルトの名無しさん:2007/08/06(月) 16:15:19
俺は夏の間だけ2乗平均するゼ
28デフォルトの名無しさん:2007/08/06(月) 17:56:35
平均てか、オーバーフローしないように音量下げてるだけでしょ。

単純に足すの自体は正しいけど、フルボリュームの音2つ混ぜればレベルオーバーして割れる、ってあたりまえの話し。
割れないようにするには基本音量調節だけど、
クリップ処理はしといたほうがいい。でないとクリップしたとき醜いことになる。
整数処理の場合、混ぜた結果をクリップ処理するならshortじゃなくてlongとかで足し算しないとね。
29デフォルトの名無しさん:2007/08/06(月) 18:11:40
色々と突っ込みどころだらけだな。

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

>クリップ処理はしといたほうがいい。でないとクリップしたとき醜いことになる。
何が言いたい。字義通りに解釈すると、「クリップしないとクリップしたときに醜い」となって意味不明なのだが。
30デフォルトの名無しさん:2007/08/06(月) 19:29:40
重箱の隅
31デフォルトの名無しさん:2007/08/06(月) 19:36:32
隅の多い重箱だな
32デフォルトの名無しさん:2007/08/06(月) 19:43:20
石頭
33デフォルトの名無しさん:2007/08/06(月) 20:14:12
>28
アホだコイツw
レベルオーバーで割れるのはクリップしても割れるだろうが、嘘教えてんな
それを言うならオーバーフローだろボケ
用語は正しく使え、知らないなら黙ってろ
34デフォルトの名無しさん:2007/08/06(月) 21:23:01
クリップ処理すればレベルオーバーしても割れないなんてだれも書いてないと思うけど、
とりあえず、君が正確な用語で簡潔に説明してやればいいんじゃない?
3518:2007/08/06(月) 21:32:43
>>21 有難うございました。
また、質問すると思いますが、そのときはよろしくです。
36デフォルトの名無しさん:2007/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; とまったく同じ挙動になる。
3736:2007/08/06(月) 23:17:48
コピペしたら /2 消し忘れた・・・orz
正しくは Out[i] = (in1[i] + in2[i])/2; と Out[i] = (int)(in1[i] + in2[i])/2; です。
38デフォルトの名無しさん:2007/08/06(月) 23:20:06
>>36
それって仕様でなくて、処理系によるんでない?
39デフォルトの名無しさん:2007/08/06(月) 23:36:17
てかシンプルなことなのに、やたら難しいことみたいにじれったいやりとりだなw
40デフォルトの名無しさん:2007/08/06(月) 23:44:20
>>38
charやshortが被演算数になったときのintへの自動格上げはANSI Cの言語仕様だよ。
K&R第2版のA6.1節に書いてある。
41デフォルトの名無しさん:2007/08/07(火) 01:55:28
自動作曲ソフトのようなものを作りたいです
そこでまず何を勉強すればいいですか?
42デフォルトの名無しさん:2007/08/07(火) 01:56:32
midi(笑)
43デフォルトの名無しさん:2007/08/07(火) 01:57:41
44デフォルトの名無しさん:2007/08/10(金) 13:03:58
音源Aが 波形x + 波形a
音源Bが 波形y + 波形a
で構成されている時、
A - B = (x + a) - (y + a) = x - y
でaを消す事が可能ですけど、逆にxとyを消してaだけで構成された音源を作る事は不可能ですよね?
45デフォルトの名無しさん:2007/08/10(金) 13:13:09
変数が3つあって方程式が2つしかない場合、一般的に全ての変数は求まりません。
46デフォルトの名無しさん:2007/08/10(金) 14:44:43
>>44
x と y が無相関なら、A, B の無相関化である程度の除去はできるかも。
x, y がそのままとりだせるかどうかは知らないけど。
47デフォルトの名無しさん:2007/08/10(金) 15:23:04
歌がセンター定位である事を利用した カラオケ器 なんてのが趣味の工作で流行ったけど

その逆にセンターの歌だけ取り出すのは まだまだ無理だよ。
リアルタイムに音声認識⇒音声合成をやらないといけないからね
48デフォルトの名無しさん:2007/08/10(金) 16:18:18
>>47
それは、センターにボーカル以外の音も混ざってるからでは。
左右の音の、ボーカル以外の部分が完全に無相関なら
結構いいせんで分離できると思う。

まあ、「完全に無相関」なんて仮定が通じるわけもなく、
結局、ボーカル抽出は音声認識的な技術も使わないと無理くさい
ってことだと思う。
49デフォルトの名無しさん:2007/08/10(金) 16:55:02
完全に無相関かどうかは、この場合関係ないでしょ。

L(x)+S(x) と R(x)+S(x)から、どうやってS(x)を分離するというのだい?
50デフォルトの名無しさん:2007/08/10(金) 17:01:26
うん
51デフォルトの名無しさん:2007/08/10(金) 17:29:44
相関ベースのブラインド信号処理でも、
2チャネルだと分離できるのは2信号までか。
52デフォルトの名無しさん:2007/08/11(土) 00:34:44
歌声りっぷで同名ファイル選んで中央定位抽出できるけど
FFTでなんとかかんとか
53デフォルトの名無しさん:2007/08/11(土) 00:53:48
ノーマルバージョンからカラオケバージョンを減算すればいいんじゃね
54デフォルトの名無しさん:2007/08/11(土) 02:44:09
歌声りっぷでググれって
55デフォルトの名無しさん:2007/08/11(土) 03:00:45
誰もツールの話なんかしてねー
56デフォルトの名無しさん:2007/08/11(土) 03:48:49
FFTでなんとかかんとか
57デフォルトの名無しさん:2007/08/11(土) 06:11:53
離散フーリエ変換なんて糞
58デフォルトの名無しさん:2007/08/11(土) 07:52:14
>>57
具体的に書かないと、ただの「自分に判らないものは糞ってことにしておきたい人」にしか見えませんよ。
59デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/08/11(土) 08:08:14
FFTを魔法の道具と思ってないかい?
a+b +2*x から、 2*x をどうやって消せるの?

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


大金持ちになれるチャンスだよ。 がんばれ
61デフォルトの名無しさん:2007/08/11(土) 08:37:37
だから離散フーリエ変換なんて糞なんだよ。
アナログ回路最強。
62デフォルトの名無しさん:2007/08/11(土) 12:36:56
DFT単体で考えてる人が多いな
あれはツールなんであって、何かと組み合わせんとね

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

フーリエ変換でどうこうって言ってるのは、
a, b, x のそれぞれが、違う基本周波数のハーモニックトーンだとすると、
周波数領域でその倍音成分だけとれば分離できるかもって話かと。
64デフォルトの名無しさん:2007/08/11(土) 20:18:37
>61
板違い

>63
ぶっちゃけ出来ないけどな。
そりゃソース次第では出来るだろうけど、汎用は出来ない。
65デフォルトの名無しさん:2007/08/12(日) 14:58:50

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

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

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


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

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

---------------------------
前スレにあった話の、この1の問題だね。 この4つとも、とても難しいのだけど、難しさを説明するのも難しい
66デフォルトの名無しさん:2007/08/12(日) 17:08:41
ボーカルのみを消去するソフトがあったけど、出来はどんなもんだろ?
67デフォルトの名無しさん:2007/08/12(日) 17:50:19
ヒロフのやつ?
68デフォルトの名無しさん:2007/08/13(月) 03:46:01
>>55
FFTで中央定位抽出が一応出来る
どうやってるかはしらん
69デフォルトの名無しさん:2007/08/13(月) 04:23:58
誰もツールの話なんかしてねー
70デフォルトの名無しさん:2007/08/13(月) 10:15:09
定位が中央、右、左の3点だけって状態はまずない、ってので説明終わりにならない?
71デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/08/13(月) 15:33:02
動的フィルタ使えば? このあいだAESとかいう学会で展示されてたのが単純な仕組みでなかなかの効果だったよ。
73デフォルトの名無しさん:2007/08/14(火) 06:32:06
動的フィルタってどうゆうの?
74デフォルトの名無しさん:2007/08/14(火) 06:54:00
えっ
75デフォルトの名無しさん:2007/08/16(木) 13:25:50
>>73
Adaptive Filter のことかな。
入力によって、係数をどんどん更新していくようなタイプのフィルタ。

伝播路推定とか、音源推定に使えたりするんで、
それで、音源分離しようって話かも。
もちろん、入力信号の種類にまったく過程を置かない場合は
2マイクだと2信号までしか分離できないんだけど、
ある程度、信号が独立だとか、基底周波数が違うとかの条件があればいい線いくかも。
76デフォルトの名無しさん:2007/08/16(木) 21:28:08
東京から大阪まで行きたいんだ

新幹線使うといいよ

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

そんな流れ…?
77デフォルトの名無しさん:2007/08/17(金) 14:01:38
目的地は大阪じゃなく月だな
78デフォルトの名無しさん:2007/08/17(金) 14:12:55
まあ、今の所不可能という点じゃ火星に有人飛行くらいじゃないかな
79デフォルトの名無しさん:2007/08/17(金) 16:57:03
遠いお星に行きたいよ

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

ちょっとそこで目をつぶって拝んでろ
80デフォルトの名無しさん:2007/08/17(金) 17:15:15
そして79は星になった
81デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/08/20(月) 22:40:29
フーリエ変換ってものすごく簡単なことなんだろうけど、大學の教科書のわざわざアホみたいに難しい形に書いてる数式見たらやる気なくします(^^)
83デフォルトの名無しさん:2007/08/20(月) 22:42:42
一応、理論自体はそれなりに難しいと思うがな。
84デフォルトの名無しさん:2007/08/20(月) 22:43:38
理論をちゃんと理解できてる人の方が少ないと思う
85デフォルトの名無しさん:2007/08/21(火) 00:22:06
あの難しい形の式も、数学の発展には大きく寄与してるのよ。
音響関係ではというか、工学系ではあんまり役に立たないけど、
理学系、特に数学科とかにいくとあれが必須。
86デフォルトの名無しさん:2007/08/21(火) 00:56:53
直交変換(とその考え方)は工学系全般で役に立ちまくってるがな
87デフォルトの名無しさん:2007/08/21(火) 04:18:24
>>86
ここの先生連中は正規直交基底については博士級の知識がある。
直交基底を用いた変換を理解しないで音プログラムは開発できないからな。
88デフォルトの名無しさん:2007/08/21(火) 05:34:25
博士級(笑)
89デフォルトの名無しさん:2007/08/21(火) 06:56:05
...を理解しないで音プログラムは開発できない?
どんだけ狭い意味での音プログラムなのさ
90デフォルトの名無しさん:2007/08/21(火) 09:17:06
直交(笑)座標変換
91デフォルトの名無しさん:2007/08/21(火) 09:35:10
>>82
ミクシンスキー の演算子法 なんて読んでないなら読むといいかも
92デフォルトの名無しさん:2007/08/21(火) 10:05:26
直交基底の説明ってなんで揃いも揃ってあんなに日本語が不自由なんですか。
国語能力に優れている人間だけが数学に関する書物を書けるようにする法律を作るべきだと思います。
あと、数学に非直観的でわけわからん記号を導入した人間や、人間の名前を法則につけた人間も死刑。
そして、心理学や人間工学の見地から数学記号のデザインを一新するべきですね。
あんなアリの這ったようなギリシャ文字は人類の負の遺産ですよ。
93デフォルトの名無しさん:2007/08/21(火) 10:35:55
必要は発明の母と申しますが

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

これは発案者の貴方の権利であり義務ですから私たちは見てるだけしか出来ませんが
頑張って下さいね。 
94デフォルトの名無しさん:2007/08/21(火) 11:32:28
「オレが理解できないのはあんたの説明が悪いからだ!」と堂々と言うのは最近の風潮だねえ。
その図太さが羨ましくもある今日この頃…

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

金谷さんの本なんかは結構噛み砕いて書いてあるんで読んでみたらどう?
95デフォルトの名無しさん:2007/08/21(火) 12:12:57
"最近の風潮"ではない。2chは当初からそういう風潮
96デフォルトの名無しさん:2007/08/21(火) 12:20:04
内積・外積とか直交基底とか、ネーミングセンスゼロだな
大昔のオッサンが勝手に決めた不可解な和訳の用語をそのまま現代でも使っていいものか
異議を唱える者は居ないのか
97デフォルトの名無しさん:2007/08/21(火) 12:40:51
>>96 そりゃ皆んなその言葉で考えたり仕事したりしてるからね。
新人は常に少数派だから、受け入れるのが普通。

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

まあ、あなたが素晴らしい小学生でも高等概念が身に付くような総合入門書を作れば皆んな解決
98デフォルトの名無しさん:2007/08/21(火) 12:57:43
素晴らしい小学生でも
99デフォルトの名無しさん:2007/08/21(火) 13:16:39
クソネーミングをした大昔のオッサンは大罪人だな
後の人間のことを考えない自分勝手な考えでつけた名前のせいでみんなが迷惑している
100デフォルトの名無しさん:2007/08/21(火) 13:30:35
あ、そのみんなってどこにいるの?
101デフォルトの名無しさん:2007/08/21(火) 13:32:44
物理学において、最大の罪人は電流の向きを決めた香具師だと思うんだ。
もし逆にしておいてくれたら電子の流れと同じ向きになってどれだけ理解しやすかったことか。
102デフォルトの名無しさん:2007/08/21(火) 13:55:49
それはそれで頭が固くならなくていいじゃない。
begin 〜 end を嫌う { 〜 } 派じゃあるまいし
103デフォルトの名無しさん:2007/08/21(火) 14:07:08
if (...)
end
...;
begin
って書いてあったら嫌だけどなぁ。
104デフォルトの名無しさん:2007/08/21(火) 14:49:08
ほほう
それはどういうコードかね
105デフォルトの名無しさん:2007/08/21(火) 14:58:41
なんだこのスレ
106デフォルトの名無しさん:2007/08/21(火) 15:31:06
摂氏は当初の様に0度を水の沸点とし、100度を水の凝固点にすべきだ!!!!11!!!!1!!
107デフォルトの名無しさん:2007/08/21(火) 15:38:30
摂氏イラネ
1リットル=1キログラムとか、なんでもかんでも水中心て
108デフォルトの名無しさん:2007/08/21(火) 15:47:55
博士級だかなんだか知らんが、数学や理論一辺倒の人ばっかりで
人の耳で聴く音を扱うソフトウェア書いてなさそう
109デフォルトの名無しさん:2007/08/21(火) 15:53:37
理論のないサウンドプログラミングってどんなん?

アナログ回帰?
110デフォルトの名無しさん:2007/08/21(火) 16:23:09
アナログフィルタも理論バリバリじゃん
111デフォルトの名無しさん:2007/08/21(火) 17:35:36
フーリエってどの学年で習うんでしょう? 高校?大学?
高校で、統計と確率を勉強しなかったのが悔やまれる。
112デフォルトの名無しさん:2007/08/21(火) 18:01:33
今勉強すれば悔やまなくてもよくなるよ
113デフォルトの名無しさん:2007/08/21(火) 18:20:16
高2だけどフーリエ習ったよ
114デフォルトの名無しさん:2007/08/21(火) 18:41:33
理論はもちろん必要だけど、
感覚的なものを扱うのに理論一辺倒じゃろくなもん作れんってことですよ
115デフォルトの名無しさん:2007/08/21(火) 19:18:33
>>114
失礼を承知で申し上げますが、そのまま逆にも同じことが言えます。
感覚的なものだけで音のプログラミングができれば皆さん苦労しません。

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

不毛な煽り合いはエネルギーの無駄な気がします。
116デフォルトの名無しさん:2007/08/21(火) 19:33:47
音吉陽一を思い出した
117デフォルトの名無しさん:2007/08/21(火) 20:20:02
なんかずれてるけどまあいいや
118デフォルトの名無しさん:2007/08/21(火) 21:04:52
え?あっ!
俺のカツラずれてるのなんで分かった!?
119デフォルトの名無しさん:2007/08/21(火) 21:31:53
面白くないよ
120デフォルトの名無しさん:2007/08/21(火) 21:38:54
115が不毛といったとこで確信したよ
121デフォルトの名無しさん:2007/08/21(火) 21:43:49
何を?
122デフォルトの名無しさん:2007/08/21(火) 21:52:57
だからズラだよもう
123デフォルトの名無しさん:2007/08/21(火) 21:54:09
あ、なるほどね
124デフォルトの名無しさん:2007/08/23(木) 00:22:33
>>113
今はフーリエって高校で習うのか.....
ということは、内積・外積・直交基底なんかも高校で習てるってことか
ひょっとしてZ変換やマキシマムエントロピーメソッド(MEM)も優秀な工業高校なら教えてるのかな?
なら、ゆとり世代って、超すごないな
125デフォルトの名無しさん:2007/08/23(木) 16:03:42
SoundEngine FreeっていうFreeのWave編集ソフトにある
マスタリングプロセスCV制限ってどういった処理をしてるんでしょう ?
126デフォルトの名無しさん:2007/08/24(金) 19:02:20
スレ違いじゃないか?
実際にどうゆう処理をしてるかは作者に聞かなきゃわからないだろうし。
127デフォルトの名無しさん:2007/08/24(金) 19:07:32
どうでもいいけど、そのCV制限とやらのCVって何?
128デフォルトの名無しさん:2007/08/25(土) 02:03:06
Constant Voltage(定流電圧)のことだろうなぁ
129デフォルトの名無しさん:2007/08/25(土) 10:55:48
"定流電圧" に一致するページは見つかりませんでした。
130デフォルトの名無しさん:2007/08/25(土) 11:11:36
定電圧
定電流
131デフォルトの名無しさん:2007/08/25(土) 11:32:02
conは女性性器の俗称
132デフォルトの名無しさん:2007/08/31(金) 19:36:44
FFTAnalyzerというwaveファイルのスペクトラムを表示してくれるソフトがあるんだけど↓

http://www2.tky.3web.ne.jp/~nozu/fftanal/help/help.html

残念なのはシェアウェアという点なんだよね。フリーウェアで似たようなスペクトラムを
表示してくれるツールって無いだろうか?
133デフォルトの名無しさん:2007/08/31(金) 21:19:49
ここはいつからツールのスレになったんだ?
134デフォルトの名無しさん:2007/08/31(金) 21:23:00
Audacity
135デフォルトの名無しさん:2007/08/31(金) 21:58:47
>>134
サンクス( ´∀`)
136( ´∀`):2007/09/01(土) 00:13:16
( ´∀`)ノ
16bitの音用濾波器の係数ってfloat,doubleのどちっがいいの?
みんなはどっちつかてるの?
137デフォルトの名無しさん:2007/09/01(土) 01:29:57
doubleのどちっ
138デフォルトの名無しさん:2007/09/01(土) 07:41:14
FIRでもIIRでもフィルタの係数なら単精度 で十分

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

ただ、IIRの構成によっては (1-w) のようなのをそのまま持たせないなら wは単精度でも (1-w)は倍精度欲しい
でも wのまま掛け算させたらいいと思うけどな
139デフォルトの名無しさん:2007/09/03(月) 18:08:49
MP3をWAVに変換するデコーダを作ってるのですが、
ID3タグの情報をWAVのチャンクに収めたいと思います。
ID3を入れるチャンク名などは仕様で決まってるのでしょうか?
140デフォルトの名無しさん:2007/09/03(月) 18:44:01
ああ、ここは「音楽」ではなく、ただの「音」のプログラムをするスレでしたか。
スレ違いすみませんでした。
141デフォルトの名無しさん:2007/09/03(月) 19:24:13
142デフォルトの名無しさん:2007/09/03(月) 20:07:29
仮にミュージックプログラミングだとすると、純粋に音芸的な話になったり、
あるいは自動で曲をつくttあrい
143デフォルトの名無しさん:2007/09/03(月) 20:42:44
いやDTM板を教えてやりなよ
144( ´∀`) :2007/09/03(月) 21:02:59
( ´∀`)ノ
>>138 非常感謝
あいやー、おら、doubleでしてたよ
145デフォルトの名無しさん:2007/09/03(月) 21:50:15
別に全部doubleでも全然問題ないよ
146( ´∀`) :2007/09/03(月) 22:27:50
( ´∀`)ノ
>>145
floatに比べでぶでのろまにならないの?
147デフォルトの名無しさん:2007/09/03(月) 22:40:33
実測すれば済む事。
些細な事だ。
148デフォルトの名無しさん:2007/09/03(月) 23:38:01
むしろVCなんかだと
floatを勝手にDoubleに最適化しやがったりするしな
149デフォルトの名無しさん:2007/09/04(火) 01:59:06
CPU的にdoubleの方が速けりゃその方がいいだろ
150デフォルトの名無しさん:2007/09/04(火) 06:39:59
やってみればわかる事。 きっとメモリが少ない方が勝つよ
151デフォルトの名無しさん:2007/09/04(火) 10:42:55
intel系CPUなら浮動小数点命令は確か80bitだし、
メモリへのアクセスもキャッシュ効くから、フィルタの係数程度なら目に見えての差は出ないと思われ。
152デフォルトの名無しさん:2007/09/04(火) 12:45:17
だったらdoubleでいいや
実測しても全然かわらんかったというか
コンパイラがdoubleにしやがるし
153デフォルトの名無しさん:2007/09/04(火) 15:42:41
処がだ、SSE命令における浮動小数点ニモニックは64/32ビットしかないんだな。
でもって、超越関数を使わない限り基本的にはFPUなんて要らないから最近のコンパイラは
80ビットニモニックは殆ど使わなくなっていたりするわけで。
勿論、ベクタ化を期待するようなパフォーマンスを目的とするなら、2並列より4並列の方がずっと
速いからfloatで済むならそれに越したことはないし。
# ということで、簡単なサンプルで速い遅いと言っても無駄。
154デフォルトの名無しさん:2007/09/04(火) 16:16:38
いや、そう主張するならそれでもいいけど
精度はやっぱり下がるしさ
SSEの4並列を使うのは、コンパイラの最適化程度では期待できないでしょ

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

自分でアセンブリ書いて完璧にSSEで最適化できて精度いらん人はfloatでいいじゃん
155デフォルトの名無しさん:2007/09/04(火) 16:35:36
>>154
iccでもgccでも最適化でベクタ化できるけど?
156デフォルトの名無しさん:2007/09/04(火) 17:07:26
>>155
ちゃんとコード全体をうまく並び替えてコンパイラが4列使い切っているかってことだろ

で、結局、人間がちゃんと4列使い切るような書き方をしてやらんと効率悪いってことだろ
157デフォルトの名無しさん:2007/09/04(火) 17:08:36
まあ、普通はdoubleで何も問題ない
floatでも特に問題はない

で、精度が高いのはdouble
158デフォルトの名無しさん:2007/09/04(火) 17:08:44
>>154
基本的に精度が何ビット必要かという視点の方が大事だと思うよ
16bit入力のFIRフィルタなら doubleはあきらかに無駄でしょ
159デフォルトの名無しさん:2007/09/04(火) 17:12:58
>>158
んなことねーよ
作業中の演算精度が高くて少なくとも時間以外の損は無い
160デフォルトの名無しさん:2007/09/04(火) 17:14:44
まあ、0から255までの結果しかいらないやつで
わざわざintを使わず演算するやつもいないしな
161デフォルトの名無しさん:2007/09/04(火) 17:15:24
結論

・それぞれ好きにやれ
162デフォルトの名無しさん:2007/09/04(火) 17:54:50
>>159
メモリサイズも当然違ってくるだろ。
あと、パソコン以外の環境にも移動させ易いのは大きなメリットだよ
163デフォルトの名無しさん:2007/09/04(火) 17:57:37
逆に言えば、PC環境では全く問題ないってことだろそれ
164デフォルトの名無しさん:2007/09/04(火) 17:59:30
もう、>>161が結論でいいよもう
165デフォルトの名無しさん:2007/09/04(火) 18:34:04
確かに
FADD命令 レイテンシ3、スループット1/サイクル
FMUL命令 レイテンシ5、スループット1/2サイクル1,2
FDIV命令 レイテンシ-単精度17サイクル、倍精度36サイクル、拡張精度56サイクル

割算以外では単精度にしても早くならないね。
166デフォルトの名無しさん:2007/09/05(水) 08:01:46
>153
お前の使ってるコンパイラが世の全てだと思ってるなら大間違い。

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

何でも倍精度は楽かもしれないが、不必要に使うのはどうかと思う。
IIRならともかく、16bit入力16bit出力のFIRで倍精度にするメリットはまったくないのだから
168デフォルトの名無しさん:2007/09/05(水) 10:08:36
>>167
将来doubleならレイテンシが短くなるかもしれない可能性もあるし、
将来も入出力が整数型16bitであり続ける保証も無いんだが?
今現在だって入出力形式でfloatはありうる。

未来の仮定の話をしたいのか、現状の話をしたいのかターゲットくらい絞れ。
169デフォルトの名無しさん:2007/09/05(水) 10:48:55
単精度だ倍精度だと騒げるのが羨ましいよ。ホント贅沢な悩みだと思うよ
MP3あたりだと16ビット、高級なもので24bit DSPの世界はまだそんなもの
170デフォルトの名無しさん:2007/09/05(水) 11:05:00
FA

>>161
171デフォルトの名無しさん:2007/09/06(木) 14:40:54
なんかよう分からんけど、これ関係してる?
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4.4.html
172デフォルトの名無しさん:2007/09/06(木) 15:59:25
>>171
>ほとんどのCでは、float型よりdouble型で計算した方が数倍高速になります
といいながら 基準にしてるのは SPARCだけ

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

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

結論としちゃ、自分が使いたいターゲットで使い易い型を使うってことでいいんじゃないの?
174デフォルトの名無しさん:2007/09/06(木) 20:54:08
それでも IIRフィルタの遅延器は単精度では厳しいからなあ
計算方法を工夫すればある程度カバー出来るけど
175( ´∀`) :2007/09/06(木) 21:05:28
( ´∀`)ノ
先生!
IIRフィルタの遅延器って、なんで高い精度必要なんですか?
精度低いとどうなるのですか?
176デフォルトの名無しさん:2007/09/06(木) 21:08:27
無限インパルス応答だから
177デフォルトの名無しさん:2007/09/06(木) 23:58:36
フィードバック=計算誤差が累積
でもま普通は(要求がシビアでなけりゃ)単精度でも十分じゃない?
178デフォルトの名無しさん:2007/09/07(金) 00:09:54
なんでもいいよ
場合によっては固定小数点数でも可
179デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/07(金) 16:35:54
>171
この人こんな記事書いてたのか、ターゲット絞れないバカの典型だな。
用途や環境にあわせられない奴は最適化語るなよ・・・
181最早厭われてはいるが:2007/09/07(金) 22:19:07
>>180
あの本を書いた時点で既に、自称翁だ。バカだなんてとんでもない。年寄りは労われ。
182デフォルトの名無しさん:2007/09/08(土) 03:05:32
多少配慮足らずでも、誰かの参考にはなる記事をネット上で公開してるんだし
それをバカの典型と言い切れるやつよりは敬われる権利あるよ。
183デフォルトの名無しさん:2007/09/08(土) 06:29:03
90年台に「floatよりdoubleの方が速い」とか嘘かかれても、参考にならないと思いまーすw
ましてや「敬われる」とかありえませーんwww
184デフォルトの名無しさん:2007/09/08(土) 06:41:17
floatよりdoubleの方が速いって言うのは、昔のプロセッサはfloatを内部で動的にdoubleに変換してたからだろ。
今はそういうのが無いからどう考えてもfloatの方が速いし、データが短い分キャッシュにも残りやすいから最適化も効き易い。
185デフォルトの名無しさん:2007/09/08(土) 07:25:16
どうでもいい。結局処理系による。
つか180の食いつきかた見ry
186デフォルトの名無しさん:2007/09/08(土) 07:33:02
うちのMacBook Pro (CoreDuo 2.0GHz) で試してみたけど、
floatよりdoubleのほうが速いぉ。
187デフォルトの名無しさん:2007/09/08(土) 07:34:34
Mac(笑)
188デフォルトの名無しさん:2007/09/08(土) 07:41:17
>>184
専用機はしらないけど、96年当時主流だったインテルもモトローラも内部80bitだよ。
内部で動的にdoubleに変換してる石って何?
189デフォルトの名無しさん:2007/09/08(土) 07:42:30
>>179 2次でノイズが出るのは リミットサイクルって現象だろ?

なんかリミットサイクルの出ないフィルタとか論文があるけど、理解出来ないんだよな
190デフォルトの名無しさん:2007/09/08(土) 08:09:02
>>188
内部80bitの場合も、floatよりdoubleの方がしばしば速い。
で、翁が想定しているのはSparcとx86だろ。
191デフォルトの名無しさん:2007/09/08(土) 10:37:39
処理速度が問題になるほどのタップ数の多い FIRフィルタならキャッシュに収まるかどうかの方が
速度を決めてしまうと思うけどな 命令サイクルがギガに対してメモリは1桁下なんだから
192( ´∀`) :2007/09/08(土) 13:21:01
( ´∀`)ノ
>>175-179 先生、有難うございました。
無限インパルス応答だからの回答に超感動しました。
精度が低いと、無限の過去の影響を細かく現代に反映できない。反映できないものは誤差として累積され、
現代を惑わす魍魎を生み出すことになる。怖いですね。
193デフォルトの名無しさん:2007/09/08(土) 14:48:57
double が速いのはC言語の math.h が double に対してしか定義されていなかったり、
自動昇格が多数発生するためでしょ

x87 の FPU は内部で 80bit に昇格するのがデフォだけど、それにしたって内部精度は命令を
発行して設定できるわけで、慎重に書かれたソースなら当時から float の方が速かったよ
194デフォルトの名無しさん:2007/09/08(土) 15:11:02
今ならc99のお蔭でhypotf()なんかが使えるからねぇ。
195デフォルトの名無しさん:2007/09/08(土) 15:30:39
今がどうだとか昔はどうだとかこのCPUではとかいつまでやってんだ?馬鹿馬鹿しい
196デフォルトの名無しさん:2007/09/08(土) 17:58:56
197デフォルトの名無しさん:2007/09/08(土) 18:14:47
>>195 じゃネタだしてよ。 >>189の話を膨らませるとかさ
198デフォルトの名無しさん:2007/09/08(土) 18:21:01
>>197
じゃあ>>189の話を膨らませろ馬鹿
199デフォルトの名無しさん:2007/09/08(土) 20:23:28
ようし、じゃグーグルさん使ってふくらませるぞ。

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

お!これだ
http://www.mk.ecei.tohoku.ac.jp/~yamaki/Publications/Sougou2007.pdf
>リミットサイクルのない 感度最小形ディジタルフィルタの合成

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

カルマンフィルタ? いや応用カルマンフィルタ って本は持ってるんだが・・・・こりゃ退散だ
200( ´∀`) :2007/09/12(水) 21:38:18
( ´∀`)ノ 、先生
WindowsメッセージMM_WIM_DATA(録音バッファの録音完了)を受けての処理手順について何ですけど
下記の1,2のどちらが正しいですか? 

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

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

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

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

// 録音バッファの再登録
waveInAddBuffer
201デフォルトの名無しさん:2007/09/13(木) 07:32:05
>>200 さあ? どっちが正しいかはしらないけど 2でやってて不具合にあたった事はないな
202( ´∀`) :2007/09/16(日) 12:46:06
( ´∀`)ノ
>>201、先生、ども、ども、有難うございました。そっそうなんですか...
なんか、waveInもwaveOut処理同様に>>200の1.のようにするのが正しいのかなと思たですけど
203デフォルトの名無しさん:2007/09/16(日) 13:16:46
204デフォルトの名無しさん:2007/09/16(日) 13:42:54
>>203
毎年見れば無問題
205デフォルトの名無しさん:2007/09/16(日) 13:50:12
それなんて3年峠?
206デフォルトの名無しさん:2007/09/16(日) 14:35:02
どうして周波数が低いと大きな音を出すのに、高周波と比べて指数的に高いエネルギーが必要なの?
蝸牛が低音を捕らえようとするとどうしても指数的に音量が小さくなってしまうからなの?
だったら低音は凄く耳に悪いね。難聴の原因だ。
207デフォルトの名無しさん:2007/09/16(日) 15:58:19
動かす媒質の量
208デフォルトの名無しさん:2007/09/16(日) 16:34:37
同じエネルギーを出すのに低いほどストロークが必要という事じゃないて
同じエネルギーを与えても、小さく感じるという事ならその通り
http://www.yacmo.co.jp/document/mame/images/mame07_2.gif
209デフォルトの名無しさん:2007/09/17(月) 00:58:06
100人飛べる大縄跳びで二重飛びしようとするとものすごく大変なのと一緒・・・ではないな
210デフォルトの名無しさん:2007/09/17(月) 01:52:12
>>207
マジレスありがとう。
1Hzで動く量と100Hzで動く量が違うのは当たり前ですね。
211デフォルトの名無しさん:2007/09/18(火) 06:37:18
>206
真面目に低音は耳に悪いので注意。
スピーカー飛ばす原因も低音の出力が高すぎるってのが多いし。
212デフォルトの名無しさん:2007/09/18(火) 07:12:34
スピーカーが飛ぶのは2つの現象

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

また、コントロールして同じV*Aを与えたとしても、ボイスコイルには質量があるから
同じV*Aを与えても振幅は低周波程大きくなる。 結果、大振幅で可動域を外れ物理的に変形してしまう。
213デフォルトの名無しさん:2007/10/05(金) 21:15:13
waveOutOpenの引数にコールバックを指定した場合、waveOutProcはスレッドセーフっぽくないんですが。
なんか現在のスレッドの処理に割り込んで呼び出されませんか?
WM_DONEで再びWaveOutWriteしようとするとかなりの割合でスタックが破壊されています。
214デフォルトの名無しさん:2007/10/06(土) 10:20:53
手順が間違ってる
215デフォルトの名無しさん:2007/10/06(土) 13:40:55
>>213
そういうもんだよ。
waveOutProcはスレッドセーフじゃないと、しっかり覚えておくといいんじゃない。

216デフォルトの名無しさん:2007/10/07(日) 01:54:40
どこにもスレッドに関わることが書かれてなかったような気がするんですが、スレッドセーフではないんですね
サウンド関連の生APIはむずかしいです
217デフォルトの名無しさん:2007/10/07(日) 05:24:12
でもそんなの関係ねぇ
218デフォルトの名無しさん:2007/10/07(日) 14:00:21
>>216
サウンド関連の生APIはむずかしいです
じゃなく
APIでプログラム作るのはとてもむずかしいです
が正しい。
219デフォルトの名無しさん:2007/10/08(月) 20:27:23
極めてどうでもいい揚げ足取りだな
220デフォルトの名無しさん:2007/10/08(月) 22:02:30
>>212
ブラウン管モニタを壊すにはデバイスドライバレベルでの制御が必要だけど
ひょっとすると、スピーカーはユーザープログラムで壊せてしまう可能性がある?
超低周波を出すとか、DCオフセットをかけ続けるとか。
221デフォルトの名無しさん:2007/10/08(月) 22:09:13
ドライバレベルで保護してないかな。してなきゃまずいね。
222デフォルトの名無しさん:2007/10/08(月) 22:26:59
ユーザープログラムも何も
曲作ってるときうっかり変な音を鳴らしてスピーカ飛ばすって時々あるもんじゃないの?
223デフォルトの名無しさん:2007/10/08(月) 22:51:08
ない
224デフォルトの名無しさん:2007/10/08(月) 23:03:21
俺もそんなに詳しいわけじゃないが、もちっとだけアナログの勉強をしてもいいと思うんだ。

スピーカーが飛ぶのは>212にあるようにスピーカーが想定以上の入力を受けた時。
なので出力波形だけでなく、アンプのパワーやボリュームによる所が大きい。
225デフォルトの名無しさん:2007/10/08(月) 23:16:44
>>220
直流を通すオーディオアンプなんてほとんど存在しないだろ。
アンプにデジタルで直結したとしても、
普通はスピーカ出力の直前にコンデンサが入ってたりしてHPF特性がかかるから、
スピーカに超低周波や直流がかかることはない。
226デフォルトの名無しさん:2007/10/08(月) 23:22:58
ああ、でも、直流そのものは通さないとしても、
ステップ関数とかガンと入れられたら階段部分はスピーカ的に結構きついかもな。
227デフォルトの名無しさん:2007/10/09(火) 20:02:28
ステップ関数は階段部分ではなく、その後のフラットな部分がキツイわけで
228デフォルトの名無しさん:2007/10/09(火) 20:33:14
フラットな部分はHPFで除去されるんじゃね?
229デフォルトの名無しさん:2007/10/09(火) 22:05:52
インパルス連続攻撃で敵を倒せないですか?
230デフォルトの名無しさん:2007/10/09(火) 22:10:36
231デフォルトの名無しさん:2007/10/09(火) 22:11:43
http://proforceone.web.fc2.com/ ⇒ Processed input data

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

http://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デフォルトの名無しさん:2007/10/09(火) 22:12:53
>>227-228
カットオフ周波数10Hzの1次HPFの場合、
ステップ関数のフラット部分は時定数0.016秒であっという間に指数減衰するね
233デフォルトの名無しさん:2007/10/09(火) 22:13:06
デジタルピークメーターテスト用 −12db標準音量サンプル
http://www.barks.jp/watch/?id=1000006257&wpl=wm&wbw=1m
http://www.barks.jp/watch/?id=1000006257&wpl=wm&wbw=300k
http://www.barks.jp/listen/?id=1000006259&lpl=wm&lbw=56k

フリーソフトの音量確認用 ステレオ・デジタル・メーターを使おう
赤い●をクリックする 次にスピーカーマークをクリックする 
標準のは−12dbぐらいで、−6dbを超えない様に音量調節する。
http://www.forest.impress.co.jp/lib/pic/music/soundedit/soundengine.html
234デフォルトの名無しさん:2007/10/09(火) 23:52:44
ageんなカス
235デフォルトの名無しさん:2007/10/30(火) 09:04:46
あのー、非常に初歩的なことなんですが、
このページでバッファは441000bytesといいつつ441000*2bytes
確保しているのはなぜなんでしょう?
http://homepage3.nifty.com/rio_i/lab/oss/002sound.htm
ただのミスだと思い、ループのところを
for ( i = 0; i < BUFSIZE/2; i ++ ) {
t = ( total / (BUFSIZE/2) ) * i;
と変えてみると、出力周波数が880Hzになってしまいますし。
236デフォルトの名無しさん:2007/10/30(火) 10:57:38
ただのミスだと思うよ。 でもあなたの修正が間違っている
237デフォルトの名無しさん:2007/10/30(火) 11:29:54
>>235
量子化ビット数が16だから3528000[bits]なら441000[bytes]だけれど、こう計算した方がわかりやすい。
44100[Hz] * 5[sec] = 220500[samples]
だから、#define BUFSIZE 220500 とすればいい。
238デフォルトの名無しさん:2007/11/01(木) 04:02:20
リアルタイムのスペアナ表示を作りたい。
FFTしてlog(re*re+im*im)的なことをして振幅を対数軸にするのはok。
問題は、周波数軸を対数にしたいのだが、どうするべき?
低い方は補完なので適当にごまかすとして、高い方は間引いてしまうと情報が失われるのが
いやなので避けたい。
好みとしては、ピンクノイズ(-3dB/oct)を入力したときに表示がフラットになりたい
のだが(きっと聴感に近いので)
絶対値の和? 平均?
239デフォルトの名無しさん:2007/11/01(木) 04:42:24
普通、Octave band pass filter bank をかけるかな。
240デフォルトの名無しさん:2007/11/01(木) 06:44:19
>238
ロスしないってんなら最大使うとか。
241デフォルトの名無しさん:2007/11/01(木) 07:50:06
>>238
前半、俺は、
たとえば5点あったら、その最大と最小と5個平均の3つを求めて
最大から最小への薄い垂直線を引いておいて
その上から平均を結んた線を引いてる。

こうやるとホワイトノイズでフラットになる。
ピンクノイズでフラットにするのは気持ち悪いように思うけど、
実現したいなら-3dB/Octの補正をかければいいのでは?
242デフォルトの名無しさん:2007/11/01(木) 09:49:01
>>238
用途によると思うよ。
ピーク検出したいなら、ピクセルに対応するバンド内で最大値かな。

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

>>241
Windows Media Playerのバー表示がそんな仕様じゃなかったけか
243デフォルトの名無しさん:2007/11/01(木) 13:47:13
>Octave band pass filter bank
なるほど、FFT以外のやりかたもあるのね。検討してみます。

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

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

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

バンド毎に log(sum(sqrt(re*re+im*im))) で大丈夫なはず。
DCTなら log(sum(abs(re)))
245デフォルトの名無しさん:2007/11/01(木) 21:02:04
>こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット

ピンクノイズの、だよね。
ありがとう〜
246デフォルトの名無しさん:2007/11/01(木) 21:46:59
>>245
> ピンクノイズの、だよね。

いや、ホワイトノイズ
247デフォルトの名無しさん:2007/11/01(木) 21:52:15
説明不足だったかも。すまん
フラットの意味によるんだけど、両対数軸上で直線って
意味なら>>245でホワイトでもピンクでもフラット。
直線かつ水平って意味なら>>245ではホワイトのみフラット。
248デフォルトの名無しさん:2007/11/01(木) 23:22:35
直線かつ水平のつもりでした。>フラット
あいまいな言葉を使ってごめんね。

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

高域にいくにしたがって加算する数が増えるからホワイトノイズは右上がりに
なりませんか?
249デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/11/02(金) 02:46:03
>>249
> 1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、
> 結果は+6dB/octの右上がりになるはず。

データ数が増えてもデータ値は高域に従って指数的に減っていくので、
よほど高域強調されてない限り合計しても右上がりにはなりません。
251デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/11/10(土) 11:42:09
CD-TEXT の規格か仕様か、これを読み込むサンプルのあるサイトか分かりませんか。

ぐぐる用語でも分かると助かります。お願いします。
255デフォルトの名無しさん:2007/11/10(土) 12:00:14
>>254
REDBOOK
256254:2007/11/10(土) 22:29:04
>>255
有難うございます。お陰で参考になりそうなのを1つ見つけました。
英語版で 1996/12月ソニーが配布したものですが、データ構造についても
書いてあるようです。

余談ながら、ソニーは普及させたかったような雰囲気。
添付のソフト(3本)用に VB4 runtime routine が付いている。
257すみません素人です:2007/11/20(火) 11:00:15
最近卒研でDSK使って音声処理する実験始めたんですけど、
高周波や低周波だけカットするLPFやHPFのプログラム(C言語)を組んだんですが、
逆に高周波とか低周波だけ増幅させるプログラムって書けるんでしょうか。
本やネットではちょっとわからなかったので、式とかサイトとか知ってる人がいたらどうかお願いします。
258デフォルトの名無しさん:2007/11/20(火) 11:10:17
カットしたのを元のに足す引く
259デフォルトの名無しさん:2007/11/20(火) 12:28:09
>>258さんの通り、
高周波だけをカットした結果を元の信号に(遅延・位相を合わせて)足せば低周波だけ増幅出来るわけだけど


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

260デフォルトの名無しさん:2007/11/20(火) 12:43:36
>>257
増幅したいところ以外をカットして全体のゲインを上げる
あとは双二次で検索
261デフォルトの名無しさん:2007/11/20(火) 12:58:40
まあ、あと、増幅は、ノイズまで増幅しちゃうしね。
262257:2007/11/20(火) 15:41:55
なるほど、カットするプログラムを応用するんですね!どうりでみつからないわけです…
それではオーバーフローやノイズの問題も考えつつ取り組んでみたいと思います。
皆さん、丁寧なご回答ありがとうございました。
263デフォルトの名無しさん:2007/11/20(火) 21:37:12
カットして増幅とか、カットしたのをもとに足す引くとかでなくて、
ローシェルビング、ハイシェルビングフィルタでしょ。
双二次にはちがいないけど。
いわゆるトーンコントロールのロー・ハイで一般的なやつね。

ブーストするんだから、振幅に気をつけなきゃいけないのは当然
264デフォルトの名無しさん:2007/11/20(火) 21:52:08
>>263
内部的には同じことじゃね?
265デフォルトの名無しさん:2007/11/21(水) 04:06:49
>>264
まぁこのあたりは言い方の問題も結構あって、カットって言った場合に
シェルビングEQによるカットなのか、ハイパス・ローパスによるカットなのか、
ここまでのレスでもみんなバラバラの前提で喋ってたりするからねぇ。

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

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

チラ裏失礼
266デフォルトの名無しさん:2007/11/21(水) 06:39:16
>高周波とか低周波だけ増幅させる

カットした結果と元信号の足し引きみたいなのは、位相や遅延を考慮しないといけないから
普通わざわざやらないよね?
267デフォルトの名無しさん:2007/11/21(水) 07:09:13
でも、数式を良く見ればf0が同じなら分母は固定で、分子だけが違う。
で、分子の変数は3つなので、
HPF/LPF/BPFの3つの組み合わせで何でも作れる事になる

ただ、ピーク位置が違うので多少f0は調整しなければいけない。
268デフォルトの名無しさん:2007/11/21(水) 07:58:32
HPFとBPFはLPFの組み合わせで作れるんじゃね
269デフォルトの名無しさん:2007/11/21(水) 08:14:14
実は2次の同じf0の HPF+LPF+BPF を加算すると理論的にはフラットになる
もっとも、計算精度が有限だからノイズは出るけどね。

だから1-HPF は LPFではなくて LPF+BPFになる。
その場合の特性は -6dB/Octではなくもっと悪い(1次の特性に近い)
270デフォルトの名無しさん:2007/11/21(水) 08:30:47
それシェルビング1っ個やるのよりメリットあんの?
271デフォルトの名無しさん:2007/11/21(水) 08:37:47
特性を可変したい場合は実際に分割するけど(可変出来るのは特性の上下だけでf0は無理だけど)

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

バンドを調整する場合、綺麗にポコンと上下させるにはQも調整しないと
上下非対称に
273デフォルトの名無しさん:2007/11/21(水) 09:50:47
言葉で動作原理を述べるのは簡単だが、それをプログラムで作るのが分からない。
274デフォルトの名無しさん:2007/11/21(水) 11:35:53
藻前ら、先人の知恵はちゃんと活用しようぜ。

Robert Bristow-Johnson氏のCookbookの式を使えば、2次IIRフィルタ1個だけで
ピークEQもシェルビングEQも実現できるぞ。
ttp://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
275デフォルトの名無しさん:2007/11/21(水) 11:47:05
やっぱり、HPF+BPF+LPFの合成だね。 BPFは加重平均だ。

公式を見るだけじゃなくて原理が判ると多少楽しいよね。
276デフォルトの名無しさん:2007/11/21(水) 13:02:41
>やっぱり、HPF+BPF+LPFの合成だね。
どーしてそうなる?
HPF+BPF+LPFの合成だと4次以上にならないか?
277デフォルトの名無しさん:2007/11/21(水) 14:20:52
>>274
それが263とかがいってる双二次フィルタですよ。
先人の知恵どころか、いま話に出てるEQなどでいちばん一般的な方法かな。
わざわざフィルタ合成みたいな概念でやるなんて聞いたことないなあ。
278デフォルトの名無しさん:2007/11/21(水) 21:33:53
>>276
合成じゃなくてフィルタ出力の加算のことを言ってるんじゃない?
lpf(bpf(hpf(x))) じゃなくて lpf(x)+bpf(x)+hpf(x) (式は適当)
普通合成っていうと前者だから>>275はかなり紛らわしいけど。
279デフォルトの名無しさん:2007/11/24(土) 01:28:36
根本的なことを聞きますが、LPFを作成する場合、

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

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

この2通りのやり方は理想的には全く同じ挙動になるのですか?
今までFIRを使ったやり方が原理的に良く分からなかったので、FFTを使ったLPFを
作成していたのですが(周波数帯域の通過が直感的によく分かるので)、
最近勉強しなおしてFIRフィルタについて学んだところ、
時間領域において計算するだけでそのまま出力信号が得られるのが
非常に不思議に感じ、質問させていただきました。
280デフォルトの名無しさん:2007/11/24(土) 01:33:20
FFTのことも良く分かってないんじゃないの
281デフォルトの名無しさん:2007/11/24(土) 01:34:01
何度もすみません。追記です。

もしそうであれば、両者の特徴として
FIRの方が処理速度が速いが、後者の方が精度が高い(遷移周波数帯域幅が狭い)結果が得られる
という認識であってますか?
282デフォルトの名無しさん:2007/11/24(土) 02:14:06
FIRフィルタをFFTで高速計算させる事が出来るけど
それをやってるなら、そういう事は書かない筈だけどな

FFTでフィルタを作った場合、バッチ処理でやるかブロックで処理する事になる。
ブロックで処理するとブロック同士がつながらない問題が出てくると思うのだが・・・・
283デフォルトの名無しさん:2007/11/24(土) 02:56:12
>>282
ヒント: MDCT
284デフォルトの名無しさん:2007/11/24(土) 03:18:06
>>279
時間領域における入力信号とFIR係数列の畳み込み演算は、
周波数領域におけるFFTされた入力信号とFFTされたFIR係数列の各項乗算に対応する。
つまり時間領域でのFIRフィルタ係数をFFTしたのが周波数領域でのフィルタ特性。

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

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

周波数領域での直接設計なら遷移周波数帯域幅も何もスパっと切れるけど、
実際にはあんまり急峻に切ると時間領域のFIR係数の収束が悪くなって(要するに
Sincに近づく)、逆に打ち切り誤差が出やすくなったりして、そう簡単にはいかない。
285デフォルトの名無しさん:2007/11/24(土) 09:01:03
>>283 MP3でやってるように1/2 づつ窓関数をかけてズラシテフィルタをかけた後で合成すれば誤魔化せる
という事なんだけどうけど、やっぱり低い周波数にひずみが出るけどなあ
286デフォルトの名無しさん:2007/11/24(土) 11:06:17
「ズラシテ」フィルタってなんだろと思ったのは漏れだけでいい。
287デフォルトの名無しさん:2007/11/24(土) 20:44:38
>>285
ヒント: Time Domain Alias Cancellation (TDAC)
288デフォルトの名無しさん:2007/11/24(土) 23:33:29
ズラシテフィルタ=comb filter
289デフォルトの名無しさん:2007/11/25(日) 00:15:00
>>288
面白いがこの流れでそれはないww
290デフォルトの名無しさん:2007/11/25(日) 10:38:11
こういう事だろ? たとえばFFTのサイズを4096としたら
1024毎に分けて、1ブロック毎に、 2ブロックを取ってくる。
それに窓関数をかけるけど、このときに (1-cos)/2 みたいな 1ブロック分ズレたものと加算するとフラットになるような窓関数を使う。
で、これにFFTをかけてフィルタをかけて、逆FFTして、1ブロック前の分と加算して出力してゆく。

問題は、フィルタをかけて戻した結果が、はじめと終わりがキチンと0になって戻ってればいいけど
そうじゃないとこれがノイズになる。
だから再度窓関数をかけられるように 最初にかける 窓関数を √(1-cos)/2 つまり半角公式でsinになるわけだけど
これを2度かけると確かに戻るけど、窓関数としての性能がだいぶ悪くなる
291デフォルトの名無しさん:2007/11/25(日) 13:16:44
>>290
短時間FFTだね。2回掛ける方法の場合、有名どころがsin窓とかVorbis窓。
でも、FFTサイズ4096なのになんで1024ずらしで使ってるの?
2048ずらしで十分だと思うけど

MDCTで使われるTDACは、処理ブロックを重ね合わせるまで同じだけど、最初の段階で、
重ね合わせた部分でプリエコー・ポストエコーが最終的に相殺されるように処理するのが違う。
292デフォルトの名無しさん:2007/11/25(日) 13:21:33
あ、あと、窓関数の性能が悪いっていってるけど、
目的に合わせたトレードオフだから、一概に良い悪いは言えないと思われ
周波数分解能なら矩形窓最強ってことになる。
293デフォルトの名無しさん:2007/11/26(月) 00:51:35
音響レンズのシミュレーションをしてみようと思うのですが
どこから手を付けていいのやらわかりません
294デフォルトの名無しさん:2007/11/26(月) 00:56:29
いまの話では用途が解析じゃないから、矩形窓はありえないでしょうけど
295デフォルトの名無しさん:2007/11/26(月) 01:23:37
用途以前にまず何の性能か言わないと意味無い
296デフォルトの名無しさん:2007/11/26(月) 19:59:27
AGC、オート・ゲイン・コントローラが必要で、Waves MaxxVolumeは高くて
買えないため自作(VSTでもオフラインでも)しようかと思うんですが、
原理としては固定ゲイン+超長アタック/リリース(10秒〜)の
先読みリミッタという理解で正しいでしょうか?
297デフォルトの名無しさん:2007/11/26(月) 21:38:30
AGCってけっこう大雑把な呼び名で、
単にゲインアップ+リミッターだったり、RMSコンプ+リミッターだったり、
もっと別のアイデアが入っていたり、、、いろいろのような
思うように作ったらいいんでは。
ある程度まともなの作るなら先読み(リアルタイムなら出力の遅れだけど)は必要だろね。

ま、フリーのコンプやリミッターもいろいろあるけどねえ。
298デフォルトの名無しさん:2007/11/26(月) 23:35:05
どこで質問すればいいか分からなかったので、ここで質問させてください。
フーリエ変換の本を読んで、自分もWAVEファイルを読み込んで試してみたいと思ったのですが、
肝心のプログラミングがさっぱり分かりません。
Turbo C++でやろうと思っているのですが、WAVEファイルの読み込み方も、読み込んだデータの処理の仕方も
実際にFFTを行う方法も全然分かりません。
C++自体の使い方は基本的な命令文は知っていますが、マルチメディア関連はやったことがないです。
実際のプログラミングの仕方や、参考になる本など教えていただけたら幸いです。
299デフォルトの名無しさん:2007/11/27(火) 00:00:52
あきらめたら?
300298:2007/11/27(火) 02:06:25
ありがとうございました。もうあきらめます。
301デフォルトの名無しさん:2007/11/27(火) 03:05:16
waveの読み込みぐらいgoogleに聞いてみればいいのに
302デフォルトの名無しさん:2007/11/27(火) 03:32:44
303デフォルトの名無しさん:2007/11/27(火) 03:46:57
釣りだろ? jk
304デフォルトの名無しさん:2007/11/27(火) 06:14:46
>>297
TDの最後で、全体の音量をオートメーションで調整していくのが面倒、
というのがあって、楽したいなぁと思いまして。
とりあえず先読みリミッタ式で作ってみたところ、やはりレベルの急な変化にはついて
いけないことが多いですね。かといってアタックを短くすると数秒のポンプになりますし。
大雑把に手動調整、細かいところは自動調整って形で運用してみます。
ありがとうございました。
305デフォルトの名無しさん:2007/11/27(火) 09:15:55
もしかしてみなさんはFIRだのFFTだのと言った物は既成の物があってそれを利用しているのでしょうか?
306デフォルトの名無しさん:2007/11/27(火) 10:03:54
>>305
定番もののソースはどこにでも転がってる。流用してるやつもいるだろうよ。
307デフォルトの名無しさん:2007/11/27(火) 11:22:13
パソコンの場合、転がってるのを使ってもいいし、自作しても何倍も速度が違わない

DSPなんかの場合、メータが必死ならFFTのライブラリなんかも公開してくれる
そうでないと当然、自分で作りこまないといけない。
308デフォルトの名無しさん:2007/11/27(火) 13:08:48
理系じゃない高校生ぐらいの数学知識でフーリエの冒険読んでみて5日くらいでFFT書けたよ。
多少あやふやなとこもあったけど。
ただしゲーム作れる程度のC言語の知識はあった。
実際にやってみて詰まったところ質問しないと意味ないよ。
309デフォルトの名無しさん:2007/11/27(火) 14:34:09
社会人になってだんだん時間なくなって、ライブラリ探すところから
始めるようになった。どうしても無かったり、仕様がゴミだったら自分で書くけどね。
目的が、使いたい機能を最小の手間で作る(で、使う)、になってるからなぁ。
310デフォルトの名無しさん:2007/11/28(水) 15:41:45
>>308先生
そのFFTソースを開示してください
ついでに chirp-Z transformも作ってください
311デフォルトの名無しさん:2007/11/28(水) 21:32:36
単にFFTを使いたいだけだったら(プログラム作成が目的でないのなら)
Scilab か GNU Octave を使ったら?
FFT機能は標準装備だし、確かWAVファイルの読み書きも出来たはず。
312デフォルトの名無しさん:2007/11/29(木) 00:00:55
まそれいっちゃうと他にも選択肢はたくさんあるけどな。
Mac OSなんかはSIMD使ってアクセラレートされたFFTライブラリが標準で提供されてたな。
313デフォルトの名無しさん:2007/11/29(木) 03:37:54
FFT(笑)
314デフォルトの名無しさん:2007/11/29(木) 04:39:36
308じゃないが、だいぶ昔に書いたFFTのコードとサンプルアプリをようやっと発掘してきたが・・・そういう空気じゃないなw
315デフォルトの名無しさん:2007/11/29(木) 10:09:13
FFTのライブラリって結構いっぱいあるけど
定番とかオススメってある?
316デフォルトの名無しさん:2007/11/29(木) 10:19:50
定番は自作。
オススメも自作。 
FFTそのものは20行もあれば書ける。
ビット逆順とか入れても40行。
面倒だったり頭を悩ませるのはソコじゃない。
317デフォルトの名無しさん:2007/11/29(木) 10:35:29
318デフォルトの名無しさん:2007/11/29(木) 11:58:53
完全自作にこしたとはないけれど、
十分な完成度というか性能というか(速度面とか)出すとこまで含めると、
それなりに時間と労力いるよね?
そこまでコミットできないし、結果が得られれば良いヘタレな俺は
やっぱりライブラリ活用でし・・・

(でもそのためのライブラリ
319デフォルトの名無しさん:2007/11/29(木) 12:14:43
コード見れば判るだろうけど、
FFTそのものの速度はチューニングしてもしなくても2倍も違わない。
というかチューニング出来る要素はそんなにない。
仮に2倍違ったとしても、パソコンの場合、それでどうしたのって程度の差でしかない。
リンク先のように最大の素数を求めてるとかならともかくさ
320デフォルトの名無しさん:2007/11/29(木) 12:30:14
SIMD化するだけで数倍速くなるよ。
ただ、PC上での話なら5年前のCPUですら素のサンプルをそのまま使っても十分な性能出てたけどね。
321デフォルトの名無しさん:2007/11/29(木) 17:26:14
Delphi使いがこのスレにたまにいるようだけど、Delphiでサウンドプログラミングなんて邪道だろ
322デフォルトの名無しさん:2007/11/29(木) 20:53:08
ナンセンス
好きなの使えばいいじゃないの
323デフォルトの名無しさん:2007/11/30(金) 00:00:45
FFTで何をするか、に興味がある
FFT実装には興味ないなぁ
324デフォルトの名無しさん:2007/11/30(金) 01:52:15
Playerでグラフィックイコライザみたいな
棒グラフがぐにゃぐにゃ動く画面は
リアルタイムにFFTしながら描画してるのでしょうか?
325デフォルトの名無しさん:2007/11/30(金) 02:43:33
そうですけど
326デフォルトの名無しさん:2007/11/30(金) 12:15:32
MP3の場合、FFTというかある程度の周波数情報は復調時に得られるのかも
あと、グライコそのものはFFTでやるより、バンドパスや同調(Q無限大の)フィルタでも負荷量は
バンド数によっては小さい。
327デフォルトの名無しさん:2007/11/30(金) 17:10:11
きっちりと理論の実装をするのが得意なやつもいれば、
理論はそこそこ、それらを利用したアプリケーションとか書くのが得意なやつもいるよな。
あんがい両方に長けてるやつって少なかったり
328デフォルトの名無しさん:2007/11/30(金) 21:46:30
糞文系が理系を支配する構図ってやつ
329デフォルトの名無しさん:2007/11/30(金) 23:31:49
>>326
低域で精度を得ようとするとタップ数が増えるからFFTというかFIR系はつらいね…
グライコならフィルタした音聴くわけじゃないし、パワーだけ得られればいいから
位相回りまくってもIIR系で急峻に落とす方が計算量としては少なそう

>>327
正しい分業の姿ですな
330デフォルトの名無しさん:2007/12/01(土) 02:39:10
>328
327は本来両方とも理系の担当分野だと思うけどな。
つか文系は基本的にある程度以上の国家資格持ってるのならともかく大半は高卒の方がマシな連中だからな。
331デフォルトの名無しさん:2007/12/01(土) 02:58:11
文理ではなく理学と工学の関係に近いかな
332デフォルトの名無しさん:2007/12/01(土) 03:17:09
学の無い人は壁を作りたがる
333デフォルトの名無しさん:2007/12/01(土) 05:27:54
理系は文系をカバー可能だが
文系で理系をカバーできないやつは使い物にならない
しかしそういうのに限って
他人だまして金儲けるのだけはうまかったりする
でスレ違いな訳だが
334デフォルトの名無しさん:2007/12/01(土) 06:18:12
理系でも文系でもいいけど
こんなところでストレスぶちまけないでよw
335デフォルトの名無しさん:2007/12/02(日) 15:29:45
社会を支配しているのって文系の奴ら何だからね。
336デフォルトの名無しさん:2007/12/03(月) 02:45:02
FFTSSってのがあるな
暫くこれ使わせてもらおう
337デフォルトの名無しさん:2007/12/03(月) 05:59:45
大浦氏のCのやつをラッパークラス書いてC++で使ってる
338デフォルトの名無しさん:2007/12/05(水) 10:53:18
グライコならラジオの原理で言う、超再生方式が比較的効率がいいよ
表示だけなんだから処理時間が足りないなら間欠的にやればいいわけだし
339デフォルトの名無しさん:2007/12/05(水) 12:54:29
IIRのバンドパスとかとはどうちがうの?

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

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

分子が1だから掛け算の回数がそれだけ少なくなる。
バンド幅は検出時間で調整する。 つまり低周波程周期に比例して長くする。
341デフォルトの名無しさん:2007/12/05(水) 13:18:05
ただ、間欠的にデータ取るから窓関数は必要。だからそれも足したらバンドパスと変わらないけど
間欠的にデータが取れるから処理時間が余った時だけとかの調整が可能なのが有利。

バンドパスでも間欠的にデータ取れるけど、その場合だって結局窓関数かけないといけないから。
342デフォルトの名無しさん:2007/12/06(木) 01:19:10
バンドパス
窓とかかけないでも、低いほうの周波数帯だったら
1サンプル飛ばしでsr半分として、2サンプル飛ばしでsr1/3として、みたいなかんじで
計算すりゃよくない?

あくまで精度は重要でなくて、少しでも軽く処理したいって前提だけど
343デフォルトの名無しさん:2007/12/06(木) 01:40:20
あぁでもエイリアスひろっちゃうかな、、
344デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/12/09(日) 02:20:33
マルチバンドコンプ用に帯域分割フィルタを作りたいんだけど、
線形位相・完全再構成な不等分割フィルタバンクの設計法を調べるので方向性合ってる?
346デフォルトの名無しさん:2007/12/09(日) 02:29:32
>> 279
>> 345
オープンソースのがすでにあるぞ。車輪の再発明はやめなはれ。
http://freeverb3.sf.net/
FIRのLPF/BPF/HPFとかも入ってるみたい。
347デフォルトの名無しさん:2007/12/09(日) 02:39:55
JWAVEを聴きながらVeohを見てみた
http://youtubetv.atspace.com/?&VeohSpotlight!&JWAVE@VeohWideTV
348デフォルトの名無しさん:2007/12/09(日) 11:36:04
>>336
FFTSSはライセンスがGPLじゃないんだね。
上記の著作権情報をソース/バイナリどちらであっても
含めないといけないとあります。
ダウンロードに名前とemailと目的まで入力か...
349デフォルトの名無しさん:2007/12/09(日) 15:41:18
>>346
ども。参考にするよ。FFTとかFIRの仕組み自体の実装には興味ないんだけど、
設計法は勉強したいと思ってて、そのあたりは結局のところ自分で作らないと
勉強にならないから自分でやるよ。

ちなみに、車輪の再発明って物事の実現効率しか見てなくて、
逆に学習とか、車輪の再発明そのものが必要になる場面もあったりする。
ツッコミいれるときはその意図に注意した方がいいかも。
(今回はそのあたりの前提を言ってなかったんですまんかった)
350デフォルトの名無しさん:2007/12/09(日) 17:15:08
学習目的のそれは、再「発明」とは違うんじゃないかな。
再開発とか再実装あたりが適切じゃないかと思う。
既存の発明の情報を得て、理解した上で実際にやってみるって作業でしょ。

再発明ってのは、まだどこにも存在してないと思い込んで、既存の発明を参考にせずに一から自分で作る話。
実装とか設計以前の着想とか発案から始めて、先人達がとっくに解決したような問題で延々悩むことになる。
まず調べろ、ってこと。
351デフォルトの名無しさん:2007/12/09(日) 17:52:01
>>350
車輪の再発明、ってのは単に言い回しでそうなっているだけで、
最初から>>350の言う厳密な発明よりも広い、開発をも含む意味で使われてるよ。
ほぼ同じ文脈で使われるNot Invented Here症候群(自前開発以外を採用しない)の場合も、
厳密な発明って意味の他に開発の意味も含むし。

とりあえず、バタワースあたりの振幅特性だけもってくる直接設計法で
一番上のバンドで誤差吸収ってのを考えた。
352デフォルトの名無しさん:2007/12/09(日) 20:43:06
>> 345
CiNii - 線形位相完全再構成不等分割フィルタバンクの設計
CiNii - 線形位相完全再構成不等分割FIRフィルタバンクの設計
論文みたいだね。やくにはたちそう:)

353デフォルトの名無しさん:2007/12/09(日) 22:09:36
>>352
ありがとー! 論文は読み慣れてる(分野違うけど工学系)んで問題ないです。
FIRの方をざっくり読んだけど、他の方法で漸近的に設計しておいて
最後の1or2バンドで補償してる感じかな……。
354デフォルトの名無しさん:2007/12/28(金) 04:01:10
>>293
音響レンズってなんだ??
355デフォルトの名無しさん:2007/12/28(金) 04:03:00
すまん自己解決


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


--------------------------------------------------------------------------------
(解答-18)
音響レンズとは探触子の圧電素子より前面に配置してある構造体で、音波を収束させる目的を持つ。
生体での音速に比べ遅い音速約1000m/secのシリコンで出来ている。
凸面形状をとることにより探触子から出た超音波を収束させることが出来る。
もし、音響レンズに生体より早い音速を持つ物質を使用した場合は
凹面形状をとらないと探触子から出た超音波を収束させることが出来ない。
356デフォルトの名無しさん:2008/01/03(木) 16:51:20
DSPの経験が全くないのですが、2nd order Butterworth lowpass filterの、カットオフ周波数(1)での、ある周波数(2)の入力の位相の変化ってどうやったら求められますか?
ディレイのフィードバックで発振させて、フィルター入れたらピッチが変わって音痴になってしまいました。位相ズレ分のディレイを補正したいんです
357デフォルトの名無しさん:2008/01/04(金) 07:24:01
普通はZ変換にw*i を突っ込めば出ますが?

でもディレイ入れるだけでピッチが変わるって・・・・何かその前にお間違えでは?
358デフォルトの名無しさん:2008/01/04(金) 12:35:24
サウンドプログラミングって面白いね!
359デフォルトの名無しさん:2008/01/10(木) 00:29:29
PCM出力用のバッファからリアルタイムでスペクトルを取得する為に
自分でコーディングしたFFTに short(signed 2bytes) 要素数65536 を処理させたんですが、
頑張っても 0.22 秒ほど掛かってしまうようです。
車輪の再発明をするのもあれなので、「FFTをするなら普通はこれを使う」といった手段、
例えばもっと高速に動作する既成dllやライブラリなどは無いでしょうか?
360デフォルトの名無しさん:2008/01/10(木) 00:50:34
速度を求めるならfftw
俺は呼び出しの簡単さ優先なんで大浦氏のFFTライブラリ
(それでも自分で書くよりも断然速い)
361デフォルトの名無しさん:2008/01/10(木) 03:08:34
fftwなら、MKLにも同梱されているしちょっとした修正でCUFFTにも移植可能だし、
使っている人が多いと言うのも魅力だね。後は、2の冪に縛られずに済むのも手抜きにはいい。
362デフォルトの名無しさん:2008/01/10(木) 07:21:11
>>359
整数ではなく浮動小数点でデータを与えた方が変換時間が短いと思う
もっと少ないサイズでやるなら固定小数点も考えられるけど、2^16個では固定小数点では無理

あと、そもそも1秒分以上のサンプリングデータを0.22秒で処理出来ているのだから十分高速だと思うよ。
スペクトル表示が目的なら 4096か8192点で十分でしょ。
363デフォルトの名無しさん:2008/01/10(木) 07:22:50
>>359 SINのテーブルや、ビット反転アドレスなんかのテーブルは事前に作ってるんだよね?
これを毎回作ったり、sinを毎回計算させてたら遅いよ
364デフォルトの名無しさん:2008/01/10(木) 08:34:20
>359
この手の最適化話するならマシンスペックと施した最適化くらいは書いとけ、といつも思う。
365デフォルトの名無しさん:2008/01/11(金) 00:37:22
>>363
>これを毎回作ったり、sinを毎回計算させてたら遅いよ
CUDAなら毎回計算した方が早い罠。
366デフォルトの名無しさん:2008/01/12(土) 13:05:31
OpenALを使って3Dサウンドをやってみたいのですがググって見ても断片的なblogの記事くらいしか
日本語資料が見つかりません
どなたか日本語の各種ドキュメント、書籍等をご存じの方がおりましたら教えていただけると助かります
よろしくお願いします
367デフォルトの名無しさん:2008/01/12(土) 14:12:10
368デフォルトの名無しさん:2008/01/12(土) 17:23:21
義務教育受けてないなら諦めろ
受けてるならなんとかなる
369デフォルトの名無しさん:2008/01/13(日) 15:41:44
ジュニアハイスクールレベルの英語教養を舐めるなよ
370デフォルトの名無しさん:2008/01/13(日) 16:12:26
大丈夫、いみじくも「ジュニアハイスクール」と呼ばれるところに行っている生徒程度の英語教養があるなら。
371デフォルトの名無しさん:2008/01/15(火) 13:08:52
フェーズメータを作成しようと思うのですが、知識が無くて
困っています。参考文献や参考になるサイトがあったら教えてください。
372デフォルトの名無しさん:2008/01/15(火) 13:19:09
フェーズメータって事は、サイン波オシレータと
そのオシレータとの位相差を表示したいって事?

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

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

位相の測定は出力オシレータを90度位相差が出る sin/cosのベクトル積型にしておいて
sin/cos成分との掛け算で出すのが一番簡単だと思うよ
373デフォルトの名無しさん:2008/01/20(日) 13:17:27
>>372ありがとうございます。
"sin/cosのベクトル積型"というのはどういう
事なのでしょうか。すみません馬鹿で。
374デフォルトの名無しさん:2008/01/20(日) 16:23:40
LRでリサージュ描くんじゃだめ?
http://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%B5%E3%83%BC%E3%82%B8%E3%83%A5%E6%9B%B2%E7%B7%9A
(なんか根本的に勘違いしてたらごめん。)
375デフォルトの名無しさん:2008/01/21(月) 09:42:03
ベクトル積じゃなくて回転行列との掛け算だろう
| c , s |
|-s , c |
376デフォルトの名無しさん:2008/01/25(金) 01:10:48
( ゚д゚)ノ ハイ!シツモンデス!
文書では上手く説明できないと思ったので、グラフ描きました。
http://www-2ch.net:8080/up/download/1201189698030081.7mcqr5

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

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

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

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

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

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


宜しくお願いします。
377デフォルトの名無しさん:2008/01/25(金) 01:38:35
位相という言葉すら知らずにいきなりデジタルフィルタに手を出す時代なのね・・・
378デフォルトの名無しさん:2008/01/25(金) 02:49:15
馬鹿は際限無く馬鹿ということ
379デフォルトの名無しさん:2008/01/25(金) 03:25:54
>>378

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

しかし位相も知らずにIIRとかどうやって知ったんだろ...。
380デフォルトの名無しさん:2008/01/25(金) 05:00:54
381デフォルトの名無しさん:2008/01/25(金) 09:12:27
>>376
IIRフィルタに限らずデジタルフィルタは Z変換して、そこにe^(iw) をぶち込むと
周波数特性が出ます。
周波数特性は、 複素数の絶対値がゲインで、複素数の角度が位相です。

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

その後でしたら説明出来ますが、今は説明が難しいです。
382デフォルトの名無しさん:2008/01/25(金) 09:16:58
なお、最後の質問は、Z変換を理解した段階でも、まだ答えるのは難しい問題です。
実用的には十分ゆっくり変更するなら大丈夫ですけどね
383376:2008/01/25(金) 22:19:20
>>377
>>379
SCILAB使ってます。便利な世の中です。

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

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



>>378
罵倒するのはいいけど、せめて1単語でもヒント書いてよ
でないと、オレと同階層の住人。
384デフォルトの名無しさん:2008/01/25(金) 22:21:14
>>381 相違のズレ>位相のズレ

“そうい”ってなんだよオレ...orz
385デフォルトの名無しさん:2008/01/25(金) 22:55:33
>>384
僧衣でググれ
386デフォルトの名無しさん:2008/01/25(金) 23:18:18
まあ、なんだ。せっかくのスレなんだしギスギスしないでも...

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

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

でも、実用的には、ひたすらユックリ変更するという事で逃げればいい。
390デフォルトの名無しさん:2008/01/26(土) 13:26:38
よくわかってないんだけど、1サンプル毎に係数をゆっくり変更と言ってるのって、
パライコのフェーダー操作したときの話?
391デフォルトの名無しさん:2008/01/26(土) 13:48:51
グリグリって書いてるじゃん
392デフォルトの名無しさん:2008/01/26(土) 17:55:34
そういえばというか、
IIRが係数を急激に変化させたとき不安定になるのって
遅延器内の値も適切に補正できれば回避できたりしないかね?
393376:2008/01/27(日) 17:49:43
みなさん、ありがとうございます。キーワードを参考に、ネット記事と書籍を読みふけってます。

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

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

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

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

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

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

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

>>392
急激な移動が起こる各バンド帯を並列で計算しておいて、移動時に遅延させるという事でしょうか?
395デフォルトの名無しさん:2008/01/27(日) 18:04:37
FIRの場合は遅延を入れただけの信号に対しての直線位相となる。
つまりZ^n で割った時に、
Zに複素数を入れた結果の虚数成分が常に0である必要がある。

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

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

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

とりあえず、どうして直線位相でなければいけないのか
どういう用途か判れば、アドバイスしてくれる人がいるのかも
396デフォルトの名無しさん:2008/01/27(日) 20:37:53
>>393
>「群遅延」とは周波数全体の位相が同時にズレるという認識であってますか?

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

で、周波数-位相遅れのグラフが直線になる場合を直線位相といって、
グラフが直線→位相遅れの周波数微分が一定→遅延時間(群遅延)が
全帯域で一定→波形が壊れない→(゚Д゚)ウマー
397デフォルトの名無しさん:2008/01/28(月) 06:15:24
いまいち何を実現したいのかがわからないな。
FFTして取り出したい帯域をぶっこぬくのじゃだめなの?
目的は解析?それとも音色?
398デフォルトの名無しさん:2008/01/29(火) 11:15:19
>バンドパスさせた複数の波形をそのままミキシングする
といってたから直線位相なんじゃまいか。
>ミキシング用 >グリグリ
ということだからVSTエフェクトでも作りたいんだろうとは読み取れるけど。

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

単にグリグリだったらIIRのバンドパスで
f0急激に変化しないように制限すれば良さそうだけど、
複数の周波数帯取り出して合成しなきゃいけないんなら、FFTが現実的かもね。
ただこの場合はグリグリするにも周波数方向の分解能は制限をうけるから
なめらかさは犠牲になるかなあ。
399デフォルトの名無しさん:2008/01/31(木) 20:49:43
DFTおよびFFTのプログラムを作ってみたのですが
DFTとFFTで結果がまるで違います。
しかし両方とも逆変換をすると、元の値に戻るのは確認したので
計算はあってると思うのですが、さっぱりわかりません。

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

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

何か誤差が発生していたりするのでしょうか?
400デフォルトの名無しさん:2008/01/31(木) 23:20:47
Σsin*Xn で求めたものと FFTで求めたものでは 誤差の種類は違うよ。 

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

でも計算があってるかどうかは、サイン波を合成したのを入力してみればいいと思うのだが?
401デフォルトの名無しさん:2008/02/01(金) 05:32:14
まさかとは思うが
DCTとFFT比較してたりしないよな
402デフォルトの名無しさん:2008/02/01(金) 14:58:25
レス下さった方には申し訳ないのですが
もっと初歩的でした。
振幅と位相の計算をしてませんでした・・・

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

無事FFTの計算はできるようになったので
いろいろやって見ようと思います。
ありがとうございました。
403デフォルトの名無しさん:2008/02/02(土) 02:47:09
すみません質問です。

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

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

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

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

あと、遅延時間だけでは移動感が出ない。音量も変更しないと
406デフォルトの名無しさん:2008/02/02(土) 18:05:08
音楽から和音抽出ってむずいねw
407デフォルトの名無しさん:2008/02/02(土) 18:50:35
フーリエ変換すれば何とかならんこともない
408デフォルトの名無しさん:2008/02/02(土) 18:58:37
そんなもんで出来るんなら苦労しないわ。 
和音抽出するには、まず識別する事が必要。フーリエ変換だけじゃ無理。
409デフォルトの名無しさん:2008/02/02(土) 20:17:04
倍音が邪魔だし
410デフォルトの名無しさん:2008/02/02(土) 20:58:26
倍音成分含む音なら基音を簡単に見つけられる。
倍音成分が少ない(無い)音やピッチが揺れる音(ベル系)は難しい。
その音が和音だと解っているなら和音も見つけられる。調も解れば精度が上がる。
ただ、和音の中に倍音がある場合(ギターのコード等)はフーリエだけじゃ多分無理。
411デフォルトの名無しさん:2008/02/02(土) 21:07:39
ドラムとかシンセとかいろいろ入ってると難しいだろうな
412403:2008/02/03(日) 05:37:33
皆様回答ありがとうございます。

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

参照:
http://stagesounds.blog74.fc2.com/blog-entry-53.html
413403:2008/02/03(日) 05:38:06

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

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

その場合、ステレオ音の広がりの間隔をどのようにして調節するのかが理解できていないのですが、
もう少しヒントをお願いできないでしょうか?
414デフォルトの名無しさん:2008/02/03(日) 09:00:34
遅延時間を変更するのに1サンプル遅延するのに苦労は無いけど
0.5遅延するのにどうする? 単に2つの平均を取ると、これはLPFになってしまう。
高域をあまりカットしないで0.5遅延したいというような場合には
比較的長いFIRフィルタが必要。
415デフォルトの名無しさん:2008/02/03(日) 18:41:33
というか、コーラス等のエフェクタ用途だったら、
遅延時間の解像度はサンプル単位で十分なのでは?
というか経験的には十分だったような。(44.1KHzとかのサンプリングレートなら)

どの程度のS/Nになるかは計算できないんだけどさ。
416デフォルトの名無しさん:2008/02/03(日) 19:00:51
それで十分というならソレでいいんじゃない?
両耳の距離が17cmとして 170/340E3*44100 で22サンプルの遅延分
1サンプル単位にカクカクと変更しても気にならないといえばならない。

とりあえず思うような特性になるかどうか試してみるといいよ
417デフォルトの名無しさん:2008/02/04(月) 01:06:18
コード抽出なら離散ウェーブレットじゃないの
再構成しないならオクターブバンドより狭く解析できるし
時間解像度的にも有利
418デフォルトの名無しさん:2008/02/04(月) 12:46:12
その手の題材って、研究目的とかじっくりと取り組めるのでなけりゃ、
なかなか手を出しにくいね。
いくらかうまくいったとしても、道具としての実用レベルまでは遠い道のり・・・
419403:2008/02/05(火) 03:52:34
>>405
>>414
>>415
>>416

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

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

ちょっと実験してみたいと思います。
ありがとうございました!
420デフォルトの名無しさん:2008/02/07(木) 11:54:50
サウンドカード付属のマイク入力(3.5ミニ)から入力された音声を
リアルタイム(非バッチ処理)にディジタル処理するプログラムの作成を考えています.

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

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

お願いします.
421デフォルトの名無しさん:2008/02/07(木) 13:23:42
入出力は処理系依存だと思うけど
422デフォルトの名無しさん:2008/02/07(木) 14:46:24
Windowsの場合は
1 低レベル オーディオAPI
 waveInOpen/waveInAddBuffer/
 waveOutOpen/waveOutPrepareHeader/waveOutWrite
 窓へのメッセージで貰うか、CallBackを使う。

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

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

3 ASIO
利点:低遅延
423420:2008/02/07(木) 16:19:16
>>421-422
ありがとうございます.
低レベルオーディオAPIを使ってみます.
424デフォルトの名無しさん:2008/02/11(月) 00:00:11
板違いかもしれませんが、質問させてください。
WindowsMediaPlayerのプレイビューのような、音楽にシンクロしてグラフィングが
変化する物(名前がわかりません)の作成の仕方が知りたいのですが、
どのように調べていいのかもわからず困っております。
ご存知の方がいましたら、調べ方についておしえてください。
425デフォルトの名無しさん:2008/02/11(月) 00:04:29
>>424
それはグラフィクイコライザというものです。
音の高さに合わせて、それぞれの音の高さの音の大きさを棒グラフで表示します。
WMP等はこれをリアルタイムで行います。
原理は、フーリエ変換というものを使って信号を処理してそれぞれの周波数のゲインを解析しています。
手がかりは書いた。あとは検索しろ。
426デフォルトの名無しさん:2008/02/11(月) 00:09:05
ありがとうございます。
大変重要な手がかりをいただけました。
早速検索してきますー。
427デフォルトの名無しさん:2008/02/11(月) 01:53:23
ス ペ ク ト ラ ム ア ナ ラ イ ザ だ
428デフォルトの名無しさん:2008/02/11(月) 02:00:52
ワロタ
429デフォルトの名無しさん:2008/02/11(月) 03:24:13
>>425
あれって本当にフーリエ変換なんてやってるのだろうか?
大体のふいんきが分かれば十分だからもっと簡単な実装で良いんじゃないかと思わなくもない。
430デフォルトの名無しさん:2008/02/11(月) 04:20:34
フィルタした音を再構成して使うんじゃなければただのIIRバンドパスで十分かもね。位相回ってもパワーには影響しないし。
IIRで完全なクロスオーバー作るのは難しいから、各バンドのパワーの和を厳密に元信号と一致させたいときは使えないけど、
棒グラフ程度なら十分だと思う
431デフォルトの名無しさん:2008/02/11(月) 04:48:13
出てくる絵が変わっていけばいいだけなら、
無理にfftかけなくてもいいだろうけど、
スペクトル出すならなんかやってんだろうね。
432デフォルトの名無しさん:2008/02/11(月) 11:05:56
パソコンの場合は十分な演算能力あるからFFTでもOK
ただ、FFTの都度CPUの負荷が上がるから消費電流の変動がノイズとなって聞こえるという困った事に

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

マイコン内蔵のDSPなんかで実現してる場合は
IIRフィルタでも共振型というかサイン波オシレータの構成だろう。
ようするにQ無限大の共振器に単発の窓関数かけて結果を見る
1個の共振器を時分割で使い回せば負荷も軽い
433デフォルトの名無しさん:2008/02/11(月) 12:00:41
いつもは過疎スレなのにネタが落とされるとすぐにレスが付くな。
434デフォルトの名無しさん:2008/02/11(月) 14:22:10
なんか前スレあたりでもほぼ同じ流れみたような
そしてそこでも、スペアナをグライコとよんでるやつがw
435デフォルトの名無しさん:2008/02/11(月) 14:25:59
前スレじゃなかったこのスレだわ>>324
436デフォルトの名無しさん:2008/02/11(月) 14:57:35
グライコがスペアナの意味で使われてて混乱してたけど、やっぱり違ったか。
437デフォルトの名無しさん:2008/02/11(月) 15:20:50
>>436

なんか多くの素人が同じ間違いをしてる。
音楽やってたことある人でも多いし。
おそらくコンポやカーステレオでスペアナとグライコの表示が似てるせいだろう。
438デフォルトの名無しさん:2008/02/11(月) 16:08:10
グライコはどうやってるんだろな
IIRフィルタだっていうけど、係数を全部いっぺん変更してるんだろか?
439デフォルトの名無しさん:2008/02/11(月) 18:45:44
双二次で検索
440デフォルトの名無しさん:2008/02/12(火) 15:20:24
多分、一番多い実装は、
RBJ Audio-EQ-Cookbook で言うところの
双二次のピーキングIIRを複数つないでる。
441デフォルトの名無しさん: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デフォルトの名無しさん:2008/02/12(火) 17:41:00
>>441
その割り算(a_i, b_i の計算)は、イコライザの設定変更時だけしかしなくて、
毎サイクルは必要ない。
443デフォルトの名無しさん:2008/02/12(火) 18:16:13
イコライザだからAの変更は必要だよね? そうすると 1/a0も計算しないといけないよね?

だから、割り算しなくていいような構成方法あるんじゃないの?
444デフォルトの名無しさん:2008/02/12(火) 18:31:03
設定変更時だけだし多少遅くても割り算やってる。
445デフォルトの名無しさん:2008/02/12(火) 18:31:23
A の変更の頻度、それほど高くないはずだから、
割り算のコストをそこまでシビアに考えなくてもいいんじゃないかと。

除算器乗ってないプロセッサでも、除算表持ったり近似計算したりで、
割り算全く出来ないわけではないし。
446デフォルトの名無しさん:2008/02/12(火) 19:04:53
逆数を乗算してもいいな
そういう話をしてるんじゃないのは分かってるけどw
447デフォルトの名無しさん:2008/02/12(火) 20:14:14
イコライザいけるならHPFでもいけるかと思って
リアルタイムで係数書き換えたらあっさり発振した。
やっぱだめか。
448デフォルトの名無しさん:2008/02/12(火) 20:18:37
イコライザも係数を一気に書き換えたら発振するよ
書き換えでフィードバックゲインが大きく変わるから、
結果オーバフローすると不安定になる。
449デフォルトの名無しさん:2008/02/13(水) 03:26:05
だから俺はFIR派
450デフォルトの名無しさん:2008/02/13(水) 08:04:25
FIRで、RBJみたいに簡単に扱える方法はあるの?
451デフォルトの名無しさん:2008/02/13(水) 09:26:34
FIRでバンドパスフィルタを作っておけば直線位相だから
元の信号の遅延信号と加減算できるんだよ。
元の信号に足せば、そのバンドだけポコンの持ち上がるし
足せば下げられる。

IIIRでも同じなんだけどね
452デフォルトの名無しさん:2008/02/13(水) 13:57:31
IIRは結果の加減算やろうとすると位相差のせいでうまくいかないからねぇ
てかRBJって何?
453デフォルトの名無しさん:2008/02/13(水) 14:32:31
454デフォルトの名無しさん:2008/02/13(水) 15:02:04
いや、バンドパスの頂点はゼロ位相だから 加算は可能だよ。
その特性は IIR-ピーキングイコライザのものと殆ど同じ

ただQはだいぶ調整必要なのとf0も少しズレるように思ったな
455デフォルトの名無しさん:2008/02/13(水) 16:08:33
頂点以外ずれるから問題なんだろう
456デフォルトの名無しさん:2008/02/13(水) 16:11:20
それを言うならIIRのピーキングイコライザも問題って事になる
457デフォルトの名無しさん:2008/02/13(水) 16:19:57
いや、位相がずれたものを元音に加減算することが問題って話ですよ
458デフォルトの名無しさん:2008/02/13(水) 16:34:02
だからIIRピーキングイコライザも、位相はピークでは一致するけど
その前後では 〜 になる。
そして、IIRバンドパスのを加算しても、これは同じだから、同じだって
459デフォルトの名無しさん:2008/02/13(水) 17:28:44
ん?ピーキングでもバンドパスでも位相がずれるのは当然、そりゃわかってる
問題はそれを元音に加減算することだと言ってるわけですよ。
位相がずれた音を元音に加減算したら周波数特性に影響が出るしょ?

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

まちがってたらすまん
460デフォルトの名無しさん:2008/02/13(水) 17:45:59
速い話
IIRピーキング = 元音 + IIRバンドパス
でははない。ということ。
周波数特性が崩れる。
461デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2008/02/17(日) 19:29:47
A=1の時
BPF/alpha *(1+alpha) + -2*cos(w0)*z^-1 とすれば一致するようだね

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

その音を感知する部分で何か有効的な物ありますか?
(音はその時しか扱いません)
465デフォルトの名無しさん:2008/02/19(火) 12:17:53
リアルタイム処理なら常に音量のゲインを見張って、
それが閾値に達したら別スレッドでdo○○に相当する関数を実行させるとか。
466デフォルトの名無しさん:2008/02/19(火) 13:14:40
>>464
環境は? そして、その入力元は何? たとえばwindowsでマイク入力なのか、スピーカー出力なのか
467デフォルトの名無しさん:2008/02/19(火) 20:05:30
>>465-466
ありがとう
windowsのマイク

何がしたいかっていうと
音を感知したら(どんな小さな音でもいいんだけど)、
HDDに録画をするっていうプログラムを作りたいんです。
だからゲインまでは必要ないかなとは思っています。
468デフォルトの名無しさん:2008/02/19(火) 20:05:52
連続ごめん
マイク入力のこと↑
469デフォルトの名無しさん:2008/02/19(火) 20:34:24
どんな小さな音でもっていうけど
録音状態でマイクからの入力が0フラットのまま安定することってなかなか無い気がするけど。
ゲインを監視しなかったら録画しっぱなしになるな。

ていうかひょっとして、聞きたいのは録音するためのAPIとか、そんな程度じゃねぇの?
470デフォルトの名無しさん:2008/02/19(火) 21:06:25
あ、そっかそうだよね... まぁとりあえず、ゲインは後で考えます

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

C++を考えてるけど
471デフォルトの名無しさん:2008/02/19(火) 22:38:08
トリガの音にもよるんじゃね?
チャイムとか時報みたいな単音かつ短い物ならFFTなりで周波数成分見て判別出来そうだけど、
比較的長めのジングルみたいなのはどこまで一致したらトリガ音と認識させるのかとか、
マイクからの入力だとちょっとした事で入力状態も変わってくると思うんだよなぁ。
472デフォルトの名無しさん:2008/02/20(水) 00:02:27
ちょっと話はズレるんだけど、プログラムを走らせるパソコン外部の装置からのデータ入力の際に
ノイズが完全に入らないデジタルな接続ふyふyふゆいおjhy「
473デフォルトの名無しさん:2008/02/20(水) 00:34:41
ふじこ!
474デフォルトの名無しさん:2008/02/20(水) 04:25:26
>>467
物音がしたら一定時間録画、防犯システムみたいなもんか。

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

当然、環境音やアナログ回路由来のノイズとかあるから、静かだったら入力0ってことはない。
ある値を超えたら、って具合に感度(スレッショルド)は設ける必要ありますよ。
それから常に空調が入っているような部屋の場合は、
ハイパスフィルタなどを使って検出に不要な帯域をできるだけカットする必要があるかもね。
475デフォルトの名無しさん:2008/02/20(水) 05:07:39
質問なのですが、ここらへんの技術で食べていくにはどうしたら良いのでしょう、

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

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

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

大学での専攻分野が音響/信号処理関連でないと難しいとかやっぱりあるのでしょうか。
476デフォルトの名無しさん:2008/02/20(水) 06:01:23
発言権てw
477デフォルトの名無しさん:2008/02/20(水) 10:06:59
国産DAWやシーケンサーは、プログラマ1人で作ってるものがほとんど(過去のものも含む)。
1人の作業に雰囲気もなにもない。
478デフォルトの名無しさん:2008/02/20(水) 10:59:44
職場の雰囲気なんて社風によったり、部署毎に違ったり、面白いやつが一人いるだけで変わるもんだから聞くだけ無駄。
ゲーム業界におけるサウンドの地位は基本的に底辺。
サウンド専用のメモリをメイン側で使われたって話も聞いたことがある程。
唯一コナミだけはサウンドの発言権が強いってんで有名だったけど、それも10年くらい昔に聞いた話だし現状どうなってるかは知らない。
組み込み系やサウンドツールはボチボチ仕事転がってるから需要あるかもしんない。

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

算数や工業数学には強くないといけないね
480デフォルトの名無しさん:2008/02/20(水) 13:02:34
算数は機械がやってくれるので問題ないだろ。
数学をやれ。
481デフォルトの名無しさん:2008/02/20(水) 20:14:33
スタインバーグとか開発が海外でしかも音響専門のソフトウェア会社ならどうなのか気になる。
みんな楽しそうにやってるのか、デスマーチで死んでるのか。
482デフォルトの名無しさん:2008/02/20(水) 22:06:48
>>479
技術よりネタだろうな、なんつーかもう何もかもやり尽された分野だし
FM音源が流行っていた時代、ソフトで音を作っていた時代が懐かしい。
今やるとするなら初音ミクみたいな奴とか

あえて技術で攻めるなら、このデータは効き難い事で有名といところで、圧縮、だがこれももう限界に近い。
他には音声認識もまだやれる事が多いかな、これは出力ではなくて入力なのでこのスレとはちょっと違う雰囲気か。
483デフォルトの名無しさん:2008/02/21(木) 02:07:34
たしかに雰囲気は違うか
でも語らうとしたらこのスレくらいしかって気もするな
484デフォルトの名無しさん: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デフォルトの名無しさん:2008/02/21(木) 03:20:36
>484
>474
486デフォルトの名無しさん: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メッセージを貰う都度、バッファを使いまわす事だ
487484:2008/02/21(木) 13:28:25
>>485
もちろん目を通しましたが,わかりませんでした.

>>486
ありがとうございます.8kHzではなく22.05kHzでした.
おそらく wh.lpData 内はバイナリで書かれていると思います.
バイナリファイルから数値を読み込むのは fopen( hoge, "rb") を利用すれば良いのですが,
バイナリとして書かれているものをアスキーの配列に入れなおすには
どうしたら良いのでしょうか?

調べる中で以下のサイトに辿り着きましたが,
こちらも fopen による処理でした
ttp://oku.edu.mie-u.ac.jp/~okumura/wavefmt.html

よろしくお願いします.
488デフォルトの名無しさん:2008/02/21(木) 13:47:13
チョットまだ基本的なC言語の考え方がわかってないようだ。
もう少しC言語の作法がわかる段階でないと説明する方も辛いんで勉強してくれ。

wf.wBitsPerSample = 8; だから
wh.lpData にはバイト列で入ってる  符号なし8bitだから

unsigned char *p= (unsigned char *)wh.lpData;
とやれば for 文で  (p[i]-0x80 ) とでも ( *p++ - 0x80 ) とでも 処理出来る。 


wf.wBitsPerSample = 16; にしてやれば 16bit 符号付になる
同じように16bit幅の符号付ポインタに代入すればいい。
489デフォルトの名無しさん:2008/02/21(木) 14:00:14
>>488
不勉強な中,質問させていただいて申し訳ありません.
ご丁寧なレス,感謝致します.頑張ります.
490デフォルトの名無しさん:2008/02/21(木) 14:26:16
>>487
サウンドプログラム以前の話じゃん。
スレ違いだよ。
491デフォルトの名無しさん:2008/02/25(月) 22:35:24
Windows上で、waveOutGetDevCaps()やwaveInGetDevCaps()で取得したデバイスの、
さらに詳細な情報を得るにはどうしたら良いでしょうか?そのデバイスがUSBオーディオ
デバイスであるかどうかや、USBデバイスの場合はPIDやVID等を取得できるとうれしい
んですが。
Setup APIと組み合わせればどうにかなるかなと思ったんですが、Setup APIで取得できる
情報と、waveOutGetDevCaps()/waveInGetDevCaps()で取得できる名前とのマッチング
がとれないんですよね。WAVE APIだと、"(2)"とか"スピーカー"とか勝手についたりするし。
何か良いアイディアは無いでしょうか?
492デフォルトの名無しさん:2008/02/26(火) 11:25:01
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}
を見るくらいかなあ・・・
493デフォルトの名無しさん:2008/02/28(木) 20:52:43
質問です。

Q1.
信号を、ハミング窓をかけて50%オーバーラップしながらFFTして、
そのまま、逆FFTして、Overlap and Add した場合、信号が完全に
再現されるのでしょうか?

Q2.
信号を、sine窓かけて50%オーバーラップしてMDCTして、
そのまま逆MDCTして、再度sine窓かけて、オーバーラップすると
信号は完全に再現されるのでしょうか?
494デフォルトの名無しさん:2008/02/28(木) 21:07:26
理論上どうだったかは忘れたけど、
少なくとも窓関数が 0 近い辺りでは誤差が大きくて、
完全な再現ってのは無理。
495デフォルトの名無しさん:2008/02/29(金) 08:13:37
FFT->逆FFTで完全に元に戻っているのだから、
窓関数がオーバーラップ処理でフラットになるかどうかの問題。

フラットになる窓関数は 180度の位相差のものと足して1になる必要がある。

ハニング/ハミング窓は
A-(1-A)*cos(2πT/L)で 180度ズレると A+(1-A)cos(2πT/L) で加算すると2A

だから、ハニング窓は完全に戻るし、ハミング窓は 0.54*2 のゲインが残るだけ

サイン窓は 180度のズレは窓関数上は90度のズレになるので、
加算してもsin関数が残る。 そのサイズでモジュレーションした信号になってしまう


FFT->加工->逆FFTとした場合は、一般的には完全には接続しない。
MP3なんかはうまく誤魔化してるけどね。

単純に考えても、音程のある成分は位相を合わす事が出来るけど
でも位相を合わせると、ノイズは位相が合わせられないのだから 1/√2になる
496デフォルトの名無しさん:2008/03/08(土) 16:41:59
>>495
詳しい説明ありがとうございました。
MP3は、なぜハミング窓を使わなかったのだろう、と思いまして。
sine窓の必然性が理解できてないのです。。。
497デフォルトの名無しさん:2008/03/08(土) 17:08:38
>>496
周波数領域での加工を前提とすると、
FFT前に窓がけしないと、周波数領域の信号レベルの確度が悪くなる
逆FFT後に窓がけしないと、時間領域で接続性が悪い

上の理由から実務上2度窓がけする必要があって、かつ、2度の窓がけ後の結果の
オーバーラップが元信号に戻らないといけない。でも、han窓は1回の窓がけの
結果のオーバーラップで元に戻るように設計されてるから適さない。
で、上の条件を満たすsin窓とかVorbis窓が使われる。
498デフォルトの名無しさん:2008/03/08(土) 20:45:14
なるほど、頭いいなー
499デフォルトの名無しさん:2008/03/15(土) 16:21:05
すみません、質問なんですが

サウンドプログラミングに関する本で、
picか何かでのサウンドドライバの作り方とか
一連のサウンドプログラミングが説明してある組込みの書籍か雑誌が発売されてたみたいなんですが、
本のタイトルがわからなくなって探すことができません。
それっぽいキーワードでググっても出てきません。
目次を眺めただけなので、具体的な内容は違うかもしれないのですが。。。

どなたか、上記の本のことをご存じないでしょうか?
500デフォルトの名無しさん:2008/03/15(土) 18:34:48
picってMicrochip社のPIC?
501499:2008/03/15(土) 23:37:51
>>500
ごめんなさい、picかどうかも怪しいです。
僕はMicrochip社のPICのつもりで書きましたが、
そもそもpicじゃないかもしれないです。

質問内容が曖昧過ぎますよね。。。
今になって>>499の本にすごく興味が出てきてしまって。
502デフォルトの名無しさん:2008/03/16(日) 08:27:07
PICだとすれば DsPIC だろうけど
503デフォルトの名無しさん:2008/03/16(日) 08:32:06
検索したけど、コレくらいしかみつからなかった
http://gihyo.jp/book/2006/4-7741-2863-5
504デフォルトの名無しさん:2008/03/17(月) 23:38:52
505デフォルトの名無しさん:2008/03/18(火) 00:01:38
ソレ、おれもおどろいたわ
どういう仕組みなのかなあ
506デフォルトの名無しさん:2008/03/18(火) 00:45:39
基音を分解したあと上音を再構成してるんだろうけど
どの上音をどの基音に結びつけるかってのは、
あらかじめ楽器音を抽象化したサンプルのカタログから検索してるんじゃないかなぁ
507デフォルトの名無しさん:2008/03/18(火) 05:47:11
すげえなこれ
http://sho1.jp/sho1/movie.swf
508デフォルトの名無しさん:2008/03/18(火) 10:07:14
>>506
それだと人の声とか、音の響き方が変わったときは無理じゃね?
解析中に倍音成分の偏りのテーブル作ってるんじゃないかなぁ。
試算は元波形から減算して0になればいいわけだから、その辺からも補完情報得られそうだ。
おかしなエフェクトかけた音とか食わしてみたい。

>>507
ナニガ?
サウンドプログラム的には初歩の初歩だろ。
509デフォルトの名無しさん:2008/03/18(火) 19:54:37
位相を和音を基準に解析して、各周波数ごとにピッチ、スピード、再生タイミング等を調整できるようにしただけじゃね。
和音に分解するのにものすごい時間かかりそうだ。どちらかというとアイディアよりも速い速度を出したという努力の方が凄い。
510デフォルトの名無しさん:2008/03/18(火) 23:43:22
>>509
短絡的に考え過ぎじゃまいか。
速度無視すりゃキミ作れる?
511デフォルトの名無しさん:2008/03/18(火) 23:51:51
まあ、そういうこと言い出すと、情報系の研究の結構な割合が、
真新しい技術を作ることじゃなくて、既存技術を低演算量で実現ってノリよ。
512デフォルトの名無しさん:2008/03/19(水) 00:17:18
どうせ解析がDWT、再生が可変速再生でしょ。
例えばV-Vocalとどう違うのか分からん。

新しい技術ってのは多くがまず理論の領域だからね
実践が重要な情報工学の分野は、どう実現するか、とかが重要になる。
513デフォルトの名無しさん:2008/03/19(水) 10:05:39
>>512
アホか? どの周波数の音がどの音の倍音かってのを分解できなきゃいけないんだからV-Vocalとは全然違う。
音源分離の基礎から勉強しなおせ、このタコ。
514デフォルトの名無しさん:2008/03/19(水) 14:34:45
>>513
さすがにサンプル全く聴かないで想像で書くとバレるかwww
ある意味安心した

サンプル聴いてみたが、全サンプル単音色なのね
これだったら、全体の倍音構成がある一つの倍音構成の重み付き和になるから
アタック検出とあわせて認識するのは可能かなー 専門が音声ですら無いから
最先端とか知らんけど
515デフォルトの名無しさん:2008/03/19(水) 15:35:05
おまえ耳悪いんだな
516デフォルトの名無しさん:2008/03/19(水) 18:05:43
>514
http://www.sonicstate.com/news/shownews.cfm?newsid=6281
これ見て凄さが理解出来ないなら黙って消えてくれ。
517デフォルトの名無しさん:2008/03/19(水) 19:44:08
やってることがすごいとかすごくないとかはよくわからないんだけど、
動画の中で音をばらす最初のシーンはかなり興奮したw
518デフォルトの名無しさん:2008/03/19(水) 20:14:00
一から楽器を演奏して曲の音源を得るコストと、そのソフトを購入して既存の少ない音源から
元の音源が分からない程にまでリミックスして曲の音源を得るコストのどちらが高いか。
勿論後者の場合はもともとの音源が第三者には追跡不可能だし人格権を主張できないほど弄ってるから著作権料なんて発生しない。
519デフォルトの名無しさん:2008/03/19(水) 20:21:14
論点変えて楽しいか?
520デフォルトの名無しさん:2008/03/19(水) 20:35:08
一つのどうでもいいレスに対して話の流れから脱線しているように思うなら、無視すればいいだけのこと。
521デフォルトの名無しさん:2008/03/19(水) 20:53:43
つうか板違いだろ
522デフォルトの名無しさん:2008/03/20(木) 02:34:17
>>516
黙って消えろは酷いなw

さて、その動画今観てみたけど、やっぱり同種の楽器のサンプルしか無いね
一つだけギターとトランペットのサンプルがあるけど、音の小さいギターの方の認識は弱くなってる
支配的な倍音構成にフォーカスしてるのかな
523デフォルトの名無しさん:2008/03/20(木) 05:03:48
>>516はアルペジオ的なサンプルばかりなのもあーやーしーいw

けど、こっちにはギターのカッティングを分解してるビデオがある
http://www.celemony.com/cms/index.php?id=dna
524デフォルトの名無しさん:2008/03/20(木) 14:09:51
>>523
お、やっと話せる人が来た 嬉しい

同時発音へのアプローチはどうなんだろうね。
そっちの動画は最初に観て、その感想が>>514なんだけど、うーん。
あるいは、同時発音といえどもms単位のアタック時刻ずれがあるからそれを検出して……とかなのかなぁ。
ただ低域になると時間精度が悪くなるから、そこまでの精度がでるのかどうか。

完全に同時発音のソースとか、BBE通したソースとかでどうなるか、とか興味あるなぁ
>>516の動画でも、リバーブがきついと怪しいとか、2パートのピッチがクロスすると怪しいとか
おっちゃんも言ってるし。

って長文ごめん
525デフォルトの名無しさん:2008/03/21(金) 10:05:41
>>524
前も書いたが、音源分離の基礎から勉強しろ。
「音源分離」でググれば、この分野の基礎技術がやまほどでてくるから。
526デフォルトの名無しさん:2008/03/21(金) 12:09:03
>>525
あぁ、>>513で書いてるのか
ただの脊髄レスだと思って切ってたわ
音源分離ね。みてみる
527523:2008/03/21(金) 12:35:50
君自身が「話せない人」だと思うよーw
528デフォルトの名無しさん:2008/03/21(金) 12:50:27
>>526
無知だってことを指摘されても、自分は悪くない、と放置するからいつまでたってもバカのままなんだよ。
はっきり言って、あんたの知識レベルは非常に低い。おそらく別な場所でもさんざん叩かれてるだろ?
それは人間性に問題があるからだぞ。
529デフォルトの名無しさん:2008/03/21(金) 14:13:53
これは酷いw

>526
なんか自身満々そうだし、試しに単音でもいいから分離アプリ作ってくれよ
音のアタックとリリース重なる部分の分離だけでも出来ればたいしたもんだと思うよ
530デフォルトの名無しさん:2008/03/21(金) 14:20:53
>>524
専門外だと自覚してるならしゃしゃり出てくんなよ。
あんまり的外れなことばかり書くから、スレが妙な盛り上がりをしてるじゃねーか。
531デフォルトの名無しさん:2008/03/21(金) 18:47:35
C(ド)の音色データを加工してDEFGAB〜の音を作ることはできますか?
532デフォルトの名無しさん:2008/03/21(金) 20:51:15
>>529
単音のサンプル投下希望
自前サンプルだとまた叩かれそうだから
533デフォルトの名無しさん:2008/03/21(金) 21:00:01
>>531
できますよ
534デフォルトの名無しさん:2008/03/21(金) 21:06:21
>>531
つ ピッチシフト
あとはフォルマント辺りを加えて調べてみるといいかも。

>>532
お前は頭大丈夫か?
これ以上叩かれる前に消えた方がいいぞ。
535デフォルトの名無しさん:2008/03/21(金) 23:26:22
>>533-534
ありがとうございます。
536デフォルトの名無しさん:2008/03/22(土) 03:18:19
>>531
出来るけど
音に深みが無くなる
537デフォルトの名無しさん:2008/03/22(土) 03:25:55
なんか久しぶりに湧いてんな。
ただでさえこのスレの住人はネタに困ってるんだからあんま煽るなよ532。

しかしDirectNoteAccessすげえええええええええええええええええええ。
あまりに感動したのでYoutubeのほうもはっとこ。
http://jp.youtube.com/watch?v=Pe0nxkE28_4
538デフォルトの名無しさん:2008/03/22(土) 10:05:53
素人なので何がすごいのかわかりません
539デフォルトの名無しさん:2008/03/22(土) 10:34:14
>>538
カクテルを材料毎に分離して比率を変えたりして再合成するようなもの
540デフォルトの名無しさん:2008/03/22(土) 10:37:10
それは素晴らしい
こう、チャレンジスピリッツが刺激される試みですね
541デフォルトの名無しさん:2008/03/22(土) 10:38:08
そのうちリバースエンジニアリングが犯罪にされそうだな
542デフォルトの名無しさん:2008/03/24(月) 09:59:47
マルチトラックな内部データを持つ同機能に見えるだけのfakeなら簡単に作れからなぁ
現物を調べないと投資を引き出すためだけの偽デモの可能性を否定できない
543デフォルトの名無しさん:2008/03/24(月) 11:11:47
>>542
ねーよw
多少は都合のいいデータをデモに使ってるだろうけど
544デフォルトの名無しさん:2008/03/24(月) 11:56:45
アタックが弱い楽器はトランスポーズできないのかな
545デフォルトの名無しさん:2008/03/25(火) 23:20:04
すみません。
ピッチシフトはFFTをしないと実現できないのでしょうか?
546デフォルトの名無しさん:2008/03/25(火) 23:22:02
IIRならなんでも
547デフォルトの名無しさん:2008/03/25(火) 23:58:57
IIR調べましたが理解できませんでした。
単純に半音分の1.05946を時間にかけて伸ばしたり縮めたりするのは駄目ですか?
548デフォルトの名無しさん:2008/03/26(水) 00:04:19
>>545
まず、一定間隔でサンプルを間引き/補間して
(音程も再生速度も変わる)、
その後、フレームに区切って、フレームをオーバーラップさせたり重複させたりで
再生時間を調整。
549デフォルトの名無しさん:2008/03/26(水) 00:22:01
>>548
それならできそうです。
ありがとうございます。
550デフォルトの名無しさん:2008/03/26(水) 00:34:57
>>549
オーバーラップさせるときに、重ね方ちょっと工夫しないとノイズっぽくなるから注意ね。
重なってるところが似たような波形になるように、
相互相関とかとって重ねる位置ずらす。
この方法で、綺麗な周期波形なら結構いい音になる。
551デフォルトの名無しさん:2008/04/14(月) 19:34:53
最近はユーザが日本語化MOD作るからいらないよな
552デフォルトの名無しさん:2008/04/14(月) 19:35:23
誤爆
553デフォルトの名無しさん:2008/04/19(土) 04:13:41
高域を補完するフィルター(KENWOODのSupremeみたいな物)を作ろうと思うのですが
サウンドプログラミングはやったことが無くどのような方向から手を付ければいいか判らない状態です
まずは非リアルタイムで実験してみるつもりですが、ゆくゆくはリアルタイムで処理できるような物を作りたいです
ソースをFFT→FFT結果を元に倍音生成のスペクトラムを生成→逆FFT→ソースと合成みたいな感じになるのでしょうか…?
よろしくお願いします
554デフォルトの名無しさん:2008/04/19(土) 07:48:04
たぶんFFTでは難しいと思うよ。
一般的にブロック・フーリエ変換の場合 周波数軸で加工すると実軸に戻した時に
ブロック同士を接続させるのが難しい。

たとえば原音から高域だけ抽出して その成分を2乗3乗したのを加算するとかどうかな
倍角公式とか3倍角公式で高音を加算出来る事になるよ
555デフォルトの名無しさん:2008/04/21(月) 16:20:21
ピッチや再生速度を変えるにはどうすればよいですか?
サンプルを間引いたりするだけではうまくいきませんでした。
ググってもツールしかヒットしません(><;
556デフォルトの名無しさん:2008/04/21(月) 16:51:58
557デフォルトの名無しさん:2008/04/21(月) 16:53:09
あと、C# でよければ、
http://ufcpp.net/study/csharp/ap_sample.html#sound
にピッチシフトのコードある。
558デフォルトの名無しさん:2008/04/22(火) 08:07:18
>>555
このスレの1つ前の過去ログの先頭にある程度詳しく書いてある。

肝心なのは
>再生速度を変更するには、上げるにも下げるにも強力なLPFが必要になる
って所。 これをサボると駄目だね
559デフォルトの名無しさん:2008/04/22(火) 10:21:41
>>555
ディレイを使うのも手。
重複を気にせず、再生速度を変えたのをたくさん並べるだけでもそれっぽくなる。
560デフォルトの名無しさん:2008/04/22(火) 11:48:11
>558
555じゃないけど、サボるとエイリアシングノイズが出るって事?
ピッチ上げるときはLPFかけないとマズそうなのはなんとなく解るんだけど、下げる時もLPFなの?
561デフォルトの名無しさん:2008/04/22(火) 12:17:44
>>560
そう、アンチエイリアシング。
下げるときは、
簡単化のために、再生時間2倍、音程1/2で話すと、
元のサンプルの間に、まず、0を挿入するのね。
元のサンプルが 100, 110, 130 とかだったら、
100, 0, 110, 0, 130, 0 にする。
この状態をフーリエ変換すると、
元の周波数特性の高周波にエイリアスノイズが乗った状態になってるから、
それを LPF かけて取る。
562デフォルトの名無しさん:2008/04/22(火) 18:45:52
0を挿入する意図が分からん。
100,100, 110,110, 130,130 じゃダメなのん。
563デフォルトの名無しさん:2008/04/22(火) 19:10:34
>>562
それは0を挿入してから低品質な2タップFIR LPFをかけたのと同じことじゃん。
>>558>>561が言いたいのは、そのLPFをもっと強力なやつにしないと駄目よってことでしょ。
564デフォルトの名無しさん:2008/04/22(火) 19:21:45
そうだね。 1+1/z っていうFIRフィルタの特性と同じで遮断特性は殆ど無いも同じ。

半音単位だと16:15とか16:17とかの比になるんで、
理論的には0を16個つめてFIRフィルタを通す事になるけど、
実際は0をつめる部分は掛け算しなくていいんで
565デフォルトの名無しさん:2008/04/22(火) 23:18:36
>>562
もちろん、実際には内挿補間とかするんだけどな。
フーリエ変換の定義式に、0を挿入した奴を食わすと、理論式が綺麗なんだわ。
566デフォルトの名無しさん:2008/04/23(水) 00:43:46
CUDA使ってる人っている?
並列処理がどれくらい速くなるんだろう。
567sage:2008/04/23(水) 02:40:36
DCTベースでピッチシフトって(理論的に)出来ないんでしょうか?
32kHzでサンプリングした音を2048点のDCT(DCT-typeII)して、3半音分ずらして
(1720点分のデータを2048点に補完)IDCT(DCT-typeIII)してみたら、なんか
元の2048サンプルが1720サンプルの波形に変換(残りは0近辺)されたような感じ
っぽくなった(つまり単なる早回し?)んですけど…

DCTでやってるのは、FFTは使ったことあるけどDCTはなかったから。あと、実数
なので楽かと思って。だた、変換結果をみると、位相成分も混ざってか(?)
かえって扱いにくいようにも思えてきたところなんですが。

理論とか数学とかダメな方なので、実際にコード書いて実験してる次第。
ちなみにJavaでやってます。(慣れると)楽ですよ。描画も簡単だし。
568デフォルトの名無しさん:2008/04/23(水) 09:08:37
出来ないか出来るかという話なら出来るんでしょう。
でも問題は
1、ブロックである事から接続の問題がどうしてもついてまわる事
2、周波数シフトそのものの計算の面倒さ
 6:5 という比率なら5を6に移動するのは簡単だが6を7.2という事になると exp関数となる
569デフォルトの名無しさん:2008/04/23(水) 23:01:48
> 100, 0, 110, 0, 130, 0 にする。
なんとなく、出力レベルが下がっちゃいそう。
570デフォルトの名無しさん:2008/04/23(水) 23:04:07
じゃあその分ゲインをかければいいでしょ
571567:2008/04/24(木) 00:02:55
>>568
>5を6に移動するのは簡単
それすら上手くいってないんですけど。DCTした5要素をどうやって6要素に
分配(シフト)すればいいのか。sinc補間で5要素から6要素を求めてみたり、
5要素を適当に6要素に分配してみたりしたけど、IDCTしたら変になります。
(振幅が一旦大きくなったあと、小さくなるような波形になるっぽい)。
なんかシフトしたら係数を掛けないといけないんでしょうか?

>exp関数となる
全然わかりませんorz。オイラーとかがからむ話なんでしょうか。
572デフォルトの名無しさん:2008/04/24(木) 00:22:57
>>571
DCTだと、位相が無視されるからなぁ。

振幅が大きくなってる箇所があるってのは、位相が狂ってるんだと思う。

定常波だと位相が狂ってても聞こえは一緒だったりするんだけど、
立ち上がりの部分が変わっちゃうと変な聞こえになりそう。
573デフォルトの名無しさん:2008/04/24(木) 00:24:24
周波数領域でピッチシフトするなら、フーリエ変換にしないと駄目かなぁ。
ついでに言うと、対数振幅と位相をそれぞれsincなり何なりで補間。
574553:2008/04/24(木) 07:44:16
>>554
レス送れてすみません。ありがとうございます
1.ソースをFFTで周波数/強度に変換
2.1の周波数ごとに倍角公式、3倍角公式で倍音、3倍音を生成。音量は1の強度を元に適宜減衰
3.2を合成して補完音を生成
4.ソースと3を合成
みたいな感じでしょうか?
コーディング時には2〜4は同時に行った方がメモリのリソースは節約できそうですね…
575デフォルトの名無しさん:2008/04/24(木) 09:11:17
えと、俺が書いた事は無視する事にしたのか誤解したのか、

俺が言ってるのは、ソレで2倍3倍の信号作って位相情報をどうするのって事。
元位相のまま2倍の位置にシフトしたら2度繰り返す事に
周波数軸上で変換するのは簡単じゃないよと。

だから

1、ソースのサンプル周波数変換
2.ソースからHPFで元サンプル周波数の1/4〜1/2の高域だけを抽出
3.2の2乗、3乗等の信号を作成
4.ソース+3の信号を重み調整し加算して出力

でいいんじゃないの?って事。
576567:2008/04/24(木) 21:07:53
>>572
>DCTだと、位相が無視されるからなぁ。
シフトするときの分配をちゃんと(元の値が対応する区間を求めて、比率に
あわせて配分。言葉で書くとわかりにくいなぁ)したら、ブロック途中の
振幅の暴れはマシになったけど、なぜかブロックの先頭から末尾に向かって
減衰します。なにか、大きな位相成分がおかしいのか…

>>573
>フーリエ変換にしないと駄目かなぁ。
やっぱりそうなんでしょうか。どっちも周波数成分への変換相当だから、
DFTとDCTは同じことが出来るのかと思ってました。
577デフォルトの名無しさん:2008/04/24(木) 23:30:07
>>576
連続フーリエ変換なら話は楽だったりするけど、
離散だと、周期の都合で妙なことになったりするかなぁ。

ピッチシフトって周期が狂う非線形処理だから、根本的に DCT・DFT と相性悪いかも。
578デフォルトの名無しさん:2008/05/09(金) 12:43:38
和音がわからない
誰だよ白鍵と黒鍵分けたアホは
全部半音単位で管理しろや
579デフォルトの名無しさん:2008/05/09(金) 12:48:16
>>578
頭悪いのね。
580デフォルトの名無しさん:2008/05/09(金) 13:37:42
言われてみるとどういう基準で分けたのか気になるな。
流石に578はどうかと思うが。
581デフォルトの名無しさん:2008/05/09(金) 13:38:17
>>579
頭良いのね。
582デフォルトの名無しさん:2008/05/09(金) 13:47:03
音階が12なのは時間が12進なのと関係があるんか?
583デフォルトの名無しさん:2008/05/09(金) 14:04:58
>>580
どういう基準もなにも、倍音とってったらドレミの音階が生まれるだろ。
それをオクターブ内におさまるようにしたら白鍵盤のぶんが埋まる。
そのときにだいたい半音、ってのが最少単位になってるからそれに合わせて鍵盤をわりふる。
西洋音楽の音階はだいたいそんな感じ。

>>582
倍音を拾っていってオクターブ内の音を分割した結果で、12等分がキリのいいとこに近かったんだよ。
地域によっては、12をさらに分割したのが最少単位だったりする。
584デフォルトの名無しさん:2008/05/09(金) 14:56:59
純正律のことを言ってるのか?
いわゆる純正律はそれはそれで恣意的だと思うが。

あるいはピタゴラス音律か。
585デフォルトの名無しさん:2008/05/09(金) 14:58:50
ようするに 
ドミソ のソ 周波数比 2:3 の1.5が 2^(7/12) に近くて
ドミソ のミ 周波数比 4:5 の1.25が 2^(4/12) に近いから

最初にドミソの和音が出来て、それを展開していってドレミファソラシドって事でしょ

586デフォルトの名無しさん:2008/05/09(金) 18:39:46
>578
プログラム関係ねぇよw
和音やコード進行は音楽関係の教則本には必ずと言っていいほど載ってるし、
当たり前な話だけどギターなんかは全部半音単位だ。
587デフォルトの名無しさん:2008/05/09(金) 18:55:58
>>578
全部白鍵だったらどれが「ド」だか分からなくなるだろ
588デフォルトの名無しさん:2008/05/09(金) 18:57:51
無刻印HHKを扱える奴がいるから慣れだなw
でもいやだなそんな鍵盤
589デフォルトの名無しさん:2008/05/10(土) 01:27:16
そういう奴は周りから嫌だなと思われるのを生き甲斐としている。
疎外感と優越感の混ざった感覚。
590デフォルトの名無しさん:2008/05/12(月) 14:45:20
ちょっと質問さしてください
WAVやAIFFを読み込んで再生するプライバックサンプラーを作りたいと思ってるんですが
音階演奏のための再生ピッチ変更(引き延ばし・縮め)って、
普通というか主流というか、どうやるものなんでしょう?
少しためしてみた感じでは、単純な一次補間でもけっこう使える感じがしたんですが
市販のサンプラーなんかはどうしてるんですかね?
591デフォルトの名無しさん:2008/05/12(月) 16:25:42
あらかじめアップサンプリングしたデータを持っているなら1次補間でもいけるだろうし
そんなもの好きにやったらいいと思うけどな
592デフォルトの名無しさん:2008/05/12(月) 17:33:47
DTM用で、あらかじめアップサンプリングしたデータを用意する
ようなことは想定してないです。
好きにやったらといえば返す言葉がないんですけどね・・・

サンプリングレート変換と同じといえば同じなので
もっとちゃんとした方法があることは理解してるんですが、
演奏が目的のサンプラーの類だと、
一次補間ぐらいやっとけば普通レベル??なのか気になったもので
593デフォルトの名無しさん:2008/05/12(月) 17:39:54
594デフォルトの名無しさん:2008/05/12(月) 17:49:29
>>592
いや自分でアップサンプリンしたのを内部データとして持っておけば
その1次補間でも十分実用になるという意味だよ。

アップサンプリングは元のサンプリング周波数の整数倍にすれば面倒なことは何もない
595デフォルトの名無しさん:2008/05/12(月) 18:10:43
>>593
いえいえ、タイムストレッチ・ピッチシフトではなくて
単純な再生速度変更です。

>>594
なるほどーうまい方法ですね。
補間方法ばかり気にしてたんで、いやかなりはっとしました。
メモリは食いますけど、それなら再生時の負荷もほぼ同じのままS/Nアップしますね。
そういう実装してるのもあるのかなぁ
596デフォルトの名無しさん:2008/05/12(月) 19:32:16
市販のサンプラー作ってた奴がいたとしても、そんなもんは企業秘密だから書けるわけねぇだろ
実装して問題が起ってるからアドバイスくれとかならともかく、抽象的すぎんぞ
597デフォルトの名無しさん:2008/05/17(土) 18:23:59
えーと、サウンドプログラミングについての定番サイトってありますか?
やりたいのは任意のWaveファイル(サンプラーとして)+ゲームパッドを使い、
リアルタイムに強弱をつけながらパーカッションを打ち鳴らして、
打ち込んだ結果をMIDIファイルやWaveファイルに保存したいです。
こういうゲームパッドドラム?を作って、楽しく、楽に打ち込みたいのです。
598デフォルトの名無しさん:2008/05/18(日) 06:03:46
ググレカス
599デフォルトの名無しさん:2008/05/19(月) 07:42:48
>>597
ゲームパッドで強弱を付けるのは不可能
600デフォルトの名無しさん:2008/05/19(月) 08:37:38
最近は感圧式ボタンや6AXISを備えたPC用ゲームパッドもあるから
一概にそうとも言えんぞ

まぁそんなの持ってる奴は少ないだろうから
テンポに合わせて自動的に裏表で強弱をつけることになるだろうがな
601デフォルトの名無しさん:2008/05/19(月) 08:48:30
ボタンで強弱 = ストリートファイターなイメージがw
すぐにボタンが壊れたから、感圧ボタン廃止 → 6ボタン制に。
あっ、ボタンによって強弱切り換えりゃいいじゃん。
602デフォルトの名無しさん:2008/05/19(月) 09:20:04
プレステ2のコントローラは感圧になっただろ
調節は難しいが
603デフォルトの名無しさん:2008/05/19(月) 10:23:48
素直にMPDとか使えよ。
604デフォルトの名無しさん:2008/05/19(月) 19:58:21
605デフォルトの名無しさん:2008/05/20(火) 00:32:46
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?USID=&W-NIPS=9974357500

この本見たことある人いますか?なかなか内容充実してそうなんですが・・・
これからサウンドプログラミング始める人にとってどうでしょうか?

地方なんで見れる本屋がなくて・・・
606デフォルトの名無しさん:2008/05/20(火) 00:40:08
>>605
ああ、それ結構有名。
607デフォルトの名無しさん:2008/05/20(火) 00:47:25
>>606
使えます?定価的にも高いので、失敗したくなくて
608デフォルトの名無しさん:2008/05/20(火) 09:37:23
MPDはゲームパッドじゃないよ
609デフォルトの名無しさん:2008/05/20(火) 10:10:01
610デフォルトの名無しさん:2008/05/20(火) 13:29:26
>>607
アマゾンのカスタマーレビューは参考にならないかな。
ttp://www.amazon.co.jp/gp/product/4501532106
>>607の「使える」の定義が分からないので的外れだったらごめん。
611デフォルトの名無しさん:2008/05/20(火) 13:43:33
本が「使える」かどうかなんて、オカズになるかどうかに決まっているじゃないか。
612デフォルトの名無しさん:2008/05/20(火) 13:46:53
山羊かよ!
613デフォルトの名無しさん:2008/05/20(火) 13:46:54
>>610
Amazon.comの原著のレビューはもっと熱いぜ
http://www.amazon.com/review/product/0262680823?showViewpoints=1
614デフォルトの名無しさん:2008/05/20(火) 13:56:04
>>611
ゴメン、君がその〜、童貞? だとは思わなかったから……
615デフォルトの名無しさん:2008/05/29(木) 21:35:58
waveInGetPositionを使って録音中の場所を知り(場所がa[p]だったとする)、
a[p-1024]〜a[p-1]までのメモリを読んでみると、
どうもa[p-500]とか以降は、まだデータが書き込まれていないことが多い。
こういうものなの?
616デフォルトの名無しさん:2008/05/30(金) 00:27:00
まさかとは思うが、short a[] なのに、p = mmt.u.cb とかってオチじゃねぇだろうな?
617デフォルトの名無しさん:2008/05/30(金) 08:05:47
>>616
TIME_SAMPLESを指定しています。
まあ、waveInGetPositionで得た値から500を引いて使えばいいので、
困っているわけではないんだけど、何かすっきりしなくて。
618デフォルトの名無しさん:2008/05/30(金) 16:52:58
学校の授業で、dsPICをつかってイコライザを作ろうと思っているのですが。。。

CDなどから音声信号をとってきて、高速A/D変換してデジタルフィルタにかけ出力という
流れ(まだ構想段階なので)でいこうと思うのですが、具体的にこれからどのように実現していけば
いいでしょうか。


619デフォルトの名無しさん:2008/05/30(金) 20:58:59
学校の先生に聞いて来い
そのために授業料払ってんだろ
620デフォルトの名無しさん:2008/05/31(土) 01:03:01
実は先生の方だって可能性もあるぞ。
621デフォルトの名無しさん:2008/05/31(土) 01:16:20
恐ろしい可能性だなオイw
質問のレベルの低さから学生だと信じたいけど。
教えてクン的な釣りの可能性も。>ttp://www.redout.net/data/osietekun.html
622デフォルトの名無しさん:2008/05/31(土) 06:12:23
正直 CDレベルの音質に対して dsPICってのはどうかな
16bitのDSPじゃ倍精度の演算に挑戦しないといけないぞ

イコライザが高域だけにするか、
サンプリングを11Kとかに落とすんならなんとかなるか

623デフォルトの名無しさん:2008/05/31(土) 10:55:48
>>618
プログラム板なのでソフトウェアに限定すると、
入力部とイコライザ部と出力部を実装するといいんじゃね
624デフォルトの名無しさん:2008/06/01(日) 22:30:36
三角波や矩形波でAの音を鳴らす・・・くらいのプログラムから始めたい初心者なのですが、
まずは何から勉強したらいいのでしょうか?
言語はC、Javaあたりならなんでもいいです。。
625デフォルトの名無しさん:2008/06/01(日) 22:41:28
鳴らすてのがどのくらいのレベルでやりたいのかわからないけど
とりあえず任意の波形をWAVファイルを書き出せるようにやってみたら?
WAV形式で作れるようになったら鳴らすのもAPIで出来る。
626デフォルトの名無しさん:2008/06/02(月) 05:58:34
>>624
言語に関しては熟知してるという前提で話するけど、
サイン波を画面に描画するのと同じ要領で音声出力に書き出すだけ。
書き出し方は環境に依存するけどWinでいいなら>>19辺りに解説がある。
627デフォルトの名無しさん:2008/06/02(月) 10:11:22
>>624
ドレミの基礎。A4が440Hzとかそういうとこから。
628デフォルトの名無しさん:2008/06/02(月) 21:04:47
採譜の達人ってあるじゃん

あれってどういうアルゴリズムだとおもう?
629デフォルトの名無しさん:2008/06/02(月) 21:54:29
十数msec程度毎にFFTし各周波数を観察してノートオン/ノートオフを検索。
マッチングは単音ファイルの周波数の分布から。>倍音成分を多く含む音に対してsine.wavを割り当てると倍音も全部拾っている
12音階で近いノートに割り振るというアルゴリズムなので周波数の揺れる音色が取れない。>和音優先だから当然

みたいな感じじゃね?
630デフォルトの名無しさん:2008/06/03(火) 10:44:10
>>628
どう見てもウェーブレット。単音をマザーウェーブレットにして変換するだけ。
631624:2008/06/04(水) 00:33:42
おかげさまで出来ました。
ありがとうございます。
632デフォルトの名無しさん:2008/06/05(木) 01:20:09
先輩方にお聞きしたい。
次のプロジェクトでサウンドプログラムの担当をすることになりました。
(社内含めてサウンドプログラムを経験している方がいないけど)
サウンドエンジン作れとのことですが、
経験則でいいのでどんなモノにしたらいいのか指針にしたいのでご意見下さい。
こんな出だしからして、音関係の知識はほぼありません。
「こういう勉強しろ」みたいなものやサイトがあればぜひ教えてください。
よろしくお願いします。

633デフォルトの名無しさん:2008/06/05(木) 01:39:48
>632
お前の言ってる事は、
「今日からプログラマーになりました、何から勉強したらいいですか?」
っつーレベルだぞ。
何で使うシステムなのか、ハードのアクセラレーションはあるのか、
ドライバレベルなのかライブラリレベルなのか、何がしたくてどういった要求なのか。
全部スッポリ抜けてる。
634デフォルトの名無しさん:2008/06/05(木) 02:03:14
というかどんなプロジェクトなんだか。
単純に考えてコンポーザとかゲームか。
なんだかんだ言ってサウンドはマイナーというか特殊扱いというかあまり扱わないよね。

WAVEの曲を背景にして効果音を鳴らすんなら音を足すだけでいい。
音階とかやるんなら周波数変えて合成とかする必要がある。

多分本当に初歩から勉強したいんだろうけど
とりあえずリアルタイムな事は置いといてWAVEファイルの作り方とか
簡単な波形の音の作り方とかそれで「ドレミ」を鳴らしたり和音にしたりとかから入るといいかも。
そのあたりはググれば見つかるんじゃないの。
リアルタイムな鳴らし方はWindowsならAPIかDirectX関連で探して。
他は知らん。
635デフォルトの名無しさん:2008/06/05(木) 17:11:07
今色々教えても、それを>>632が取捨選択できるようには思いにくいなあ。
やみくもに実装だけ覚えても結局何も作れないと思うので、
>>632はまずは大まかにでもいいから仕様を決めた方がいいように思う。
(それがわからないとレスもし辛いような)
例えば単にベタのWAVファイルを鳴らすだけでいいのか、
ループも含めたBGMとして鳴らしたいとか、効果音も鳴らしたいとか。
プラットフォームは何で、それがどういう機能を持ってて、
それを補うために何を作って何を作らなくて良いのか、とか。
そうすれば何を覚えればよいのか自ずとわかるんではないだろうか。
偉そうでゴメン。
636デフォルトの名無しさん:2008/06/06(金) 15:01:58
http://www.musicdsp.org/index.php
こういったたぐいの日本語サイトないかな?
637デフォルトの名無しさん:2008/06/06(金) 15:47:17
ない
638632:2008/06/07(土) 09:29:34
633,634,635>>
本当にすいません、指摘のまんま基本的な情報が抜けてました。
プロジェクトはPS3のゲームです。
詳しい要望が出てきてないので、設計をどうしたらいいかと悩んでました。
自分ではBGM,SEを単に流す程度しか思いつかず、
ゲーム系でサウンドエンジン作った方がいれば、
どんな機能をいれたのか知りたかったわけです。

633>>
ありがとうございます、おかげで少し落ち着きました。
初めての事でビビり過ぎてたと思います。言われて我に返りました。

634,635>>
PS3で何が出来るのかを探してはいるのですが、
音楽知識が無いままドキュメントを読んでるので、
自分では理解が不十分な感じがするのです。
なので、デジタルサウンドの基礎から勉強しなければと思いました。


639デフォルトの名無しさん:2008/06/07(土) 13:15:46
PS3のゲーム作れるとはすごいなぁ。
640デフォルトの名無しさん:2008/06/07(土) 14:02:04
ゲーム機ならライブラリとサンプルがあるはずだから基礎研究ならその辺弄ってあそんでりゃおk
プロジェクト進行中ならチーフなり企画なりから何らかの仕様が降りてきてんじゃね?
641デフォルトの名無しさん:2008/06/07(土) 17:54:02
3Dとかのエフェクトエンジンなのか
MIDIデータとかの再生エンジンなのか
ボイスとかのエンジンなのか

それとも全部一式? 一人ではキツイだろな
642デフォルトの名無しさん:2008/06/07(土) 22:16:31
バグゲーになりそうな悪寒。
643632:2008/06/08(日) 02:36:15
641>>
「MIDIも使いたいかも」みたいのは聞いた覚えがありますが、
上からの正式要件ではないので、一応対応するつもりです。
あとは5.1ch対応と3Dエフェクト(?どこぞの方向から音がする感じ)も…。
ちなみにボイスのエンジンとはどんなことするんでしょう。
なんかボイスの管理がどうとかリファレンスにあったけど、
音とは違うのだろうか。

バグゲーにはならないように頑張ります。
初めて一人で任された仕事なので、上でも一喝されてますしなんとかやってみる。
厳しいと感じたらまたアドバイスや気合もらいにきます。
644デフォルトの名無しさん:2008/06/08(日) 10:49:05
ここは電話じゃないのか(´・ω・´)
645デフォルトの名無しさん:2008/06/08(日) 10:49:54
ごばく
646デフォルトの名無しさん:2008/06/08(日) 20:33:43
ttp://www.cri-mw.co.jp/products/product_index_j.htm

どうせライセンスを買う金が勿体無いから同等の技術を開発しろってところだろうな
647デフォルトの名無しさん:2008/06/08(日) 20:52:32
ライセンス買っておけば不具合があっても相手持ちにできるのに…
自社で作ったら自分で責任取らないといけないよな
648デフォルトの名無しさん:2008/06/08(日) 22:03:43
CRIのは高いだけで良かった記憶ねぇなぁ。
649デフォルトの名無しさん:2008/06/09(月) 02:04:43
>632
PS3の仕様は知らんからなんとも言えんけど
効果音とボイスは違うんかいな。
いや、PS3だ。違うかもしれない。
650デフォルトの名無しさん:2008/06/09(月) 10:07:57
ノベルゲーでも作るんだろ
ボイスはストリーム、効果音とBGMはオンメモリ・MIDIシーケンスで
みたいな?
651デフォルトの名無しさん:2008/06/09(月) 23:58:40
話ぶったぎってすいません、
デューティ比が50%である矩形波は普通の音に聞こえるのですが、
25%、12.5%になると雑音が混じったような音が出ます。(ビー、ガガガなど)
これはサンプリングレートと音程の関係でこうなってしまうのでしょうか?
また、なぜ50%の時はこういった雑音が入ってないように聞えるのでしょうか?
652デフォルトの名無しさん:2008/06/10(火) 00:36:26
50%の時が一番サイン波に形近いからなぁ。
逆に、12.5%のとかは、クリック音が並んでるような音に近い。
653デフォルトの名無しさん:2008/06/10(火) 00:54:00
>>651
それぞれの周波数成分見れば一目瞭然
654デフォルトの名無しさん:2008/06/10(火) 01:26:25
>>651
50%だけ普通ってのはわからんが、
サンプリングレートに対して、半端な周波数を鳴らしているんじゃないのかな。かつ波形処理が簡易的な出力。
そうすると、山や谷の部分の間隔が1サンプル多い部分とそうでない部分とが出てくる。
それを聞くと、周波数の違う音が混じって、汚く聞こえる。
655デフォルトの名無しさん:2008/06/10(火) 02:02:16
ビーはともかく、ガガガは確実に元の周波数より長い周期でうなってるな。
だから、>>652-653の理由だけでは説明が付かない。
656デフォルトの名無しさん:2008/06/10(火) 10:28:57
波形うpしろ、解析してやっから
657デフォルトの名無しさん:2008/06/10(火) 12:54:43
>>651
定サンプリングレートだと、サイン波より矩形波の方が難しい波形なんだよ。
普通に0,1で出せると思ってたら甘いよ。

過去ログを見てみるといいよ
http://pc5.2ch.net/tech/kako/996/996171508.html
658デフォルトの名無しさん:2008/06/10(火) 18:35:41
なるほどなぁ、矩形波生成した時点ですでにエイリアシングノイズがのってるのか。
659651:2008/06/10(火) 21:02:12
過去ログ読みました。勉強になります。
>>651については>>654さんのおっしゃるとおりだと思います。
現在は、

フェーズの増加
phase+=( freq*(PI*2/sampleRate) );

値を返す
val=(phase<PI/8)? 1.0:-1.0;

こんな感じで補正が全くありません。
phaseにLPFをあてて倍音をカットすればいいのでしょうか?
無知ですいません。。
660632:2008/06/11(水) 01:27:24
>>649
私も「ボイスって声?だよな…」と一瞬考えたのですが、
ドキュメントの文脈と合わないので質問してみたんです。
で、調べてみるとシンセサイザとかで言う「音色」のことのようでした。
ドキュメント自体にそのように明言されていないので自信ないですが、
きっと音楽系の仕事をしてる人にはありきたりな内容かも知れません。

そんな感じで資料読むにも、
電子方面の音楽知識や単語を勉強したいところです。
「ディジタル・サウンド処理入門」って本でも読んでみます。
661デフォルトの名無しさん:2008/06/11(水) 07:15:54
>>659
パルス=デルタ関数の帯域カットしたデータを 4〜32倍のオーバーサンプリングした結果をテーブルとしてもって
おいて

8倍なら
( round(phase*8) mod 8) から 8個単位のこのテーブルを引き
その結果を立ち上がり側なら積算、立下りながら減算する。

最初からデルタ関数ではなく、ステップにしたら良いと思うだろうけど
周波数が高くなってくると、デルタ関数同士がオーバーラップするようになるから
デルタ関数を積分した方が良い。
662デフォルトの名無しさん:2008/06/11(水) 18:38:33
>>659
僕は、画像で言うアンチエイリアスの様な方法をやりましたが(画像処理での方法は知らないが結果的にそうなった)、
普通に聞く分には全く問題ないものの、良〜く聞くと若干ノイズが聞こえる。

綺麗な矩形波は
ttp://www.slack.net/~ant/bl-synth/
これを使ったエミュレーターの音は、全くノイズが聞こえないです。
663651:2008/06/11(水) 23:01:14
なるほどです。
>>662の帯域制限は>>661と同じ事なんでしょうか。(難しい…)

>>659のコードを、
phase+=freq;
val=(phase<(sampleRate/8))? 1.0:-1.0;

こんな感じで書き直したら、以前あったノイズはなくなりました。
(VirtualNES(NSF)で鳴らした音と比較してます)
なんでノイズが消えたのか、よくわかってませんが・・・。
とりあえずこれで作成してみようと思います。

>>661>>662の方法はまだ理解できないのでこれから勉強します。
ありがとうございました。
664デフォルトの名無しさん:2008/06/12(木) 08:20:38
> >>662の帯域制限は>>661と同じ事なんでしょうか。(難しい…)

方式が違う。 662 はサイン波合成で矩形波を作っている。
リアルタイム合成するにはサイン波を1,3,5,7の奇数倍周波数で位相を合わせて作れないといけない。
665デフォルトの名無しさん:2008/06/13(金) 17:49:51
サウンドプログラミングを学ぶためにローパスフィルタを作ろうと考えました。

方法としては波形データ→FFT→特定の周波数以上のところを0に書き換え→逆FFT

というのを考えたんですが、いざコーディングするとなると全く出来ないです。
wavデータを順番に配列に突っ込むというのは出来たんですが・・・
なにか参考になるサイトなどありますか?
666デフォルトの名無しさん:2008/06/13(金) 18:05:18
>>665
Wikipedia。デジタル・フィルタの基礎から勉強したほうがいい。

そのあとで↓
http://www.musicdsp.org
667デフォルトの名無しさん:2008/06/13(金) 18:19:07
>>666
英語はきついっすw
668デフォルトの名無しさん:2008/06/13(金) 19:48:34
じゃぁ本買いな
669デフォルトの名無しさん:2008/06/13(金) 20:33:30
勉強する気もねぇ乞食かよ・・・
670デフォルトの名無しさん:2008/06/14(土) 03:10:02
>>632
多分ゲームで必要になるのはストリームしながら再生、停止。
メモリに常駐している音(効果音、クリック音)の再生。
それらの音のボリュームの全体操作。
(画面が切り替わった時に前の効果音が残ったりしちゃうから。)
サウンド用の領域が溢れた時に音を鳴らさない、その旨を伝える手段。
場合によってはストリーム音のクロスフェード
(前の音を段々小さくして変わりに次の音を徐々に入れていく。)
それはなくても徐々に音を消す処理は必須。(いきなり消すとノイズが入る。)
この辺はハードが色々用意してくれてるだろうから、勢いでなんとかなる。
一番大変なのは、どの場面でも必要になるサウンド処理は、別スレッドで管理されることが多い。
サウンドはスレッドセーフで作らないと後で大変なことに。
後、BGMをストリームで流すとディスク上で常にシークが入る。
ロードを頻繁にするデータは、ディスクの外側よりBGMの隣にデータを配置した方が早くなる場合もある。
昔、隣の席でゲームのサウンドを開発している人を見た感想でした。
671デフォルトの名無しさん:2008/06/14(土) 10:50:28
         ,,,,,,,,,,_
           ,ィヾヾヾヾシiミ、
          rミ゙``       ミミ、
          {i       ミミミl
          i゙i ,,,ノ 、,,-=、 ミミミ  サウンドプログラム
          {_i=・}-{_=・`} ̄レゥ:}
             l ̄,,,,_,゙ ̄` :::ン   フフン
           |/ _;__,、ヽ..::/l
           ヽ.~ニ~ ' .::::ノ/ }\_
         _,,.-‐' `ー '"::/ /  |   ̄`''ー-、
      r‐''"   ./  i\/  /    |     / ヽ
      /     /   | /;;;ヽ、 l ヽ /     ノ /}
672デフォルトの名無しさん:2008/06/14(土) 11:56:49
シミュ系のプログラムやってる人おる?
昔のビンテージエフェクターの回路図をソフトウェアでシミュとか
673デフォルトの名無しさん:2008/06/14(土) 17:55:44
いけいけどんどんて
674デフォルトの名無しさん:2008/06/14(土) 20:30:15
>>668
どんな本が良いですか?

そもそも公式に書かれた記号の意味が分からない
俺のようなものでは読むだけ無駄ですか? orz
675デフォルトの名無しさん:2008/06/14(土) 22:53:08
勉強しろ
676デフォルトの名無しさん:2008/06/15(日) 15:27:42
OHMの「マンガでわかるフーリエ解析」辺りから入ればいいんでねぇの?
677デフォルトの名無しさん:2008/06/21(土) 00:41:08
音声をFFTして周波数領域でなんか処理してるプログラムのソースないですか?参考にしたい
678デフォルトの名無しさん:2008/06/21(土) 07:17:21
キーコンをFFTで周波数領域でやってる人がいたと思うけど
granul 分割統合法の方がシンプルで良好なようだよ。

ほかにはFFTはタップ数の多いFIRフィルタを計算するのに
計算量を減らすのに使われる。

周波数軸上で直接加工するのは難しいよ
679デフォルトの名無しさん:2008/06/28(土) 12:51:17
音声の実信号x[n]があります。

点数4096のFFTをかける

4096/2個のDFT値(実部と虚部)
Xr[n] Xi[n]を得る。

パワースペクトル計算し

xp[i] = Xr[i]*Xr[i] + Xi[i]*Xi[i]

対数とってdbに
db[i]= 10*log[10] xp[i]

という手順でスペクトル解析するプログラムを組みました。

入力として1khzのsin波を入力すると
1khz付近の値が一番大きく130[db]ぐらいになります。
これは正しい

しかし、10khzでも値が50ぐらいあって、

他にあるスペアナのように綺麗にピークがでません。

原因とかわかりますか?困っています
680679:2008/06/28(土) 14:37:47
あと窓関数としてハミング窓かけています
681デフォルトの名無しさん:2008/06/28(土) 14:42:02
80db差って10^8ってことだよねえ
682デフォルトの名無しさん:2008/06/28(土) 16:37:27
って事は別に普通だということですか?
フリーのスペアナだとそんなことはないんですが
683デフォルトの名無しさん:2008/06/28(土) 18:19:11
入力x[n]のパワーは?
窓関数外した時の結果は?
S/Nの閾値は?
684デフォルトの名無しさん:2008/06/30(月) 09:45:51
音声の実信号ってのが16bitPCMなんじゃないの?
そうするとデジタル誤差が丁度それくらいだと思うよ
685デフォルトの名無しさん:2008/06/30(月) 14:57:22
実信号x[n]の代わりに、sin関数で生成した配列を入力に使って
理想状態のテストをやってみたら?

その後、入力の位相をずらしてみたり、DCオフセットを追加してみたり、
16bitとか24bitに量子化するなど、各種の条件でテストしたら
どの要素がどのように影響しているのかが見えてくると思う
686デフォルトの名無しさん:2008/07/03(木) 19:51:24
>>683
窓関数いろいろ変えても良い結果はでないですね。
S/Nを区別する処理はしてません

>>684
そういうもんですかね?

>>685
例えば800Hzのsin波とかどうすればいいんでしょうか
687デフォルトの名無しさん:2008/07/04(金) 14:56:28
>例えば800Hzのsin波とかどうすればいいんでしょうか

#include <math.h>
#define PI 3.14159265
#define NN 4096
#define Fs 10000.0 /* Sampling freq. 10kHz */
#define Freq1 800.0 /* Signal freq. 800Hz */

int i;
double x[NN];

for(i=0;i<NN;i++)
x[i] = sin(i*2.0*PI*Freq1/Fs);
688デフォルトの名無しさん:2008/07/04(金) 17:01:01
>>686
16bitで量子化してると 6*15=90dBしかS/Nはないよ。
サイン波をソフト上で16bitのデータを作って入れても-105dB程度下にノイズが出てくる
689デフォルトの名無しさん:2008/07/04(金) 20:34:29
サウンドの基礎が解ってないようだし、初心者本なり教科書なり読んで勉強するべき。
690デフォルトの名無しさん:2008/07/05(土) 12:59:11
sin関数で生成したのでテストしてみました。1000hzのsin波で、サンプリング周波数は10k
FFTは4096点で、窓関数はハミングです


値はパワースペクトルです。

988.769531 [Hz]: 60.407160
991.210938 [Hz]: 52.110974
993.652344 [Hz]: 0.011060
996.093750 [Hz]: 6921.740936
998.535156 [Hz]: 681334.211257
1000.976563 [Hz]: 946209.472048
1003.417969 [Hz]: 31271.077880
1005.859375 [Hz]: 19.035879
1008.300781 [Hz]: 43.300825

なかなかいい結果になりました。993hzで値が小さいのが気になりますが。

97.656250 [Hz]: 0.061772
100.097656 [Hz]: 0.061831
102.539063 [Hz]: 0.061892
>>688
このあたりがノイズってことですよね。対数とってdbにするとマイナスでてきちゃうし
>>689
一応読んで勉強したつもりなんですが・・・ dbがマイナスとはどういうことでしょうか?音を吸収する?
691デフォルトの名無しさん:2008/07/05(土) 13:04:31
>>689
分かってないのはサウンドの基礎だけではなかったようだ
692デフォルトの名無しさん:2008/07/05(土) 13:17:42
1、 ムダな精度で表示するな
2、 周波数も対数化する方法を考えろ
693デフォルトの名無しさん:2008/07/05(土) 17:23:02
>>690
なんでスペアナ作りたいのかしらんけど、作っても君の知識レベルでは使いこなせないから意味無いよ?
694デフォルトの名無しさん:2008/07/05(土) 17:29:48
何を勉強したらいいですか
695デフォルトの名無しさん:2008/07/05(土) 18:09:10
なんでdB(対数)表現を使うのか?>http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B7%E3%83%99%E3%83%AB
対数のマイナス値の意味も解ってないみたいだから、高校数学辺りの教科書で対数を勉強する。
その上で>>679で触れてる「他にあるスペアナ」のスケールの上限下限値とか確認すると見えてくるかも。
696デフォルトの名無しさん:2008/07/05(土) 21:09:05
リア厨の予感がする
697デフォルトの名無しさん:2008/07/05(土) 21:09:55
リア中でこれだったら逆にすげぇわ
698デフォルトの名無しさん:2008/07/05(土) 21:21:35
今日び本読めばたいていのことは書いてあるから
付け焼刃的な知識で実装は小学生でも出来る
その本を本当に理解するのに必要な基礎知識が抜けているのは
真っ当な教育を(まだ)受けていないから
699デフォルトの名無しさん:2008/07/06(日) 05:46:08
ゆとり世代の大学の宿題
700デフォルトの名無しさん:2008/07/06(日) 12:10:09
「何を勉強したらいいですか」の一文は最高にイカしてるなw
広がる話題でも無いし、後釣り宣言で収束キボンヌ
701デフォルトの名無しさん:2008/07/07(月) 10:25:18
>>694
理系の大学1年生程度の数学。対数とフーリエ変換ぐらいは理解しとけ。
702デフォルトの名無しさん:2008/07/07(月) 10:57:25
>>694さんが >>690 なら技術的というか工学的なセンスを磨く必要があると思うよ。


プラモでもいいし電子キットでもいいし、何でもいいからとにかく
実際に何か組み立てたり 雑学でいいから色んな本を読んで、
面白そうなものは作ってみる。

有効精度とか、この結果を出すのに何が一番効くかといったあたりからね
703デフォルトの名無しさん:2008/07/08(火) 21:25:45
FFTの話からどんどん離れてきました
704デフォルトの名無しさん:2008/07/08(火) 21:38:58
センターキャンセル処理で単純にL-Rするとオーバーフローする。
(L-R)/2ってしたらオーバーフローはしなくなりました。

でも気になる事があります。

元の数値が奇数だったら、切捨てされておかしなことになりませんか?


705デフォルトの名無しさん:2008/07/09(水) 07:21:49
どうおかしくなると思うかを書いてみたら?
706デフォルトの名無しさん:2008/07/09(水) 07:29:49
(L-R)/2が3の倍数になると頭がおかしくなる。
707デフォルトの名無しさん:2008/07/09(水) 10:08:35
例えば波形の値が
300 303 だったら0.5倍すると150 151 となって二倍して元に戻そうとしても戻らなくなるので、データがちがくなってしまうのかなと
708デフォルトの名無しさん:2008/07/09(水) 10:31:19
標本化定理が破られたと聞いて飛んできました!

今の時代、2倍以上の周波数でサンプリングしなくても
デジタル処理を使うと元の信号を完全復元できるそうですが
マジですか?
709デフォルトの名無しさん:2008/07/09(水) 11:07:25
>>707
元に戻すような処理をするなら、2で割らず、余裕のあるところで計算しろ。

>>708
いましてるのは周波数じゃなくてビット数の話だろw
710デフォルトの名無しさん:2008/07/09(水) 11:46:59
元には戻さないんですが
いいのかな?って思うんです
711デフォルトの名無しさん:2008/07/09(水) 12:51:18
>>710
センターキャンセルで1bitの誤差が問題になる場面なんてあるの? なけりゃ気にするな。
712デフォルトの名無しさん:2008/07/09(水) 18:23:44
切り捨て(丸め)について、まじめに考えたいなら下記URLが参考になる

http://blackfin.s36.coreserver.jp/2191/misc/002_rounding.shtml
713デフォルトの名無しさん:2008/07/09(水) 18:59:29
まぁ2で割るんで十分でしょ
714デフォルトの名無しさん:2008/07/09(水) 22:34:52
>>708
いやいや、完全復元じゃない。

自然界に存在する音って調波構造持ってることが多いから、
低周波から倍音の推測がある程度可能って話。
こういう話が出るたびに標本化定理が破られたとか騒ぐ馬鹿がいるけど、原理が違うから。

>>709
別件の質問じゃね?
715デフォルトの名無しさん:2008/07/09(水) 22:37:20
>>707
(L-R)/2 だけだと当然、下位1ビットの復元無理。

その±1の差がどの程度問題になるかって話で言うと、まあ、用途しだい。

(L+R)/2 の情報もあるなら、円め方のルール決めとけば完全復元可能。
716デフォルトの名無しさん:2008/07/09(水) 23:30:17
(L+R)/2の情報持つぐらいなら、double型で(L-R)/2の情報を保持しといたほうがよくね?
717デフォルトの名無しさん:2008/07/10(木) 00:37:58
>>716
L, R が32ビット整数ならね。
718デフォルトの名無しさん:2008/07/10(木) 02:36:53
>>708 >>714
もしかして、アンダーサンプリングの話では?
719デフォルトの名無しさん:2008/07/10(木) 07:04:42
>>716
もっと手っ取り早く、L/R/0.5*(L+R)の三つを保持しとけばよくね?
720デフォルトの名無しさん:2008/07/10(木) 07:24:42
保存が必要なのは L と Rだけだろ (L-R)/2 はその場で計算出来る
721デフォルトの名無しさん:2008/07/10(木) 18:32:11
まぁ数だけじゃなく質もいいけどな

NT○研究所、ソ○ー アクセ○チュア

まぁ君らニートには縁のない会社ばっかりだよ
722デフォルトの名無しさん:2008/07/10(木) 18:39:51
周波数から音名への割り当て方ってどうすればいいですか?

例えばサンプリング周波数44.1khzのデータをN=8192の高速フーリエ変換をすると、
周波数分解能は5.38[hz]。

A3=440[hz]と考える。 440[hz]付近はこんな感じになってる

403.747559 409.130859 414.51416 419.897461 425.280762 [Hz] 

430.664063 [Hz] 436.047363 [Hz] 441.430664 [Hz] 446.813965 [Hz] 452.197266 [Hz]

G#3=415[hz]で、どこまでをG#のパワーとしてみなして、どこからどこまでをAのパワーとしてみなしていいかわかりません。

単純に区間を2分割だとまずいですよね
723デフォルトの名無しさん:2008/07/10(木) 19:16:42
またこの人か・・・
724デフォルトの名無しさん:2008/07/10(木) 19:24:57
すいません。上のFFTのひとです
725デフォルトの名無しさん:2008/07/11(金) 06:44:30
だから、まず、有効数字ってのを体に叩き込め!

半音の比は2^(1/12) = 1.059
だから、半音の真ん中の音は 2^(0.5/12) =1.029 の所だ

440*2^(-1/12)  = 415Hz
440*2^(-0.5/12) = 427Hz ここが真中


なお、 A=440Hzに対して 430Hzは Aの音じゃない。 調子外れの音だ
処理の都合で A に入れるだけって事だろ?
726デフォルトの名無しさん:2008/07/11(金) 10:11:53
ありがとうございます。

430Hzの音はAとしてみなし、Aのパワーとして加算すべきなのか、

ゴミとして捨てるべきなのかが分かりません。

430Hzの音が実際なっていなくても、FFTすると430Hzのところにパワーが出てきてしまいますよね?
727デフォルトの名無しさん:2008/07/11(金) 10:27:57
>>726
好きにしろ。
728デフォルトの名無しさん:2008/07/11(金) 11:57:50
>>726 手段は目的の為にあるんであって

手段の細かい事だけ聞かれても、他人には判断のしようがない
729デフォルトの名無しさん:2008/07/11(金) 12:51:10
厨房採譜ソフトでも作りたいんだろうよ
730デフォルトの名無しさん:2008/07/11(金) 16:21:44
test
731デフォルトの名無しさん:2008/07/18(金) 14:31:32
Windowsで、モールス信号を出すプログラムを作っています。
信号のオン/オフを、正弦波を生成して信号がないときには0で埋める方法で実装したのですが、
信号が切れるときにプツプツと酷いノイズが乗ってしまいました。
--
10 9 7 0 0 0 0 0 0
--
突然信号が0になってしまうのがノイズの原因と考え、信号が0に戻るまで待つことにしました。
--
10 9 7 5 3 2 0 0 0
--
これでノイズはだいぶ軽減されたのですが、まだ残っています。
何かいい方法はないでしょうか。
あまり知識がないもので、何か参考になるサイトや書籍などを教えて頂けると嬉しいです。
732デフォルトの名無しさん:2008/07/18(金) 14:32:40
>>731
エンベロープをつけろ。短い時間でフェードイン/アウトしろ。
733デフォルトの名無しさん:2008/07/18(金) 14:33:44
>>731
ちょっとそれ聞かせてもらえる?
734デフォルトの名無しさん:2008/07/18(金) 15:11:36
プチプチしたほうがモールスっぽいよ
735デフォルトの名無しさん:2008/07/18(金) 20:39:15
>>731
自前でサイン波形出力してるなら0クロス地点(付近)でカットすりゃいいだけだと思うが、
そもそも、その「10」とかって値の単位はなんだ?
モールス信号出力ライブラリみたいなのでもあんの?
736デフォルトの名無しさん:2008/07/18(金) 22:18:14
「信号が0に戻るまで待つ」=「0クロス地点(付近)でカット」ってことじゃないの?
737731:2008/07/18(金) 23:42:24
>>732
エンベロープ調べてみます。アタック・ディケイをかけろということでしょうか。
短い時間なのでフェードを使うという発想はありませんでした。試してみます。

>>735
>>736の通りです。数字は単なる例示なのであまり深く突っ込まないでください。
738デフォルトの名無しさん:2008/07/19(土) 06:47:15
多分、フェードインやフェードアウトの処理は数ms〜数十ms程度の時間で良いはず。

アマチュア無線機で、この時間を調整してキークリックを低減するという改造記事を
見たことがあるし、セットモードで調整可能なメーカー製トランシーバーもある。
739デフォルトの名無しさん:2008/07/20(日) 18:25:11
時間分解能があまり重要じゃない解析において、
手法を短時間フーリエ変換からウェーブレットにする利点ってある?
740デフォルトの名無しさん:2008/07/20(日) 23:52:06
ある
741デフォルトの名無しさん:2008/07/21(月) 00:03:34
具体的にどんなことですか?
742デフォルトの名無しさん:2008/07/21(月) 00:36:27
>>741
テンプレートマッチングとかじゃね?
音声認識で使うみたいなの
743デフォルトの名無しさん:2008/07/21(月) 00:41:43
FFTしたデータとのテンプレートマッチングでもいい気がするが
744デフォルトの名無しさん:2008/07/21(月) 09:44:12
まあ、ウェーブレットも、マザーウェーブレットの種類次第では、
単なる窓掛け FFT でしかないし。
745デフォルトの名無しさん:2008/07/21(月) 10:45:10
>>731
無音区間を0にするんじゃなくて、
そのまま保持してればいいんでは

10 9 7 7 7 7 7 7 7

って感じに。
746デフォルトの名無しさん:2008/07/21(月) 10:49:26
…と書き込んでいいこと思いついた。

接線の傾きが大きいときにカットするからノイズになるというんだったら
0クロス地点じゃなくて、サインカーブのてっぺん
つまり10、-10の時点で発振を止めて保持すればいいんじゃないかな。

10 9 7 5 3 2 0 -2 -3 -5 -7 -9 -10 -10 -10 -10 -10 -10

こういうことだ。
747デフォルトの名無しさん:2008/07/21(月) 13:03:20
>>746
それ、オーディオ回路にダメージを与えかねないんじゃね?
まんま直流電圧掛けることになるからコイル系の素子に過電流が流れそうだ。
748デフォルトの名無しさん:2008/07/21(月) 13:47:38
>>744
そうかな?
749デフォルトの名無しさん:2008/07/21(月) 18:50:24
>>748
コンセプト抜きにして、数式上はね。
ガボールウェーブレットとか、ガウス窓の FFT でしかない。
750デフォルトの名無しさん:2008/07/22(火) 01:50:35
>>746
直流成分
通常はD/Aコンバータのハイパスで取り除かれるかれるとは思うけど、
この手のプログラミングではやっちゃわないように気をつけるべきところでっせ
751デフォルトの名無しさん:2008/07/22(火) 04:09:42
>>749
窓掛けFFTは時間単位、ウェーブレットは波数単位とかではなかったっけ
752デフォルトの名無しさん:2008/07/22(火) 12:59:42
C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/874

874 名前:デフォルトの名無しさん[sage] 投稿日:2008/07/22(火) 12:01:38
御婆ちゃんになるにつれて、声が甲高くなるゲームを作成してるのですが
お勧めの関数はなんですか?

今自分ではiostreamとint(void)に目をつけています。

アドバイスよろしくお願いします
753デフォルトの名無しさん:2008/07/22(火) 22:04:29
さすが天才は目の付け所が違うな…

それよりロリぃ声を再現する関数が欲しい
754デフォルトの名無しさん:2008/07/23(水) 01:04:02
年取るにつれてしわがれた声になるのは
喉にディストーションエフェクタをつけるようなもんだから
ということは逆にディストーションをクリーンにするエフェクタがあれば
って、うーん・・・
755デフォルトの名無しさん:2008/07/30(水) 10:48:56
リアルタイムで波形を描画するプログラムを作ってますが、
MM_WOM_DONEが帰ってきたタイミングで波形を描画すると
音声再生が完了する前に波形を描ききってしまいます。

ネットの情報では音声再生が完了した場合にMM_WOM_DONEメッセージが返ると書かれていますが、
実際はMM_WOM_DONEメッセージが音声再生が完了したタイミングで返るのではなく、
デバイスに音声データを送信し終えた段階で返ってきているということなのでしょうか?
756デフォルトの名無しさん:2008/07/30(水) 11:01:31
大きいバッファ一つだとそういう感じになるね。

waveOutPrepareHeader で小さい領域を数個作って
ソレを繰り返し使いまわすようにするといい
757デフォルトの名無しさん:2008/07/30(水) 23:16:58
なるほど。ありがとうございました。
758デフォルトの名無しさん:2008/08/19(火) 05:57:23

>>605

使えるよ。めちゃくちゃ情報量多いのでレファレンス本として使ってる。
エフェクタの実装でつまったときとかに眺めてる。
歴史を網羅してる本(ちょっと古い)なんだけど、
アナログにおける実装とかをデジタルに落とすときに参考になる。
まあバイブルなんで、もっといたほうがいいと思う。
759デフォルトの名無しさん:2008/08/20(水) 22:33:25
>>605
原書の方が良いよ。
760デフォルトの名無しさん:2008/08/26(火) 06:52:16
ウェーブデータから指定した周波数をカットする関数はありますか?
761デフォルトの名無しさん:2008/08/26(火) 07:36:34
そりゃぁ、作ればあるだろうけど……
762デフォルトの名無しさん:2008/08/28(木) 01:40:14
>>760

FFTして所望の周波数部分削って逆FFTしろ
763デフォルトの名無しさん:2008/08/28(木) 01:42:45
ところでDirectAccessってその後どうなったのか
764デフォルトの名無しさん:2008/08/31(日) 18:42:37
バンドパス処理する場合にはFFTして通過させる以外の周波数の振幅を0にしてIFFTするだけでいいの?
765デフォルトの名無しさん:2008/08/31(日) 19:12:40
>>764
それでできるけど、FFT でやるとブロックノイズ対策が面倒よ。
普通に FIR とか IIR でバンドパスフィルタ作った方がいいと思う。
766デフォルトの名無しさん:2008/08/31(日) 19:48:27
なぜブロックノイズが生じるのですか?
767デフォルトの名無しさん:2008/08/31(日) 19:53:14
FFTは2^nサイズで処理するじゃない
768デフォルトの名無しさん:2008/08/31(日) 19:56:14
データを全区間にわたってFFTするならブロックにならないけども。
データ長次第か。
769デフォルトの名無しさん:2008/08/31(日) 21:35:27
終端のところは、前部分とオーバーラップさせて2^nにしたらダメですか?
770デフォルトの名無しさん:2008/08/31(日) 22:07:00
>>769
まあ、それがブロックノイズ対策。

FFT の変種で MDCT ってのがあって、
オーバーラップさせて周波数領域で処理するんならそれ使うのが楽かも。

とはいえ、やっぱり FIR とかを避ける理由がよくわからん。
771デフォルトの名無しさん:2008/08/31(日) 22:35:21
わかりました。FIR使ってみます。
避けたのは勉強してないからです
772デフォルトの名無しさん:2008/08/31(日) 22:40:15
FFTを使えばパワースペクトルが得られるってのは、スペアナの実装でよく知られているし、よく目にするからでは。
あとFIRはフィルタの設計法が分からんとか。
昔の俺がそうだったんだが。
773デフォルトの名無しさん:2008/08/31(日) 22:51:53
>>772
まさにそうですwww
FIRすればFFTいらないんですか?
774デフォルトの名無しさん:2008/08/31(日) 22:53:19
winampのグライコってどんな仕組み?
775デフォルトの名無しさん:2008/09/01(月) 00:06:57
俺は逆にFFT使う方法がわからん。


FFTして、弄りたい周波数の実部と虚部に係数かけてもどしゃいいだけ?
776デフォルトの名無しさん:2008/09/01(月) 00:54:32
>>770
MDCTはDCT-4だから、ライブラリ選ぶかもね
まぁfftw使えば選べるけど

>>771 >>773
位相を見ないのならDFT(いわゆる普通のFFT)よりDCTの方が良いよ (境界条件の関係)。
DCT前の窓処理がほぼ不要で、オーバーラップのみで結構まともに仕上がる。

FIRは時系列処理で、それと等価な処理が DFT(+オーバーラップ)
でDFTの高速化アルゴリズムがFFT
777デフォルトの名無しさん:2008/09/24(水) 21:55:05
こんなスレあったのか
知らなかった。。。
778デフォルトの名無しさん:2008/09/26(金) 04:42:11
ようこそ、ラッキー7。
ここはム板でももっともマニアックなスレです。
779デフォルトの名無しさん:2008/09/26(金) 05:04:35
776が言っている境界条件の関係が非常によく分かるページ
ttp://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/advanced/dct/

2次元DCTだが許せ。
780デフォルトの名無しさん:2008/09/26(金) 09:25:21
俺もそのうち二次元に行くから許してやるよ。
781デフォルトの名無しさん:2008/09/26(金) 15:30:40
2次元のFFTとか感覚的によくわからないんだよな。
音をFFTすると時間分が圧縮できるのは分かるが、画像をFFTして圧縮できるのはなぜ?
誰か教えてくり。
782デフォルトの名無しさん:2008/09/26(金) 16:05:28
だが断る
783デフォルトの名無しさん:2008/09/26(金) 18:22:13
>>781
イメージ的にだけど、
2次元のDCT=ある方向に濃淡が変化するレート
で、写真って一つの色に近い値に染まっている箇所がほとんど
(急激な変化は物体との境界にある)だから、例えば64x64の画像に
DCTをかますと、それは低周波数に集中する。

そこに音響で言えば周波数マスキングのような
心理的な情報を考慮させた量子化をすると、いい具合に低周波数
以外の部分が同じような値(0に近い値)になる。
同じような値が多いからエントロピーが少ない。だから、それに
ハフマン符号なんかをかますとファイルが圧縮できる。

間違っていたら訂正お願いします。
784デフォルトの名無しさん:2008/09/26(金) 19:45:56
分かってるやつには分かるが分かってないやつには分からない
結局教科書読めって話になる
785デフォルトの名無しさん:2008/09/26(金) 21:28:08
>>781
そもそも人間の視覚があんまり周波数の高い絵を認識してない
(細かいシマシマ描くと、その中間色あたりの単色に見える)
ので、高周波は多少劣化しても大丈夫。
786デフォルトの名無しさん:2008/09/27(土) 00:54:20
>>783
>>781

ははあ、なるほど。
サンプリング周波数が44.1khzでとりあえず十分っていうのと似た話か。
FFTすることで圧縮されるわけじゃなく、FFT後の量子化の際に高周波を切り捨てることで圧縮するという感じ?
787デフォルトの名無しさん:2008/09/27(土) 01:02:32
>>786
全部捨てるとさすがにあれだけど、
量子化ステップは高周波ほど荒くして問題ない。
788デフォルトの名無しさん:2008/09/27(土) 10:39:54
いやだからそれは本質じゃないんだってば
平均情報量って知ってる?
789デフォルトの名無しさん:2008/09/27(土) 11:13:14
>>788
量子化ステップ荒くしないと平均情報量そんなに変わらないよ。
べた塗画像とかならともかく、元々のエントロピーが高いものはFFTしてもやっぱエントロピー高い。
790デフォルトの名無しさん:2008/09/27(土) 17:57:48
表現を変えただけなら情報量は変わらん。可逆圧縮が例。
非可逆圧縮だと、本質に影響少なくどうやって情報を切り捨てるかが重要で、
そのときに周波数領域とかの表現形式によってやりやすさが変わる
791デフォルトの名無しさん:2008/09/27(土) 22:23:12
うそこけ
792デフォルトの名無しさん:2008/09/27(土) 22:26:19
ほんとだって。
でないと、可逆でエントロピー減ることになるじゃない。

法則性が見つけやすいって意味で、
見掛け上の情報量が減ってる感じになることはあって、
本質的にはFFTしただけでは情報量減らない。
793デフォルトの名無しさん:2008/09/27(土) 22:28:00
「表現をかえたという情報」の分だけ変わるじゃんよ?
794デフォルトの名無しさん:2008/09/27(土) 22:31:20
>>793
それは、「低周波数しか成分持ってない」とか付随した知識がある場合にのみ有効。
実際のところ、画像はそれほど周波数偏ってない。
795デフォルトの名無しさん:2008/09/27(土) 22:38:14
>>794
有効かどうかじゃなくて変わらんというのに反論してるんだよ
796デフォルトの名無しさん:2008/09/27(土) 22:53:02
でもそれ、「低周波しか持ってない」って情報がある時点でエントロピー低いのでは。
797デフォルトの名無しさん:2008/09/27(土) 22:53:40
えっと、要するに、エントロピーが変わるのは、
FFT かけた瞬間じゃなくて、負荷的な情報を与えた瞬間。
798デフォルトの名無しさん:2008/09/27(土) 23:23:50
エントロピーの計算式覚えてるよね?
799デフォルトの名無しさん:2008/09/28(日) 01:11:53
帰ってきたら色々レスついてるな
まずは >>792 >>794 >>797 に同意

>>795
変わらない。記号列長と情報量は区別するべき。可逆圧縮で考えるなら、
圧縮することで記号列は短くなるが、その記号列が表す情報そのものは何も変わらない。
変わったら可逆じゃない。情報が変わらないから情報量も変わらない。OK?

可逆圧縮は情報を変えずに記号列を圧縮する操作、非可逆圧縮はそれに加えて情報自体も削減する。
表現形式を変えるだけのDFTで情報量は減らない。で、周波数領域にすることで例えば
「低周波成分が大半を占める」とか聴覚心理モデルとか**問題領域固有の知識**を入れて、
削っても影響のない情報を判別して削るのが非可逆の基本。
何度も言うが、表現形式を変えただけでは情報量は減らない。
800デフォルトの名無しさん:2008/09/29(月) 10:00:27
なんかモンティホール問題と似てきたな。
誰か799の言ってることをモンティホール問題に置き換えて説明してれくれないだろうか。
801デフォルトの名無しさん:2008/09/29(月) 10:21:45
このソースコードと出力結果の情報量は同じ?
#include<stdio.h>
#include<math.h>
int main(void){
double theta;
int i;
for(i=0;i<10000;i++){
theta=i*0.001;
printf("%f\n", sin(theta));
}
return 0;
}
802デフォルトの名無しさん:2008/09/29(月) 11:32:52
>>801
本気で頭悪いのか?
理論と有限桁での実装の誤差ってのは何にしてもついて回るもんだから議論するだけ無駄。
803デフォルトの名無しさん:2008/09/29(月) 11:34:18
>>801
周期関数の結果は非可逆だよねぇ。情報量はどうなるんだろ。

そう言えばFFTして逆FFTすると、強度の情報が失われないかな?
音や画像みたいに正規化しやすい場合はいいんだけれど。
# 演算誤差は目を瞑ったとしても。
804デフォルトの名無しさん:2008/09/29(月) 12:32:27
0.001www
805デフォルトの名無しさん:2008/09/29(月) 12:40:18
>>799

すばらしい説明をありがとう。
情報量を圧縮って意味がわからないよなそもそも。
806801:2008/09/29(月) 19:17:35
>>802
誤差が無ければ議論できるの?
#include<stdio.h>
int myrand(void){
static unsigned long seed=377743;
seed=seed*8209+6469;
return (seed>>8)&0xffff;
}
int main(void){
int i;
for(i=0;i<10000;i++){
printf("%d\n", myrand());
}
return 0;
}
807デフォルトの名無しさん:2008/09/29(月) 20:56:03
>806
出力結果からそのソースが一意で起こせるならな。
ってか揚げ足取りがしたいだけだろお前。
808801:2008/09/29(月) 21:10:07
スマン
情報量云々を見るとつい…
809デフォルトの名無しさん:2008/09/29(月) 21:53:24
2次元の話がずいぶん広がってしまったな。
なんか音の話題ないの。
810デフォルトの名無しさん:2008/09/30(火) 12:09:50
ここにいるおまいらが今まで作った音響アプリの代表作って何よ。
俺はリズムサンプラー。
811デフォルトの名無しさん:2008/09/30(火) 13:15:36
>>810
そういうのはマ板でやれ
812デフォルトの名無しさん:2008/09/30(火) 16:31:04
音響アプリなんだからいいだろ。
このスレ貴重なんだから盛り上げていこうぜ。
813デフォルトの名無しさん:2008/09/30(火) 16:54:45
自分語りがしたいならマ板。
技術スレでする話題じゃねーわな。
糞スレ化するからいらんよ。
814デフォルトの名無しさん:2008/09/30(火) 17:43:26
すいません技術的な質問です。
オーバーサンプリングって単純にプログラム内でサンプリング周波数の倍のデータとして扱えばそれでいいんでしょうか。
データ間は0をつめるとして、なぜそれでエイリアシング対策になるのかが理解できません。
たとえば44.1khzのWAVファイルを倍の88.2khzで扱ったとして、元データは44.1khzのデータしかないので、結局音そのものはクオリティ変わりませんよね。
815デフォルトの名無しさん:2008/09/30(火) 18:57:58
キミが言っているのはオーバーサンプリングではなくアップサンプリングじゃないの。

例えば、20kHz以下の信号をAD変換したい時に、サンプリング周波数を
44.1kHzではなく88.2kHzにするのがオーバーサンプリング。
こうすれば、AD変換の前に必要なアンチエイリアシング・フィルタに必要な
遮断特性が緩和されるというメリットがある。

アップサンプリングについて説明すると、データの間に0を挿入してデータ数を
2倍にすれば2倍アップサンプリングになる。アップサンプリング後のデータには
エイリアスが発生しているので、それをFIRフィルタで削ってからDACで出力すれば、
DA変換後のスムージング・フィルタに必要な遮断特性が緩和される。

図が無いと判りにくいだろうから、詳しくは下記リンクを参照。
http://blackfin.s36.coreserver.jp/2191/program/polyphase/polyphase02.shtml
816デフォルトの名無しさん:2008/09/30(火) 19:28:25
>>815

なるほど、まず用語の使用が間違っていたのですね。
さらに実際はアップサンプリング時でもLPFをかけることが肝だったんですね、納得しました。
ありがとうございます。

参考:http://www38.tok2.com/home/shigaarch/OldBBS/20definition.html

ただ、そうなると良く分からないのが、たとえば>>405の記述で見られるような、
デジタル信号処理の計算の部分でオーバーサンプリングしろというのはどういう意味なのかということなのですが。
エフェクト処理でアップ(オーバー)サンプリングすることで、一体どんなメリットがあるのかわからずに悩んでいます。
もの分かりが悪くて申し訳ないです。
817デフォルトの名無しさん:2008/09/30(火) 23:15:53
>アップサンプリング
漏れなら同じデータで穴埋めちゃう。 当然、波形がカクカクするが気にしない。
画像の拡大もカクカクしてるのが好きだから。
818デフォルトの名無しさん:2008/09/30(火) 23:54:53
Lanczos3で補間したら適度なLPFにもなってるんじゃないの?
高級オーディオメーカWADIAの昔の製品はB-Splineだったな。
20kHzに近い波形はレベルも位相もボロボロになってるかもしれないけど
どうせサンプル数が足りないから長tapのFIRでも大差ないでしょ。
819デフォルトの名無しさん:2008/10/01(水) 01:13:56
>どうせサンプル数が足りないから長tapのFIRでも大差ないでしょ。

ここ詳しく。
820デフォルトの名無しさん:2008/10/01(水) 01:29:01
>>817
音の「カクカク」はジッターノイズになって苦痛じゃない?
821デフォルトの名無しさん:2008/10/01(水) 16:45:43
高周波が出ますナ
822デフォルトの名無しさん:2008/10/01(水) 22:23:45
おまいらフィルタの設計時ってどんなツール使ってる?
823デフォルトの名無しさん:2008/10/02(木) 09:34:09
dsPICworks

dsPICつこてるので。
824デフォルトの名無しさん:2008/10/02(木) 12:24:11
職場では MATLAB
自宅では GNU Octave
825デフォルトの名無しさん:2008/10/02(木) 14:59:12
GNU Octave って、FIRやIIRのタップごとの計算とか簡単にできたりするの?
GUIでスペクトル確認しながらとか。
826デフォルトの名無しさん:2008/10/02(木) 18:15:28
GNU Octave は、基本的に対話型コマンドライン環境だからCUIになるけど、
(コマンド列をテキストファイルに書き出せば、スクリプト実行も可能)
フィルタ設計コマンドでフィルタ係数を求めて、フィルタ特性をグラフ表示するのは簡単にできるよ。
827デフォルトの名無しさん:2008/10/02(木) 19:17:53
へー、おもしろい。使ってみます。ありがとうー。
828デフォルトの名無しさん:2008/10/03(金) 12:42:06
>>826
gnuplotと組み合わせてるのかな?
829デフォルトの名無しさん:2008/10/04(土) 16:46:17
MAXMSPとかでパッチ作ってあそんでるんですが
pluggoブリッジじゃなくて純粋なOSXのプラグインを
作りたいんですが、何から手をつけたらいいんでしょうか?
830デフォルトの名無しさん:2008/10/05(日) 01:45:43
あー....。
831デフォルトの名無しさん:2008/10/05(日) 08:21:52
結構色々調べたんですよ
CoreAudioのプログラミングXcodeでやるんですね

SourceForgeなんかにAUシンセのソース等みながら
やってみます
832デフォルトの名無しさん:2008/10/06(月) 11:42:35
MACはCoreAudioとかあるからなあ、結局サウンドプログラミングの出番ないよな。
833デフォルトの名無しさん:2008/10/06(月) 19:09:06
んな訳ない。 波形を自分で作ったり加工したり…
834デフォルトの名無しさん:2008/10/07(火) 05:05:08
それだけ?
835デフォルトの名無しさん:2008/10/07(火) 07:31:43
サウンドプログラミングじゃないじゃん
836デフォルトの名無しさん:2008/10/07(火) 12:14:18
サウンドデバイスプログラミングやAPI使用法はスレ違いだからすっこんでろw
ここはもっとアカデミックで高尚な話題のスレなんだよ
837デフォルトの名無しさん:2008/10/07(火) 14:22:35
デバイスなめんな
838デフォルトの名無しさん:2008/10/08(水) 04:37:48

>>830

それにしては、>>752の話題はこのスレでは光ってるよな
くそワロタ
839デフォルトの名無しさん:2008/10/09(木) 05:07:21
質問です。

自分の声って自分の耳で聞いた場合と、何かに録音して聞いた場合とでは違って聞こえますよね。
他人が実際どのように自分の声を認識しているのかを知りたくて、
それを聞けるようにするアプリを作ろうと思っているのですが、
そもそも技術的には可能でしょうか?

どうしても大好きなあの子がどんな風に自分の声を聞いているのか知りたくてたまらないんです。

よろしくお願いします。
840デフォルトの名無しさん:2008/10/09(木) 08:57:35
頭部インパルス応答ってあるじゃん
あれの応用で、音源を喉部に固定して測定すればいいと思うよ
841デフォルトの名無しさん:2008/10/09(木) 09:06:37
>>839
変態キモイ死ね

骨を伝ってくる音の特性を再現すれば出来そうだけど、
個人の骨格の違いでどの程度変わるのかってーのと、
そもそも個人個人で聞こえ方に差異があるはずだから無理じゃね?
842デフォルトの名無しさん:2008/10/09(木) 10:05:50
>>839
頭の模型を作って喉にスピーカー、耳にマイクを仕込んで、IRを取れ。それつかってコンボリューション。
843デフォルトの名無しさん:2008/10/09(木) 10:30:03
作ろうと思ってるなら自分で理論考えて作ればいいじゃん
そのための脳みそがないってんならご愁傷様だ
844デフォルトの名無しさん:2008/10/09(木) 10:40:39
単に他人の耳の位置にマイクを設置すればいいんじゃないの?
845デフォルトの名無しさん:2008/10/09(木) 10:41:29
普通に録音して聞けばいいだろ。その子の聞こえ方をシミュしても、その結果を聞くのは自分なんだし
846デフォルトの名無しさん:2008/10/09(木) 17:08:52
>>839
単に録音してそれを自分で聴くだけでいい。

難しいのは、自分の声を自分がどう聞いているかを
相手に聞かせることだ。
847デフォルトの名無しさん:2008/10/09(木) 20:06:19
>>840-842は質問を勘違いしてるな
848デフォルトの名無しさん:2008/10/09(木) 20:26:39
>831の者です

グラニュラ・・・そしてFFT・・・・
新しい音響はヒットチャートも揺るがしますよ

みなさん頑張ってね!
849840:2008/10/10(金) 00:43:36
・・・俺が>>841-842を誤誘導したっぽいな
850デフォルトの名無しさん:2008/10/10(金) 02:30:07
このスレで聞くくらいだから、まさか録音して聞けば済む程度の質問されるとは思わない罠w
でもまぁ全く同じには聞こえないだろうけど。
851デフォルトの名無しさん:2008/10/10(金) 19:14:27
その子の頭部を物理シュミレーションするしかないわな。
でもそれが測れるくらい仲がいいならもう付き合ってるよな。
852デフォルトの名無しさん:2008/10/10(金) 22:01:27
>>850>>851
それを言い出すとキリがないんじゃないか。

例えば「大好きなあの子がどんな風に自分の顔を見ているのか」知りたいのなら、
普通は「鏡を見ろ」と答えて、それで十分な答えだ。
あの子の水晶体や網膜の特性、視覚に関係する脳の働きまで考慮しないだろう。
853デフォルトの名無しさん:2008/10/10(金) 22:13:04
みんな勘違いしているようだが、>>839
その子自身の発した声を、その子自身がどう聞いているかを、知りたい って意味なんだよ。
854デフォルトの名無しさん:2008/10/10(金) 22:13:25
ところで、non causalなら理想ローパスってつくれるんでしょ?
855デフォルトの名無しさん:2008/10/11(土) 00:44:48
まあ、non causal ならねぇ
856デフォルトの名無しさん:2008/10/11(土) 11:32:49
一瞬カジュアルって読んでしまった

理想ローパスって有限長でできるの?無限長なら先読みできたところで意味ない気が…
理解間違ってたらすまん
857デフォルトの名無しさん:2008/10/11(土) 13:20:16
>>853
なるほど。全然気付かなかった。
「自分」という言葉を使ってるから両方の意味にとれるんだな。
その方法は俺も知りたいと思っていた。

適当なフィルタをかけて、どちらが似ているかを本人に選ばせ、
パラメータを微調整していく、というのくらいしか思いつかない。
858デフォルトの名無しさん:2008/10/11(土) 13:35:05
>>853
日本語の「自分」は1〜3人称全部に使えるからわかりにくい〜
859854:2008/10/11(土) 19:40:18
>>856
あっしの理解では、フィルタが無限長でも
データが有限長なら可能かと。
860デフォルトの名無しさん:2008/10/11(土) 23:20:43
ダウンサンプリングするプログラムつくりたいんだけど、
間引くデータはどう選んだらいいんですか?
861デフォルトの名無しさん:2008/10/12(日) 00:49:11
1/2にするなら1/4fsでローパスして1つ飛ばしすれば速い。
整数比でなければリサンプリング。間引くじゃできん・・と思う。
間引くだけで可能なら俺も知りたい。
862デフォルトの名無しさん:2008/10/12(日) 09:30:54
wavefs44.exeとかssrcのソースが参考になる。
863デフォルトの名無しさん:2008/10/13(月) 12:12:34
奇遇だな
俺もssrcを勧めようと思っていたところだ
864デフォルトの名無しさん:2008/10/13(月) 18:31:48
2つともソースもバイナリも入手不能っぽいのだが
865デフォルトの名無しさん:2008/10/13(月) 18:43:57
ググって一番頭のサイトで手に入るけど?
866デフォルトの名無しさん:2008/10/13(月) 19:03:39
ssrcって日本からアクセスブロックしてんじゃなかったっけ
867デフォルトの名無しさん:2008/10/13(月) 21:36:09
海外のプロクシ経由でアクセスすれば問題無いでしょ。
868デフォルトの名無しさん:2008/10/16(木) 20:51:37
DFTとDTFTの違いが理解できない…誰か解脱plz
869デフォルトの名無しさん:2008/10/16(木) 22:58:12
>>868
入力関数が周期的か否か
870デフォルトの名無しさん:2008/10/17(金) 02:54:09
SSRCみたいに、
サウンドプログラミングの参考になるオープンソースソフトって他にどんなのがありますか。


871デフォルトの名無しさん:2008/10/17(金) 04:50:26
>>868
Wikipediaより
・入力が離散的なら、フーリエ変換は DTFT となる。
・入力が周期的なら、フーリエ変換はフーリエ級数となる。
・入力が離散的かつ周期的なら、フーリエ変換は DFT となる。
872デフォルトの名無しさん:2008/10/17(金) 09:07:37
DFTは、有限区間での変換を行う。
DFTは実際にはそうとは限らないが、以下の仮定を置いて考える。
その時にその区間の信号が、周期的に無限に続くと考える。従って、信号の一端と多端が滑らかでない場合などに問題が生じる。
これらを解決するために、窓関数などが用いられるが、これによってスペクトル漏れという問題が起きる。

これに対し、DTFTは、実際に上記の過程が成立する場合ではないかと思う。
873デフォルトの名無しさん:2008/10/17(金) 16:17:35
連続時間・無限区間 → フーリエ変換
連続時間・有限区間 → フーリエ級数
離散時間・無限区間 → 離散時間フーリエ変換(DTFT)
離散時間・有限区間 → 離散フーリエ変換(DFT)
874デフォルトの名無しさん:2008/10/17(金) 23:21:38
どれも微妙に誤解を招きそうな回答ですな
875デフォルトの名無しさん:2008/10/17(金) 23:51:42
ご存知とは思うが、周期関数を除いては客観的な周波数成分など定義されていないので、
DFTの結果はDFT変換結果でしかない。
f(t)=f(t+T)を常に満たす周期信号など実在しないから(だって過去には限界があるし未来は分からないから)
実際には周波数成分は未定義である。
・・ということを念頭に置かないとフーリエ系周波数分析に過剰な期待をしすぎる。
ピッチが速く変化する人の声などはLPC分析のほうが成功を収めている。
876デフォルトの名無しさん:2008/10/18(土) 11:02:27
>DFT変換
877デフォルトの名無しさん:2008/10/20(月) 10:09:20
頭痛が痛いタイプの人か。
878デフォルトの名無しさん:2008/10/21(火) 01:42:12
頭痛はほんとに痛いんだぞ!バカにしちゃだめ!死ぬよ!
879デフォルトの名無しさん:2008/10/21(火) 04:20:59
大体でいいから音楽から歌声部分だけ目立たせるようにフィルタをかけたいんだが、
なかなかうまくいかん。

FIRフィルタで400-4000hzくらいを通したところで音楽がこもるだけだ。
フィルタで音声以外の部分を削る(性能はかなり低くていい)って無理なのか?
880デフォルトの名無しさん:2008/10/21(火) 08:36:35
どの音も倍音成分含んだ上で音が成り立ってるから、
周波数だけでボーカル分離はできないと思う。
音量やパンも考えないと。
881デフォルトの名無しさん:2008/10/21(火) 08:55:13
他に、「ボーカルはセンター付近にあって、他の楽器は左右に寄ってる」
って仮定のもとに分離を試みたりするらしいけども、
その仮定自体100%そうとはいえないし、
その仮定が正しい場合でも、たった2チャネルの信号から特定部分抜くのは難しい。
882デフォルトの名無しさん:2008/10/21(火) 19:18:17
マイクから録音した音声を波形で表示したいのですが、
WaveInで録音したものをどうやって波形にすればいいのですか?
883デフォルトの名無しさん:2008/10/21(火) 20:52:29
数値を時系列にプロット
884デフォルトの名無しさん:2008/10/21(火) 22:46:25
質問です

超超基本的なシンセソフト(学研のふろくのsx-150みたいな)を作ってみたいです!
プログラミング言語に関する知識は全くないです。(シンセソフト作りで一緒に勉強しようと思ってます)

使用する言語でおススメありますか?
885デフォルトの名無しさん:2008/10/22(水) 00:07:56
C
886デフォルトの名無しさん:2008/10/22(水) 00:10:11
C++
887884:2008/10/22(水) 01:50:29
>>885>>886
ありがとうございます!

C言語で調べたところVSTSDKというのがあったんですが、
これを使ってVSTとして作った方が近道ですかね?


あと、よかったら参考になる本など教えてもらえるととても嬉しいです。
(この前それっぽい本を買ったんですが、シンセのことばかりでプログラミングのことが載ってなかったんですORZ。でも勉強にはなりました)
888デフォルトの名無しさん:2008/10/22(水) 05:27:48
プログラムってのは成功失敗を問わず実践してこそ身につくもの。
人に聞く前に自分で実験してみたりはしないのかい?

そもそも言語の基礎が解ってるならサウンドの基礎知識だけ学べば実装はそんなに難しく無いはずだし、
言語から勉強しようってんならスレ違い。
889デフォルトの名無しさん:2008/10/22(水) 07:31:28
>>888
アドバイスありがとうございます!

少しでも近道しようっていう考えが間違ってました。

一人で頑張ります!
890デフォルトの名無しさん:2008/10/22(水) 10:22:51
VSTって知らないけど、全部自分で作った方が面白いと思うよ。
sx-150シミュレーターというかエミュレーターというか。
891デフォルトの名無しさん:2008/10/22(水) 10:27:43
>全部自分で
VSTなど使わずって意味で。
892デフォルトの名無しさん:2008/10/22(水) 15:24:46
むしろVSTなんか作ろうとしたら
ゴールが遠すぎてあっという間に挫折するわな
893868:2008/10/22(水) 22:56:08
皆様解説サンクスです。コメントを総合して何となく分かってきました。
"解脱"に誰もツッこんでくれなくて(´・ω・`)ショボーン

>>889 >>892
プログラミングモデルとしては、VSTは分かりやすい方ですよ。
オブジェクト指向っていう壁はありますが、複雑多機能なフレームワーク
渡されるよりは学習コストは低いと思います。
基本的には、SDKで提供されるクラスを継承して処理を実装して、
そのクラスのインスタンスのポインタを返す関数を書いてエクスポートするだけです。
894デフォルトの名無しさん:2008/10/24(金) 02:33:39
C#でサウンド操作関係のソフトを作ろうかと考えているんですが、waveOut系のような低レベル操作の出来るクラスが見つかりません。
DLLをインポートしてwaveOut系を使うしかないのでしょうか?
また、低レベル操作の出来るクラスがあれば教えてください。
895デフォルトの名無しさん:2008/10/24(金) 03:27:46
>>894

ManagedDirectX経由である程度できる。
昔MSDNにサンプルあったよ。
リズム/ドラムあたりで検索してみ。
896デフォルトの名無しさん:2008/10/24(金) 03:32:13
897894:2008/10/24(金) 09:55:53
>895-896
さっそく調べてみます。
ありがとうございます!
898デフォルトの名無しさん:2008/10/25(土) 01:40:18

遅延時間について教えてください。

FIRの設計で、周波数特性を先に決めて逆DFTかけてインパルス応答出しますよね。
このとき遅延時間が発生すると思いますが、この遅延時間を少なくする定石って何かあるのでしょうか。
サンプリング周波数を多くとるか、タップ数を減らすという考え方であってますか。
また、サンプリング周波数を多くとる場合、アップサンプリングでいいものなんでしょうか。
アホですみませんが、良く分からないので、よろしくお願いします。
899デフォルトの名無しさん:2008/10/25(土) 03:05:15
>>898
アップサンプリングすると元の音のある帯域が相対的に低域に落ちる。で、
低域で精度確保しようとすると必要タップ数が増えて元の木阿弥。

タップ数減らしたいなら直接設計法をやめるのが早い
900デフォルトの名無しさん:2008/10/25(土) 09:33:22
>>898
位相が歪んでもいいなら最少位相化でぐぐれ。

あとは、Remez アルゴリズムってので、
位相保ったまま、周波数特性の絶対値誤差を極力少なくできるんで、
それで所望の特性を少ないタップ数で実現できて遅延減らせる。
901デフォルトの名無しさん:2008/10/26(日) 22:53:44

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

>>899
ハイパスフィルタならアップサンプリングでも有効ですか?

>>900
なるほどー、Remz法って名前は知ってたのですがここで使うんですね。
902デフォルトの名無しさん:2008/10/26(日) 23:06:13
>>901
意味が分からん
アップサンプリングで見かけ上出てくる高域にあるのはゼロ補間で出てくるエイリアス。
普通LPFでカットするし、音響的には害しかない。
903デフォルトの名無しさん:2008/10/30(木) 17:17:14

音の出力の遅延時間そのものを自由に変更できるようにしたいんです。
その際多少音が悪くなってもかまわないので、1サンプル以下の単位で遅延時間を操作するためにFIRを使いたいと考えているのですが。
この場合定石ではどうやるんでしょうか...。アホですみません。
904デフォルトの名無しさん:2008/10/30(木) 19:18:05
フィルターなんか使わなくても、普通のプログラムレベルで出来ると思う。
905デフォルトの名無しさん:2008/10/30(木) 21:39:06
いやいや、分数精度遅延は普通FIR使うよ。
4〜6タップくらいで、ラグランジュ補間するのが一般的だと思う。
1サンプル以下の遅延ってのは要はサンプル間の補間
906デフォルトの名無しさん:2008/10/31(金) 20:26:10
ピッチを変更せずに再生速度を変更するのにはどういった手段が考えられますでしょうか?
FFTとかも触り程度にしかわからないのですが、お願いします。
907デフォルトの名無しさん:2008/10/31(金) 22:12:20
>>903
アップサンプリング→遅延→ダウンサンプリング
途中適宜LPFを入れる
908デフォルトの名無しさん:2008/11/01(土) 00:35:16
909デフォルトの名無しさん:2008/11/02(日) 13:04:09
>>906
一定間隔で切り、複製して並べる
910デフォルトの名無しさん:2008/11/03(月) 00:32:37
要は波の数を変えればいいんだよね
911デフォルトの名無しさん:2008/11/03(月) 13:27:44
>>908,909,910
ありがとうございます。タイムストレッチっていうんですね
ただ一定間隔できって複製して並べるという部分がちょっと理解できませんでした。
周波数をそのままにして音を削っていくみたいな感じだとはおもうんですが…
912デフォルトの名無しさん:2008/11/03(月) 18:20:21
クロスフェードで同じものを何度も繋げるだけだよ
913デフォルトの名無しさん:2008/11/04(火) 00:43:08
音響信号(wavファイル)をFFTしてバンドパスフィルタかけて逆FFTする。
っていうことをしたいんですけど、いかんせんこの分野は初めてなのでやり方がわからないです。

こういった処理をするプログラムソースが載ってる本を知ってる方おられますか?
914デフォルトの名無しさん:2008/11/04(火) 01:20:29
>>913
Intel IPP
915デフォルトの名無しさん:2008/11/04(火) 02:31:43
FFT→ピッチシフト→逆FFTなら
http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/
Cマガにもあったけど何年何月号か忘れた
916903:2008/11/04(火) 14:25:36
>>905 907

ありがとうございます。亀レス申し訳ないです。

サンプル間の補間というのは、一度アップサンプリングして、サンプル間を0ではなく、
3〜5次のラグランジュで補間するという意味でしょうか?
さらにその補間済みのアップサンプリングされたデータに対して4〜6タップのF4IRをかけるということで良いのでしょうか?


917デフォルトの名無しさん:2008/11/04(火) 23:09:07
>>916
いや、1/4, 2/4, 3/4 とかの位置のラグランジュ補間係数をあらかじめ計算しておく。
位置が決まってるラグランジュ補間は FIR フィルタで実装できる。
918デフォルトの名無しさん:2008/11/05(水) 09:36:33
サウンドプログラムと言うより、フィルタの使い方ばっかりだな。
919903:2008/11/05(水) 13:42:01
>>917
回答ありがとうございます。

>位置が決まってるラグランジュ補間は FIR フィルタで実装できる

サンプリングデータに対する補間ではなく、FIRの係数に対する補間をせよという意味でしょうか?

たとえば、あるデータに4倍のアップサンプリングをするとして、
それにかける4倍サンプリングレート時のFIRの係数を、
元々のサンプリングレート時のときの係数を基にして、
ラグランジュ補間を用いて予め計算しておくということですか?

つまり、アップサンプリング時用のFIR係数を予め作成しておく、という理解でよいでしょうか?

920デフォルトの名無しさん:2008/11/05(水) 19:15:42
フィルタの話ついでに
IIRの演算で精度上げてったら演算誤差の蓄積とかの影響がすくなそうなんだけど
結局蓄積するから使い勝手はかわらんかな
安定し続けるようなもんができたらいいなぁと思ったり
921デフォルトの名無しさん:2008/11/05(水) 20:15:27
DFTにおいての窓関数ってなんの意味があるんですか?区間の切り出しって意味で矩形窓はわかるんですが・・・
922デフォルトの名無しさん:2008/11/05(水) 21:31:43
周期関数を仮定するDFTで不連続点の解消
923デフォルトの名無しさん:2008/11/05(水) 21:50:59
それを解消するとなにがいいんですか?

窓関数で周波数分解能が変わるっていうのがわかりません。窓長で決まるものだとおもうんですが・・・
924デフォルトの名無しさん:2008/11/05(水) 22:09:42
>>923
矩形で切り出したら両端はどうなるかを考えるんだ。
つか人に聞く前に実際に実験してみれ。
925デフォルトの名無しさん:2008/11/05(水) 22:58:00
実験しましたが・・・

分解能っていうのは周波数ビンの幅のことじゃなくて、裾に出てくるスペクトルがなくなるってことなんですか?
926デフォルトの名無しさん:2008/11/05(水) 23:10:10
927デフォルトの名無しさん:2008/11/05(水) 23:16:53
>>925
裾のスペクトルが他の部分を滲ませるから、窓がけをする。
大体ピークの鋭度とサイドローブ(裾のスペクトル)の漏れがトレードオフになっている。
だからこれは適材適所で、例えばパワースペクトルの概形を推定したいときには
窓をかけた方が大抵の場合はいいけど(かけないと小さな信号がサイドローブリーケージで埋もれる)
周波数が近い二つの正弦波を見分けるときなんかは窓をかけるとサイドローブは抑えられるけど
メインローブが広がるからむしろかけないほうがいい。

周波数分解能が変わるって表現は誤解を招くと思う。
928927:2008/11/05(水) 23:24:47
あ、今読んで思ったけど「誤解を招く」って表現が思い切り間違ってます。
周波数分解能がかわるというよりも時間と周波数の分解能でトレードオフを取る、と書くつもりでした。
929デフォルトの名無しさん:2008/11/05(水) 23:24:59
なるほど。よくわかりました。広きに渡って周波数の分布をみたい場合に適した窓ってなんでしょうか?
採譜用なんですが、50〜2000hzぐらい
930デフォルトの名無しさん:2008/11/06(木) 09:33:23
>>919
時刻 1, 2, 3, 4 の位置のデータから時刻 2.25, 2.5, 2.75 のデータを作るFIRフィルタを作るだけ。
931デフォルトの名無しさん:2008/11/06(木) 10:13:12
>>929
採譜のどの部分かによる。アルゴリズムにもよるけども、音程を推定したいのなら矩形窓じゃないと
ベースの音高を推定するのに苦労すると思う。44.1kでサンプリングしたときの周波数分解能と
50Hz(オルガンの低音辺りだよな?)での半音での周波数差を見比べてみな。
あと、音色の分析とかだったらバーレットハン窓辺りが結構使われる。
932デフォルトの名無しさん:2008/11/06(木) 14:53:14
てか採譜にFFTって時間分解能が全然実用的じゃない気が
933903:2008/11/11(火) 21:17:36
>>930

回答ありがとうございます。
亀レスで申し訳ないです。

>時刻 1, 2, 3, 4 の位置のデータから時刻 2.25, 2.5, 2.75 のデータを作るFIRフィルタを作るだけ

アップサンプリング時に、2.25などの分数の部分のデータを作って、それをダウンサンプリングして再生でいいんでしょうか。
それで分数遅延になるんでしょうか?

ちょっと頭がこんがらがってきました。
934デフォルトの名無しさん:2008/11/12(水) 02:19:02
>>933
930じゃないけど、
http://www.acoustics.hut.fi/~vpv/publications/icassp00-fd.pdf
これ参考になる。理論に興味がなければ2ページ目の左コラムの式をそのまま実装すればおk
ディレイって本質的にシフトをさせたSincの畳み込みなんだけど、そうするとT<0まで
関数が存在するから窓がけするけど、そうするとリップルができるから、できるだけフラットな
F特を実現する為にラグランジュ、って考え方だと思います。
935903:2008/11/12(水) 06:18:39
>>934

この論文、まさに自分がやりたいことが書いてありそうなタイトルです。
理論のほうにも興味があるので、これ読みこんでみます。
ありがとうざいます!
936デフォルトの名無しさん:2008/11/13(木) 06:16:07
タイムストレッチする際に、周期を求めないといけないと思うのですが、
その求め方というか決め方がわかりません。

具体的には、音声をフレーム毎に区切って、クロスフェードさせることで時間を圧縮しようと
思うのですが、フレームをどう区切るのがいいのかがわからないので、
アドバイスお願いします。
937デフォルトの名無しさん:2008/11/15(土) 10:03:59
>>936
周期はユーザーパラメータでいいんじゃない?
938デフォルトの名無しさん:2008/11/20(木) 23:23:30
CQ変換ってなんですか?
939デフォルトの名無しさん:2008/11/21(金) 01:19:42
CQ CQ こちらJF8....です
940デフォルトの名無しさん:2008/11/21(金) 01:27:08
かなり初心者な質問だと思いますが、返答していただけたら幸いです。

現在、音楽ファイル(wavファイル)をFFTし、バンドパスフィルタをかけ、IFFTするという作業をしているのですが、
音楽ファイルのデータを配列に入れるとき、ステレオデータだと右左右左(逆?)…と格納されますよね?
そこで左のデータと右のデータを別の配列に格納して、片方のデータだけを使用しているのですが、問題はないでしょうか?
目的としては音楽特徴量の抽出です。

またフィルタをかける際ですが、
勉強不足でフィルタをかけるタイミングがわかりません↓
配列に格納したデータをFFTした後フィルタをかけIFFTするのか、生のデータにかけるのか…
ちなみにFIRフィルタをかけるつもりですが、係数の計算方法がわからないので、
http://momiji.i.ishikawa-nct.ac.jp/dfdesign/fir/mado.shtml
のサイトで得られる係数を利用したいと思っています。

そもそも考え方が間違っているかもしれません。
よろしければご鞭撻のほどよろしくお願いします。
941デフォルトの名無しさん:2008/11/21(金) 02:32:33
前段は別けて問題ないが、特徴量の抽出が目的なら足しちゃえば?
後段は誰かに任せた
942デフォルトの名無しさん:2008/11/21(金) 03:51:49
>>940
よくある半区間重複だと、
窓→FFT→係数をそれぞれ乗算→IFFT→窓→オーバーラップ
このやりかたの場合、2回の窓掛けの結果をオーバーラップする必要があるので
sin窓とかvorbis窓を使う必要がある。あとライブラリによって出力データの並びが
違うので、それにあわせて適切に係数乗算しないと変になる。
943デフォルトの名無しさん:2008/11/21(金) 09:58:23
>>940
ソースデータにもよるし、片chで期待するデータが得られるならそのままでもいいし、
狙った効果でPANしてる曲とかはLR加算するとヘンに聞こえたりする場合も稀にある。
結果が解ってる実験なり課題なりなら最適な方選んでもいいし、
ステレオでFFT処理して、必要に応じて出力結果を波形編集ソフトで弄ってもいい。

それとFFTでフィルタかけるわけだから、FIRは不要じゃね?
大抵の場合>>942の手順で事足りると思う。
多分フーリエ変換が解ってないんだと思うからFFTのC言語ソースとか落としてsin/cos波形食わしてみ。
http://www.google.co.jp/search?q=fft.c
944940:2008/11/21(金) 17:30:04
みなさんありがとうございます。
やはり勉強不足のせいで、理解できるところと全くわからないところとあります…
ですので、もしよかったらソースを見ていただきたいです。
いただいたプログラムを弄っているので、至らない部分もあるかと思いますが、
もし時間のあるかたがいましたら、ご鞭撻のほどよろしくお願いいたしますm(_ _)m

ttp://a-draw.com/uploader/upload.cgi?mode=dl&file=6970
パスはmail欄です。
945デフォルトの名無しさん:2008/11/21(金) 18:59:18
FFTした結果からピークの山を見つけるにはどういうプログラムを書けばいいですか?

実際の値を 横軸を対数に周波数、縦軸にパワーにとったグラフにプロットして目で見ればここが山かなと
わかるんですが・・・
946デフォルトの名無しさん:2008/11/21(金) 19:26:00
Audacityのスペクトル表示にあるような機能です。
947デフォルトの名無しさん:2008/11/21(金) 23:12:04
>>945
ケプストラム
948940:2008/11/22(土) 00:54:01
指摘はメールでお願いしますとreadmeで書きましたが、
このスレでしていただいても結構です。人頼みで申し訳ありません
949デフォルトの名無しさん:2008/11/26(水) 15:45:00
周波数と振幅からどうやって音量を求めるんですか?
950デフォルトの名無しさん:2008/11/26(水) 17:45:39
もしかして:RMS+二条平均根
951デフォルトの名無しさん:2008/11/26(水) 18:06:38
変換ミス...

二乗平均根
952デフォルトの名無しさん:2008/11/30(日) 18:52:47
固定小数点演算のフィルタを作りたいのですが係数の小数点位置はどのようにして決めればいいんでしょうか
953デフォルトの名無しさん:2008/11/30(日) 19:03:15
>>952
用途によるとしか言いようが。
昔自分が作ったのだと、IIRだと整数部2ビット、FIRだと整数部なしでやった。
954デフォルトの名無しさん:2008/11/30(日) 21:28:15
符号部1bit,整数部2bit,残りを少数部ですかね
乗算した結果が精度的に2倍なると思うのですが、元の精度に戻すことを考えると頭がこんがらがってしまって・・・
そのあたりはどうすればいいんでしょうか
955デフォルトの名無しさん:2008/11/30(日) 21:47:46
>>954
そんなとこ>符号1bit、整数部2bit。

普通は係数とバッファで固定小数点位置変えるからなぁ。
たいてい、フィルタ係数って1以下になるでしょ。
956デフォルトの名無しさん:2008/11/30(日) 23:22:25
モノラル音響信号を、2次元フーリエ変換成分(周波数方向のフーリエ成分と時間方向のフーリエ成分)
に分けることって可能ですか?そのあたりについて詳しいサイトとか本とか知ってたら教えていただきたいです。
957デフォルトの名無しさん:2008/11/30(日) 23:33:02
>>956
それ、ウェーブレットで検索した方がいいかも。
958デフォルトの名無しさん:2008/11/30(日) 23:33:53
係数は確かに大抵1以下なんですが、ところどころ1以上になるところが出来てしまって・・・
もしバッファの小数点位置がLSBにあって、係数を符号部1bit,整数部2bit,小数部5bitとした場合は乗算した結果を5bit右シフトして整数部を残すようにするんでしょうか
この方法だと係数が1以上の場合、残した整数部データの有効なビット幅がバッファに入ってるものより大きくなってしまう気がして・・・
959デフォルトの名無しさん:2008/12/01(月) 00:50:13
>>956
スペクトログラムのことを言っているなら短時間FFT
960デフォルトの名無しさん:2008/12/01(月) 21:46:34
ここで聞くのがいいのか少々悩ましいのだが
AMDーSB700でレガシオーディオの設定はどこのポートを叩けばいいのか情報ないかい?
非Windows環境なんだが、奴が邪魔してYMF744のFM音源鳴らすのに不便で仕方が無い。
961デフォルトの名無しさん:2008/12/02(火) 00:09:48
DTMFのトーン信号を解析するソフトについて、ソースとかから載ってる本とかwebPageとか
ご存じありませんか?
#出来ればVC++で。
 
962デフォルトの名無しさん:2008/12/05(金) 03:47:09
>961
VC++ではないけど、参考になるかな?
http://www.mars.dti.ne.jp/~m7030/pic_room/dtmf/index_rx.html
963デフォルトの名無しさん:2008/12/05(金) 14:38:35
>>962
ありがとう。ただ、俺が探してるのは外部装置なしでPC内で完結してるやつなんだ。
サウンドカードから取り込んで、判別&表示、みたいな。
964デフォルトの名無しさん:2008/12/05(金) 14:38:50
スペクトラムってどうやって計算するんですか?
965デフォルトの名無しさん:2008/12/05(金) 16:45:44
FFTして複素平面上でベクトルの絶対値
966デフォルトの名無しさん:2008/12/06(土) 10:33:08
THX!
967デフォルトの名無しさん:2008/12/07(日) 02:47:17
リサンプリング周波数の組み合わせによっては処理量が膨大になる問題で
例えば48k→44.1kで↑147↓160を素因数分解して複数回処理にわければ、
重い(ほぼ)理想フィルタでも使える!売れる!

とか思って実装してみたらVoxengoに年単位で先を越されていたというチラ裏。
(ちなみに処理量は1/7〜1/8になります。
ほぼ理想フィルタなので数回程度なら聴取可能な影響はない)
968デフォルトの名無しさん:2008/12/08(月) 01:39:44
>>967
イミワカラヌス
969デフォルトの名無しさん:2008/12/08(月) 15:07:39
>>968
分かる奴だけ分かってくれ…ってのはアレなので、
↑がインターポレーション
↓がデシメーション
間にLPFが入る
っていうサンプルレート変換のやり方の話。DSP使わない場合は
計算負荷と品質のトレードオフになる。あとはてきとうに調べて。
970デフォルトの名無しさん:2008/12/15(月) 04:43:01
勘違いしてるかもしれんから教えて欲しいんだけど、
一次元信号で8000のデータ数があったとして、それをレベル3までのウェーブレット変換をしたら、
0〜2000までがレベル3のスケーリング係数で、
2000〜4000までがレベル3のウェーブレット係数で、
4000〜6000までがレベル2のウェーブレット係数で、
6000〜8000までがレベル1のウェーブレット係数って認識であってるかな?
971デフォルトの名無しさん:2008/12/15(月) 05:21:42
実装次第
972デフォルトの名無しさん:2008/12/15(月) 08:06:02
そりゃそうだ
973デフォルトの名無しさん:2008/12/19(金) 12:10:46
http://limetarte.net/software/more/binary/VocalReducer.htm
ここのボーカルキャンセラーなんだけどアルゴリズムについてわかる人いますか?

・新ボーカルキャンセラ(周波数成分分解ベクトル減算型=イミディエイト法)
  L, R チャネルをそれぞれ フーリエ変換、ハートレー変換などで
  {Li},{Ri} のように周波数ごとの成分に分離します。
  ここで、両チャネルの振幅スペクトル・位相スペクトルを比較し、
  非常に近いもののみを、重み付け係数付きでベクトル減算します。
  これを逆変換すると、中央音の消えたステレオ音源を得ることが
  できます。


LとRのパワースペクトルを比較して、 パワーが似てる周波数ビンのパワーを0とかにすればいいのかな?

作者に聞けっていわれそうですが・・・返信がなかったんで
974デフォルトの名無しさん:2008/12/19(金) 12:39:01
位相も考えないとだめじゃないの
975デフォルトの名無しさん:2008/12/19(金) 14:11:32
まぁ普通この手のアルゴリズムは説明してくんねぇって。
何の用途で使うかしんないけど、そのまま製品化とかされたらたまんないし、
どっかのサブマリン特許に引っかかってる可能性もあるし、メリットねぇもん。
976デフォルトの名無しさん:2008/12/19(金) 16:11:08
フーリエ変換が分かれば高校数学でできる。
複素スペクトル平面上にOLとORを書いて、
PLとPRが直交するようなOPを適当に作ってベクトル減算。
習った次の日くらいに思いついたぞ俺。

ブロック単位の処理の場合プリエコーポストエコーの問題もあるから、
上みたいな遊びソフトはともかく、音楽制作に供するなら
ちょっとは頑張らないと音質的に微妙になるけど。
977デフォルトの名無しさん:2008/12/19(金) 17:10:46
はいはい(笑)
978デフォルトの名無しさん:2008/12/19(金) 18:55:29
>>976
ちょっと2次元で書いてくれませんか?

979デフォルトの名無しさん:2008/12/19(金) 19:48:52
おまえらその説明で分かんないのか……
980デフォルトの名無しさん:2008/12/20(土) 21:48:01
こういううざいのってどこにもいるのね
981デフォルトの名無しさん:2008/12/22(月) 09:13:38
うめ
982デフォルトの名無しさん
>>978
t = arange(0, 50, 0.01)
x = exp(-t/10)*cos(t)
y = exp(-t/10)*sin(t)
z = t