[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/01 09:09 / Filesize : 249 KB / Number-of Response : 981
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

サウンドプログラミング4



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


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 ]
こういううざいのってどこにもいるのね








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef