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


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

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



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

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

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

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

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


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

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


283 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 02:56:12 ]
>>282
ヒント: MDCT

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

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

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

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

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

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

287 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 20:44:38 ]
>>285
ヒント: Time Domain Alias Cancellation (TDAC)

288 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 23:33:29 ]
ズラシテフィルタ=comb filter

289 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 00:15:00 ]
>>288
面白いがこの流れでそれはないww

290 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 13:16:44 ]
>>290
短時間FFTだね。2回掛ける方法の場合、有名どころがsin窓とかVorbis窓。
でも、FFTサイズ4096なのになんで1024ずらしで使ってるの?
2048ずらしで十分だと思うけど

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

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

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


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


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

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

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

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

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

299 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:00:52 ]
あきらめたら?

300 名前:298 mailto:sage [2007/11/27(火) 02:06:25 ]
ありがとうございました。もうあきらめます。



301 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 03:05:16 ]
waveの読み込みぐらいgoogleに聞いてみればいいのに

302 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 03:32:44 ]
ttp://www13.plala.or.jp/kymats/study/multimedia.html


303 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 03:46:57 ]
釣りだろ? jk

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

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

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

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

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


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

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

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



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

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

313 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 03:37:54 ]
FFT(笑)

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

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


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

317 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:35:29 ]
FFTで有名な場所
www.kurims.kyoto-u.ac.jp/~ooura/fftman/index.html

Delphiなら
pc.2ch.net/tech/kako/993/993457354.html
ここの207以後。


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

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

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


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



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

322 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:53:08 ]
ナンセンス
好きなの使えばいいじゃないの

323 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:00:45 ]
FFTで何をするか、に興味がある
FFT実装には興味ないなぁ

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


325 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:43:33 ]
そうですけど

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


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

328 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:46:30 ]
糞文系が理系を支配する構図ってやつ

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

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

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



331 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 02:58:11 ]
文理ではなく理学と工学の関係に近いかな

332 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 03:17:09 ]
学の無い人は壁を作りたがる

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

334 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 06:18:12 ]
理系でも文系でもいいけど
こんなところでストレスぶちまけないでよw

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


336 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:45:02 ]
FFTSSってのがあるな
暫くこれ使わせてもらおう

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

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

339 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:54:29 ]
IIRのバンドパスとかとはどうちがうの?

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

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

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

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



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

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

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

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

343 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:40:20 ]
あぁでもエイリアスひろっちゃうかな、、

344 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 02:20:33 ]
マルチバンドコンプ用に帯域分割フィルタを作りたいんだけど、
線形位相・完全再構成な不等分割フィルタバンクの設計法を調べるので方向性合ってる?

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


347 名前:デフォルトの名無しさん mailto:age [2007/12/09(日) 02:39:55 ]
JWAVEを聴きながらVeohを見てみた
youtubetv.atspace.com/?&VeohSpotlight!&JWAVE@VeohWideTV

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


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

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

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

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



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

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

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



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

357 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 07:24:01 ]
普通はZ変換にw*i を突っ込めば出ますが?

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

358 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 12:35:24 ]
サウンドプログラミングって面白いね!

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

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



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

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

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

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

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

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

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

367 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 14:12:10 ]
>>366
ttp://www.google.co.jp/search?q=%E8%8B%B1%E5%92%8C&lr=lang_ja

368 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 17:23:21 ]
義務教育受けてないなら諦めろ
受けてるならなんとかなる

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

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



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

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

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

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

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


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

374 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 16:23:40 ]
LRでリサージュ描くんじゃだめ?
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 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:42:03 ]
ベクトル積じゃなくて回転行列との掛け算だろう
| c , s |
|-s , c |

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

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

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

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

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

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

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


宜しくお願いします。

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

378 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:49:15 ]
馬鹿は際限無く馬鹿ということ

379 名前:デフォルトの名無しさん [2008/01/25(金) 03:25:54 ]
>>378

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

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

380 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 05:00:54 ]
>>379
>>>378
>>376



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

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

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

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

383 名前:376 mailto:sage [2008/01/25(金) 22:19:20 ]
>>377
>>379
SCILAB使ってます。便利な世の中です。

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

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



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

384 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:21:14 ]
>>381 相違のズレ>位相のズレ

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

385 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:55:33 ]
>>384
僧衣でググれ

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

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

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

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

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

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

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

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


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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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




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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

お願いします.



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

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

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

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

3 ASIO
利点:低遅延


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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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


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

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



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

IIIRでも同じなんだけどね

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

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

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

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

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

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

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


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

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

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

まちがってたらすまん


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



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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

C++を考えてるけど



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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

487 名前:484 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:00:14 ]
>>488
不勉強な中,質問させていただいて申し訳ありません.
ご丁寧なレス,感謝致します.頑張ります.

490 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:25:01 ]
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}
を見るくらいかなあ・・・

493 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 20:52:43 ]
質問です。

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

Q2.
信号を、sine窓かけて50%オーバーラップしてMDCTして、
そのまま逆MDCTして、再度sine窓かけて、オーバーラップすると
信号は完全に再現されるのでしょうか?


494 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:07:26 ]
理論上どうだったかは忘れたけど、
少なくとも窓関数が 0 近い辺りでは誤差が大きくて、
完全な再現ってのは無理。

495 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:41:59 ]
>>495
詳しい説明ありがとうございました。
MP3は、なぜハミング窓を使わなかったのだろう、と思いまして。
sine窓の必然性が理解できてないのです。。。

497 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:08:38 ]
>>496
周波数領域での加工を前提とすると、
FFT前に窓がけしないと、周波数領域の信号レベルの確度が悪くなる
逆FFT後に窓がけしないと、時間領域で接続性が悪い

上の理由から実務上2度窓がけする必要があって、かつ、2度の窓がけ後の結果の
オーバーラップが元信号に戻らないといけない。でも、han窓は1回の窓がけの
結果のオーバーラップで元に戻るように設計されてるから適さない。
で、上の条件を満たすsin窓とかVorbis窓が使われる。

498 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 20:45:14 ]
なるほど、頭いいなー

499 名前:デフォルトの名無しさん [2008/03/15(土) 16:21:05 ]
すみません、質問なんですが

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

どなたか、上記の本のことをご存じないでしょうか?

500 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:34:48 ]
picってMicrochip社のPIC?



501 名前:499 [2008/03/15(土) 23:37:51 ]
>>500
ごめんなさい、picかどうかも怪しいです。
僕はMicrochip社のPICのつもりで書きましたが、
そもそもpicじゃないかもしれないです。

質問内容が曖昧過ぎますよね。。。
今になって>>499の本にすごく興味が出てきてしまって。

502 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 08:27:07 ]
PICだとすれば DsPIC だろうけど

503 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 08:32:06 ]
検索したけど、コレくらいしかみつからなかった
gihyo.jp/book/2006/4-7741-2863-5

504 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:38:52 ]
すげえなこれ
ttp://slashdot.jp/it/08/03/16/222221.shtml

505 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:01:38 ]
ソレ、おれもおどろいたわ
どういう仕組みなのかなあ

506 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:45:39 ]
基音を分解したあと上音を再構成してるんだろうけど
どの上音をどの基音に結びつけるかってのは、
あらかじめ楽器音を抽象化したサンプルのカタログから検索してるんじゃないかなぁ


507 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 05:47:11 ]
すげえなこれ
sho1.jp/sho1/movie.swf


508 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 10:07:14 ]
>>506
それだと人の声とか、音の響き方が変わったときは無理じゃね?
解析中に倍音成分の偏りのテーブル作ってるんじゃないかなぁ。
試算は元波形から減算して0になればいいわけだから、その辺からも補完情報得られそうだ。
おかしなエフェクトかけた音とか食わしてみたい。

>>507
ナニガ?
サウンドプログラム的には初歩の初歩だろ。

509 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:54:37 ]
位相を和音を基準に解析して、各周波数ごとにピッチ、スピード、再生タイミング等を調整できるようにしただけじゃね。
和音に分解するのにものすごい時間かかりそうだ。どちらかというとアイディアよりも速い速度を出したという努力の方が凄い。

510 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 23:43:22 ]
>>509
短絡的に考え過ぎじゃまいか。
速度無視すりゃキミ作れる?



511 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 23:51:51 ]
まあ、そういうこと言い出すと、情報系の研究の結構な割合が、
真新しい技術を作ることじゃなくて、既存技術を低演算量で実現ってノリよ。

512 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:17:18 ]
どうせ解析がDWT、再生が可変速再生でしょ。
例えばV-Vocalとどう違うのか分からん。

新しい技術ってのは多くがまず理論の領域だからね
実践が重要な情報工学の分野は、どう実現するか、とかが重要になる。

513 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 10:05:39 ]
>>512
アホか? どの周波数の音がどの音の倍音かってのを分解できなきゃいけないんだからV-Vocalとは全然違う。
音源分離の基礎から勉強しなおせ、このタコ。

514 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:34:45 ]
>>513
さすがにサンプル全く聴かないで想像で書くとバレるかwww
ある意味安心した

サンプル聴いてみたが、全サンプル単音色なのね
これだったら、全体の倍音構成がある一つの倍音構成の重み付き和になるから
アタック検出とあわせて認識するのは可能かなー 専門が音声ですら無いから
最先端とか知らんけど

515 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:35:05 ]
おまえ耳悪いんだな

516 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 18:05:43 ]
>514
www.sonicstate.com/news/shownews.cfm?newsid=6281
これ見て凄さが理解出来ないなら黙って消えてくれ。

517 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 19:44:08 ]
やってることがすごいとかすごくないとかはよくわからないんだけど、
動画の中で音をばらす最初のシーンはかなり興奮したw


518 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 20:14:00 ]
一から楽器を演奏して曲の音源を得るコストと、そのソフトを購入して既存の少ない音源から
元の音源が分からない程にまでリミックスして曲の音源を得るコストのどちらが高いか。
勿論後者の場合はもともとの音源が第三者には追跡不可能だし人格権を主張できないほど弄ってるから著作権料なんて発生しない。

519 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 20:21:14 ]
論点変えて楽しいか?

520 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 20:35:08 ]
一つのどうでもいいレスに対して話の流れから脱線しているように思うなら、無視すればいいだけのこと。



521 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 20:53:43 ]
つうか板違いだろ

522 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 02:34:17 ]
>>516
黙って消えろは酷いなw

さて、その動画今観てみたけど、やっぱり同種の楽器のサンプルしか無いね
一つだけギターとトランペットのサンプルがあるけど、音の小さいギターの方の認識は弱くなってる
支配的な倍音構成にフォーカスしてるのかな

523 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 05:03:48 ]
>>516はアルペジオ的なサンプルばかりなのもあーやーしーいw

けど、こっちにはギターのカッティングを分解してるビデオがある
www.celemony.com/cms/index.php?id=dna

524 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:09:51 ]
>>523
お、やっと話せる人が来た 嬉しい

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

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

って長文ごめん

525 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:05:41 ]
>>524
前も書いたが、音源分離の基礎から勉強しろ。
「音源分離」でググれば、この分野の基礎技術がやまほどでてくるから。

526 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:09:03 ]
>>525
あぁ、>>513で書いてるのか
ただの脊髄レスだと思って切ってたわ
音源分離ね。みてみる

