サウンドプログラミング4 at TECH
サウンドプログラミング4 - 暇つぶし2ch751:デフォルトの名無しさん
08/07/22 04:09:42
>>749
窓掛けFFTは時間単位、ウェーブレットは波数単位とかではなかったっけ

752:デフォルトの名無しさん
08/07/22 12:59:42
C++相談室 part62
スレリンク(tech板:874番)

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

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

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

753:デフォルトの名無しさん
08/07/22 22:04:29
さすが天才は目の付け所が違うな…

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

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

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

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

756:デフォルトの名無しさん
08/07/30 11:01:31
大きいバッファ一つだとそういう感じになるね。

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


757:デフォルトの名無しさん
08/07/30 23:16:58
なるほど。ありがとうございました。

758:デフォルトの名無しさん
08/08/19 05:57:23

>>605

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

759:デフォルトの名無しさん
08/08/20 22:33:25
>>605
原書の方が良いよ。


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

761:デフォルトの名無しさん
08/08/26 07:36:34
そりゃぁ、作ればあるだろうけど……

762:デフォルトの名無しさん
08/08/28 01:40:14
>>760

FFTして所望の周波数部分削って逆FFTしろ

763:デフォルトの名無しさん
08/08/28 01:42:45
ところでDirectAccessってその後どうなったのか

764:デフォルトの名無しさん
08/08/31 18:42:37
バンドパス処理する場合にはFFTして通過させる以外の周波数の振幅を0にしてIFFTするだけでいいの?

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

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

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

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

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

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

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

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

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

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

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

774:デフォルトの名無しさん
08/08/31 22:53:19
winampのグライコってどんな仕組み?

775:デフォルトの名無しさん
08/09/01 00:06:57
俺は逆にFFT使う方法がわからん。


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


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

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

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

777:デフォルトの名無しさん
08/09/24 21:55:05
こんなスレあったのか
知らなかった。。。

778:デフォルトの名無しさん
08/09/26 04:42:11
ようこそ、ラッキー7。
ここはム板でももっともマニアックなスレです。


779:デフォルトの名無しさん
08/09/26 05:04:35
776が言っている境界条件の関係が非常によく分かるページ
URLリンク(laputa.cs.shinshu-u.ac.jp)

2次元DCTだが許せ。

780:デフォルトの名無しさん
08/09/26 09:25:21
俺もそのうち二次元に行くから許してやるよ。

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

782:デフォルトの名無しさん
08/09/26 16:05:28
だが断る

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

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

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

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

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

786:デフォルトの名無しさん
08/09/27 00:54:20
>>783
>>781

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

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

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

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

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

791:デフォルトの名無しさん
08/09/27 22:23:12
うそこけ

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

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

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

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

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

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

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

798:デフォルトの名無しさん
08/09/27 23:23:50
エントロピーの計算式覚えてるよね?

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

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

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

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

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

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

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

804:デフォルトの名無しさん
08/09/29 12:32:27
0.001www

805:デフォルトの名無しさん
08/09/29 12:40:18
>>799

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

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

808:801
08/09/29 21:10:07
スマン
情報量云々を見るとつい…

809:デフォルトの名無しさん
08/09/29 21:53:24
2次元の話がずいぶん広がってしまったな。
なんか音の話題ないの。


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

811:デフォルトの名無しさん
08/09/30 13:15:36
>>810
そういうのはマ板でやれ

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

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

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


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

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

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

図が無いと判りにくいだろうから、詳しくは下記リンクを参照。
URLリンク(blackfin.s36.coreserver.jp)

816:デフォルトの名無しさん
08/09/30 19:28:25
>>815

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

参考:URLリンク(www38.tok2.com)

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

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

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

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

ここ詳しく。

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

821:デフォルトの名無しさん
08/10/01 16:45:43
高周波が出ますナ

822:デフォルトの名無しさん
08/10/01 22:23:45
おまいらフィルタの設計時ってどんなツール使ってる?


823:デフォルトの名無しさん
08/10/02 09:34:09
dsPICworks

