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
96 名前:デフォルトの名無しさん [2007/08/21(火) 12:20:04 ] 内積・外積とか直交基底とか、ネーミングセンスゼロだな 大昔のオッサンが勝手に決めた不可解な和訳の用語をそのまま現代でも使っていいものか 異議を唱える者は居ないのか
97 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:40:51 ] >>96 そりゃ皆んなその言葉で考えたり仕事したりしてるからね。 新人は常に少数派だから、受け入れるのが普通。 圧力単位を急にパスカルに変えられても、水柱につい換算してしまうように、変更にはコストが伴うからね。 まあ、あなたが素晴らしい小学生でも高等概念が身に付くような総合入門書を作れば皆んな解決
98 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:57:43 ] 素晴らしい小学生でも
99 名前:デフォルトの名無しさん [2007/08/21(火) 13:16:39 ] クソネーミングをした大昔のオッサンは大罪人だな 後の人間のことを考えない自分勝手な考えでつけた名前のせいでみんなが迷惑している
100 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:30:35 ] あ、そのみんなってどこにいるの?
101 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:32:44 ] 物理学において、最大の罪人は電流の向きを決めた香具師だと思うんだ。 もし逆にしておいてくれたら電子の流れと同じ向きになってどれだけ理解しやすかったことか。
102 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:55:49 ] それはそれで頭が固くならなくていいじゃない。 begin 〜 end を嫌う { 〜 } 派じゃあるまいし
103 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:07:08 ] if (...) end ...; begin って書いてあったら嫌だけどなぁ。
104 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:49:08 ] ほほう それはどういうコードかね
105 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:58:41 ] なんだこのスレ
106 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:31:06 ] 摂氏は当初の様に0度を水の沸点とし、100度を水の凝固点にすべきだ!!!!11!!!!1!!
107 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:38:30 ] 摂氏イラネ 1リットル=1キログラムとか、なんでもかんでも水中心て
108 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:47:55 ] 博士級だかなんだか知らんが、数学や理論一辺倒の人ばっかりで 人の耳で聴く音を扱うソフトウェア書いてなさそう
109 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:53:37 ] 理論のないサウンドプログラミングってどんなん? アナログ回帰?
110 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 16:23:09 ] アナログフィルタも理論バリバリじゃん
111 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 17:35:36 ] フーリエってどの学年で習うんでしょう? 高校?大学? 高校で、統計と確率を勉強しなかったのが悔やまれる。
112 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 18:01:33 ] 今勉強すれば悔やまなくてもよくなるよ
113 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 18:20:16 ] 高2だけどフーリエ習ったよ
114 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 18:41:33 ] 理論はもちろん必要だけど、 感覚的なものを扱うのに理論一辺倒じゃろくなもん作れんってことですよ
115 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 19:18:33 ] >>114 失礼を承知で申し上げますが、そのまま逆にも同じことが言えます。 感覚的なものだけで音のプログラミングができれば皆さん苦労しません。 スレの主旨もアルゴリズムに関わる議論なはずですよね? 不毛な煽り合いはエネルギーの無駄な気がします。
116 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 19:33:47 ] 音吉陽一を思い出した
117 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 20:20:02 ] なんかずれてるけどまあいいや
118 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:04:52 ] え?あっ! 俺のカツラずれてるのなんで分かった!?
119 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:31:53 ] 面白くないよ
120 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:38:54 ] 115が不毛といったとこで確信したよ
121 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:43:49 ] 何を?
122 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:52:57 ] だからズラだよもう
123 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:54:09 ] あ、なるほどね
124 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 00:22:33 ] >>113 今はフーリエって高校で習うのか..... ということは、内積・外積・直交基底なんかも高校で習てるってことか ひょっとしてZ変換やマキシマムエントロピーメソッド(MEM)も優秀な工業高校なら教えてるのかな? なら、ゆとり世代って、超すごないな
125 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 16:03:42 ] SoundEngine FreeっていうFreeのWave編集ソフトにある マスタリングプロセスCV制限ってどういった処理をしてるんでしょう ?
126 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 19:02:20 ] スレ違いじゃないか? 実際にどうゆう処理をしてるかは作者に聞かなきゃわからないだろうし。
127 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 19:07:32 ] どうでもいいけど、そのCV制限とやらのCVって何?
128 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 02:03:06 ] Constant Voltage(定流電圧)のことだろうなぁ
129 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 10:55:48 ] "定流電圧" に一致するページは見つかりませんでした。
130 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 11:11:36 ] 定電圧 定電流
131 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 11:32:02 ] conは女性性器の俗称
132 名前:デフォルトの名無しさん [2007/08/31(金) 19:36:44 ] FFTAnalyzerというwaveファイルのスペクトラムを表示してくれるソフトがあるんだけど↓ www2.tky.3web.ne.jp/~nozu/fftanal/help/help.html 残念なのはシェアウェアという点なんだよね。フリーウェアで似たようなスペクトラムを 表示してくれるツールって無いだろうか?
133 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 21:19:49 ] ここはいつからツールのスレになったんだ?
134 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 21:23:00 ] Audacity
135 名前:デフォルトの名無しさん [2007/08/31(金) 21:58:47 ] >>134 サンクス( ´∀`)
136 名前:( ´∀`) mailto:sage [2007/09/01(土) 00:13:16 ] ( ´∀`)ノ 16bitの音用濾波器の係数ってfloat,doubleのどちっがいいの? みんなはどっちつかてるの?
137 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:29:57 ] doubleのどちっ
138 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 07:41:14 ] FIRでもIIRでもフィルタの係数なら単精度 で十分 IIRの場合は帰還用メモリは倍精度が欲しいのと ただ、IIRの構成によっては (1-w) のようなのをそのまま持たせないなら wは単精度でも (1-w)は倍精度欲しい でも wのまま掛け算させたらいいと思うけどな
139 名前:デフォルトの名無しさん mailto:age [2007/09/03(月) 18:08:49 ] MP3をWAVに変換するデコーダを作ってるのですが、 ID3タグの情報をWAVのチャンクに収めたいと思います。 ID3を入れるチャンク名などは仕様で決まってるのでしょうか?
140 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:44:01 ] ああ、ここは「音楽」ではなく、ただの「音」のプログラムをするスレでしたか。 スレ違いすみませんでした。
141 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:24:13 ] >>139-140 ttp://www.geocities.co.jp/SiliconValley-Oakland/3664/tags.html
142 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:07:29 ] 仮にミュージックプログラミングだとすると、純粋に音芸的な話になったり、 あるいは自動で曲をつくttあrい
143 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:42:44 ] いやDTM板を教えてやりなよ
144 名前:( ´∀`) mailto:sage [2007/09/03(月) 21:02:59 ] ( ´∀`)ノ >>138 非常感謝 あいやー、おら、doubleでしてたよ
145 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:50:15 ] 別に全部doubleでも全然問題ないよ
146 名前:( ´∀`) mailto:sage [2007/09/03(月) 22:27:50 ] ( ´∀`)ノ >>145 floatに比べでぶでのろまにならないの?
147 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:40:33 ] 実測すれば済む事。 些細な事だ。
148 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:38:01 ] むしろVCなんかだと floatを勝手にDoubleに最適化しやがったりするしな
149 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 01:59:06 ] CPU的にdoubleの方が速けりゃその方がいいだろ
150 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 06:39:59 ] やってみればわかる事。 きっとメモリが少ない方が勝つよ
151 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 10:42:55 ] intel系CPUなら浮動小数点命令は確か80bitだし、 メモリへのアクセスもキャッシュ効くから、フィルタの係数程度なら目に見えての差は出ないと思われ。
152 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 12:45:17 ] だったらdoubleでいいや 実測しても全然かわらんかったというか コンパイラがdoubleにしやがるし
153 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 15:42:41 ] 処がだ、SSE命令における浮動小数点ニモニックは64/32ビットしかないんだな。 でもって、超越関数を使わない限り基本的にはFPUなんて要らないから最近のコンパイラは 80ビットニモニックは殆ど使わなくなっていたりするわけで。 勿論、ベクタ化を期待するようなパフォーマンスを目的とするなら、2並列より4並列の方がずっと 速いからfloatで済むならそれに越したことはないし。 # ということで、簡単なサンプルで速い遅いと言っても無駄。
154 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 16:16:38 ] いや、そう主張するならそれでもいいけど 精度はやっぱり下がるしさ SSEの4並列を使うのは、コンパイラの最適化程度では期待できないでしょ というわけで、自分でアセンブリ書かない人はdoubleでいいお 自分でアセンブリ書いて完璧にSSEで最適化できて精度いらん人はfloatでいいじゃん
155 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 16:35:36 ] >>154 iccでもgccでも最適化でベクタ化できるけど?
156 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:07:26 ] >>155 ちゃんとコード全体をうまく並び替えてコンパイラが4列使い切っているかってことだろ で、結局、人間がちゃんと4列使い切るような書き方をしてやらんと効率悪いってことだろ
157 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:08:36 ] まあ、普通はdoubleで何も問題ない floatでも特に問題はない で、精度が高いのはdouble
158 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:08:44 ] >>154 基本的に精度が何ビット必要かという視点の方が大事だと思うよ 16bit入力のFIRフィルタなら doubleはあきらかに無駄でしょ
159 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:12:58 ] >>158 んなことねーよ 作業中の演算精度が高くて少なくとも時間以外の損は無い
160 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:14:44 ] まあ、0から255までの結果しかいらないやつで わざわざintを使わず演算するやつもいないしな
161 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:15:24 ] 結論 ・それぞれ好きにやれ
162 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:54:50 ] >>159 メモリサイズも当然違ってくるだろ。 あと、パソコン以外の環境にも移動させ易いのは大きなメリットだよ
163 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:57:37 ] 逆に言えば、PC環境では全く問題ないってことだろそれ
164 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 17:59:30 ] もう、>>161 が結論でいいよもう
165 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 18:34:04 ] 確かに FADD命令 レイテンシ3、スループット1/サイクル FMUL命令 レイテンシ5、スループット1/2サイクル1,2 FDIV命令 レイテンシ-単精度17サイクル、倍精度36サイクル、拡張精度56サイクル 割算以外では単精度にしても早くならないね。
166 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 08:01:46 ] >153 お前の使ってるコンパイラが世の全てだと思ってるなら大間違い。 >157,>161でFAだな。
167 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 08:32:08 ] >>165 今がそうだとしても、過去そうでなかったし、 将来 単精度ならレイテンシが短くなるかもしれないし、 使ってるコンパイラが将来SSE命令をサポートするかもしれない。 何でも倍精度は楽かもしれないが、不必要に使うのはどうかと思う。 IIRならともかく、16bit入力16bit出力のFIRで倍精度にするメリットはまったくないのだから
168 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 10:08:36 ] >>167 将来doubleならレイテンシが短くなるかもしれない可能性もあるし、 将来も入出力が整数型16bitであり続ける保証も無いんだが? 今現在だって入出力形式でfloatはありうる。 未来の仮定の話をしたいのか、現状の話をしたいのかターゲットくらい絞れ。
169 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 10:48:55 ] 単精度だ倍精度だと騒げるのが羨ましいよ。ホント贅沢な悩みだと思うよ MP3あたりだと16ビット、高級なもので24bit DSPの世界はまだそんなもの
170 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 11:05:00 ] FA >>161
171 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 14:40:54 ] なんかよう分からんけど、これ関係してる? ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4.4.html
172 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 15:59:25 ] >>171 >ほとんどのCでは、float型よりdouble型で計算した方が数倍高速になります といいながら 基準にしてるのは SPARCだけ SPARCは倍精度どころか128bit幅の浮動小数点演算器を持っているわけで それを基準にするというのもどうかと思うよ。 ゲーム機や組込用のCPUのコンパイラの殆どは当然のように単精度が早い。
173 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 19:56:17 ] >ゲーム機や組込用のCPUのコンパイラの殆どは当然のように単精度が早い。 そもそも浮動小数点演算装置がなかったり(全部ソフト)倍精度はソフトとかそんなのばっかりだからね 倍精度がハードウェア実装されている今時のCPUだとメモリアクセスが律速になることはあるかもしれないけど double,floatどちらもそれほど速度に違いはでないよ。(int,double,floatの間を行ったり来たりするような型変換する方が単純な演算より遅いし) 結論としちゃ、自分が使いたいターゲットで使い易い型を使うってことでいいんじゃないの?
174 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 20:54:08 ] それでも IIRフィルタの遅延器は単精度では厳しいからなあ 計算方法を工夫すればある程度カバー出来るけど
175 名前:( ´∀`) mailto:sage [2007/09/06(木) 21:05:28 ] ( ´∀`)ノ 先生! IIRフィルタの遅延器って、なんで高い精度必要なんですか? 精度低いとどうなるのですか?
176 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 21:08:27 ] 無限インパルス応答だから
177 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 23:58:36 ] フィードバック=計算誤差が累積 でもま普通は(要求がシビアでなけりゃ)単精度でも十分じゃない?
178 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:09:54 ] なんでもいいよ 場合によっては固定小数点数でも可
179 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 07:26:55 ] >>175 たとえばf0の低い 1次のLPF y := y*(1-r) +x*r; とやると、rが小さいので(1-r)の精度が悪くなる y := y +(x-y)*r; とやればソレは解決する。 1次の場合は、yが単精度でも単に誤差が累積するだけだけど 2次になると、yが単精度だとf0が低かったりQが高いとノイズが出てくる。 それも ピーとかいう類のノイズ
180 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 16:35:54 ] >171 この人こんな記事書いてたのか、ターゲット絞れないバカの典型だな。 用途や環境にあわせられない奴は最適化語るなよ・・・
181 名前:最早厭われてはいるが mailto:sage [2007/09/07(金) 22:19:07 ] >>180 あの本を書いた時点で既に、自称翁だ。バカだなんてとんでもない。年寄りは労われ。
182 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 03:05:32 ] 多少配慮足らずでも、誰かの参考にはなる記事をネット上で公開してるんだし それをバカの典型と言い切れるやつよりは敬われる権利あるよ。
183 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 06:29:03 ] 90年台に「floatよりdoubleの方が速い」とか嘘かかれても、参考にならないと思いまーすw ましてや「敬われる」とかありえませーんwww
184 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 06:41:17 ] floatよりdoubleの方が速いって言うのは、昔のプロセッサはfloatを内部で動的にdoubleに変換してたからだろ。 今はそういうのが無いからどう考えてもfloatの方が速いし、データが短い分キャッシュにも残りやすいから最適化も効き易い。
185 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 07:25:16 ] どうでもいい。結局処理系による。 つか180の食いつきかた見ry
186 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 07:33:02 ] うちのMacBook Pro (CoreDuo 2.0GHz) で試してみたけど、 floatよりdoubleのほうが速いぉ。
187 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 07:34:34 ] Mac(笑)
188 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 07:41:17 ] >>184 専用機はしらないけど、96年当時主流だったインテルもモトローラも内部80bitだよ。 内部で動的にdoubleに変換してる石って何?
189 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 07:42:30 ] >>179 2次でノイズが出るのは リミットサイクルって現象だろ? なんかリミットサイクルの出ないフィルタとか論文があるけど、理解出来ないんだよな
190 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 08:09:02 ] >>188 内部80bitの場合も、floatよりdoubleの方がしばしば速い。 で、翁が想定しているのはSparcとx86だろ。
191 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 10:37:39 ] 処理速度が問題になるほどのタップ数の多い FIRフィルタならキャッシュに収まるかどうかの方が 速度を決めてしまうと思うけどな 命令サイクルがギガに対してメモリは1桁下なんだから
192 名前:( ´∀`) mailto:sage [2007/09/08(土) 13:21:01 ] ( ´∀`)ノ >>175-179 先生、有難うございました。 無限インパルス応答だからの回答に超感動しました。 精度が低いと、無限の過去の影響を細かく現代に反映できない。反映できないものは誤差として累積され、 現代を惑わす魍魎を生み出すことになる。怖いですね。
193 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 14:48:57 ] double が速いのはC言語の math.h が double に対してしか定義されていなかったり、 自動昇格が多数発生するためでしょ x87 の FPU は内部で 80bit に昇格するのがデフォだけど、それにしたって内部精度は命令を 発行して設定できるわけで、慎重に書かれたソースなら当時から float の方が速かったよ
194 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 15:11:02 ] 今ならc99のお蔭でhypotf()なんかが使えるからねぇ。
195 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 15:30:39 ] 今がどうだとか昔はどうだとかこのCPUではとかいつまでやってんだ?馬鹿馬鹿しい
196 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 17:58:56 ] >>161
197 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 18:14:47 ] >>195 じゃネタだしてよ。 >>189 の話を膨らませるとかさ
198 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 18:21:01 ] >>197 じゃあ>>189 の話を膨らませろ馬鹿
199 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 20:23:28 ] ようし、じゃグーグルさん使ってふくらませるぞ。 リミットサイクル+フィルタ でポチっとな www38.tok2.com/home/shigaarch/OldBBS/15nextformat.html > IIRなんかでフィルタ等の信号処理をすると384kFsだと係数 語調は32ビットでは >低域でリミットサイクルによる発振現象の影響が出てきますので不足で48ビットもしくは64ビット必要になりますな。 なるほどな。 お!これだ www.mk.ecei.tohoku.ac.jp/~yamaki/Publications/Sougou2007.pdf >リミットサイクルのない 感度最小形ディジタルフィルタの合成 えと? 状態空間ディジタルフィルタ? って何? もいちどグーグルさんお願い。ポチっとな カルマンフィルタ? いや応用カルマンフィルタ って本は持ってるんだが・・・・こりゃ退散だ
200 名前:( ´∀`) mailto:sage [2007/09/12(水) 21:38:18 ] ( ´∀`)ノ 、先生 WindowsメッセージMM_WIM_DATA(録音バッファの録音完了)を受けての処理手順について何ですけど 下記の1,2のどちらが正しいですか? 1.waveInUnprepareHeader,waveInPrepareHeaderを用いる // 録音バッファの登録解除 waveInUnprepareHeader 録音データ、lpDataを処理する // 録音バッファの再登録 waveInPrepareHeader waveInAddBuffer 2.waveInUnprepareHeader,waveInPrepareHeaderを用いない 録音データ、lpDataを処理する // 録音バッファの再登録 waveInAddBuffer
201 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 07:32:05 ] >>200 さあ? どっちが正しいかはしらないけど 2でやってて不具合にあたった事はないな
202 名前:( ´∀`) mailto:sage [2007/09/16(日) 12:46:06 ] ( ´∀`)ノ >>201 、先生、ども、ども、有難うございました。そっそうなんですか... なんか、waveInもwaveOut処理同様に>>200 の1.のようにするのが正しいのかなと思たですけど
203 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 13:16:46 ] up2.viploader.net/upphp/src/vlphp069198.jpg
204 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 13:42:54 ] >>203 毎年見れば無問題
205 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 13:50:12 ] それなんて3年峠?
206 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 14:35:02 ] どうして周波数が低いと大きな音を出すのに、高周波と比べて指数的に高いエネルギーが必要なの? 蝸牛が低音を捕らえようとするとどうしても指数的に音量が小さくなってしまうからなの? だったら低音は凄く耳に悪いね。難聴の原因だ。
207 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 15:58:19 ] 動かす媒質の量
208 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:34:37 ] 同じエネルギーを出すのに低いほどストロークが必要という事じゃないて 同じエネルギーを与えても、小さく感じるという事ならその通り www.yacmo.co.jp/document/mame/images/mame07_2.gif
209 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:58:06 ] 100人飛べる大縄跳びで二重飛びしようとするとものすごく大変なのと一緒・・・ではないな
210 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 01:52:12 ] >>207 マジレスありがとう。 1Hzで動く量と100Hzで動く量が違うのは当たり前ですね。
211 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 06:37:18 ] >206 真面目に低音は耳に悪いので注意。 スピーカー飛ばす原因も低音の出力が高すぎるってのが多いし。
212 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 07:12:34 ] スピーカーが飛ぶのは2つの現象 電力は 電流*電圧だけど、ボイスコイルは、コイルと名前が付くようにL成分を持ってるから 同じ電圧振幅でも電流は低周波程流れてしまう。 発熱は電流の2乗に比例するので、低音程 焼損し易い また、コントロールして同じV*Aを与えたとしても、ボイスコイルには質量があるから 同じV*Aを与えても振幅は低周波程大きくなる。 結果、大振幅で可動域を外れ物理的に変形してしまう。
213 名前:デフォルトの名無しさん [2007/10/05(金) 21:15:13 ] waveOutOpenの引数にコールバックを指定した場合、waveOutProcはスレッドセーフっぽくないんですが。 なんか現在のスレッドの処理に割り込んで呼び出されませんか? WM_DONEで再びWaveOutWriteしようとするとかなりの割合でスタックが破壊されています。
214 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 10:20:53 ] 手順が間違ってる
215 名前:デフォルトの名無しさん [2007/10/06(土) 13:40:55 ] >>213 そういうもんだよ。 waveOutProcはスレッドセーフじゃないと、しっかり覚えておくといいんじゃない。
216 名前:デフォルトの名無しさん [2007/10/07(日) 01:54:40 ] どこにもスレッドに関わることが書かれてなかったような気がするんですが、スレッドセーフではないんですね サウンド関連の生APIはむずかしいです
217 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 05:24:12 ] でもそんなの関係ねぇ
218 名前:デフォルトの名無しさん [2007/10/07(日) 14:00:21 ] >>216 サウンド関連の生APIはむずかしいです じゃなく APIでプログラム作るのはとてもむずかしいです が正しい。
219 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:27:23 ] 極めてどうでもいい揚げ足取りだな
220 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 22:02:30 ] >>212 ブラウン管モニタを壊すにはデバイスドライバレベルでの制御が必要だけど ひょっとすると、スピーカーはユーザープログラムで壊せてしまう可能性がある? 超低周波を出すとか、DCオフセットをかけ続けるとか。
221 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 22:09:13 ] ドライバレベルで保護してないかな。してなきゃまずいね。
222 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 22:26:59 ] ユーザープログラムも何も 曲作ってるときうっかり変な音を鳴らしてスピーカ飛ばすって時々あるもんじゃないの?
223 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 22:51:08 ] ない
224 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:03:21 ] 俺もそんなに詳しいわけじゃないが、もちっとだけアナログの勉強をしてもいいと思うんだ。 スピーカーが飛ぶのは>212にあるようにスピーカーが想定以上の入力を受けた時。 なので出力波形だけでなく、アンプのパワーやボリュームによる所が大きい。
225 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:16:44 ] >>220 直流を通すオーディオアンプなんてほとんど存在しないだろ。 アンプにデジタルで直結したとしても、 普通はスピーカ出力の直前にコンデンサが入ってたりしてHPF特性がかかるから、 スピーカに超低周波や直流がかかることはない。
226 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:22:58 ] ああ、でも、直流そのものは通さないとしても、 ステップ関数とかガンと入れられたら階段部分はスピーカ的に結構きついかもな。
227 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:02:28 ] ステップ関数は階段部分ではなく、その後のフラットな部分がキツイわけで
228 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:33:14 ] フラットな部分はHPFで除去されるんじゃね?
229 名前:デフォルトの名無しさん [2007/10/09(火) 22:05:52 ] インパルス連続攻撃で敵を倒せないですか?
230 名前:デフォルトの名無しさん mailto:age [2007/10/09(火) 22:10:36 ] premiumtv.12gbfree.com/?RTV+4440
231 名前:デフォルトの名無しさん mailto:age [2007/10/09(火) 22:11:43 ] proforceone.web.fc2.com/ ⇒ Processed input data Chick+Corea[777] Herbie+Hancock[999] proforceone.web.fc2.com/ ⇒ Calculation processing d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("[")); s=encodeURIComponent(s).split("%2B").join("+"); n=d[j].substring(l+1,d[j].indexOf("]")).split("."); n=eval(n[0].split(",").join(""));n=(n-n%20)/20+(n%20>0);br(); for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query="); write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();
232 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:12:53 ] >>227-228 カットオフ周波数10Hzの1次HPFの場合、 ステップ関数のフラット部分は時定数0.016秒であっという間に指数減衰するね
233 名前:デフォルトの名無しさん mailto:age [2007/10/09(火) 22:13:06 ] デジタルピークメーターテスト用 −12db標準音量サンプル www.barks.jp/watch/?id=1000006257&wpl=wm&wbw=1m www.barks.jp/watch/?id=1000006257&wpl=wm&wbw=300k www.barks.jp/listen/?id=1000006259&lpl=wm&lbw=56k フリーソフトの音量確認用 ステレオ・デジタル・メーターを使おう 赤い●をクリックする 次にスピーカーマークをクリックする 標準のは−12dbぐらいで、−6dbを超えない様に音量調節する。 www.forest.impress.co.jp/lib/pic/music/soundedit/soundengine.html
234 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:52:44 ] ageんなカス
235 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 09:04:46 ] あのー、非常に初歩的なことなんですが、 このページでバッファは441000bytesといいつつ441000*2bytes 確保しているのはなぜなんでしょう? homepage3.nifty.com/rio_i/lab/oss/002sound.htm ただのミスだと思い、ループのところを for ( i = 0; i < BUFSIZE/2; i ++ ) { t = ( total / (BUFSIZE/2) ) * i; と変えてみると、出力周波数が880Hzになってしまいますし。
236 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 10:57:38 ] ただのミスだと思うよ。 でもあなたの修正が間違っている
237 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 11:29:54 ] >>235 量子化ビット数が16だから3528000[bits]なら441000[bytes]だけれど、こう計算した方がわかりやすい。 44100[Hz] * 5[sec] = 220500[samples] だから、#define BUFSIZE 220500 とすればいい。
238 名前:デフォルトの名無しさん [2007/11/01(木) 04:02:20 ] リアルタイムのスペアナ表示を作りたい。 FFTしてlog(re*re+im*im)的なことをして振幅を対数軸にするのはok。 問題は、周波数軸を対数にしたいのだが、どうするべき? 低い方は補完なので適当にごまかすとして、高い方は間引いてしまうと情報が失われるのが いやなので避けたい。 好みとしては、ピンクノイズ(-3dB/oct)を入力したときに表示がフラットになりたい のだが(きっと聴感に近いので) 絶対値の和? 平均?
239 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 04:42:24 ] 普通、Octave band pass filter bank をかけるかな。
240 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 06:44:19 ] >238 ロスしないってんなら最大使うとか。
241 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 07:50:06 ] >>238 前半、俺は、 たとえば5点あったら、その最大と最小と5個平均の3つを求めて 最大から最小への薄い垂直線を引いておいて その上から平均を結んた線を引いてる。 こうやるとホワイトノイズでフラットになる。 ピンクノイズでフラットにするのは気持ち悪いように思うけど、 実現したいなら-3dB/Octの補正をかければいいのでは?
242 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 09:49:01 ] >>238 用途によると思うよ。 ピーク検出したいなら、ピクセルに対応するバンド内で最大値かな。 逆に荒く(1/6octとか1/3とか)で全体的な特性を見たいなら、両対数にしてからバンド内で 平均とか。ただその場合、各バンド内でデータのある周波数点に偏りが出る(バンド内で高域に 集まる)んで、平均した場合は必ずしもバンド中央の周波数での値にならないことに注意。 >>241 Windows Media Playerのバー表示がそんな仕様じゃなかったけか
243 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 13:47:13 ] >Octave band pass filter bank なるほど、FFT以外のやりかたもあるのね。検討してみます。 ピンクノイズは各オクターブ(とかの対数で等間隔の帯域)のエネルギーの密度が等しいと 何かで読んだので、正しく計算すれば自ずとフラットになるのではないかと思ったのです。 でもどう計算するとそうなるのかわからない。 logとる前の絶対値かその2乗を足すか平均するかしたあと√とる?
244 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 14:07:08 ] > ピンクノイズは各オクターブ(とかの対数で等間隔の帯域)のエネルギーの密度が等しいと > 何かで読んだので、正しく計算すれば自ずとフラットになるのではないかと思ったのです。 その考えで問題ないと思います。 こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット > logとる前の絶対値かその2乗を足すか平均するかしたあと√とる? バンド毎に log(sum(sqrt(re*re+im*im))) で大丈夫なはず。 DCTなら log(sum(abs(re)))
245 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 21:02:04 ] >こっちで実験したところ、ホワイトノイズのFFT値を1/3octで絶対値合計→フラット ピンクノイズの、だよね。 ありがとう〜
246 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 21:46:59 ] >>245 > ピンクノイズの、だよね。 いや、ホワイトノイズ
247 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 21:52:15 ] 説明不足だったかも。すまん フラットの意味によるんだけど、両対数軸上で直線って 意味なら>>245 でホワイトでもピンクでもフラット。 直線かつ水平って意味なら>>245 ではホワイトのみフラット。
248 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:22:35 ] 直線かつ水平のつもりでした。>フラット あいまいな言葉を使ってごめんね。 > 直線かつ水平って意味なら>>245 ではホワイトのみフラット。 高域にいくにしたがって加算する数が増えるからホワイトノイズは右上がりに なりませんか?
249 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:10:35 ] ↑からさらに自分で考えてみた。 >>244 log(sum(sqrt(re*re+im*im))) の方式で仮に1バンド=1octで出力することを考える。 1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、 結果は+6dB/octの右上がりになるはず。 問題は、ホワイトノイズを入れると+3dB/octの右上がりになってほしい。 sqrtとsumの順番を入れ替えると(sqrtを消して20→10でも等価)、 数が2倍になると3dB上がるので+3dB/octになる。 つまり、20*log10(sqrt(sum(re*re+im*im))) 最初に書いた、絶対値の2乗で足して平方根をとる、でいいみたい。 ピンクノイズの各バンドの平均値は1バンド上がると-3dBずつ下がっていくはず つまり1/√2に減っていくはずで、これの2乗の次元(1/2ずつ減ってく)で 数が2倍になっていくものを合計していくと皆同じになるという理屈。 ちなみに、素直に(?)、ホワイトで水平、ピンクで右下がりにするには、 sumのところを平均にすればいいはず。 (1バンド上がるごとに2倍になる個数で割ったやつをsqrtするので、1バンド上がると 1/√2つまり-3dBさがっていく) root mean squareってやつですね。 あ〜すっきりした。
250 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 02:46:03 ] >>249 > 1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、 > 結果は+6dB/octの右上がりになるはず。 データ数が増えてもデータ値は高域に従って指数的に減っていくので、 よほど高域強調されてない限り合計しても右上がりにはなりません。
251 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 09:22:34 ] >>249 > sqrtとsumの順番を入れ替えると 平方根の合計と合計の平方根は別のものなので入れ替えられません。 平方根の合計 sqrt(1)+sqrt(2) = 1 + 2 = 3 合計の平方根 sqrt(1 + 2) = sqrt(3) = 1.732... 素直に 20log10(sum(sqrt(re*re+im*im))) で各バンド計算して +3dB/oct補正掛けた方が実装の見通しも良くなるような。
252 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 09:47:43 ] まちがえた、20log10(ave(sqrt(re*re+im*im)))です。 あとsqrt(re*re+im*im)の部分は複素数の絶対値計算なので、 RMS以前のデータ準備の段階。|z|^2=re*re+im*im RMSやりたいなら、|z|=sqrt(re*re+im*im)の各値の二乗平均平方根、 つまりsqrt(ave(|z|^2)) = sqrt(ave(re*re+im*im))にしないと変なことになる。
253 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:32:20 ] > データ数が増えてもデータ値は高域に従って指数的に減っていくので、 > よほど高域強調されてない限り合計しても右上がりにはなりません。 なんか根本的な勘違い? >自分 ホワイトノイズはデータ値が(確率的には)全部等しいと思ってたのですが? > 平方根の合計と合計の平方根は別のものなので入れ替えられません。 もちろんそうです。計算方法を変えるという意味です。 > あとsqrt(re*re+im*im)の部分は複素数の絶対値計算なので、 > RMS以前のデータ準備の段階。|z|^2=re*re+im*im > RMSやりたいなら、|z|=sqrt(re*re+im*im)の各値の二乗平均平方根、 > つまりsqrt(ave(|z|^2)) = sqrt(ave(re*re+im*im))にしないと変なことになる。 >>249 でRMSといってるのは、 20*log10(sqrt(sum(re*re+im*im))) のsumを平均に 変えたもののことで、あなたの式と同じです。
254 名前:デフォルトの名無しさん [2007/11/10(土) 11:42:09 ] CD-TEXT の規格か仕様か、これを読み込むサンプルのあるサイトか分かりませんか。 ぐぐる用語でも分かると助かります。お願いします。
255 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:00:14 ] >>254 REDBOOK
256 名前:254 mailto:sage [2007/11/10(土) 22:29:04 ] >>255 有難うございます。お陰で参考になりそうなのを1つ見つけました。 英語版で 1996/12月ソニーが配布したものですが、データ構造についても 書いてあるようです。 余談ながら、ソニーは普及させたかったような雰囲気。 添付のソフト(3本)用に VB4 runtime routine が付いている。
257 名前:すみません素人です [2007/11/20(火) 11:00:15 ] 最近卒研でDSK使って音声処理する実験始めたんですけど、 高周波や低周波だけカットするLPFやHPFのプログラム(C言語)を組んだんですが、 逆に高周波とか低周波だけ増幅させるプログラムって書けるんでしょうか。 本やネットではちょっとわからなかったので、式とかサイトとか知ってる人がいたらどうかお願いします。
258 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 11:10:17 ] カットしたのを元のに足す引く
259 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 12:28:09 ] >>258 さんの通り、 高周波だけをカットした結果を元の信号に(遅延・位相を合わせて)足せば低周波だけ増幅出来るわけだけど どうして、普通はカットしか書かないのかというと、 ゲインが1を超えると、固定小数点演算だとオーバーフローするし そもそも出力DACのレンジを越えてしまうと歪ませるしかなくなるからさ。
260 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 12:43:36 ] >>257 増幅したいところ以外をカットして全体のゲインを上げる あとは双二次で検索
261 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 12:58:40 ] まあ、あと、増幅は、ノイズまで増幅しちゃうしね。
262 名前:257 [2007/11/20(火) 15:41:55 ] なるほど、カットするプログラムを応用するんですね!どうりでみつからないわけです… それではオーバーフローやノイズの問題も考えつつ取り組んでみたいと思います。 皆さん、丁寧なご回答ありがとうございました。
263 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 21:37:12 ] カットして増幅とか、カットしたのをもとに足す引くとかでなくて、 ローシェルビング、ハイシェルビングフィルタでしょ。 双二次にはちがいないけど。 いわゆるトーンコントロールのロー・ハイで一般的なやつね。 ブーストするんだから、振幅に気をつけなきゃいけないのは当然
264 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 21:52:08 ] >>263 内部的には同じことじゃね?
265 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 04:06:49 ] >>264 まぁこのあたりは言い方の問題も結構あって、カットって言った場合に シェルビングEQによるカットなのか、ハイパス・ローパスによるカットなのか、 ここまでのレスでもみんなバラバラの前提で喋ってたりするからねぇ。 カットして増幅しても、ただ増幅しても、相対的なゲインカーブが同じなら同じで良いと思う。 (アナログだとレベルによる非線形性がからむんで違うって話になるけど) ハイパス・ローパスでカットして増幅する場合は、 例えばハイパスの場合カットオフ以上が-6dB/octとかの傾きで一様に減衰していく。 対してローシェルビングで持ち上げる(orハイシェルビングで落とす)方法だと、 ある時点で減衰/増幅が頭打ちになるって違いがある。 チラ裏失礼
266 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 06:39:16 ] >高周波とか低周波だけ増幅させる カットした結果と元信号の足し引きみたいなのは、位相や遅延を考慮しないといけないから 普通わざわざやらないよね?
267 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 07:09:13 ] でも、数式を良く見ればf0が同じなら分母は固定で、分子だけが違う。 で、分子の変数は3つなので、 HPF/LPF/BPFの3つの組み合わせで何でも作れる事になる ただ、ピーク位置が違うので多少f0は調整しなければいけない。
268 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 07:58:32 ] HPFとBPFはLPFの組み合わせで作れるんじゃね
269 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 08:14:14 ] 実は2次の同じf0の HPF+LPF+BPF を加算すると理論的にはフラットになる もっとも、計算精度が有限だからノイズは出るけどね。 だから1-HPF は LPFではなくて LPF+BPFになる。 その場合の特性は -6dB/Octではなくもっと悪い(1次の特性に近い)
270 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 08:30:47 ] それシェルビング1っ個やるのよりメリットあんの?
271 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 08:37:47 ] 特性を可変したい場合は実際に分割するけど(可変出来るのは特性の上下だけでf0は無理だけど) 固定なら単にIIR計算としては1個でやるよ? 係数を足し算するだけだし
272 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 09:08:45 ] 3つのフィルタの係数を gH*HPF + gM*BPF + gL*LPF として、gH,gM,gL を調整すれば、イコライザの特性が出せる 分母は共通だから分子の係数を加算すればいい。 左右を上下させる場合、 gMは gH,gLの加重平均 gM = √(gH*gL) 程度がイーカンジ バンドを調整する場合、綺麗にポコンと上下させるにはQも調整しないと 上下非対称に
273 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 09:50:47 ] 言葉で動作原理を述べるのは簡単だが、それをプログラムで作るのが分からない。
274 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 11:35:53 ] 藻前ら、先人の知恵はちゃんと活用しようぜ。 Robert Bristow-Johnson氏のCookbookの式を使えば、2次IIRフィルタ1個だけで ピークEQもシェルビングEQも実現できるぞ。 ttp://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
275 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 11:47:05 ] やっぱり、HPF+BPF+LPFの合成だね。 BPFは加重平均だ。 公式を見るだけじゃなくて原理が判ると多少楽しいよね。
276 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 13:02:41 ] >やっぱり、HPF+BPF+LPFの合成だね。 どーしてそうなる? HPF+BPF+LPFの合成だと4次以上にならないか?
277 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:20:52 ] >>274 それが263とかがいってる双二次フィルタですよ。 先人の知恵どころか、いま話に出てるEQなどでいちばん一般的な方法かな。 わざわざフィルタ合成みたいな概念でやるなんて聞いたことないなあ。
278 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 21:33:53 ] >>276 合成じゃなくてフィルタ出力の加算のことを言ってるんじゃない? lpf(bpf(hpf(x))) じゃなくて lpf(x)+bpf(x)+hpf(x) (式は適当) 普通合成っていうと前者だから>>275 はかなり紛らわしいけど。
279 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:28:36 ] 根本的なことを聞きますが、LPFを作成する場合、 ・FIRフィルタを用いる(入力信号に対し、フィルタ係数を畳み込み計算することで 低域通過させた出力信号を直接求める) ・FFTを利用する(入力を一旦FFTし、通過させる帯域のみを保持し、 他はゼロ埋めさせたスペクトラムを逆FFTすることで出力信号を得る) この2通りのやり方は理想的には全く同じ挙動になるのですか? 今までFIRを使ったやり方が原理的に良く分からなかったので、FFTを使ったLPFを 作成していたのですが(周波数帯域の通過が直感的によく分かるので)、 最近勉強しなおしてFIRフィルタについて学んだところ、 時間領域において計算するだけでそのまま出力信号が得られるのが 非常に不思議に感じ、質問させていただきました。
280 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:33:20 ] FFTのことも良く分かってないんじゃないの
281 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:34:01 ] 何度もすみません。追記です。 もしそうであれば、両者の特徴として FIRの方が処理速度が速いが、後者の方が精度が高い(遷移周波数帯域幅が狭い)結果が得られる という認識であってますか?
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 ] こういううざいのってどこにもいるのね