527 名前:523 mailto:sage [2008/03/21(金) 12:35:50 ]
君自身が「話せない人」だと思うよーw

528 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:50:27 ]
>>526
無知だってことを指摘されても、自分は悪くない、と放置するからいつまでたってもバカのままなんだよ。
はっきり言って、あんたの知識レベルは非常に低い。おそらく別な場所でもさんざん叩かれてるだろ?
それは人間性に問題があるからだぞ。

529 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:13:53 ]
これは酷いw

>526
なんか自身満々そうだし、試しに単音でもいいから分離アプリ作ってくれよ
音のアタックとリリース重なる部分の分離だけでも出来ればたいしたもんだと思うよ

530 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:20:53 ]
>>524
専門外だと自覚してるならしゃしゃり出てくんなよ。
あんまり的外れなことばかり書くから、スレが妙な盛り上がりをしてるじゃねーか。



531 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 18:47:35 ]
C(ド)の音色データを加工してDEFGAB〜の音を作ることはできますか?

532 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 20:51:15 ]
>>529
単音のサンプル投下希望
自前サンプルだとまた叩かれそうだから

533 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 21:00:01 ]
>>531
できますよ

534 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 21:06:21 ]
>>531
つ ピッチシフト
あとはフォルマント辺りを加えて調べてみるといいかも。

>>532
お前は頭大丈夫か?
これ以上叩かれる前に消えた方がいいぞ。

535 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 23:26:22 ]
>>533-534
ありがとうございます。

536 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:18:19 ]
>>531
出来るけど
音に深みが無くなる

537 名前:デフォルトの名無しさん [2008/03/22(土) 03:25:55 ]
なんか久しぶりに湧いてんな。
ただでさえこのスレの住人はネタに困ってるんだからあんま煽るなよ532。

しかしDirectNoteAccessすげえええええええええええええええええええ。
あまりに感動したのでYoutubeのほうもはっとこ。
jp.youtube.com/watch?v=Pe0nxkE28_4

538 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:05:53 ]
素人なので何がすごいのかわかりません

539 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:34:14 ]
>>538
カクテルを材料毎に分離して比率を変えたりして再合成するようなもの

540 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:37:10 ]
それは素晴らしい
こう、チャレンジスピリッツが刺激される試みですね



541 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:38:08 ]
そのうちリバースエンジニアリングが犯罪にされそうだな

542 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 09:59:47 ]
マルチトラックな内部データを持つ同機能に見えるだけのfakeなら簡単に作れからなぁ
現物を調べないと投資を引き出すためだけの偽デモの可能性を否定できない

543 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:11:47 ]
>>542
ねーよw
多少は都合のいいデータをデモに使ってるだろうけど

544 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:56:45 ]
アタックが弱い楽器はトランスポーズできないのかな


545 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:20:04 ]
すみません。
ピッチシフトはFFTをしないと実現できないのでしょうか?

546 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:22:02 ]
IIRならなんでも

547 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:58:57 ]
IIR調べましたが理解できませんでした。
単純に半音分の1.05946を時間にかけて伸ばしたり縮めたりするのは駄目ですか?

548 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:04:19 ]
>>545
まず、一定間隔でサンプルを間引き/補間して
(音程も再生速度も変わる)、
その後、フレームに区切って、フレームをオーバーラップさせたり重複させたりで
再生時間を調整。

549 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:22:01 ]
>>548
それならできそうです。
ありがとうございます。

550 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:34:57 ]
>>549
オーバーラップさせるときに、重ね方ちょっと工夫しないとノイズっぽくなるから注意ね。
重なってるところが似たような波形になるように、
相互相関とかとって重ねる位置ずらす。
この方法で、綺麗な周期波形なら結構いい音になる。



551 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:34:53 ]
最近はユーザが日本語化MOD作るからいらないよな

552 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:35:23 ]
誤爆

553 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 04:13:41 ]
高域を補完するフィルター(KENWOODのSupremeみたいな物)を作ろうと思うのですが
サウンドプログラミングはやったことが無くどのような方向から手を付ければいいか判らない状態です
まずは非リアルタイムで実験してみるつもりですが、ゆくゆくはリアルタイムで処理できるような物を作りたいです
ソースをFFT→FFT結果を元に倍音生成のスペクトラムを生成→逆FFT→ソースと合成みたいな感じになるのでしょうか…?
よろしくお願いします

554 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 07:48:04 ]
たぶんFFTでは難しいと思うよ。
一般的にブロック・フーリエ変換の場合 周波数軸で加工すると実軸に戻した時に
ブロック同士を接続させるのが難しい。

たとえば原音から高域だけ抽出して その成分を2乗3乗したのを加算するとかどうかな
倍角公式とか3倍角公式で高音を加算出来る事になるよ

555 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:20:21 ]
ピッチや再生速度を変えるにはどうすればよいですか?
サンプルを間引いたりするだけではうまくいきませんでした。
ググってもツールしかヒットしません(><;

556 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:51:58 ]
>>555
>>548

557 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:53:09 ]
あと、C# でよければ、
ufcpp.net/study/csharp/ap_sample.html#sound
にピッチシフトのコードある。

558 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 08:07:18 ]
>>555
このスレの1つ前の過去ログの先頭にある程度詳しく書いてある。

肝心なのは
>再生速度を変更するには、上げるにも下げるにも強力なLPFが必要になる
って所。 これをサボると駄目だね

559 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 10:21:41 ]
>>555
ディレイを使うのも手。
重複を気にせず、再生速度を変えたのをたくさん並べるだけでもそれっぽくなる。

560 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 11:48:11 ]
>558
555じゃないけど、サボるとエイリアシングノイズが出るって事?
ピッチ上げるときはLPFかけないとマズそうなのはなんとなく解るんだけど、下げる時もLPFなの?



561 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:17:44 ]
>>560
そう、アンチエイリアシング。
下げるときは、
簡単化のために、再生時間2倍、音程1/2で話すと、
元のサンプルの間に、まず、0を挿入するのね。
元のサンプルが 100, 110, 130 とかだったら、
100, 0, 110, 0, 130, 0 にする。
この状態をフーリエ変換すると、
元の周波数特性の高周波にエイリアスノイズが乗った状態になってるから、
それを LPF かけて取る。

562 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:45:52 ]
0を挿入する意図が分からん。
100,100, 110,110, 130,130 じゃダメなのん。

563 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:10:34 ]
>>562
それは0を挿入してから低品質な2タップFIR LPFをかけたのと同じことじゃん。
>>558>>561が言いたいのは、そのLPFをもっと強力なやつにしないと駄目よってことでしょ。

564 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:21:45 ]
そうだね。 1+1/z っていうFIRフィルタの特性と同じで遮断特性は殆ど無いも同じ。

半音単位だと16:15とか16:17とかの比になるんで、
理論的には0を16個つめてFIRフィルタを通す事になるけど、
実際は0をつめる部分は掛け算しなくていいんで

565 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:18:36 ]
>>562
もちろん、実際には内挿補間とかするんだけどな。
フーリエ変換の定義式に、0を挿入した奴を食わすと、理論式が綺麗なんだわ。

566 名前:デフォルトの名無しさん [2008/04/23(水) 00:43:46 ]
CUDA使ってる人っている?
並列処理がどれくらい速くなるんだろう。

567 名前:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:08:37 ]
出来ないか出来るかという話なら出来るんでしょう。
でも問題は
1、ブロックである事から接続の問題がどうしてもついてまわる事
2、周波数シフトそのものの計算の面倒さ
 6:5 という比率なら5を6に移動するのは簡単だが6を7.2という事になると exp関数となる

569 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:01:48 ]
> 100, 0, 110, 0, 130, 0 にする。
なんとなく、出力レベルが下がっちゃいそう。

570 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:04:07 ]
じゃあその分ゲインをかければいいでしょ



571 名前:567 mailto:sage [2008/04/24(木) 00:02:55 ]
>>568
>5を6に移動するのは簡単
それすら上手くいってないんですけど。DCTした5要素をどうやって6要素に
分配(シフト)すればいいのか。sinc補間で5要素から6要素を求めてみたり、
5要素を適当に6要素に分配してみたりしたけど、IDCTしたら変になります。
(振幅が一旦大きくなったあと、小さくなるような波形になるっぽい)。
なんかシフトしたら係数を掛けないといけないんでしょうか?

>exp関数となる
全然わかりませんorz。オイラーとかがからむ話なんでしょうか。

572 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:22:57 ]
>>571
DCTだと、位相が無視されるからなぁ。

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

定常波だと位相が狂ってても聞こえは一緒だったりするんだけど、
立ち上がりの部分が変わっちゃうと変な聞こえになりそう。

573 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:24:24 ]
周波数領域でピッチシフトするなら、フーリエ変換にしないと駄目かなぁ。
ついでに言うと、対数振幅と位相をそれぞれsincなり何なりで補間。

574 名前:553 mailto:sage [2008/04/24(木) 07:44:16 ]
>>554
レス送れてすみません。ありがとうございます
1.ソースをFFTで周波数/強度に変換
2.1の周波数ごとに倍角公式、3倍角公式で倍音、3倍音を生成。音量は1の強度を元に適宜減衰
3.2を合成して補完音を生成
4.ソースと3を合成
みたいな感じでしょうか?
コーディング時には2〜4は同時に行った方がメモリのリソースは節約できそうですね…

575 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:11:17 ]
えと、俺が書いた事は無視する事にしたのか誤解したのか、

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

だから

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

でいいんじゃないの?って事。

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

>>573
>フーリエ変換にしないと駄目かなぁ。
やっぱりそうなんでしょうか。どっちも周波数成分への変換相当だから、
DFTとDCTは同じことが出来るのかと思ってました。

577 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:30:07 ]
>>576
連続フーリエ変換なら話は楽だったりするけど、
離散だと、周期の都合で妙なことになったりするかなぁ。

ピッチシフトって周期が狂う非線形処理だから、根本的に DCT・DFT と相性悪いかも。

578 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 12:43:38 ]
和音がわからない
誰だよ白鍵と黒鍵分けたアホは
全部半音単位で管理しろや

579 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 12:48:16 ]
>>578
頭悪いのね。

580 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 13:37:42 ]
言われてみるとどういう基準で分けたのか気になるな。
流石に578はどうかと思うが。



581 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 13:38:17 ]
>>579
頭良いのね。

582 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 13:47:03 ]
音階が12なのは時間が12進なのと関係があるんか?

583 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:04:58 ]
>>580
どういう基準もなにも、倍音とってったらドレミの音階が生まれるだろ。
それをオクターブ内におさまるようにしたら白鍵盤のぶんが埋まる。
そのときにだいたい半音、ってのが最少単位になってるからそれに合わせて鍵盤をわりふる。
西洋音楽の音階はだいたいそんな感じ。

>>582
倍音を拾っていってオクターブ内の音を分割した結果で、12等分がキリのいいとこに近かったんだよ。
地域によっては、12をさらに分割したのが最少単位だったりする。

584 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:56:59 ]
純正律のことを言ってるのか?
いわゆる純正律はそれはそれで恣意的だと思うが。

あるいはピタゴラス音律か。

585 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:58:50 ]
ようするに 
ドミソ のソ 周波数比 2:3 の1.5が 2^(7/12) に近くて
ドミソ のミ 周波数比 4:5 の1.25が 2^(4/12) に近いから

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