dsPICつこてるので。

824:デフォルトの名無しさん
08/10/02 12:24:11
職場では MATLAB
自宅では GNU Octave

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

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

827:デフォルトの名無しさん
08/10/02 19:17:53
へー、おもしろい。使ってみます。ありがとうー。

828:デフォルトの名無しさん
08/10/03 12:42:06
>>826
gnuplotと組み合わせてるのかな?

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

830:デフォルトの名無しさん
08/10/05 01:45:43
あー....。

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

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

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


833:デフォルトの名無しさん
08/10/06 19:09:06
んな訳ない。 波形を自分で作ったり加工したり…

834:デフォルトの名無しさん
08/10/07 05:05:08
それだけ?

835:デフォルトの名無しさん
08/10/07 07:31:43
サウンドプログラミングじゃないじゃん

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

837:デフォルトの名無しさん
08/10/07 14:22:35
デバイスなめんな

838:デフォルトの名無しさん
08/10/08 04:37:48

>>830

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

839:デフォルトの名無しさん
08/10/09 05:07:21
質問です。

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

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

よろしくお願いします。

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

841:デフォルトの名無しさん
08/10/09 09:06:37
>>839
変態キモイ死ね

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

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

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

844:デフォルトの名無しさん
08/10/09 10:40:39
単に他人の耳の位置にマイクを設置すればいいんじゃないの?

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

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

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

847:デフォルトの名無しさん
08/10/09 20:06:19
>>840-842は質問を勘違いしてるな

848:デフォルトの名無しさん
08/10/09 20:26:39
>831の者です

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

みなさん頑張ってね!

849:840
08/10/10 00:43:36
・・・俺が>>841-842を誤誘導したっぽいな

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

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

852:デフォルトの名無しさん
08/10/10 22:01:27
>>850>>851
それを言い出すとキリがないんじゃないか。

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

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

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

855:デフォルトの名無しさん
08/10/11 00:44:48
まあ、non causal ならねぇ

856:デフォルトの名無しさん
08/10/11 11:32:49
一瞬カジュアルって読んでしまった

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

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

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

858:デフォルトの名無しさん
08/10/11 13:35:05
>>853
日本語の「自分」は1~3人称全部に使えるからわかりにくい~

859:854
08/10/11 19:40:18
>>856
あっしの理解では、フィルタが無限長でも
データが有限長なら可能かと。

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

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

862:デフォルトの名無しさん
08/10/12 09:30:54
wavefs44.exeとかssrcのソースが参考になる。

863:デフォルトの名無しさん
08/10/13 12:12:34
奇遇だな
俺もssrcを勧めようと思っていたところだ

864:デフォルトの名無しさん
08/10/13 18:31:48
2つともソースもバイナリも入手不能っぽいのだが

865:デフォルトの名無しさん
08/10/13 18:43:57
ググって一番頭のサイトで手に入るけど?

866:デフォルトの名無しさん
08/10/13 19:03:39
ssrcって日本からアクセスブロックしてんじゃなかったっけ

867:デフォルトの名無しさん
08/10/13 21:36:09
海外のプロクシ経由でアクセスすれば問題無いでしょ。

868:デフォルトの名無しさん
08/10/16 20:51:37
DFTとDTFTの違いが理解できない…誰か解脱plz

869:デフォルトの名無しさん
08/10/16 22:58:12
>>868
入力関数が周期的か否か

870:デフォルトの名無しさん
08/10/17 02:54:09
SSRCみたいに、
サウンドプログラミングの参考になるオープンソースソフトって他にどんなのがありますか。




871:デフォルトの名無しさん
08/10/17 04:50:26
>>868
Wikipediaより
・入力が離散的なら、フーリエ変換は DTFT となる。
・入力が周期的なら、フーリエ変換はフーリエ級数となる。
・入力が離散的かつ周期的なら、フーリエ変換は DFT となる。

