- 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
- 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 と相性悪いかも。
|

|