586 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:39:46 ]
>578
プログラム関係ねぇよw
和音やコード進行は音楽関係の教則本には必ずと言っていいほど載ってるし、
当たり前な話だけどギターなんかは全部半音単位だ。

587 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:55:58 ]
>>578
全部白鍵だったらどれが「ド」だか分からなくなるだろ

588 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:57:51 ]
無刻印HHKを扱える奴がいるから慣れだなw
でもいやだなそんな鍵盤

589 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 01:27:16 ]
そういう奴は周りから嫌だなと思われるのを生き甲斐としている。
疎外感と優越感の混ざった感覚。

590 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:45:20 ]
ちょっと質問さしてください
WAVやAIFFを読み込んで再生するプライバックサンプラーを作りたいと思ってるんですが
音階演奏のための再生ピッチ変更(引き延ばし・縮め)って、
普通というか主流というか、どうやるものなんでしょう?
少しためしてみた感じでは、単純な一次補間でもけっこう使える感じがしたんですが
市販のサンプラーなんかはどうしてるんですかね?



591 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 16:25:42 ]
あらかじめアップサンプリングしたデータを持っているなら1次補間でもいけるだろうし
そんなもの好きにやったらいいと思うけどな

592 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:33:47 ]
DTM用で、あらかじめアップサンプリングしたデータを用意する
ようなことは想定してないです。
好きにやったらといえば返す言葉がないんですけどね・・・

サンプリングレート変換と同じといえば同じなので
もっとちゃんとした方法があることは理解してるんですが、
演奏が目的のサンプラーの類だと、
一次補間ぐらいやっとけば普通レベル??なのか気になったもので


593 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:39:54 ]
>>592
ttp://www.psoft.co.jp/jp/product/chronostream/index.html
こんなのとか?

594 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:49:29 ]
>>592
いや自分でアップサンプリンしたのを内部データとして持っておけば
その1次補間でも十分実用になるという意味だよ。

アップサンプリングは元のサンプリング周波数の整数倍にすれば面倒なことは何もない


595 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 18:10:43 ]
>>593
いえいえ、タイムストレッチ・ピッチシフトではなくて
単純な再生速度変更です。

>>594
なるほどーうまい方法ですね。
補間方法ばかり気にしてたんで、いやかなりはっとしました。
メモリは食いますけど、それなら再生時の負荷もほぼ同じのままS/Nアップしますね。
そういう実装してるのもあるのかなぁ

596 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:32:16 ]
市販のサンプラー作ってた奴がいたとしても、そんなもんは企業秘密だから書けるわけねぇだろ
実装して問題が起ってるからアドバイスくれとかならともかく、抽象的すぎんぞ

597 名前:デフォルトの名無しさん [2008/05/17(土) 18:23:59 ]
えーと、サウンドプログラミングについての定番サイトってありますか?
やりたいのは任意のWaveファイル(サンプラーとして)+ゲームパッドを使い、
リアルタイムに強弱をつけながらパーカッションを打ち鳴らして、
打ち込んだ結果をMIDIファイルやWaveファイルに保存したいです。
こういうゲームパッドドラム?を作って、楽しく、楽に打ち込みたいのです。

598 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 06:03:46 ]
ググレカス

599 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 07:42:48 ]
>>597
ゲームパッドで強弱を付けるのは不可能


600 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 08:37:38 ]
最近は感圧式ボタンや6AXISを備えたPC用ゲームパッドもあるから
一概にそうとも言えんぞ

まぁそんなの持ってる奴は少ないだろうから
テンポに合わせて自動的に裏表で強弱をつけることになるだろうがな



601 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 08:48:30 ]
ボタンで強弱 = ストリートファイターなイメージがw
すぐにボタンが壊れたから、感圧ボタン廃止 → 6ボタン制に。
あっ、ボタンによって強弱切り換えりゃいいじゃん。

602 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:20:04 ]
プレステ2のコントローラは感圧になっただろ
調節は難しいが

603 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 10:23:48 ]
素直にMPDとか使えよ。

604 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:58:21 ]
>>603
どのMPDですか
ja.wikipedia.org/wiki/MPD

605 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 00:32:46 ]
bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?USID=&W-NIPS=9974357500

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

地方なんで見れる本屋がなくて・・・

606 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 00:40:08 ]
>>605
ああ、それ結構有名。

607 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 00:47:25 ]
>>606
使えます?定価的にも高いので、失敗したくなくて

608 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 09:37:23 ]
MPDはゲームパッドじゃないよ

609 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 10:10:01 ]
>>604
マジレスするが、
www.akai-pro.jp/pgs/right/product/mpc/right_prdc_mpd16.html
www.akai-pro.jp/pgs/right/product/mpc/right_prdc_mpd24.html

610 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:29:26 ]
>>607
アマゾンのカスタマーレビューは参考にならないかな。
ttp://www.amazon.co.jp/gp/product/4501532106
>>607の「使える」の定義が分からないので的外れだったらごめん。




611 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:43:33 ]
本が「使える」かどうかなんて、オカズになるかどうかに決まっているじゃないか。


612 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:46:53 ]
山羊かよ!


613 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:46:54 ]
>>610
Amazon.comの原著のレビューはもっと熱いぜ
www.amazon.com/review/product/0262680823?showViewpoints=1

614 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:56:04 ]
>>611
ゴメン、君がその〜、童貞? だとは思わなかったから……

615 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:35:58 ]
waveInGetPositionを使って録音中の場所を知り(場所がa[p]だったとする)、
a[p-1024]〜a[p-1]までのメモリを読んでみると、
どうもa[p-500]とか以降は、まだデータが書き込まれていないことが多い。
こういうものなの?

616 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:27:00 ]
まさかとは思うが、short a[] なのに、p = mmt.u.cb とかってオチじゃねぇだろうな?

617 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 08:05:47 ]
>>616
TIME_SAMPLESを指定しています。
まあ、waveInGetPositionで得た値から500を引いて使えばいいので、
困っているわけではないんだけど、何かすっきりしなくて。

618 名前:デフォルトの名無しさん [2008/05/30(金) 16:52:58 ]
学校の授業で、dsPICをつかってイコライザを作ろうと思っているのですが。。。

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




619 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 20:58:59 ]
学校の先生に聞いて来い
そのために授業料払ってんだろ

620 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 01:03:01 ]
実は先生の方だって可能性もあるぞ。



621 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 01:16:20 ]
恐ろしい可能性だなオイw
質問のレベルの低さから学生だと信じたいけど。
教えてクン的な釣りの可能性も。>ttp://www.redout.net/data/osietekun.html

622 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:12:23 ]
正直 CDレベルの音質に対して dsPICってのはどうかな
16bitのDSPじゃ倍精度の演算に挑戦しないといけないぞ

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



623 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:55:48 ]
>>618
プログラム板なのでソフトウェアに限定すると、
入力部とイコライザ部と出力部を実装するといいんじゃね

624 名前:デフォルトの名無しさん [2008/06/01(日) 22:30:36 ]
三角波や矩形波でAの音を鳴らす・・・くらいのプログラムから始めたい初心者なのですが、
まずは何から勉強したらいいのでしょうか?
言語はC、Javaあたりならなんでもいいです。。

625 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 22:41:28 ]
鳴らすてのがどのくらいのレベルでやりたいのかわからないけど
とりあえず任意の波形をWAVファイルを書き出せるようにやってみたら?
WAV形式で作れるようになったら鳴らすのもAPIで出来る。

626 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 05:58:34 ]
>>624
言語に関しては熟知してるという前提で話するけど、
サイン波を画面に描画するのと同じ要領で音声出力に書き出すだけ。
書き出し方は環境に依存するけどWinでいいなら>>19辺りに解説がある。

627 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 10:11:22 ]
>>624
ドレミの基礎。A4が440Hzとかそういうとこから。

628 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:04:47 ]
採譜の達人ってあるじゃん

あれってどういうアルゴリズムだとおもう?

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

みたいな感じじゃね?

630 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:44:10 ]
>>628
どう見てもウェーブレット。単音をマザーウェーブレットにして変換するだけ。



631 名前:624 mailto:sage [2008/06/04(水) 00:33:42 ]
おかげさまで出来ました。
ありがとうございます。

632 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:20:09 ]
先輩方にお聞きしたい。
次のプロジェクトでサウンドプログラムの担当をすることになりました。
(社内含めてサウンドプログラムを経験している方がいないけど)
サウンドエンジン作れとのことですが、
経験則でいいのでどんなモノにしたらいいのか指針にしたいのでご意見下さい。
こんな出だしからして、音関係の知識はほぼありません。
「こういう勉強しろ」みたいなものやサイトがあればぜひ教えてください。
よろしくお願いします。



633 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:39:48 ]
>632
お前の言ってる事は、
「今日からプログラマーになりました、何から勉強したらいいですか?」
っつーレベルだぞ。
何で使うシステムなのか、ハードのアクセラレーションはあるのか、
ドライバレベルなのかライブラリレベルなのか、何がしたくてどういった要求なのか。
全部スッポリ抜けてる。

634 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:03:14 ]
というかどんなプロジェクトなんだか。
単純に考えてコンポーザとかゲームか。
なんだかんだ言ってサウンドはマイナーというか特殊扱いというかあまり扱わないよね。

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

多分本当に初歩から勉強したいんだろうけど
とりあえずリアルタイムな事は置いといてWAVEファイルの作り方とか
簡単な波形の音の作り方とかそれで「ドレミ」を鳴らしたり和音にしたりとかから入るといいかも。
そのあたりはググれば見つかるんじゃないの。
リアルタイムな鳴らし方はWindowsならAPIかDirectX関連で探して。
他は知らん。

635 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:11:07 ]
今色々教えても、それを>>632が取捨選択できるようには思いにくいなあ。
やみくもに実装だけ覚えても結局何も作れないと思うので、
>>632はまずは大まかにでもいいから仕様を決めた方がいいように思う。
(それがわからないとレスもし辛いような)
例えば単にベタのWAVファイルを鳴らすだけでいいのか、
ループも含めたBGMとして鳴らしたいとか、効果音も鳴らしたいとか。
プラットフォームは何で、それがどういう機能を持ってて、
それを補うために何を作って何を作らなくて良いのか、とか。
そうすれば何を覚えればよいのか自ずとわかるんではないだろうか。
偉そうでゴメン。

636 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:01:58 ]
www.musicdsp.org/index.php
こういったたぐいの日本語サイトないかな?

637 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:47:17 ]
ない

638 名前:632 mailto:sage [2008/06/07(土) 09:29:34 ]
633,634,635>>
本当にすいません、指摘のまんま基本的な情報が抜けてました。
プロジェクトはPS3のゲームです。
詳しい要望が出てきてないので、設計をどうしたらいいかと悩んでました。
自分ではBGM,SEを単に流す程度しか思いつかず、
ゲーム系でサウンドエンジン作った方がいれば、
どんな機能をいれたのか知りたかったわけです。

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

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




639 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:15:46 ]
PS3のゲーム作れるとはすごいなぁ。

640 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:02:04 ]
ゲーム機ならライブラリとサンプルがあるはずだから基礎研究ならその辺弄ってあそんでりゃおk
プロジェクト進行中ならチーフなり企画なりから何らかの仕様が降りてきてんじゃね?



641 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:54:02 ]
3Dとかのエフェクトエンジンなのか
MIDIデータとかの再生エンジンなのか
ボイスとかのエンジンなのか