872:デフォルトの名無しさん
08/10/17 09:07:37
DFTは、有限区間での変換を行う。
DFTは実際にはそうとは限らないが、以下の仮定を置いて考える。
その時にその区間の信号が、周期的に無限に続くと考える。従って、信号の一端と多端が滑らかでない場合などに問題が生じる。
これらを解決するために、窓関数などが用いられるが、これによってスペクトル漏れという問題が起きる。

これに対し、DTFTは、実際に上記の過程が成立する場合ではないかと思う。

873:デフォルトの名無しさん
08/10/17 16:17:35
連続時間・無限区間 → フーリエ変換
連続時間・有限区間 → フーリエ級数
離散時間・無限区間 → 離散時間フーリエ変換(DTFT)
離散時間・有限区間 → 離散フーリエ変換(DFT)

874:デフォルトの名無しさん
08/10/17 23:21:38
どれも微妙に誤解を招きそうな回答ですな

875:デフォルトの名無しさん
08/10/17 23:51:42
ご存知とは思うが、周期関数を除いては客観的な周波数成分など定義されていないので、
DFTの結果はDFT変換結果でしかない。
f(t)=f(t+T)を常に満たす周期信号など実在しないから(だって過去には限界があるし未来は分からないから)
実際には周波数成分は未定義である。
・・ということを念頭に置かないとフーリエ系周波数分析に過剰な期待をしすぎる。
ピッチが速く変化する人の声などはLPC分析のほうが成功を収めている。

876:デフォルトの名無しさん
08/10/18 11:02:27
>DFT変換

877:デフォルトの名無しさん
08/10/20 10:09:20
頭痛が痛いタイプの人か。

878:デフォルトの名無しさん
08/10/21 01:42:12
頭痛はほんとに痛いんだぞ!バカにしちゃだめ!死ぬよ!

879:デフォルトの名無しさん
08/10/21 04:20:59
大体でいいから音楽から歌声部分だけ目立たせるようにフィルタをかけたいんだが、
なかなかうまくいかん。

FIRフィルタで400-4000hzくらいを通したところで音楽がこもるだけだ。
フィルタで音声以外の部分を削る(性能はかなり低くていい)って無理なのか?

880:デフォルトの名無しさん
08/10/21 08:36:35
どの音も倍音成分含んだ上で音が成り立ってるから、
周波数だけでボーカル分離はできないと思う。
音量やパンも考えないと。

881:デフォルトの名無しさん
08/10/21 08:55:13
他に、「ボーカルはセンター付近にあって、他の楽器は左右に寄ってる」
って仮定のもとに分離を試みたりするらしいけども、
その仮定自体100%そうとはいえないし、
その仮定が正しい場合でも、たった2チャネルの信号から特定部分抜くのは難しい。


882:デフォルトの名無しさん
08/10/21 19:18:17
マイクから録音した音声を波形で表示したいのですが、
WaveInで録音したものをどうやって波形にすればいいのですか?

883:デフォルトの名無しさん
08/10/21 20:52:29
数値を時系列にプロット

884:デフォルトの名無しさん
08/10/21 22:46:25
質問です

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

使用する言語でおススメありますか?

885:デフォルトの名無しさん
08/10/22 00:07:56
C

886:デフォルトの名無しさん
08/10/22 00:10:11
C++

887:884
08/10/22 01:50:29
>>885>>886
ありがとうございます!

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


あと、よかったら参考になる本など教えてもらえるととても嬉しいです。
(この前それっぽい本を買ったんですが、シンセのことばかりでプログラミングのことが載ってなかったんですORZ。でも勉強にはなりました)

888:デフォルトの名無しさん
08/10/22 05:27:48
プログラムってのは成功失敗を問わず実践してこそ身につくもの。
人に聞く前に自分で実験してみたりはしないのかい?

そもそも言語の基礎が解ってるならサウンドの基礎知識だけ学べば実装はそんなに難しく無いはずだし、
言語から勉強しようってんならスレ違い。

889:デフォルトの名無しさん
08/10/22 07:31:28
>>888
アドバイスありがとうございます!

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

一人で頑張ります!

