- 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/
- 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
普通ってどうやるの?
- 303 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 13:06:21 ]
- >>302
普通にバイナリファイルを読み込めばいい。 バイナリファイルの読み込み方はスレ違い。初心者スレにでも池。 音声ファイルのフォーマットが知りたければぐぐれ。
- 304 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 13:20:44 ]
- >>303
どの言語がお勧め?
- 305 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 13:45:23 ]
- >>304
日本語でおk
- 306 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 14:00:48 ]
- >>304-305
吹いたw
- 307 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 14:28:46 ]
- >>303
ほんとに知ってて言ってるのこの人?
- 308 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 14:39:36 ]
- >>294
ソフトを自分で作ってやるなら 1、とりあえずMP3ファイルを 16bitWAV形式に変換して保存しよう(ツールは探してね) 2、WAV形式のファイルをバイナリでオープンして、(RIFF+チャンク)で検索してデータを取り出そう 3、かけたいFFTのサイズ以下になるように窓関数をかける -->判らなければ検索してね 4、FFTをかける(ステレオなら2変数を複素FFTでやる方法を使うといいよ) 5、周波数成分毎に絶対値を出しそう FFTは周波数は比例軸で出るので、大抵は対数軸にしたいと思うので、ココがまあキモになるね
- 309 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 14:51:08 ]
- で、たぶん >>294のやりたいのは
短時間FFTを使って ソノグラム表示もどきをやりたいのだと思う
- 310 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 15:12:33 ]
- >>309
短時間FFTはなにかまずい?
- 311 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 15:26:54 ]
- >>308
あ、ありがとうございます。 これで作業の方針をきめられそうです。 御迷惑お掛けしました。 ありがとうございました。
- 312 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 16:03:51 ]
- >>310
まずくはないよ。 等Qの特性で分割して表示したいとか言い出すと、短時間FFTだと逆にメンドクサイだけで
- 313 名前:デフォルトの名無しさん [2006/11/06(月) 17:24:35 ]
- OpenALのプログラムを勉強したいのですが初心者にも参考になるサイトはありませんか?
環境はOSがWindows2000,IDEはVisualStudio2003です。 まだOpenALのSDKは入れていないのでそのあたりから解説してくれているサイトであると助かります。
- 314 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 17:26:21 ]
- ググレカス
- 315 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 17:31:40 ]
- オープンソースだからソース見ればいいよ
- 316 名前:デフォルトの名無しさん [2006/11/10(金) 16:31:33 ]
- WindowsVISTAに移行することを考え、今までのDirectSoundベースで組んできた
プログラムを全てOpenALに以降することを考えています。そこでお聞きしたいのですが、 DirectSoundベースのプログラムはクライアントPCにDirectXがインストールされていれば ハードウェアだろうかソフトウェアだろうが問題なく音を再生することが出来ました。 これがOpenALに移行するとクライアント側のPCには最低限何をインストールしておく 必要があるでしょうか?またクリエイティブのサウンドカード(EAXをサポートしたもの)、 その他のサウンドカード、オンボードサウンド、で違いというのは生じますか?
- 317 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 22:49:27 ]
- www.openal.org/lists.html
公式のメーリングリストで聞けば?
- 318 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 01:48:49 ]
- a.midとb.midを同時再生するプログラムを書きたいのですが、
変数を二つ用意しても、二つ目を再生するところで 「指定したMIDIデバイスは既に使用されています。開放されるのをまってください」 という警告が出てしまいます。 mmsystem.hを使う方法で解決策はないでしょうか。
- 319 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 02:11:07 ]
- >>318
MIDIデバイスを二つ用意したら?
- 320 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 02:16:24 ]
- >>319
MIDIデバイスを二つ用意とはどのようにすればよいのでしょうか? ハード面でということですか? 環境としては、PCにMIDIインターフェースをつなぎMIDI音源で音を鳴らしてます。
- 321 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 03:51:29 ]
- >>320
まず環境を書け。 使ってる言語、OS、再生に使用してるライブラリ、最低このくらいは質問時に書いとけ。 それとデバイスの意味がわからないならそこから調べ直せ。 MIDIはWAVEと違って同一デバイスに複数ストリームを流せないから、 MIDIOUTが2ポートあるデバイスで、例えばSC88なりに別々に流すしかない。
- 322 名前:デフォルトの名無しさん mailto:sage [2006/11/30(木) 23:47:20 ]
- 実験音楽的に、二つのmidiをマージしたいって事では…?
- 323 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 00:35:28 ]
- まぁそれだったら流す前に自分でトラックをマージしちゃえばいいだけのことだけどね
- 324 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 02:15:53 ]
- windows系ですけど、
MM_WOM_DONEなどのメッセージ処理中はwaveOutWriteとか使えないって記述をたまに見るんですけど実際どうなんですか。
- 325 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 07:45:02 ]
- windows系といっても色々。
昔は割り込み=コールバックだったり タスクスイッチされてなかったりと
- 326 名前:324 mailto:sage [2006/12/14(木) 03:35:29 ]
- とりあえず95以降。
95で大丈夫ならその後でも大丈夫な気がするんですけど。
- 327 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 10:05:40 ]
- >>326
95は2000やXPとは根本的に別モノ。
- 328 名前:デフォルトの名無しさん [2006/12/14(木) 13:05:50 ]
- 95, 98, Me は MS-DOS だと思った方がいいぞ。馬糞にホイップクリーム。
- 329 名前:デフォルトの名無しさん [2006/12/14(木) 18:00:56 ]
- アルゴリズムの質問なんですがここでいいですかね?
オーディオストリームのピークホールド処理(過去nサンプル中の最大値を出力)を作っているのですが、 一番安直と思われる方法=過去nサンプルをバッファしといて毎フレームでバッファ内を全サーチ という方法で作ったところ、ちょっと重いです。高速な方法はないでしょうか。
- 330 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 18:26:50 ]
- >>329
1.過去の最高値と今の値を比較し、今の値が高ければ最高値を更新し、カウンタを0に 2.カウンタをインクリメント 3.カウンタが一定値を超えたら、過去nサンプル中の最高値を検出し、カウンタをそこからの値に ってやりかたはどう? nの値によっては比較回数が減るよ。
- 331 名前:デフォルトの名無しさん [2006/12/14(木) 18:53:14 ]
- >>330
おー、なるほど、すばらしいです。 聞いてよかった。早速試してみますー
- 332 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 22:04:56 ]
- >>330
ご報告、 入力波形の傾向によっても負荷の具合が変動するってことになりますが 平均して初めの方法よりかなり速いです。まじありがとうございます。
- 333 名前:デフォルトの名無しさん [2006/12/14(木) 23:09:33 ]
- >>330-332
それならば「最高値」を2つ持つようにすればどうだ? それぞれA値・B値と呼ぶことにする。 1.A値と今の値を比較し、今の値が高ければA値を更新し、カウンタを0、B値を0に 2.カウンタをインクリメント 3.B値と今の値を比較し、今の値が高ければB値を更新、カウンタの値を記憶 4.カウンタが一定値を超えたら、記憶しておいた値に更新、A値にB値を代入し、B値を0に
- 334 名前:デフォルトの名無しさん [2006/12/14(木) 23:10:48 ]
- すまん間違えた。
4. を修正 4.カウンタがnを超えたら、(n-記憶しておいた値)に更新、A値にB値を代入し、B値を0に
- 335 名前:デフォルトの名無しさん [2006/12/14(木) 23:12:00 ]
- ん、なんか微妙に違うかもしれない。
ともかく、1位だけじゃなく2位も記憶しておけばいいんじゃないかってことだ。
- 336 名前:デフォルトの名無しさん [2006/12/14(木) 23:54:00 ]
- >>333
試してみるまでもなくダメっぽいな・・・
- 337 名前:329 mailto:sage [2006/12/15(金) 00:04:49 ]
- 1位の期限が切れたとき、途中で保存しておいた2位を新しい1位とするみたいな感じですよね?
実はじぶんもそうゆうの考えたんですがね、ややこしくてあきらめちゃったんですよね。 そう簡単にはいかなかったような・・・ これって一見とても単純な処理なのに、速いアルゴリズム考えようとすると、 思いのほかアレ?て感じゃありません? だから330の即レスはけっこう目からうろこですた
- 338 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 01:17:37 ]
- 2位なんているの?
ビデオのメーター見てても2秒毎にリセットしてるだけだよ。
- 339 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 02:15:13 ]
- 本人が満足するのが一番の解でYO
- 340 名前:329 mailto:sage [2006/12/15(金) 02:17:36 ]
- メーターだったらそんな感じで十分なんでしょうけど、リミッター作ってるとこでして。
- 341 名前:デフォルトの名無しさん [2006/12/15(金) 10:36:30 ]
- WAVデータのサンプリング変換って、どーやりますか?
例えば、11025で8ビットのものは、1バイトの音声データの羅列で、 22050で16ビットのものは、2バイトの音声データの羅列で、 22050は、11025の2倍だから、22050を11025にするには、 out[0] = in[1]; out[2] = in[5]; out[3] = in[9]; : とやってくだけでOKだと思った。 が、音がザーザーです。
- 342 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 10:49:48 ]
- >>340
メーターだとこんなやり方もある。 あなろぐ VU メーターっぽい動き。リミッターにも使えるんじゃない? 過去のpeakを減衰させて現在値と比べる方法。 peak = peak * 0.999; // peak = max(peak-k, 0) でもなんでもいい。減衰するように。 peak = max( peak, current_sample);
- 343 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 10:52:44 ]
- >>341
8bit PCM は、ふつー符号無しデータで、0x00が負の最大、0x80が無音、 0xffが正の最大。
- 344 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 10:52:52 ]
- >>341
リサンプリング LPF とかでググってみて。 手を抜く場合には単純に out[0] = (in[0] + in[2]) / 2 とか。
- 345 名前:デフォルトの名無しさん [2006/12/15(金) 12:30:44 ]
- >>343
いまく行きました。ありがとうございました。 >>344 2バイト値を1バイト値に変換する場合、単に上位バイトを格納すれば良いだけです。 これで、256で除算したことになります。
- 346 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 12:32:37 ]
- >>345
サンプリング周波数 22050Hz のデータから 11025Hz への変換かとオモタ
- 347 名前:デフォルトの名無しさん [2006/12/15(金) 12:38:08 ]
- >>343
16bitPCMは符合有りなんだっけ?
- 348 名前:デフォルトの名無しさん [2006/12/15(金) 12:52:55 ]
- 22050Hz から 11025Hz にする場合、たんに間引けばいいだけじゃん?
平均取ると何か良くなる?
- 349 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 13:10:50 ]
- >>347
WAVのPCMに関しては、そう。 それ以外の文脈だと、符号有り8bitや符号無し16bitのPCMももちろん使 われることがある。
- 350 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 16:48:16 ]
- >348
それだとエイリアシングノイズ乗るでそ。 344のでも1/2以上のリサンプリングで乗るけど。 詳しくはFIRとかIIRとかで調べてみて。
- 351 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 17:18:03 ]
- >>348
サンプリングレート変換の時はLPFを通して先に高域をカットしなきゃダメ。 中途半端な周波数落としをするときはウェーブレットなんかで補間したほうがノイズが減る。
- 352 名前:デフォルトの名無しさん [2006/12/20(水) 14:26:55 ]
- FIRフィルタ(ローパス/ハイパス)のインパルスを
カットオフ周波数をパラメタとしてリアルタイムで生成したいんですが、 どこかにcコードサンプルとかないでしょうかね? 数学を理解して自分で書くのは無理そうでして・・・
|

|