それとも全部一式? 一人ではキツイだろな

642 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:16:31 ]
バグゲーになりそうな悪寒。

643 名前:632 mailto:sage [2008/06/08(日) 02:36:15 ]
641>>
「MIDIも使いたいかも」みたいのは聞いた覚えがありますが、
上からの正式要件ではないので、一応対応するつもりです。
あとは5.1ch対応と3Dエフェクト(?どこぞの方向から音がする感じ)も…。
ちなみにボイスのエンジンとはどんなことするんでしょう。
なんかボイスの管理がどうとかリファレンスにあったけど、
音とは違うのだろうか。

バグゲーにはならないように頑張ります。
初めて一人で任された仕事なので、上でも一喝されてますしなんとかやってみる。
厳しいと感じたらまたアドバイスや気合もらいにきます。

644 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 10:49:05 ]
ここは電話じゃないのか(´・ω・´)

645 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 10:49:54 ]
ごばく

646 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:33:43 ]
ttp://www.cri-mw.co.jp/products/product_index_j.htm

どうせライセンスを買う金が勿体無いから同等の技術を開発しろってところだろうな

647 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:52:32 ]
ライセンス買っておけば不具合があっても相手持ちにできるのに…
自社で作ったら自分で責任取らないといけないよな

648 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:03:43 ]
CRIのは高いだけで良かった記憶ねぇなぁ。

649 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:04:43 ]
>632
PS3の仕様は知らんからなんとも言えんけど
効果音とボイスは違うんかいな。
いや、PS3だ。違うかもしれない。

650 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:07:57 ]
ノベルゲーでも作るんだろ
ボイスはストリーム、効果音とBGMはオンメモリ・MIDIシーケンスで
みたいな?



651 名前:デフォルトの名無しさん [2008/06/09(月) 23:58:40 ]
話ぶったぎってすいません、
デューティ比が50%である矩形波は普通の音に聞こえるのですが、
25%、12.5%になると雑音が混じったような音が出ます。(ビー、ガガガなど)
これはサンプリングレートと音程の関係でこうなってしまうのでしょうか?
また、なぜ50%の時はこういった雑音が入ってないように聞えるのでしょうか?

652 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:36:26 ]
50%の時が一番サイン波に形近いからなぁ。
逆に、12.5%のとかは、クリック音が並んでるような音に近い。

653 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:54:00 ]
>>651
それぞれの周波数成分見れば一目瞭然

654 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:26:25 ]
>>651
50%だけ普通ってのはわからんが、
サンプリングレートに対して、半端な周波数を鳴らしているんじゃないのかな。かつ波形処理が簡易的な出力。
そうすると、山や谷の部分の間隔が1サンプル多い部分とそうでない部分とが出てくる。
それを聞くと、周波数の違う音が混じって、汚く聞こえる。

655 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:02:16 ]
ビーはともかく、ガガガは確実に元の周波数より長い周期でうなってるな。
だから、>>652-653の理由だけでは説明が付かない。

656 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:28:57 ]
波形うpしろ、解析してやっから

657 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:54:43 ]
>>651
定サンプリングレートだと、サイン波より矩形波の方が難しい波形なんだよ。
普通に0,1で出せると思ってたら甘いよ。

過去ログを見てみるといいよ
pc5.2ch.net/tech/kako/996/996171508.html

658 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:35:41 ]
なるほどなぁ、矩形波生成した時点ですでにエイリアシングノイズがのってるのか。

659 名前:651 [2008/06/10(火) 21:02:12 ]
過去ログ読みました。勉強になります。
>>651については>>654さんのおっしゃるとおりだと思います。
現在は、

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

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

こんな感じで補正が全くありません。
phaseにLPFをあてて倍音をカットすればいいのでしょうか?
無知ですいません。。

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

そんな感じで資料読むにも、
電子方面の音楽知識や単語を勉強したいところです。
「ディジタル・サウンド処理入門」って本でも読んでみます。



661 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 07:15:54 ]
>>659
パルス=デルタ関数の帯域カットしたデータを 4〜32倍のオーバーサンプリングした結果をテーブルとしてもって
おいて

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

最初からデルタ関数ではなく、ステップにしたら良いと思うだろうけど
周波数が高くなってくると、デルタ関数同士がオーバーラップするようになるから
デルタ関数を積分した方が良い。


662 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:38:33 ]
>>659
僕は、画像で言うアンチエイリアスの様な方法をやりましたが(画像処理での方法は知らないが結果的にそうなった)、
普通に聞く分には全く問題ないものの、良〜く聞くと若干ノイズが聞こえる。

綺麗な矩形波は
ttp://www.slack.net/~ant/bl-synth/
これを使ったエミュレーターの音は、全くノイズが聞こえないです。

663 名前:651 mailto:sage [2008/06/11(水) 23:01:14 ]
なるほどです。
>>662の帯域制限は>>661と同じ事なんでしょうか。(難しい…)

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

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

>>661>>662の方法はまだ理解できないのでこれから勉強します。
ありがとうございました。

664 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 08:20:38 ]
> >>662の帯域制限は>>661と同じ事なんでしょうか。(難しい…)

方式が違う。 662 はサイン波合成で矩形波を作っている。
リアルタイム合成するにはサイン波を1,3,5,7の奇数倍周波数で位相を合わせて作れないといけない。


665 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:49:51 ]
サウンドプログラミングを学ぶためにローパスフィルタを作ろうと考えました。

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

というのを考えたんですが、いざコーディングするとなると全く出来ないです。
wavデータを順番に配列に突っ込むというのは出来たんですが・・・
なにか参考になるサイトなどありますか?

666 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:05:18 ]
>>665
Wikipedia。デジタル・フィルタの基礎から勉強したほうがいい。

そのあとで↓
www.musicdsp.org

667 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:19:07 ]
>>666
英語はきついっすw

668 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 19:48:34 ]
じゃぁ本買いな

669 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:33:30 ]
勉強する気もねぇ乞食かよ・・・

670 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 03:10:02 ]
>>632
多分ゲームで必要になるのはストリームしながら再生、停止。
メモリに常駐している音(効果音、クリック音)の再生。
それらの音のボリュームの全体操作。
(画面が切り替わった時に前の効果音が残ったりしちゃうから。)
サウンド用の領域が溢れた時に音を鳴らさない、その旨を伝える手段。
場合によってはストリーム音のクロスフェード
(前の音を段々小さくして変わりに次の音を徐々に入れていく。)
それはなくても徐々に音を消す処理は必須。(いきなり消すとノイズが入る。)
この辺はハードが色々用意してくれてるだろうから、勢いでなんとかなる。
一番大変なのは、どの場面でも必要になるサウンド処理は、別スレッドで管理されることが多い。
サウンドはスレッドセーフで作らないと後で大変なことに。
後、BGMをストリームで流すとディスク上で常にシークが入る。
ロードを頻繁にするデータは、ディスクの外側よりBGMの隣にデータを配置した方が早くなる場合もある。
昔、隣の席でゲームのサウンドを開発している人を見た感想でした。



671 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:50:28 ]
         ,,,,,,,,,,_
           ,ィヾヾヾヾシiミ、
          rミ゙``       ミミ、
          {i       ミミミl
          i゙i ,,,ノ 、,,-=、 ミミミ  サウンドプログラム
          {_i=・}-{_=・`} ̄レゥ:}
             l ̄,,,,_,゙ ̄` :::ン   フフン
           |/ _;__,、ヽ..::/l
           ヽ.~ニ~ ' .::::ノ/ }\_
         _,,.-‐' `ー '"::/ /  |   ̄`''ー-、
      r‐''"   ./  i\/  /    |     / ヽ
      /     /   | /;;;ヽ、 l ヽ /     ノ /}


672 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:56:49 ]
シミュ系のプログラムやってる人おる?
昔のビンテージエフェクターの回路図をソフトウェアでシミュとか


673 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:55:44 ]
いけいけどんどんて


674 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:30:15 ]
>>668
どんな本が良いですか?

そもそも公式に書かれた記号の意味が分からない
俺のようなものでは読むだけ無駄ですか? orz


675 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:53:08 ]
勉強しろ

676 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:27:42 ]
OHMの「マンガでわかるフーリエ解析」辺りから入ればいいんでねぇの?

677 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:41:08 ]
音声をFFTして周波数領域でなんか処理してるプログラムのソースないですか?参考にしたい

678 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 07:17:21 ]
キーコンをFFTで周波数領域でやってる人がいたと思うけど
granul 分割統合法の方がシンプルで良好なようだよ。

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

周波数軸上で直接加工するのは難しいよ

679 名前:デフォルトの名無しさん mailto:sage [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ぐらいあって、

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

原因とかわかりますか?困っています


680 名前:679 [2008/06/28(土) 14:37:47 ]
あと窓関数としてハミング窓かけています



681 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 14:42:02 ]
80db差って10^8ってことだよねえ

682 名前:デフォルトの名無しさん [2008/06/28(土) 16:37:27 ]
って事は別に普通だということですか?
フリーのスペアナだとそんなことはないんですが

683 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 18:19:11 ]
入力x[n]のパワーは?
窓関数外した時の結果は?
S/Nの閾値は?

684 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 09:45:51 ]
音声の実信号ってのが16bitPCMなんじゃないの?
そうするとデジタル誤差が丁度それくらいだと思うよ

685 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 14:57:22 ]
実信号x[n]の代わりに、sin関数で生成した配列を入力に使って
理想状態のテストをやってみたら?

その後、入力の位相をずらしてみたり、DCオフセットを追加してみたり、
16bitとか24bitに量子化するなど、各種の条件でテストしたら
どの要素がどのように影響しているのかが見えてくると思う

686 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:51:24 ]
>>683
窓関数いろいろ変えても良い結果はでないですね。
S/Nを区別する処理はしてません

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

>>685
例えば800Hzのsin波とかどうすればいいんでしょうか

687 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 17:01:01 ]
>>686
16bitで量子化してると 6*15=90dBしかS/Nはないよ。
サイン波をソフト上で16bitのデータを作って入れても-105dB程度下にノイズが出てくる


689 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 20:34:29 ]
サウンドの基礎が解ってないようだし、初心者本なり教科書なり読んで勉強するべき。

690 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:04:31 ]
>>689
分かってないのはサウンドの基礎だけではなかったようだ

692 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:17:42 ]
1、 ムダな精度で表示するな
2、 周波数も対数化する方法を考えろ

693 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 17:23:02 ]
>>690
なんでスペアナ作りたいのかしらんけど、作っても君の知識レベルでは使いこなせないから意味無いよ?

694 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 17:29:48 ]
何を勉強したらいいですか

695 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 18:09:10 ]
なんでdB(対数)表現を使うのか?>ja.wikipedia.org/wiki/%E3%83%87%E3%82%B7%E3%83%99%E3%83%AB
対数のマイナス値の意味も解ってないみたいだから、高校数学辺りの教科書で対数を勉強する。
その上で>>679で触れてる「他にあるスペアナ」のスケールの上限下限値とか確認すると見えてくるかも。

696 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:09:05 ]
リア厨の予感がする

697 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:09:55 ]
リア中でこれだったら逆にすげぇわ