890:デフォルトの名無しさん
08/10/22 10:22:51
VSTって知らないけど、全部自分で作った方が面白いと思うよ。
sx-150シミュレーターというかエミュレーターというか。

891:デフォルトの名無しさん
08/10/22 10:27:43
>全部自分で
VSTなど使わずって意味で。

892:デフォルトの名無しさん
08/10/22 15:24:46
むしろVSTなんか作ろうとしたら
ゴールが遠すぎてあっという間に挫折するわな

893:868
08/10/22 22:56:08
皆様解説サンクスです。コメントを総合して何となく分かってきました。
"解脱"に誰もツッこんでくれなくて(´・ω・`)ショボーン

>>889 >>892
プログラミングモデルとしては、VSTは分かりやすい方ですよ。
オブジェクト指向っていう壁はありますが、複雑多機能なフレームワーク
渡されるよりは学習コストは低いと思います。
基本的には、SDKで提供されるクラスを継承して処理を実装して、
そのクラスのインスタンスのポインタを返す関数を書いてエクスポートするだけです。

894:デフォルトの名無しさん
08/10/24 02:33:39
C#でサウンド操作関係のソフトを作ろうかと考えているんですが、waveOut系のような低レベル操作の出来るクラスが見つかりません。
DLLをインポートしてwaveOut系を使うしかないのでしょうか?
また、低レベル操作の出来るクラスがあれば教えてください。

895:デフォルトの名無しさん
08/10/24 03:27:46
>>894

ManagedDirectX経由である程度できる。
昔MSDNにサンプルあったよ。
リズム/ドラムあたりで検索してみ。


896:デフォルトの名無しさん
08/10/24 03:32:13

>>894
URLリンク(thesource.ofallevil.com)

ほれ

897:894
08/10/24 09:55:53
>895-896
さっそく調べてみます。
ありがとうございます!

898:デフォルトの名無しさん
08/10/25 01:40:18

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

FIRの設計で、周波数特性を先に決めて逆DFTかけてインパルス応答出しますよね。
このとき遅延時間が発生すると思いますが、この遅延時間を少なくする定石って何かあるのでしょうか。
サンプリング周波数を多くとるか、タップ数を減らすという考え方であってますか。
また、サンプリング周波数を多くとる場合、アップサンプリングでいいものなんでしょうか。
アホですみませんが、良く分からないので、よろしくお願いします。

899:デフォルトの名無しさん
08/10/25 03:05:15
>>898
アップサンプリングすると元の音のある帯域が相対的に低域に落ちる。で、
低域で精度確保しようとすると必要タップ数が増えて元の木阿弥。

タップ数減らしたいなら直接設計法をやめるのが早い

900:デフォルトの名無しさん
08/10/25 09:33:22
>>898
位相が歪んでもいいなら最少位相化でぐぐれ。

あとは、Remez アルゴリズムってので、
位相保ったまま、周波数特性の絶対値誤差を極力少なくできるんで、
それで所望の特性を少ないタップ数で実現できて遅延減らせる。

901:デフォルトの名無しさん
08/10/26 22:53:44

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

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

>>900
なるほどー、Remz法って名前は知ってたのですがここで使うんですね。


902:デフォルトの名無しさん
08/10/26 23:06:13
>>901
意味が分からん
アップサンプリングで見かけ上出てくる高域にあるのはゼロ補間で出てくるエイリアス。
普通LPFでカットするし、音響的には害しかない。

903:デフォルトの名無しさん
08/10/30 17:17:14

音の出力の遅延時間そのものを自由に変更できるようにしたいんです。
その際多少音が悪くなってもかまわないので、1サンプル以下の単位で遅延時間を操作するためにFIRを使いたいと考えているのですが。
この場合定石ではどうやるんでしょうか...。アホですみません。

904:デフォルトの名無しさん
08/10/30 19:18:05
フィルターなんか使わなくても、普通のプログラムレベルで出来ると思う。

905:デフォルトの名無しさん
08/10/30 21:39:06
いやいや、分数精度遅延は普通FIR使うよ。
4~6タップくらいで、ラグランジュ補間するのが一般的だと思う。
1サンプル以下の遅延ってのは要はサンプル間の補間

906:デフォルトの名無しさん
08/10/31 20:26:10
ピッチを変更せずに再生速度を変更するのにはどういった手段が考えられますでしょうか?
FFTとかも触り程度にしかわからないのですが、お願いします。

907:デフォルトの名無しさん
08/10/31 22:12:20
>>903
アップサンプリング→遅延→ダウンサンプリング
途中適宜LPFを入れる

908:デフォルトの名無しさん
08/11/01 00:35:16
>>906
URLリンク(www.google.co.jp)

909:デフォルトの名無しさん
08/11/02 13:04:09
>>906
一定間隔で切り、複製して並べる

910:デフォルトの名無しさん
08/11/03 00:32:37
要は波の数を変えればいいんだよね

911:デフォルトの名無しさん
08/11/03 13:27:44
>>908,909,910
ありがとうございます。タイムストレッチっていうんですね
ただ一定間隔できって複製して並べるという部分がちょっと理解できませんでした。
周波数をそのままにして音を削っていくみたいな感じだとはおもうんですが…

912:デフォルトの名無しさん
08/11/03 18:20:21
クロスフェードで同じものを何度も繋げるだけだよ

913:デフォルトの名無しさん
08/11/04 00:43:08
音響信号(wavファイル)をFFTしてバンドパスフィルタかけて逆FFTする。
っていうことをしたいんですけど、いかんせんこの分野は初めてなのでやり方がわからないです。

こういった処理をするプログラムソースが載ってる本を知ってる方おられますか?

914:デフォルトの名無しさん
08/11/04 01:20:29
>>913
Intel IPP

915:デフォルトの名無しさん
08/11/04 02:31:43
FFT→ピッチシフト→逆FFTなら
URLリンク(www.dspdimension.com)
Cマガにもあったけど何年何月号か忘れた

916:903
08/11/04 14:25:36
>>905 907

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

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




917:デフォルトの名無しさん
08/11/04 23:09:07
>>916
いや、1/4, 2/4, 3/4 とかの位置のラグランジュ補間係数をあらかじめ計算しておく。
位置が決まってるラグランジュ補間は FIR フィルタで実装できる。

918:デフォルトの名無しさん
08/11/05 09:36:33
サウンドプログラムと言うより、フィルタの使い方ばっかりだな。

919:903
08/11/05 13:42:01
>>917
回答ありがとうございます。

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

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

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

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



920:デフォルトの名無しさん
08/11/05 19:15:42
フィルタの話ついでに
IIRの演算で精度上げてったら演算誤差の蓄積とかの影響がすくなそうなんだけど
結局蓄積するから使い勝手はかわらんかな
安定し続けるようなもんができたらいいなぁと思ったり

921:デフォルトの名無しさん
08/11/05 20:15:27
DFTにおいての窓関数ってなんの意味があるんですか?区間の切り出しって意味で矩形窓はわかるんですが・・・

922:デフォルトの名無しさん
08/11/05 21:31:43
周期関数を仮定するDFTで不連続点の解消

923:デフォルトの名無しさん
08/11/05 21:50:59
それを解消するとなにがいいんですか?

窓関数で周波数分解能が変わるっていうのがわかりません。窓長で決まるものだとおもうんですが・・・

924:デフォルトの名無しさん
08/11/05 22:09:42
>>923
矩形で切り出したら両端はどうなるかを考えるんだ。
つか人に聞く前に実際に実験してみれ。

925:デフォルトの名無しさん
08/11/05 22:58:00
実験しましたが・・・

分解能っていうのは周波数ビンの幅のことじゃなくて、裾に出てくるスペクトルがなくなるってことなんですか?

926:デフォルトの名無しさん
08/11/05 23:10:10
その程度の解説はぐぐりゃ死ぬほどあんだろ
URLリンク(www.google.co.jp)
URLリンク(images.google.co.jp)
URLリンク(ja.wikipedia.org)

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

周波数分解能が変わるって表現は誤解を招くと思う。

928:927
08/11/05 23:24:47
あ、今読んで思ったけど「誤解を招く」って表現が思い切り間違ってます。
周波数分解能がかわるというよりも時間と周波数の分解能でトレードオフを取る、と書くつもりでした。

929:デフォルトの名無しさん
08/11/05 23:24:59
なるほど。よくわかりました。広きに渡って周波数の分布をみたい場合に適した窓ってなんでしょうか?
採譜用なんですが、50~2000hzぐらい

930:デフォルトの名無しさん
08/11/06 09:33:23
>>919
時刻 1, 2, 3, 4 の位置のデータから時刻 2.25, 2.5, 2.75 のデータを作るFIRフィルタを作るだけ。


931:デフォルトの名無しさん
08/11/06 10:13:12
>>929
採譜のどの部分かによる。アルゴリズムにもよるけども、音程を推定したいのなら矩形窓じゃないと
ベースの音高を推定するのに苦労すると思う。44.1kでサンプリングしたときの周波数分解能と
50Hz(オルガンの低音辺りだよな?)での半音での周波数差を見比べてみな。
あと、音色の分析とかだったらバーレットハン窓辺りが結構使われる。

932:デフォルトの名無しさん
08/11/06 14:53:14
てか採譜にFFTって時間分解能が全然実用的じゃない気が

933:903
08/11/11 21:17:36
>>930

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

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

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

ちょっと頭がこんがらがってきました。

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


935:903
08/11/12 06:18:39
>>934

この論文、まさに自分がやりたいことが書いてありそうなタイトルです。
理論のほうにも興味があるので、これ読みこんでみます。
ありがとうざいます!


936:デフォルトの名無しさん
08/11/13 06:16:07
タイムストレッチする際に、周期を求めないといけないと思うのですが、
その求め方というか決め方がわかりません。

具体的には、音声をフレーム毎に区切って、クロスフェードさせることで時間を圧縮しようと
思うのですが、フレームをどう区切るのがいいのかがわからないので、
アドバイスお願いします。

937:デフォルトの名無しさん
08/11/15 10:03:59
>>936
周期はユーザーパラメータでいいんじゃない?

938:デフォルトの名無しさん
08/11/20 23:23:30
CQ変換ってなんですか?

939:デフォルトの名無しさん
08/11/21 01:19:42
CQ CQ こちらJF8....です

940:デフォルトの名無しさん
08/11/21 01:27:08
かなり初心者な質問だと思いますが、返答していただけたら幸いです。

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

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

そもそも考え方が間違っているかもしれません。
よろしければご鞭撻のほどよろしくお願いします。

941:デフォルトの名無しさん
08/11/21 02:32:33
前段は別けて問題ないが、特徴量の抽出が目的なら足しちゃえば?
後段は誰かに任せた

942:デフォルトの名無しさん
08/11/21 03:51:49
>>940
よくある半区間重複だと、
窓→FFT→係数をそれぞれ乗算→IFFT→窓→オーバーラップ
このやりかたの場合、2回の窓掛けの結果をオーバーラップする必要があるので
sin窓とかvorbis窓を使う必要がある。あとライブラリによって出力データの並びが
違うので、それにあわせて適切に係数乗算しないと変になる。

943:デフォルトの名無しさん
08/11/21 09:58:23
>>940
ソースデータにもよるし、片chで期待するデータが得られるならそのままでもいいし、
狙った効果でPANしてる曲とかはLR加算するとヘンに聞こえたりする場合も稀にある。
結果が解ってる実験なり課題なりなら最適な方選んでもいいし、
ステレオでFFT処理して、必要に応じて出力結果を波形編集ソフトで弄ってもいい。

それとFFTでフィルタかけるわけだから、FIRは不要じゃね?
大抵の場合>>942の手順で事足りると思う。
多分フーリエ変換が解ってないんだと思うからFFTのC言語ソースとか落としてsin/cos波形食わしてみ。
URLリンク(www.google.co.jp)

944:940
08/11/21 17:30:04
みなさんありがとうございます。
やはり勉強不足のせいで、理解できるところと全くわからないところとあります…
ですので、もしよかったらソースを見ていただきたいです。
いただいたプログラムを弄っているので、至らない部分もあるかと思いますが、
もし時間のあるかたがいましたら、ご鞭撻のほどよろしくお願いいたしますm(_ _)m

URLリンク(a-draw.com)
パスはmail欄です。

945:デフォルトの名無しさん
08/11/21 18:59:18
FFTした結果からピークの山を見つけるにはどういうプログラムを書けばいいですか?

実際の値を 横軸を対数に周波数、縦軸にパワーにとったグラフにプロットして目で見ればここが山かなと
わかるんですが・・・

946:デフォルトの名無しさん
08/11/21 19:26:00
Audacityのスペクトル表示にあるような機能です。

947:デフォルトの名無しさん
08/11/21 23:12:04
>>945
ケプストラム

948:940
08/11/22 00:54:01
指摘はメールでお願いしますとreadmeで書きましたが、
このスレでしていただいても結構です。人頼みで申し訳ありません

949:デフォルトの名無しさん
08/11/26 15:45:00
周波数と振幅からどうやって音量を求めるんですか?

950:デフォルトの名無しさん
08/11/26 17:45:39
もしかして:RMS+二条平均根

951:デフォルトの名無しさん
08/11/26 18:06:38
変換ミス...

二乗平均根

952:デフォルトの名無しさん
08/11/30 18:52:47
固定小数点演算のフィルタを作りたいのですが係数の小数点位置はどのようにして決めればいいんでしょうか

953:デフォルトの名無しさん
08/11/30 19:03:15
>>952
用途によるとしか言いようが。
昔自分が作ったのだと、IIRだと整数部2ビット、FIRだと整数部なしでやった。

954:デフォルトの名無しさん
08/11/30 21:28:15
符号部1bit,整数部2bit,残りを少数部ですかね
乗算した結果が精度的に2倍なると思うのですが、元の精度に戻すことを考えると頭がこんがらがってしまって・・・
そのあたりはどうすればいいんでしょうか

955:デフォルトの名無しさん
08/11/30 21:47:46
>>954
そんなとこ>符号1bit、整数部2bit。

普通は係数とバッファで固定小数点位置変えるからなぁ。
たいてい、フィルタ係数って1以下になるでしょ。

956:デフォルトの名無しさん
08/11/30 23:22:25
モノラル音響信号を、2次元フーリエ変換成分(周波数方向のフーリエ成分と時間方向のフーリエ成分)
に分けることって可能ですか?そのあたりについて詳しいサイトとか本とか知ってたら教えていただきたいです。

957:デフォルトの名無しさん
08/11/30 23:33:02
>>956
それ、ウェーブレットで検索した方がいいかも。

958:デフォルトの名無しさん
08/11/30 23:33:53
係数は確かに大抵1以下なんですが、ところどころ1以上になるところが出来てしまって・・・
もしバッファの小数点位置がLSBにあって、係数を符号部1bit,整数部2bit,小数部5bitとした場合は乗算した結果を5bit右シフトして整数部を残すようにするんでしょうか
この方法だと係数が1以上の場合、残した整数部データの有効なビット幅がバッファに入ってるものより大きくなってしまう気がして・・・

959:デフォルトの名無しさん
08/12/01 00:50:13
>>956
スペクトログラムのことを言っているなら短時間FFT

960:デフォルトの名無しさん
08/12/01 21:46:34
ここで聞くのがいいのか少々悩ましいのだが
AMDーSB700でレガシオーディオの設定はどこのポートを叩けばいいのか情報ないかい?
非Windows環境なんだが、奴が邪魔してYMF744のFM音源鳴らすのに不便で仕方が無い。

961:デフォルトの名無しさん
08/12/02 00:09:48
DTMFのトーン信号を解析するソフトについて、ソースとかから載ってる本とかwebPageとか
ご存じありませんか?
#出来ればVC++で。
 

962:デフォルトの名無しさん
08/12/05 03:47:09
>961
VC++ではないけど、参考になるかな?
URLリンク(www.mars.dti.ne.jp)

963:デフォルトの名無しさん
08/12/05 14:38:35
>>962
ありがとう。ただ、俺が探してるのは外部装置なしでPC内で完結してるやつなんだ。
サウンドカードから取り込んで、判別&表示、みたいな。


964:デフォルトの名無しさん
08/12/05 14:38:50
スペクトラムってどうやって計算するんですか?

965:デフォルトの名無しさん
08/12/05 16:45:44
FFTして複素平面上でベクトルの絶対値

966:デフォルトの名無しさん
08/12/06 10:33:08
THX!

967:デフォルトの名無しさん
08/12/07 02:47:17
リサンプリング周波数の組み合わせによっては処理量が膨大になる問題で
例えば48k→44.1kで↑147↓160を素因数分解して複数回処理にわければ、
重い(ほぼ)理想フィルタでも使える!売れる!

とか思って実装してみたらVoxengoに年単位で先を越されていたというチラ裏。
(ちなみに処理量は1/7~1/8になります。
ほぼ理想フィルタなので数回程度なら聴取可能な影響はない)

968:デフォルトの名無しさん
08/12/08 01:39:44
>>967
イミワカラヌス

969:デフォルトの名無しさん
08/12/08 15:07:39
>>968
分かる奴だけ分かってくれ…ってのはアレなので、
↑がインターポレーション
↓がデシメーション
間にLPFが入る
っていうサンプルレート変換のやり方の話。DSP使わない場合は
計算負荷と品質のトレードオフになる。あとはてきとうに調べて。

970:デフォルトの名無しさん
08/12/15 04:43:01
勘違いしてるかもしれんから教えて欲しいんだけど、
一次元信号で8000のデータ数があったとして、それをレベル3までのウェーブレット変換をしたら、
0~2000までがレベル3のスケーリング係数で、
2000~4000までがレベル3のウェーブレット係数で、
4000~6000までがレベル2のウェーブレット係数で、
6000~8000までがレベル1のウェーブレット係数って認識であってるかな?

971:デフォルトの名無しさん
08/12/15 05:21:42
実装次第

972:デフォルトの名無しさん
08/12/15 08:06:02
そりゃそうだ

973:デフォルトの名無しさん
08/12/19 12:10:46
URLリンク(limetarte.net)
ここのボーカルキャンセラーなんだけどアルゴリズムについてわかる人いますか?

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


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

作者に聞けっていわれそうですが・・・返信がなかったんで

974:デフォルトの名無しさん
08/12/19 12:39:01
位相も考えないとだめじゃないの

975:デフォルトの名無しさん
08/12/19 14:11:32
まぁ普通この手のアルゴリズムは説明してくんねぇって。
何の用途で使うかしんないけど、そのまま製品化とかされたらたまんないし、
どっかのサブマリン特許に引っかかってる可能性もあるし、メリットねぇもん。

976:デフォルトの名無しさん
08/12/19 16:11:08
フーリエ変換が分かれば高校数学でできる。
複素スペクトル平面上にOLとORを書いて、
PLとPRが直交するようなOPを適当に作ってベクトル減算。
習った次の日くらいに思いついたぞ俺。

ブロック単位の処理の場合プリエコーポストエコーの問題もあるから、
上みたいな遊びソフトはともかく、音楽制作に供するなら
ちょっとは頑張らないと音質的に微妙になるけど。

977:デフォルトの名無しさん
08/12/19 17:10:46
はいはい(笑)

978:デフォルトの名無しさん
08/12/19 18:55:29
>>976
ちょっと2次元で書いてくれませんか?



979:デフォルトの名無しさん
08/12/19 19:48:52
おまえらその説明で分かんないのか……

980:デフォルトの名無しさん
08/12/20 21:48:01
こういううざいのってどこにもいるのね


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