[表示 : 全て 最新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


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