698 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:21:35 ]
今日び本読めばたいていのことは書いてあるから
付け焼刃的な知識で実装は小学生でも出来る
その本を本当に理解するのに必要な基礎知識が抜けているのは
真っ当な教育を(まだ)受けていないから

699 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 05:46:08 ]
ゆとり世代の大学の宿題

700 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:10:09 ]
「何を勉強したらいいですか」の一文は最高にイカしてるなw
広がる話題でも無いし、後釣り宣言で収束キボンヌ



701 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 10:25:18 ]
>>694
理系の大学1年生程度の数学。対数とフーリエ変換ぐらいは理解しとけ。

702 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 10:57:25 ]
>>694さんが >>690 なら技術的というか工学的なセンスを磨く必要があると思うよ。


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

有効精度とか、この結果を出すのに何が一番効くかといったあたりからね

703 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 21:25:45 ]
FFTの話からどんどん離れてきました

704 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 21:38:58 ]
センターキャンセル処理で単純にL-Rするとオーバーフローする。
(L-R)/2ってしたらオーバーフローはしなくなりました。

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

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




705 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 07:21:49 ]
どうおかしくなると思うかを書いてみたら?


706 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 07:29:49 ]
(L-R)/2が3の倍数になると頭がおかしくなる。

707 名前:デフォルトの名無しさん [2008/07/09(水) 10:08:35 ]
例えば波形の値が
300 303 だったら0.5倍すると150 151 となって二倍して元に戻そうとしても戻らなくなるので、データがちがくなってしまうのかなと

708 名前:デフォルトの名無しさん mailto:sega [2008/07/09(水) 10:31:19 ]
標本化定理が破られたと聞いて飛んできました!

今の時代、2倍以上の周波数でサンプリングしなくても
デジタル処理を使うと元の信号を完全復元できるそうですが
マジですか?

709 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 11:07:25 ]
>>707
元に戻すような処理をするなら、2で割らず、余裕のあるところで計算しろ。

>>708
いましてるのは周波数じゃなくてビット数の話だろw

710 名前:デフォルトの名無しさん [2008/07/09(水) 11:46:59 ]
元には戻さないんですが
いいのかな?って思うんです



711 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:51:18 ]
>>710
センターキャンセルで1bitの誤差が問題になる場面なんてあるの? なけりゃ気にするな。

712 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 18:23:44 ]
切り捨て(丸め)について、まじめに考えたいなら下記URLが参考になる

blackfin.s36.coreserver.jp/2191/misc/002_rounding.shtml

713 名前:デフォルトの名無しさん [2008/07/09(水) 18:59:29 ]
まぁ2で割るんで十分でしょ

714 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:34:52 ]
>>708
いやいや、完全復元じゃない。

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

>>709
別件の質問じゃね?

715 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:37:58 ]
>>716
L, R が32ビット整数ならね。

718 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 02:36:53 ]
>>708 >>714
もしかして、アンダーサンプリングの話では?

719 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 07:04:42 ]
>>716
もっと手っ取り早く、L/R/0.5*(L+R)の三つを保持しとけばよくね?

720 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 07:24:42 ]
保存が必要なのは L と Rだけだろ (L-R)/2 はその場で計算出来る



721 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 18:32:11 ]
まぁ数だけじゃなく質もいいけどな

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

まぁ君らニートには縁のない会社ばっかりだよ

722 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 19:16:42 ]
またこの人か・・・

724 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 19:24:57 ]
すいません。上のFFTのひとです

725 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 10:11:53 ]
ありがとうございます。

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

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

430Hzの音が実際なっていなくても、FFTすると430Hzのところにパワーが出てきてしまいますよね?

727 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 10:27:57 ]
>>726
好きにしろ。

728 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 11:57:50 ]
>>726 手段は目的の為にあるんであって

手段の細かい事だけ聞かれても、他人には判断のしようがない

729 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:51:10 ]
厨房採譜ソフトでも作りたいんだろうよ

730 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 16:21:44 ]
test



731 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 14:32:40 ]
>>731
エンベロープをつけろ。短い時間でフェードイン/アウトしろ。

733 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 14:33:44 ]
>>731
ちょっとそれ聞かせてもらえる?


734 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:11:36 ]
プチプチしたほうがモールスっぽいよ

735 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:39:15 ]
>>731
自前でサイン波形出力してるなら0クロス地点(付近)でカットすりゃいいだけだと思うが、
そもそも、その「10」とかって値の単位はなんだ?
モールス信号出力ライブラリみたいなのでもあんの?

736 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:18:14 ]
「信号が0に戻るまで待つ」=「0クロス地点(付近)でカット」ってことじゃないの?

737 名前:731 mailto:sage [2008/07/18(金) 23:42:24 ]
>>732
エンベロープ調べてみます。アタック・ディケイをかけろということでしょうか。
短い時間なのでフェードを使うという発想はありませんでした。試してみます。

>>735
>>736の通りです。数字は単なる例示なのであまり深く突っ込まないでください。

738 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 06:47:15 ]
多分、フェードインやフェードアウトの処理は数ms〜数十ms程度の時間で良いはず。

アマチュア無線機で、この時間を調整してキークリックを低減するという改造記事を
見たことがあるし、セットモードで調整可能なメーカー製トランシーバーもある。


739 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 18:25:11 ]
時間分解能があまり重要じゃない解析において、
手法を短時間フーリエ変換からウェーブレットにする利点ってある?

740 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 23:52:06 ]
ある



741 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:03:34 ]
具体的にどんなことですか?

742 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:36:27 ]
>>741
テンプレートマッチングとかじゃね?
音声認識で使うみたいなの

743 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:41:43 ]
FFTしたデータとのテンプレートマッチングでもいい気がするが

744 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 09:44:12 ]
まあ、ウェーブレットも、マザーウェーブレットの種類次第では、
単なる窓掛け FFT でしかないし。

745 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:45:10 ]
>>731
無音区間を0にするんじゃなくて、
そのまま保持してればいいんでは

10 9 7 7 7 7 7 7 7

って感じに。

746 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 13:03:20 ]
>>746
それ、オーディオ回路にダメージを与えかねないんじゃね?
まんま直流電圧掛けることになるからコイル系の素子に過電流が流れそうだ。

748 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 13:47:38 ]
>>744
そうかな?

749 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 18:50:24 ]
>>748
コンセプト抜きにして、数式上はね。
ガボールウェーブレットとか、ガウス窓の FFT でしかない。

750 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 01:50:35 ]
>>746
直流成分
通常はD/Aコンバータのハイパスで取り除かれるかれるとは思うけど、
この手のプログラミングではやっちゃわないように気をつけるべきところでっせ



751 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 04:09:42 ]
>>749
窓掛けFFTは時間単位、ウェーブレットは波数単位とかではなかったっけ

752 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:59:42 ]
C++相談室 part62
pc11.2ch.net/test/read.cgi/tech/1211900039/874

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

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

アドバイスよろしくお願いします

753 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 22:04:29 ]
さすが天才は目の付け所が違うな…

それよりロリぃ声を再現する関数が欲しい

754 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:04:02 ]
年取るにつれてしわがれた声になるのは
喉にディストーションエフェクタをつけるようなもんだから
ということは逆にディストーションをクリーンにするエフェクタがあれば
って、うーん・・・

755 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 10:48:56 ]
リアルタイムで波形を描画するプログラムを作ってますが、
MM_WOM_DONEが帰ってきたタイミングで波形を描画すると
音声再生が完了する前に波形を描ききってしまいます。

ネットの情報では音声再生が完了した場合にMM_WOM_DONEメッセージが返ると書かれていますが、
実際はMM_WOM_DONEメッセージが音声再生が完了したタイミングで返るのではなく、
デバイスに音声データを送信し終えた段階で返ってきているということなのでしょうか?

756 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 11:01:31 ]
大きいバッファ一つだとそういう感じになるね。

waveOutPrepareHeader で小さい領域を数個作って
ソレを繰り返し使いまわすようにするといい


757 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 23:16:58 ]
なるほど。ありがとうございました。

758 名前:デフォルトの名無しさん [2008/08/19(火) 05:57:23 ]

>>605

使えるよ。めちゃくちゃ情報量多いのでレファレンス本として使ってる。
エフェクタの実装でつまったときとかに眺めてる。
歴史を網羅してる本(ちょっと古い)なんだけど、
アナログにおける実装とかをデジタルに落とすときに参考になる。
まあバイブルなんで、もっといたほうがいいと思う。

759 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 22:33:25 ]
>>605
原書の方が良いよ。


760 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 06:52:16 ]
ウェーブデータから指定した周波数をカットする関数はありますか?



761 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 18:42:37 ]
バンドパス処理する場合にはFFTして通過させる以外の周波数の振幅を0にしてIFFTするだけでいいの?

765 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:12:40 ]
>>764
それでできるけど、FFT でやるとブロックノイズ対策が面倒よ。
普通に FIR とか IIR でバンドパスフィルタ作った方がいいと思う。

766 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:48:27 ]
なぜブロックノイズが生じるのですか?

767 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:53:14 ]
FFTは2^nサイズで処理するじゃない

768 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:56:14 ]
データを全区間にわたってFFTするならブロックにならないけども。
データ長次第か。

769 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:35:27 ]
終端のところは、前部分とオーバーラップさせて2^nにしたらダメですか?

770 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:07:00 ]
>>769
まあ、それがブロックノイズ対策。

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

とはいえ、やっぱり FIR とかを避ける理由がよくわからん。



771 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:35:21 ]
わかりました。FIR使ってみます。
避けたのは勉強してないからです

772 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:40:15 ]
FFTを使えばパワースペクトルが得られるってのは、スペアナの実装でよく知られているし、よく目にするからでは。
あとFIRはフィルタの設計法が分からんとか。
昔の俺がそうだったんだが。

773 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:51:53 ]
>>772
まさにそうですwww
FIRすればFFTいらないんですか?

774 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:53:19 ]
winampのグライコってどんな仕組み?

775 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:06:57 ]
俺は逆にFFT使う方法がわからん。


FFTして、弄りたい周波数の実部と虚部に係数かけてもどしゃいいだけ?


776 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 00:54:32 ]
>>770
MDCTはDCT-4だから、ライブラリ選ぶかもね
まぁfftw使えば選べるけど

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

FIRは時系列処理で、それと等価な処理が DFT(+オーバーラップ)
でDFTの高速化アルゴリズムがFFT

777 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 09:25:21 ]
俺もそのうち二次元に行くから許してやるよ。



781 名前:デフォルトの名無しさん [2008/09/26(金) 15:30:40 ]
2次元のFFTとか感覚的によくわからないんだよな。
音をFFTすると時間分が圧縮できるのは分かるが、画像をFFTして圧縮できるのはなぜ?
誰か教えてくり。

782 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 16:05:28 ]
だが断る

783 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 18:22:13 ]
>>781
イメージ的にだけど、
2次元のDCT=ある方向に濃淡が変化するレート
で、写真って一つの色に近い値に染まっている箇所がほとんど
(急激な変化は物体との境界にある)だから、例えば64x64の画像に
DCTをかますと、それは低周波数に集中する。

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

間違っていたら訂正お願いします。

784 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 19:45:56 ]
分かってるやつには分かるが分かってないやつには分からない
結局教科書読めって話になる

785 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 21:28:08 ]
>>781
そもそも人間の視覚があんまり周波数の高い絵を認識してない
(細かいシマシマ描くと、その中間色あたりの単色に見える)
ので、高周波は多少劣化しても大丈夫。

