- 1 名前:デフォルトの名無しさん [2006/04/21(金) 07:54:35 ]
- 音のプログラミング処理について語りましょう
各エフェクタの組み合わせとか、 プログラミング外の話題はDTM板の方がいいよ サウンドプログラミング2 pc8.2ch.net/test/read.cgi/tech/1091054082/ サウンドプログラミング pc5.2ch.net/test/read.cgi/tech/996171508/
- 202 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 10:07:26 ]
- >>197
逆相で音を弱くするので実用化されてる例は、 踏み切り、病院、救急車、消音ヘッドフォン、高速道路、新幹線の線路などなど。
- 203 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 10:24:50 ]
- でも音を単に反射してるのだとすれば、高速道路なんかは高いマンションなんかは逆にうるさくなってるのかも
- 204 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 11:07:10 ]
- >>198
丁度頭の中央を狙えばそんなものじゃないの 頭の幅のデータ ttp://homepage3.nifty.com/orangejuice/head2.html 平均 男 16.2cm 女 15.6cm
- 205 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 14:09:44 ]
- 定在波と進行波で検索したリンクで初めて勘違いに気が付いた。
圧力と|速度| って 90度位相差が出るのは定在波の時だけで 進行波は同相だったのか
- 206 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 14:23:47 ]
- ダクトの中に細いフィラメントを沢山配線して通電する事で加熱
熱膨張で進行波を打ち消してしまうというのはどうだ?
- 207 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 14:55:09 ]
- プログラミングの話が全然出てこないのは何故?
- 208 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 15:47:21 ]
- >>207 何か質問があるならどうぞ
- 209 名前:デフォルトの名無しさん [2006/08/08(火) 21:19:28 ]
- DPCMのいいエディタご存じないですか?
それとも、無きゃ作っちまえ、なスレですか?
- 210 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 22:43:58 ]
- >>209
それがローカルルールの範囲内の質問なんですか?
- 211 名前:デフォルトの名無しさん mailto:sage [2006/08/09(水) 08:00:56 ]
- エディタといっても、波形を表示してそれをカットペースト+エフェクトするくらいだからなあ
波形をマウスで作ったりしたってまともな音にならない
- 212 名前:デフォルトの名無しさん [2006/08/12(土) 08:12:36 ]
- www.miraikan.jst.go.jp/idea/head_01.html
- 213 名前:デフォルトの名無しさん [2006/08/14(月) 02:21:43 ]
- MP3のエンコーダのライブラリでライセンスフリーのものってありますか?
ご存知でしたらどなたか教えていただけませんか。デコーダはあるんだけど。
- 214 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 03:06:13 ]
- >>213
ない つか、もし配布元が問題ないといっても、F社やらT社は絶対それを認めないだろ
- 215 名前:デフォルトの名無しさん [2006/08/14(月) 17:50:08 ]
- >>214
ではMP3のエンコーダ自体を自ら実装すれば問題のでしょうか?
- 216 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 18:15:24 ]
- >>215
フォーマット自体には特許の及ぶところではないというのは当たり前になっているわけで、 それゆえに、LZWの特許が有効だったときも無圧縮GIFは問題無いという考えが主流だった そう考えると、確かmp3も圧縮アルゴリズムの特許は例の2社が持っていたはずで、 それなら無圧縮mp3は問題ないことになる。 だが、それってmp3の意味無いじゃん。
- 217 名前:デフォルトの名無しさん mailto:sage [2006/08/16(水) 13:41:26 ]
- 午後みたいに、インストーラーでコンパイルするという荒技もあるけどな。
しかし、あれは酷いやり方だな。 賛同はできん。 素直にソースだけ公開しとけば問題ないのに。
- 218 名前:デフォルトの名無しさん [2006/08/16(水) 23:44:51 ]
- 音ゲーで使えるようなくらいの遅延の少ないエフェクトの掛け方を探してます。
C#.NETで、DirectSoundのSecondaryBufferのエフェクトを使ってみたんだけど、 バッファに書き込んでから音が鳴るまでの時間が200msecくらいもあって、結構使えない。 そこで腹をくくってその辺りの処理を自前でやろうかと。 複数のwaveを鳴らして、その合成音にリアルタイムにリバーブエフェクトをかけるのって、 再生用バッファにwaveを加算(サンプル毎足し算) その波形に対して随時インパルス応答を適用する こんな感じで合ってますか?
- 219 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 07:05:55 ]
- あってるよ。 問題は飽和に対しての処理だけさ
- 220 名前:デフォルトの名無しさん [2006/08/17(木) 08:37:15 ]
- 午後でいくつかまとめて処理すると
ファイル名が入れ替わったりするバグありますよね?
- 221 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 08:54:04 ]
- >>220知らん。 つーか板違い
- 222 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 10:07:16 ]
- >>218
ASIOとかWDMとかに最適化しないとめちゃめちゃ遅れるよ。
- 223 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 16:09:30 ]
- >>220
翌日の朝やればいいじゃん
- 224 名前:218 [2006/08/17(木) 17:29:50 ]
- 試しに2秒のwaveに100kbくらいのインパルス応答をFIRフィルタで適用してみたら
処理に糞時間かかった。。ノイズもいっぱい。 このやり方じゃダメですか? ちなみに使ったインパルス応答 ttp://noisevault.com/nv/index.php?option=com_remository&Itemid=29&func=fileinfo&filecatid=55&parent=category これのm1_44.wav >>222 うちのオンボードじゃASIO4ALL入れても無理でした。
- 225 名前:218 mailto:sage [2006/08/17(木) 17:52:43 ]
- 録音して波形を見てみたら、ノイズは>>219の忠告通り飽和が原因っぽかった。
飛び出したサンプルだけとりあえず範囲内に凹ましてみたけどノイズは和らいだだけ。 やっぱりその周辺も同じ比率でなだめないといけない? 処理に時間かかって仕方なす
- 226 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:04:28 ]
- インパルス応答をそのまま掛け算したら遅いのが当然
といってFFTで掛け算回数を減らす高速化をするとブロック処理になって、希望じゃないでしょ。 だからリバーブなら思い切って一定時間の遅延にしてしまうのがいいんじゃないの? その遅延にIIR2時のLPFかければそれらしくなるさ。
- 227 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:59:33 ]
- デジタルリバーブの基礎から勉強したら?
リアルタイム性を重視してリバーブをかけるなら、 ディレイ時間の違うIIRフィルタの結果をさらにIIRフィルタに通すのが基本。 今のCPU速度だとゲームでコンボリューション・リバーブは非常識。
- 228 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:13:01 ]
- EAXのリバーブとか使えないか?
幾分ハードウェア処理だから軽いだろ
- 229 名前:218 mailto:sage [2006/08/17(木) 21:29:11 ]
- IIRで何とかなるならそれに決めたいんだけど、探してきた↓のサンプルだと音が曇ってしまった。
ttp://www.morikita.co.jp/soft/7832/iir2.c フィルタが悪いだけ?良いフィルタのサンプルは無いだろうか。 >>227 フィルタ1の出力をフィルタ2の入力にして、その出力を適用という作業をサンプル毎に行う と解釈してみた。 >>228 SDKが見つからないよう
- 230 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:34:37 ]
- 遅延が…遅延がぁぁっ!
- 231 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:43:59 ]
- 係数が…係数がぁぁっ!
- 232 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 06:37:49 ]
- >>229
2次のIIRフィルターは LPFならf0とQで係数が決まるけど、それぞれいくらにしてるの? Q=0.7程度にして f0を変化させてみたら? それから、あくまでも遅延した方にだけIIRをかけて、元の信号と加算するんだよ。 加算した結果飽和するなら音量を下げるAGCを使うか 飽和しないように a , (1-a) の比率で加算するか
- 233 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 12:05:06 ]
- ああ、まさか>>229のソースで係数そのまま使ったって事?
そのレベルならとりあえず1次のLPFでやってみたら? 過去ログ のレス14より www.2chdat.net/data/html/01111704/996171508.html 1次のLPFは w =2*π*f0/22050.0; r =tan(w/2); b =(1-r)/(1+r) ・・・・・略・・・・ y:=b*(x-y)+y と計算します xが入力で yが出力だよ そしてyはグローバルに取るんだよ。 でbを可変してみて感じのいい所を探してみるといいよ 高域をもう少し減衰させたいなら2段するといいよ
- 234 名前:218 mailto:sage [2006/08/18(金) 19:48:30 ]
- フィルタ係数の算出方法があったのか( ゚д゚)…今見見返してみると過去ログが宝の山に見える。
そういえばさっきから全然残響音が出ないなぁと思って考えてみたんだけど、 1サンプル前じゃなくてもっと前のサンプルをフィードバックすれば良かったのか!? っと気づいてから今更>>226の意味を理解した。ぁーぁー それから1次なり2次のIIRを掛けて高音減衰させれば良い感じになるのか。 一応これでそれっぽいのは聞こえるようになったよう。みんなありがとうヽ(゚∀゚)ノ 後はこれとミキシングがどのくらいのレスポンスで出来るかどうかー
- 235 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 19:52:51 ]
- IIRは発振しないようにパラメータ選びは慎重にしてね( ´∀`)b
- 236 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 01:44:34 ]
- >>9-11を参考にして、ブロックのサイズを凡そ0.1秒にして、
音程変化の内速度調整を実装したところ、 再生速度を0.5倍にするところまでは非常にスムーズな音でこれを実現できました。 しかし、0.5を下回る倍率(〜x0.4)になった途端、音声が毒電波状態です。 現時点での実装は ・ブロックの間引き(重複) ・ブロックの窓関数処理 のみで、 ・空白を優先 ・繰り返しを配慮 という二点は実装していません。 自分の作っているプログラムでは効率が悪すぎて、 この二点を実装しようとすると処理時間が不足するおそれがあり、 何よりこの二点の効率の良い実装方法が思いつかなかったので。 よくよく考えてみると、この機能を実装しているプレイヤの内のいくつかは、 やはり0.5倍を下限に置いている様なのですが・・・。 何か良い解決方法はありますでしょうか? また、それはどのような方法か教えてください。
- 237 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 03:24:13 ]
- ァ・・・もしかしてサンプリング定理と関係があるのか・・・?0.5倍ってのが2の逆数であることから考えても・・
- 238 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 05:11:04 ]
- やっぱ厳密にはオーバーサンプリング+アンチエイリアスを
かけてから処理すべきとこなんじゃないの
- 239 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 07:28:47 ]
- 音程が変っているのなら、サンプリング速度が変化しているからどこかの段階でLPFを入れておく必要があるよ。
そうじゃないと折り返し雑音が問題になる。 綺麗な音にしたいなら、最低2倍のオーバーサンプリングしておいた方がいいかもね。 音程が変らずに再生速度だけ変化させてるならサンプリング定理の問題じゃない 0.5を下回る場合に問題が出るという事は 0.5を下回ると同じ音を3度以上繰り返し利用しなければならなくなるけど その処理がはいってないんじゃないの
- 240 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:10:42 ]
- >>238-239
書き方が悪くてすみません。 「音程を変化させずに速度変化をした」 処理です。 >>239 いいえ、3度以上の繰り返しについても問題なく実装しているはずです。 DirectSound+C#なので、部分抜き出しが難しいですが・・、 0.5以上1倍以下ではどれだけ細かい指定をしても平気なので、 ここにバグがあるわけでは無い・・・とは思うのですが。 decimal readCount = 0; decimal readSpeed = 0.4; for(writePoint=0;writePoint<(一秒分のバッファ長);writePoint+=(0.1秒分のバッファ長)) { readCount += (double)readSpeed; for(i=0;i<readCount;i++) { /* [readBufferに0.1秒分読み込み] */ } /* [readBufferから書き込み用バッファにwritePoint位置でコピー] */ readCount -= (int)readCount; } /* [書き込み用バッファを再生バッファにコピー] */ という感じでの実装です。 なんだっけ、グラフィックとかで良く使う「斜めの直線を整数型のみで計算するアルゴリズム」を応用した感じなのですが。
- 241 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:12:30 ]
- あ、Shift+Enter間違えて押してしまった・・・。
改行と書き込みがメッセとは逆だから間違えるなぁ・・・ とりあえず、お二人のご意見から オーバーサンプリング+アンチエイリアスについても実装を検討してみます。
- 242 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:16:02 ]
- あともう一点追記です。
240で示したソースの中で、i以外の変数はすべて クラススコープです。iのみがメソッドスコープになっております。 readCountがメソッド呼び出し毎にリセット、というわけではありません。 おまけに分かりづらくてすみません・・・。
- 243 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:24:22 ]
- 音程が変化していないという事は、サンプリングレートが変化してないわけでしょ?
だったら オーバサンプリングとかLPFは必要ないよ。 で、やっぱり3度利用する部分に単純にバグがあるのだと思うよ もっとも3度も利用すると違和感があるという事なら当然そうだろうけどね あまり2倍以上遅くする場合は、やっぱり無音期間を検出して、そこを出来るだけ引き延ばす方がいいと思うよ たとえば0.1秒のブロックを0.05くらいに小さくして、そのブロックの音量が今までの音量より一定比率より小さいなら、 その部分の繰り返し回数を出来るだけ多くするとか
- 244 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:31:35 ]
- まてよ >>240の定数だと、引き伸ばしではなくて短縮なんだよね?
短縮で0.1秒単位に2ブロック以上連続してすてるようになると、音声だと何を言ってるのか判らないようになってしまう。 そこまで強力に短縮するなら、 まず周期性を検出して周期の整数倍の もっと小さいブロック (1/30)〜1/60のような(ブロックというよりgranul) サイズにして それを捨てるようにする。必要があるよ。
- 245 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:35:11 ]
- サウンドプログラムの本ってあんまりないよね
- 246 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:40:53 ]
- !バグ見つけた!
>>243 バッファを注意深く見たところ、きちんと三度利用されるところは三度利用されていました。 ですが、読み込み時に窓関数をかけるのではなく、書き込み時に窓関数をかけていたため、 一回目の利用>二回目の利用>三回目の利用 と、窓関数により一気に減衰していました。 これをなおしましたが、やはり違和感は酷いです。 どうやらご提案の通り、きちんと無音期間や繰り返し周期の懸念を行わないといけないようです。 >>244 いいえ、短縮ではなく延長です。 なぜならreadCountは 一回目のループで0.4→読み込まない(readBufferはデフォルト0配列) →書き込みバッファには0が書き込まれる 二回目のループで0.8→読み込まない →書き込みバッファには0が書き込まれる 三回目のループで1.2→読み込む(readBufferには0〜0.1秒分の) →書き込みバッファには0〜0.1秒分のデータが書き込まれる 四回目のループで0.6→読み込まない →書き込みバッファには0〜0.1秒分のデータが書き込まれる 五回目のループで1.0→読み込む →書き込みバッファには0.1〜0.2秒分のデータが書き込まれる という感じに機能するので・・・。
- 247 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 09:48:58 ]
- 出来るだけ無音期間を検出して無音期間を引き延ばすのが第一
次善は、周期を検出してその周期の整数倍にgranulを切り出して それを並べる 音声の場合は周期の揺らぎが音声らしさを作ってるから 母音の部分の極端な引き伸ばしは巧くゆかないけどね(周期性が増すと声が変ってしまうから) やらないよりはマシ
- 248 名前:236 mailto:sage [2006/08/19(土) 09:52:20 ]
- うん、どうやらその方法をとるしか無い様ですね。
・・・分かり切ったことを聞いたようで、すみませんでした。 しかしそうすると演算量が極端にあがるなぁ・・・ 全量ノルムチェックと倍速調整か・・・うは、頭いてえ
- 249 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 10:07:55 ]
- Σx^2はそんなコストはかららないでしょ
周期検出の方が計算コストの低いのを探すのは大変でしょ
- 250 名前:236 mailto:sage [2006/08/19(土) 10:22:12 ]
- >>249
やぁ、せっかくあちこちダイエットしたのになぁ、ってボヤキです。 再生に関係しない他のところが処理コスト食い過ぎで、 再生するとCPU利用率が3%くらい跳ね上がるもんですから。 実質的な問題はただ単に面倒くさいだけです、本当にすみません。
- 251 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 10:23:57 ]
- 急に内容が難しすぎ。
- 252 名前:236 mailto:sage [2006/08/19(土) 10:32:11 ]
- ・・・確率論的に乱数で処理の是非を決定して無音部分の処理確率をあげt
いや、やめておこう
- 253 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 10:40:30 ]
- >>234
毎サンプルデータ毎に Xを入力 Yを出力 配列をM, rwp, Y = X*(1-g) + LPF( M[ (rwp +T) % SIZE] ) *g M[rwp] = Y rwp=rwp % SIZE; てな計算になるだけだから、別に遅延などそう必要ないでしょ
- 254 名前:デフォルトの名無しさん [2006/08/27(日) 18:27:58 ]
- QuickTimeSDKつかいづらい・・・・・・・
- 255 名前:デフォルトの名無しさん [2006/08/30(水) 15:08:42 ]
- 波形を合成する機能をもったライブラリって例えば
どのようなのがありますか?
- 256 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 16:11:14 ]
- DirectSound
- 257 名前:デフォルトの名無しさん [2006/08/30(水) 23:33:24 ]
- 8000Hz,8bitで取り込んだ音の中に、1KHzの音が混じってるかどうかだけをリアルタイムに調べたいんですが、低スペックマシンで処理するのにおすすめの方法はありますか?
- 258 名前:デフォルトの名無しさん [2006/08/30(水) 23:36:44 ]
- FFTを応用すればどうとでも出来るとおも
- 259 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 10:30:18 ]
- >>257
フィルタ使うのが軽い。
- 260 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 10:31:42 ]
- バンドパスフィルタを使って音量レベルを計ればいいんだ
- 261 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 13:25:22 ]
- 音程を変えるのに FFT を使ってるソフトがあるらしいのだが、
どういう風に使ってるんだろう。 単純に区間に区切って FFT かけて周波数を n 倍して戻すのって、 時間軸で重複させるのと等価だよなぁ。 位相をうまく合わせればちっとは良くなる気もするが、窓関数かけてたら ほとんど影響なさそうだし。
- 262 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 14:44:40 ]
- >>261
ヒント:フォルマント
- 263 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 07:53:32 ]
- >>17 を参照。
- 264 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 15:20:35 ]
- > 全体を一度に収まる大きなサイズのFFTで行う方法
これ試したことあるけど、まともな音にならない。 長い区間をフーリエ変換しても、意味のある情報は得られないと思う。 > ピッチシフトは周波数軸での単なるシフトではなく、指数的移動なので これの意味が良くわからん。定数倍すりゃいいだけじゃないの?
- 265 名前:デフォルトの名無しさん [2006/09/01(金) 19:12:02 ]
- >>264
恐らく「音程」に対して周波数係数が「指数」になるって言いたいんじゃないかな。 音程 周波数 -12 *2^(-12/12) -11 *2^(-11/12) ・・・ ・・・ -1 *2^(-1/12) ±0 *2^(±0) +1 *2^(+1/12) ・・・ ・・・ +11 *2^(11/12) +12 *2^(12/12 だから・・・ まあ何かを勘違いしている恐れがあるけど
- 266 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 20:15:03 ]
- その周波数軸の定数倍をどう実現してるの?
たとえば 2^(+1/12) = 1.05946309435929526 となって綺麗な比率にはならない 特に低周波は目が荒くなるわけで これを旨く処理するには exp(2πki)という指数=三角関数が必要にならない?
- 267 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 22:00:18 ]
- >>266
指数的な補完が必要ってことか。なるほど。そこまで考えてなかった。 でも、上にも書いてあるけど、周波数軸を a 倍するのって 時間軸を 1/a 倍するのと同じだよね。(音量は a 倍違うけども) FFT 使う意味がいまいち分からないなぁ。
- 268 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 23:23:01 ]
- DARU/PITCH-SHIFTER!だと音程+1で1.05946314って表示されるよ。
綺麗な比率では無いけど考え方はあってるんじゃないの。 周波数軸上でスペクトルを上下させるのがピッチシフトだっけ?
- 269 名前:デフォルトの名無しさん mailto:sage [2006/09/02(土) 11:50:35 ]
- >>267
たしかに。 下限周波数 f_low [Hz]で周波数スペクトルを測定するには、 有限の時間1/f_low [sec.]かかるので、 結局のところグレイン・サイズ 1/f_low [sec.]で グレイン操作して、ピッチシフトを表現することしかできないね
- 270 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 00:10:57 ]
-
ttp://pc.watch.impress.co.jp/docs/2004/0204/nishikawa.htm ttp://www.drk7.jp/MT/archives/000120.html
- 271 名前:デフォルトの名無しさん [2006/10/11(水) 18:43:00 ]
- 今、ASIO2.0のSDKのサンプルをいじってるんだが、どこで再生しているのかわからない。
誰か教えてくれません?
- 272 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 22:35:32 ]
- ASIO_Init()の中をループしている最中にbufferSwitchTimeInfo()がcallbackで呼ばれる
と思った
- 273 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 22:37:45 ]
- いやbufferSwitch()か・・・まぁその辺
- 274 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 00:30:37 ]
- 確かにここらへんが怪しいとは思うんだけど、どういじくったら音を出せるのかがわからない。
asioCallbacks.bufferSwitch = &bufferSwitch; asioCallbacks.sampleRateDidChange = &sampleRateChanged; asioCallbacks.asioMessage = &asioMessages; asioCallbacks.bufferSwitchTimeInfo = &bufferSwitchTimeInfo; 誰か音を出す方法を教えてくださいな。
- 275 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 00:57:17 ]
- あ、ごめんinit()は自作関数だったかもw 昔書いたのを適当に眺めて書き込んだんで・・・
再生するサンプルソースがあると思うけど要するにその辺のcallback定義して開始すると ASIOのsystemからbufferSwitchTimeInfo()が呼ばれる。 その中で要求された形式に応じてbuffを充填して戻る 無音だかを再生するサンプルがあると思うんで〜Info()にbreakpoint貼って 要求されたcaseのmemsetを適当な波形を返すようにしてみるとか、その辺からやってみては。
- 276 名前:デフォルトの名無しさん [2006/10/25(水) 23:43:20 ]
- bufferSwitchTimeInfo()をいじくったら音が出るようになったよ!
さんくす! でもなんか音が途切れ途切れ。。。ブツブツだわ。 どうしたらスムースになるんだ? 誰かわかる人助けてください。
- 277 名前:デフォルトの名無しさん mailto:sage [2006/10/28(土) 04:28:22 ]
- まだキャプチャーした音を再生するところまでしか作ってない「ヘボな段階」なので、
ファイル書き出し機能を作ってから聞けばいいのかもしれないのですが、 書き出し機能を作るときからおおまかな部分について知っておいた方がいいかなと 思いましたので、質問です。 キャプチャして録音しながら DVDレコーダなんかでよくあるタイムシフトの機能を扱いたいと思っているのですが、 どういった手順になるのでしょうか?おおまかな流れについて教えて下さい。 waveもしくはmp3をストリームして録音しているときに単純にそのファイルを 開いて再生するだけなのでしょうか? それとも、何かあらかじめ準備しなければならいことがあったり 特別な手順を踏んでタイムシフト用のファイルを作ったりしないといけないのでしょうか? mp3でタイムシフトやるときとwaveでタイムシフトやるときのファイル形式による懸念点などありましたら、 それも教えて欲しいです。mp3でやってもwaveでやっても一緒なのでしょうか?
- 278 名前:デフォルトの名無しさん mailto:sage [2006/10/28(土) 09:19:09 ]
- Adudacity でタイムシフト再生なんか出来たか?
- 279 名前:デフォルトの名無しさん mailto:sage [2006/10/28(土) 09:20:00 ]
- あ、Audacityスレとまちがえてかいてしまったごめんよ。
- 280 名前:デフォルトの名無しさん mailto:sage [2006/10/28(土) 12:41:11 ]
- >>277
FILE_SHARE_READでCreateFile()してやればいいんじゃね? 録音用のHANDLEと再生用のHANDLEで別にCreateFile()すればseek位置で干渉しないし。 wavはLR&チャンネルのバウンダリさえ気をつければどっから再生しても問題無いけど、 mp3は[4バイトのヘッダ+データ]のブロック単位でシークする必要がある。 てかmp3使うならエンコード/デコードのライブラリが必要。 フリーで転がってるソースはエンコはgogo、デコードはmpg123辺りかなぁ。
- 281 名前:277 mailto:sage [2006/10/28(土) 18:54:05 ]
- >>280
どうも、ありがとうございます。 それほど複雑な処理を必要としないさそうで、ちょっと安心しました。 waveとmp3でやり方が大きく違いそうだということもわかりました。特にmp3は敷居が高そうですね。 とりあえずwaveでタイムシフトを実現させることを目指そうと思います。 こんなプログラムは探せばに既にあるんでしょうけど、勉強を兼ねて自分でやってみようと思います。 ありがとうございました。
- 282 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 18:55:56 ]
- ADPCMの詳しい資料ってありませんか?
- 283 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 20:40:10 ]
- CCITTの規格書とかお金出せば買えるよ
- 284 名前:デフォルトの名無しさん mailto:sage [2006/11/03(金) 01:30:14 ]
- >> 282
何が知りたいの?
- 285 名前:デフォルトの名無しさん [2006/11/04(土) 15:55:44 ]
- OpenALでサウンドプログラムを組んでみたいんだけど入門的なサイトって無いだろうか?
- 286 名前:デフォルトの名無しさん [2006/11/05(日) 00:01:03 ]
- linuxでC言語使ってサウンドプログラミングやってます。
録音したデータにFFTをかけたいんですが、 データの渡し方が分かりません。 adlib.rsch.tuis.ac.jp/~akira/unix/ossprog/src/short/parrot.c 録音は↑のプログラムをベースにしています。 どなたかアドバイスをお願いします。 説明不足だったらすみません。
- 287 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 00:14:45 ]
- >>286
> linuxでC言語使ってサウンドプログラミングやってます。 > 録音したデータにFFTをかけたいんですが、 > データの渡し方が分かりません。 ここで聞くような内容じゃないだろ。 プログラム初心者板にでも行った方が幸せになれる。
- 288 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 00:25:33 ]
- read したとき bufに指定のフォーマット、サイズで
データが納まってるのでそれを処理すればよい。
- 289 名前:デフォルトの名無しさん [2006/11/05(日) 01:01:41 ]
- >>287
すいません。 >>288 ありがとうございます。 解決しました。
- 290 名前:デフォルトの名無しさん [2006/11/05(日) 02:00:31 ]
- あるmp3のファイルの波形データをサンプリングするフリーソフトってありますか?
time WavAmp 1 1.235 2 -0.256 3 8.242 4 -0.319 … みたいな感じで、テキストデータに保存できるソフトです
- 291 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:12:00 ]
- >>290
質問する板が違います 二度と来るな
- 292 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:13:06 ]
- またきちゃいました(>_<)
質問する板ってどこ?
- 293 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 02:41:50 ]
- >>292
自分で作ればこの板でおk
- 294 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 03:12:10 ]
- >>293
実は自分でもジャンルがよく分かってないんです。 フーリェ変換や波形分析するのはここのスレの人なのかなって スレ一覧見て思ったので聞いてみたのです。 完全体セルの「笑えよベジータ」って声があるんだけど、それをフーリェ変換したら どうなるのかなと思ったもので。 フーリェ変換のプログラムは持っているので、 あとは時間きざみごとの波形データが数値として取れれば…
- 295 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 03:18:53 ]
- >>294
wavか何かに変換すればいいんじゃね?
- 296 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 03:51:06 ]
- >>295
wavに変換すれば解析可能なソフトがあるってことですかね? 何しろ、サウンドプログラミングはズブの素人なのです。 確か、数秒のファイルでもwavにすると500KBくらいになりますよね。 プログラムのソースで500KBって結構なデータ量になります。 音楽データにどのような情報が入っているのかは分からないのですが、 ただ、欲しい情報は「波のきざみ幅」と「きざみ幅ごとの振幅」の 二つのデータなのです。 単純に波の振幅と刻幅を抽出するソフトがあれば紹介してもらいたいのです。 プログラム板一覧を見て、このスレの人なら知ってる人がいるのかなと思って質問しました。
- 297 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 03:59:53 ]
- ソフトウェア板辺りで質問スレ探すかLinux板で同系列のスレ探しなさい。
- 298 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 04:02:59 ]
- 了解しますた。
- 299 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 19:18:27 ]
- フリーソフトを使う事をプログラミングだと思ってるのか
- 300 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 22:32:01 ]
- >>299
バイナリから直に数値データって取れんの?
- 301 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 22:59:31 ]
- >>300
普通に取れるけど、取れても取れなくても、 フリーソフトを使う事をプログラミングとは言わない。
- 302 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 12:40:47 ]
- >>301
普通ってどうやるの?
|

|