786 名前:デフォルトの名無しさん [2008/09/27(土) 00:54:20 ]
>>783
>>781

ははあ、なるほど。
サンプリング周波数が44.1khzでとりあえず十分っていうのと似た話か。
FFTすることで圧縮されるわけじゃなく、FFT後の量子化の際に高周波を切り捨てることで圧縮するという感じ?

787 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 01:02:32 ]
>>786
全部捨てるとさすがにあれだけど、
量子化ステップは高周波ほど荒くして問題ない。

788 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 10:39:54 ]
いやだからそれは本質じゃないんだってば
平均情報量って知ってる?

789 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 11:13:14 ]
>>788
量子化ステップ荒くしないと平均情報量そんなに変わらないよ。
べた塗画像とかならともかく、元々のエントロピーが高いものはFFTしてもやっぱエントロピー高い。

790 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 17:57:48 ]
表現を変えただけなら情報量は変わらん。可逆圧縮が例。
非可逆圧縮だと、本質に影響少なくどうやって情報を切り捨てるかが重要で、
そのときに周波数領域とかの表現形式によってやりやすさが変わる



791 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:23:12 ]
うそこけ

792 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:26:19 ]
ほんとだって。
でないと、可逆でエントロピー減ることになるじゃない。

法則性が見つけやすいって意味で、
見掛け上の情報量が減ってる感じになることはあって、
本質的にはFFTしただけでは情報量減らない。

793 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:28:00 ]
「表現をかえたという情報」の分だけ変わるじゃんよ?

794 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:31:20 ]
>>793
それは、「低周波数しか成分持ってない」とか付随した知識がある場合にのみ有効。
実際のところ、画像はそれほど周波数偏ってない。

795 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:38:14 ]
>>794
有効かどうかじゃなくて変わらんというのに反論してるんだよ

796 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:53:02 ]
でもそれ、「低周波しか持ってない」って情報がある時点でエントロピー低いのでは。

797 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 22:53:40 ]
えっと、要するに、エントロピーが変わるのは、
FFT かけた瞬間じゃなくて、負荷的な情報を与えた瞬間。

798 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 23:23:50 ]
エントロピーの計算式覚えてるよね?

799 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 01:11:53 ]
帰ってきたら色々レスついてるな
まずは >>792 >>794 >>797 に同意

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

可逆圧縮は情報を変えずに記号列を圧縮する操作、非可逆圧縮はそれに加えて情報自体も削減する。
表現形式を変えるだけのDFTで情報量は減らない。で、周波数領域にすることで例えば
「低周波成分が大半を占める」とか聴覚心理モデルとか**問題領域固有の知識**を入れて、
削っても影響のない情報を判別して削るのが非可逆の基本。
何度も言うが、表現形式を変えただけでは情報量は減らない。

800 名前:デフォルトの名無しさん [2008/09/29(月) 10:00:27 ]
なんかモンティホール問題と似てきたな。
誰か799の言ってることをモンティホール問題に置き換えて説明してれくれないだろうか。



801 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:32:52 ]
>>801
本気で頭悪いのか?
理論と有限桁での実装の誤差ってのは何にしてもついて回るもんだから議論するだけ無駄。

803 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 11:34:18 ]
>>801
周期関数の結果は非可逆だよねぇ。情報量はどうなるんだろ。

そう言えばFFTして逆FFTすると、強度の情報が失われないかな?
音や画像みたいに正規化しやすい場合はいいんだけれど。
# 演算誤差は目を瞑ったとしても。

804 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 12:32:27 ]
0.001www

805 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 12:40:18 ]
>>799

すばらしい説明をありがとう。
情報量を圧縮って意味がわからないよなそもそも。

806 名前:801 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 20:56:03 ]
>806
出力結果からそのソースが一意で起こせるならな。
ってか揚げ足取りがしたいだけだろお前。

808 名前:801 mailto:sage [2008/09/29(月) 21:10:07 ]
スマン
情報量云々を見るとつい…

809 名前:デフォルトの名無しさん mailto:sage [2008/09/29(月) 21:53:24 ]
2次元の話がずいぶん広がってしまったな。
なんか音の話題ないの。


810 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 12:09:50 ]
ここにいるおまいらが今まで作った音響アプリの代表作って何よ。
俺はリズムサンプラー。



811 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:15:36 ]
>>810
そういうのはマ板でやれ

812 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:31:04 ]
音響アプリなんだからいいだろ。
このスレ貴重なんだから盛り上げていこうぜ。

813 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:54:45 ]
自分語りがしたいならマ板。
技術スレでする話題じゃねーわな。
糞スレ化するからいらんよ。

814 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:43:26 ]
すいません技術的な質問です。
オーバーサンプリングって単純にプログラム内でサンプリング周波数の倍のデータとして扱えばそれでいいんでしょうか。
データ間は0をつめるとして、なぜそれでエイリアシング対策になるのかが理解できません。
たとえば44.1khzのWAVファイルを倍の88.2khzで扱ったとして、元データは44.1khzのデータしかないので、結局音そのものはクオリティ変わりませんよね。


815 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 18:57:58 ]
キミが言っているのはオーバーサンプリングではなくアップサンプリングじゃないの。

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

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

図が無いと判りにくいだろうから、詳しくは下記リンクを参照。
blackfin.s36.coreserver.jp/2191/program/polyphase/polyphase02.shtml

816 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:28:25 ]
>>815

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

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

ただ、そうなると良く分からないのが、たとえば>>405の記述で見られるような、
デジタル信号処理の計算の部分でオーバーサンプリングしろというのはどういう意味なのかということなのですが。
エフェクト処理でアップ(オーバー)サンプリングすることで、一体どんなメリットがあるのかわからずに悩んでいます。
もの分かりが悪くて申し訳ないです。

817 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:15:53 ]
>アップサンプリング
漏れなら同じデータで穴埋めちゃう。 当然、波形がカクカクするが気にしない。
画像の拡大もカクカクしてるのが好きだから。

818 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:54:53 ]
Lanczos3で補間したら適度なLPFにもなってるんじゃないの?
高級オーディオメーカWADIAの昔の製品はB-Splineだったな。
20kHzに近い波形はレベルも位相もボロボロになってるかもしれないけど
どうせサンプル数が足りないから長tapのFIRでも大差ないでしょ。

819 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:13:56 ]
>どうせサンプル数が足りないから長tapのFIRでも大差ないでしょ。

ここ詳しく。

820 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 01:29:01 ]
>>817
音の「カクカク」はジッターノイズになって苦痛じゃない?



821 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 16:45:43 ]
高周波が出ますナ

822 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 22:23:45 ]
おまいらフィルタの設計時ってどんなツール使ってる?


823 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 09:34:09 ]
dsPICworks

dsPICつこてるので。

824 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:24:11 ]
職場では MATLAB
自宅では GNU Octave

825 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 14:59:12 ]
GNU Octave って、FIRやIIRのタップごとの計算とか簡単にできたりするの?
GUIでスペクトル確認しながらとか。

826 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 18:15:28 ]
GNU Octave は、基本的に対話型コマンドライン環境だからCUIになるけど、
(コマンド列をテキストファイルに書き出せば、スクリプト実行も可能)
フィルタ設計コマンドでフィルタ係数を求めて、フィルタ特性をグラフ表示するのは簡単にできるよ。

827 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 19:17:53 ]
へー、おもしろい。使ってみます。ありがとうー。

828 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 12:42:06 ]
>>826
gnuplotと組み合わせてるのかな?

829 名前:デフォルトの名無しさん [2008/10/04(土) 16:46:17 ]
MAXMSPとかでパッチ作ってあそんでるんですが
pluggoブリッジじゃなくて純粋なOSXのプラグインを
作りたいんですが、何から手をつけたらいいんでしょうか?

830 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 01:45:43 ]
あー....。



831 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 08:21:52 ]
結構色々調べたんですよ
CoreAudioのプログラミングXcodeでやるんですね

SourceForgeなんかにAUシンセのソース等みながら
やってみます

832 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 11:42:35 ]
MACはCoreAudioとかあるからなあ、結局サウンドプログラミングの出番ないよな。


833 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 19:09:06 ]
んな訳ない。 波形を自分で作ったり加工したり…

834 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 05:05:08 ]
それだけ?

835 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 07:31:43 ]
サウンドプログラミングじゃないじゃん

836 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 12:14:18 ]
サウンドデバイスプログラミングやAPI使用法はスレ違いだからすっこんでろw
ここはもっとアカデミックで高尚な話題のスレなんだよ

837 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 14:22:35 ]
デバイスなめんな

838 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 04:37:48 ]

>>830

それにしては、>>752の話題はこのスレでは光ってるよな
くそワロタ

839 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 05:07:21 ]
質問です。

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

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

よろしくお願いします。

840 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:57:35 ]
頭部インパルス応答ってあるじゃん
あれの応用で、音源を喉部に固定して測定すればいいと思うよ



841 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 09:06:37 ]
>>839
変態キモイ死ね

骨を伝ってくる音の特性を再現すれば出来そうだけど、
個人の骨格の違いでどの程度変わるのかってーのと、
そもそも個人個人で聞こえ方に差異があるはずだから無理じゃね?

842 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:05:50 ]
>>839
頭の模型を作って喉にスピーカー、耳にマイクを仕込んで、IRを取れ。それつかってコンボリューション。

843 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:30:03 ]
作ろうと思ってるなら自分で理論考えて作ればいいじゃん
そのための脳みそがないってんならご愁傷様だ

844 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:40:39 ]
単に他人の耳の位置にマイクを設置すればいいんじゃないの?

845 名前:デフォルトの名無しさん [2008/10/09(木) 10:41:29 ]
普通に録音して聞けばいいだろ。その子の聞こえ方をシミュしても、その結果を聞くのは自分なんだし

846 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:08:52 ]
>>839
単に録音してそれを自分で聴くだけでいい。

難しいのは、自分の声を自分がどう聞いているかを
相手に聞かせることだ。

847 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:06:19 ]
>>840-842は質問を勘違いしてるな

848 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:26:39 ]
>831の者です

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

みなさん頑張ってね!

849 名前:840 mailto:sage [2008/10/10(金) 00:43:36 ]
・・・俺が>>841-842を誤誘導したっぽいな

850 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 02:30:07 ]
このスレで聞くくらいだから、まさか録音して聞けば済む程度の質問されるとは思わない罠w
でもまぁ全く同じには聞こえないだろうけど。



851 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 19:14:27 ]
その子の頭部を物理シュミレーションするしかないわな。
でもそれが測れるくらい仲がいいならもう付き合ってるよな。

852 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 22:01:27 ]
>>850>>851
それを言い出すとキリがないんじゃないか。

例えば「大好きなあの子がどんな風に自分の顔を見ているのか」知りたいのなら、
普通は「鏡を見ろ」と答えて、それで十分な答えだ。
あの子の水晶体や網膜の特性、視覚に関係する脳の働きまで考慮しないだろう。

853 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 22:13:04 ]
みんな勘違いしているようだが、>>839
その子自身の発した声を、その子自身がどう聞いているかを、知りたい って意味なんだよ。

854 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 22:13:25 ]
ところで、non causalなら理想ローパスってつくれるんでしょ?

855 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 00:44:48 ]
まあ、non causal ならねぇ

856 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 11:32:49 ]
一瞬カジュアルって読んでしまった

理想ローパスって有限長でできるの?無限長なら先読みできたところで意味ない気が…
理解間違ってたらすまん

857 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 13:20:16 ]
>>853
なるほど。全然気付かなかった。
「自分」という言葉を使ってるから両方の意味にとれるんだな。
その方法は俺も知りたいと思っていた。

適当なフィルタをかけて、どちらが似ているかを本人に選ばせ、
パラメータを微調整していく、というのくらいしか思いつかない。

858 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 13:35:05 ]
>>853
日本語の「自分」は1〜3人称全部に使えるからわかりにくい〜

859 名前:854 mailto:sage [2008/10/11(土) 19:40:18 ]
>>856
あっしの理解では、フィルタが無限長でも
データが有限長なら可能かと。

860 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 23:20:43 ]
ダウンサンプリングするプログラムつくりたいんだけど、
間引くデータはどう選んだらいいんですか?



861 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 00:49:11 ]
1/2にするなら1/4fsでローパスして1つ飛ばしすれば速い。
整数比でなければリサンプリング。間引くじゃできん・・と思う。
間引くだけで可能なら俺も知りたい。

862 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 09:30:54 ]
wavefs44.exeとかssrcのソースが参考になる。

863 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 12:12:34 ]
奇遇だな
俺もssrcを勧めようと思っていたところだ

864 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 18:31:48 ]
2つともソースもバイナリも入手不能っぽいのだが

865 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 18:43:57 ]
ググって一番頭のサイトで手に入るけど?

866 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 19:03:39 ]
ssrcって日本からアクセスブロックしてんじゃなかったっけ

867 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 21:36:09 ]
海外のプロクシ経由でアクセスすれば問題無いでしょ。

868 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 20:51:37 ]
DFTとDTFTの違いが理解できない…誰か解脱plz

869 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 22:58:12 ]
>>868
入力関数が周期的か否か

870 名前:デフォルトの名無しさん [2008/10/17(金) 02:54:09 ]
SSRCみたいに、
サウンドプログラミングの参考になるオープンソースソフトって他にどんなのがありますか。






871 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 04:50:26 ]
>>868
Wikipediaより
・入力が離散的なら、フーリエ変換は DTFT となる。
・入力が周期的なら、フーリエ変換はフーリエ級数となる。
・入力が離散的かつ周期的なら、フーリエ変換は DFT となる。

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

これに対し、DTFTは、実際に上記の過程が成立する場合ではないかと思う。

873 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 16:17:35 ]
連続時間・無限区間 → フーリエ変換
連続時間・有限区間 → フーリエ級数
離散時間・無限区間 → 離散時間フーリエ変換(DTFT)
離散時間・有限区間 → 離散フーリエ変換(DFT)

874 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 23:21:38 ]
どれも微妙に誤解を招きそうな回答ですな

875 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 23:51:42 ]
ご存知とは思うが、周期関数を除いては客観的な周波数成分など定義されていないので、
DFTの結果はDFT変換結果でしかない。
f(t)=f(t+T)を常に満たす周期信号など実在しないから(だって過去には限界があるし未来は分からないから)
実際には周波数成分は未定義である。
・・ということを念頭に置かないとフーリエ系周波数分析に過剰な期待をしすぎる。
ピッチが速く変化する人の声などはLPC分析のほうが成功を収めている。

876 名前:デフォルトの名無しさん mailto:sage [2008/10/18(土) 11:02:27 ]
>DFT変換

877 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 10:09:20 ]
頭痛が痛いタイプの人か。

878 名前:デフォルトの名無しさん [2008/10/21(火) 01:42:12 ]
頭痛はほんとに痛いんだぞ!バカにしちゃだめ!死ぬよ!

879 名前:デフォルトの名無しさん [2008/10/21(火) 04:20:59 ]
大体でいいから音楽から歌声部分だけ目立たせるようにフィルタをかけたいんだが、
なかなかうまくいかん。

FIRフィルタで400-4000hzくらいを通したところで音楽がこもるだけだ。
フィルタで音声以外の部分を削る(性能はかなり低くていい)って無理なのか?

880 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 08:36:35 ]
どの音も倍音成分含んだ上で音が成り立ってるから、
周波数だけでボーカル分離はできないと思う。
音量やパンも考えないと。



881 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 08:55:13 ]
他に、「ボーカルはセンター付近にあって、他の楽器は左右に寄ってる」
って仮定のもとに分離を試みたりするらしいけども、
その仮定自体100%そうとはいえないし、
その仮定が正しい場合でも、たった2チャネルの信号から特定部分抜くのは難しい。


882 名前:デフォルトの名無しさん [2008/10/21(火) 19:18:17 ]
マイクから録音した音声を波形で表示したいのですが、
WaveInで録音したものをどうやって波形にすればいいのですか?

883 名前:デフォルトの名無しさん [2008/10/21(火) 20:52:29 ]
数値を時系列にプロット

884 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:46:25 ]
質問です

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

使用する言語でおススメありますか?

885 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 00:07:56 ]
C

886 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 00:10:11 ]
C++

887 名前:884 mailto:sage [2008/10/22(水) 01:50:29 ]
>>885>>886
ありがとうございます!

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


あと、よかったら参考になる本など教えてもらえるととても嬉しいです。
(この前それっぽい本を買ったんですが、シンセのことばかりでプログラミングのことが載ってなかったんですORZ。でも勉強にはなりました)

888 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 05:27:48 ]
プログラムってのは成功失敗を問わず実践してこそ身につくもの。
人に聞く前に自分で実験してみたりはしないのかい?

そもそも言語の基礎が解ってるならサウンドの基礎知識だけ学べば実装はそんなに難しく無いはずだし、
言語から勉強しようってんならスレ違い。

889 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 07:31:28 ]
>>888
アドバイスありがとうございます!

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

一人で頑張ります!

890 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 10:22:51 ]
VSTって知らないけど、全部自分で作った方が面白いと思うよ。
sx-150シミュレーターというかエミュレーターというか。



891 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 10:27:43 ]
>全部自分で
VSTなど使わずって意味で。

892 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 15:24:46 ]
むしろVSTなんか作ろうとしたら
ゴールが遠すぎてあっという間に挫折するわな

893 名前:868 mailto:sage [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 ]

>>894
ttp://thesource.ofallevil.com/japan/msdn/columns/code4fun/code4fun02032004.aspx

ほれ

897 名前:894 mailto:sage [2008/10/24(金) 09:55:53 ]
>895-896
さっそく調べてみます。
ありがとうございます!

898 名前:デフォルトの名無しさん [2008/10/25(土) 01:40:18 ]

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

FIRの設計で、周波数特性を先に決めて逆DFTかけてインパルス応答出しますよね。
このとき遅延時間が発生すると思いますが、この遅延時間を少なくする定石って何かあるのでしょうか。
サンプリング周波数を多くとるか、タップ数を減らすという考え方であってますか。
また、サンプリング周波数を多くとる場合、アップサンプリングでいいものなんでしょうか。
アホですみませんが、良く分からないので、よろしくお願いします。

899 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 03:05:15 ]
>>898
アップサンプリングすると元の音のある帯域が相対的に低域に落ちる。で、
低域で精度確保しようとすると必要タップ数が増えて元の木阿弥。

タップ数減らしたいなら直接設計法をやめるのが早い

900 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 09:33:22 ]
>>898
位相が歪んでもいいなら最少位相化でぐぐれ。

あとは、Remez アルゴリズムってので、
位相保ったまま、周波数特性の絶対値誤差を極力少なくできるんで、
それで所望の特性を少ないタップ数で実現できて遅延減らせる。



901 名前:デフォルトの名無しさん [2008/10/26(日) 22:53:44 ]

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

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

>>900
なるほどー、Remz法って名前は知ってたのですがここで使うんですね。


902 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:06:13 ]
>>901
意味が分からん
アップサンプリングで見かけ上出てくる高域にあるのはゼロ補間で出てくるエイリアス。
普通LPFでカットするし、音響的には害しかない。

903 名前:デフォルトの名無しさん [2008/10/30(木) 17:17:14 ]

音の出力の遅延時間そのものを自由に変更できるようにしたいんです。
その際多少音が悪くなってもかまわないので、1サンプル以下の単位で遅延時間を操作するためにFIRを使いたいと考えているのですが。
この場合定石ではどうやるんでしょうか...。アホですみません。

904 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 19:18:05 ]
フィルターなんか使わなくても、普通のプログラムレベルで出来ると思う。

905 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 21:39:06 ]
いやいや、分数精度遅延は普通FIR使うよ。
4〜6タップくらいで、ラグランジュ補間するのが一般的だと思う。
1サンプル以下の遅延ってのは要はサンプル間の補間

906 名前:デフォルトの名無しさん [2008/10/31(金) 20:26:10 ]
ピッチを変更せずに再生速度を変更するのにはどういった手段が考えられますでしょうか?
FFTとかも触り程度にしかわからないのですが、お願いします。

907 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 22:12:20 ]
>>903
アップサンプリング→遅延→ダウンサンプリング
途中適宜LPFを入れる

908 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 00:35:16 ]
>>906
www.google.co.jp/search?hl=ja&q=%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%B9%E3%83%88%E3%83%AC%E3%83%83%E3%83%81+%E3%82%BD%E3%83%BC%E3%82%B9&lr=lang_ja

909 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 13:04:09 ]
>>906
一定間隔で切り、複製して並べる

910 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:32:37 ]
要は波の数を変えればいいんだよね



911 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 13:27:44 ]
>>908,909,910
ありがとうございます。タイムストレッチっていうんですね
ただ一定間隔できって複製して並べるという部分がちょっと理解できませんでした。
周波数をそのままにして音を削っていくみたいな感じだとはおもうんですが…

912 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:20:21 ]
クロスフェードで同じものを何度も繋げるだけだよ

913 名前:デフォルトの名無しさん [2008/11/04(火) 00:43:08 ]
音響信号(wavファイル)をFFTしてバンドパスフィルタかけて逆FFTする。
っていうことをしたいんですけど、いかんせんこの分野は初めてなのでやり方がわからないです。

こういった処理をするプログラムソースが載ってる本を知ってる方おられますか?

914 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:20:29 ]
>>913
Intel IPP

915 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 02:31:43 ]
FFT→ピッチシフト→逆FFTなら
www.dspdimension.com/admin/pitch-shifting-using-the-ft/
Cマガにもあったけど何年何月号か忘れた

916 名前:903 [2008/11/04(火) 14:25:36 ]
>>905 907

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

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




917 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 23:09:07 ]
>>916
いや、1/4, 2/4, 3/4 とかの位置のラグランジュ補間係数をあらかじめ計算しておく。
位置が決まってるラグランジュ補間は FIR フィルタで実装できる。

918 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 09:36:33 ]
サウンドプログラムと言うより、フィルタの使い方ばっかりだな。

919 名前:903 mailto:sage [2008/11/05(水) 13:42:01 ]
>>917
回答ありがとうございます。

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

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

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

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



920 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 19:15:42 ]
フィルタの話ついでに
IIRの演算で精度上げてったら演算誤差の蓄積とかの影響がすくなそうなんだけど
結局蓄積するから使い勝手はかわらんかな
安定し続けるようなもんができたらいいなぁと思ったり



921 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 20:15:27 ]
DFTにおいての窓関数ってなんの意味があるんですか?区間の切り出しって意味で矩形窓はわかるんですが・・・

922 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 21:31:43 ]
周期関数を仮定するDFTで不連続点の解消

923 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 21:50:59 ]
それを解消するとなにがいいんですか?

窓関数で周波数分解能が変わるっていうのがわかりません。窓長で決まるものだとおもうんですが・・・

924 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:09:42 ]
>>923
矩形で切り出したら両端はどうなるかを考えるんだ。
つか人に聞く前に実際に実験してみれ。

925 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:58:00 ]
実験しましたが・・・

分解能っていうのは周波数ビンの幅のことじゃなくて、裾に出てくるスペクトルがなくなるってことなんですか?

926 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 23:10:10 ]
その程度の解説はぐぐりゃ死ぬほどあんだろ
ttp://www.google.co.jp/search?num=20&q=%E7%AA%93%E9%96%A2%E6%95%B0
ttp://images.google.co.jp/images?num=20&q=%E7%AA%93%E9%96%A2%E6%95%B0&um=1&ie=UTF-8&sa=N&tab=wi
ttp://ja.wikipedia.org/wiki/%E7%AA%93%E9%96%A2%E6%95%B0

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

周波数分解能が変わるって表現は誤解を招くと思う。

928 名前:927 mailto:sage [2008/11/05(水) 23:24:47 ]
あ、今読んで思ったけど「誤解を招く」って表現が思い切り間違ってます。
周波数分解能がかわるというよりも時間と周波数の分解能でトレードオフを取る、と書くつもりでした。

929 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 23:24:59 ]
なるほど。よくわかりました。広きに渡って周波数の分布をみたい場合に適した窓ってなんでしょうか?
採譜用なんですが、50〜2000hzぐらい

930 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 09:33:23 ]
>>919
時刻 1, 2, 3, 4 の位置のデータから時刻 2.25, 2.5, 2.75 のデータを作るFIRフィルタを作るだけ。




931 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 10:13:12 ]
>>929
採譜のどの部分かによる。アルゴリズムにもよるけども、音程を推定したいのなら矩形窓じゃないと
ベースの音高を推定するのに苦労すると思う。44.1kでサンプリングしたときの周波数分解能と
50Hz(オルガンの低音辺りだよな?)での半音での周波数差を見比べてみな。
あと、音色の分析とかだったらバーレットハン窓辺りが結構使われる。

932 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 14:53:14 ]
てか採譜にFFTって時間分解能が全然実用的じゃない気が

933 名前:903 mailto:sage [2008/11/11(火) 21:17:36 ]
>>930

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

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

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

ちょっと頭がこんがらがってきました。

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


935 名前:903 mailto:sage [2008/11/12(水) 06:18:39 ]
>>934

この論文、まさに自分がやりたいことが書いてありそうなタイトルです。
理論のほうにも興味があるので、これ読みこんでみます。
ありがとうざいます!


936 名前:デフォルトの名無しさん [2008/11/13(木) 06:16:07 ]
タイムストレッチする際に、周期を求めないといけないと思うのですが、
その求め方というか決め方がわかりません。

具体的には、音声をフレーム毎に区切って、クロスフェードさせることで時間を圧縮しようと
思うのですが、フレームをどう区切るのがいいのかがわからないので、
アドバイスお願いします。

937 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:03:59 ]
>>936
周期はユーザーパラメータでいいんじゃない?

938 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:23:30 ]
CQ変換ってなんですか?

939 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 01:19:42 ]
CQ CQ こちらJF8....です

940 名前:デフォルトの名無しさん [2008/11/21(金) 01:27:08 ]
かなり初心者な質問だと思いますが、返答していただけたら幸いです。

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

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

そもそも考え方が間違っているかもしれません。
よろしければご鞭撻のほどよろしくお願いします。



941 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 02:32:33 ]
前段は別けて問題ないが、特徴量の抽出が目的なら足しちゃえば?
後段は誰かに任せた

942 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 03:51:49 ]
>>940
よくある半区間重複だと、
窓→FFT→係数をそれぞれ乗算→IFFT→窓→オーバーラップ
このやりかたの場合、2回の窓掛けの結果をオーバーラップする必要があるので
sin窓とかvorbis窓を使う必要がある。あとライブラリによって出力データの並びが
違うので、それにあわせて適切に係数乗算しないと変になる。

943 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 09:58:23 ]
>>940
ソースデータにもよるし、片chで期待するデータが得られるならそのままでもいいし、
狙った効果でPANしてる曲とかはLR加算するとヘンに聞こえたりする場合も稀にある。
結果が解ってる実験なり課題なりなら最適な方選んでもいいし、
ステレオでFFT処理して、必要に応じて出力結果を波形編集ソフトで弄ってもいい。

それとFFTでフィルタかけるわけだから、FIRは不要じゃね?
大抵の場合>>942の手順で事足りると思う。
多分フーリエ変換が解ってないんだと思うからFFTのC言語ソースとか落としてsin/cos波形食わしてみ。
www.google.co.jp/search?q=fft.c

944 名前:940 mailto:fft [2008/11/21(金) 17:30:04 ]
みなさんありがとうございます。
やはり勉強不足のせいで、理解できるところと全くわからないところとあります…
ですので、もしよかったらソースを見ていただきたいです。
いただいたプログラムを弄っているので、至らない部分もあるかと思いますが、
もし時間のあるかたがいましたら、ご鞭撻のほどよろしくお願いいたしますm(_ _)m

ttp://a-draw.com/uploader/upload.cgi?mode=dl&file=6970
パスはmail欄です。

945 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 18:59:18 ]
FFTした結果からピークの山を見つけるにはどういうプログラムを書けばいいですか?

実際の値を 横軸を対数に周波数、縦軸にパワーにとったグラフにプロットして目で見ればここが山かなと
わかるんですが・・・

946 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 19:26:00 ]
Audacityのスペクトル表示にあるような機能です。

947 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 23:12:04 ]
>>945
ケプストラム

948 名前:940 mailto:sage [2008/11/22(土) 00:54:01 ]
指摘はメールでお願いしますとreadmeで書きましたが、
このスレでしていただいても結構です。人頼みで申し訳ありません

949 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 15:45:00 ]
周波数と振幅からどうやって音量を求めるんですか?

950 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 17:45:39 ]
もしかして:RMS+二条平均根



951 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 18:06:38 ]
変換ミス...

二乗平均根

952 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 18:52:47 ]
固定小数点演算のフィルタを作りたいのですが係数の小数点位置はどのようにして決めればいいんでしょうか

953 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 19:03:15 ]
>>952
用途によるとしか言いようが。
昔自分が作ったのだと、IIRだと整数部2ビット、FIRだと整数部なしでやった。

954 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 21:28:15 ]
符号部1bit,整数部2bit,残りを少数部ですかね
乗算した結果が精度的に2倍なると思うのですが、元の精度に戻すことを考えると頭がこんがらがってしまって・・・
そのあたりはどうすればいいんでしょうか

955 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 21:47:46 ]
>>954
そんなとこ>符号1bit、整数部2bit。

普通は係数とバッファで固定小数点位置変えるからなぁ。
たいてい、フィルタ係数って1以下になるでしょ。

956 名前:デフォルトの名無しさん [2008/11/30(日) 23:22:25 ]
モノラル音響信号を、2次元フーリエ変換成分(周波数方向のフーリエ成分と時間方向のフーリエ成分)
に分けることって可能ですか?そのあたりについて詳しいサイトとか本とか知ってたら教えていただきたいです。

957 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 23:33:02 ]
>>956
それ、ウェーブレットで検索した方がいいかも。

958 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 23:33:53 ]
係数は確かに大抵1以下なんですが、ところどころ1以上になるところが出来てしまって・・・
もしバッファの小数点位置がLSBにあって、係数を符号部1bit,整数部2bit,小数部5bitとした場合は乗算した結果を5bit右シフトして整数部を残すようにするんでしょうか
この方法だと係数が1以上の場合、残した整数部データの有効なビット幅がバッファに入ってるものより大きくなってしまう気がして・・・

959 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 00:50:13 ]
>>956
スペクトログラムのことを言っているなら短時間FFT

960 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 21:46:34 ]
ここで聞くのがいいのか少々悩ましいのだが
AMDーSB700でレガシオーディオの設定はどこのポートを叩けばいいのか情報ないかい?
非Windows環境なんだが、奴が邪魔してYMF744のFM音源鳴らすのに不便で仕方が無い。



961 名前:デフォルトの名無しさん [2008/12/02(火) 00:09:48 ]
DTMFのトーン信号を解析するソフトについて、ソースとかから載ってる本とかwebPageとか
ご存じありませんか?
#出来ればVC++で。
 

962 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 03:47:09 ]
>961
VC++ではないけど、参考になるかな?
www.mars.dti.ne.jp/~m7030/pic_room/dtmf/index_rx.html

963 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 14:38:35 ]
>>962
ありがとう。ただ、俺が探してるのは外部装置なしでPC内で完結してるやつなんだ。
サウンドカードから取り込んで、判別&表示、みたいな。


964 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 14:38:50 ]
スペクトラムってどうやって計算するんですか?

965 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 16:45:44 ]
FFTして複素平面上でベクトルの絶対値

966 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 10:33:08 ]
THX!

967 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 02:47:17 ]
リサンプリング周波数の組み合わせによっては処理量が膨大になる問題で
例えば48k→44.1kで↑147↓160を素因数分解して複数回処理にわければ、
重い(ほぼ)理想フィルタでも使える!売れる!

とか思って実装してみたらVoxengoに年単位で先を越されていたというチラ裏。
(ちなみに処理量は1/7〜1/8になります。
ほぼ理想フィルタなので数回程度なら聴取可能な影響はない)

968 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 01:39:44 ]
>>967
イミワカラヌス

969 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 05:21:42 ]
実装次第

972 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 08:06:02 ]
そりゃそうだ

973 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 12:10:46 ]
limetarte.net/software/more/binary/VocalReducer.htm
ここのボーカルキャンセラーなんだけどアルゴリズムについてわかる人いますか?

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


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

作者に聞けっていわれそうですが・・・返信がなかったんで

974 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 12:39:01 ]
位相も考えないとだめじゃないの

975 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 14:11:32 ]
まぁ普通この手のアルゴリズムは説明してくんねぇって。
何の用途で使うかしんないけど、そのまま製品化とかされたらたまんないし、
どっかのサブマリン特許に引っかかってる可能性もあるし、メリットねぇもん。

976 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 16:11:08 ]
フーリエ変換が分かれば高校数学でできる。
複素スペクトル平面上にOLとORを書いて、
PLとPRが直交するようなOPを適当に作ってベクトル減算。
習った次の日くらいに思いついたぞ俺。

ブロック単位の処理の場合プリエコーポストエコーの問題もあるから、
上みたいな遊びソフトはともかく、音楽制作に供するなら
ちょっとは頑張らないと音質的に微妙になるけど。

977 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 17:10:46 ]
はいはい(笑)

978 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 18:55:29 ]
>>976
ちょっと2次元で書いてくれませんか?



979 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 19:48:52 ]
おまえらその説明で分かんないのか……

980 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 21:48:01 ]
こういううざいのってどこにもいるのね








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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