サウンドプログラミング3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2006/04/21(金) 07:54:35各エフェクタの組み合わせとか、
プログラミング外の話題はDTM板の方がいいよ
サウンドプログラミング2
http://pc8.2ch.net/test/read.cgi/tech/1091054082/
サウンドプログラミング
http://pc5.2ch.net/test/read.cgi/tech/996171508/
0002デフォルトの名無しさん
2006/04/21(金) 20:45:560003デフォルトの名無しさん
2006/04/21(金) 20:48:18_ ノ 出席番号3番
_,, ---- 、_ | | /> ⌒`'⌒ヽ パイパンの
_,,-ァ''" ヽ、| レ'∠_, ) 神楽坂明日菜様が
/ /⌒"''ー 、 " 「 ⌒ ヽ、/)、 ⌒ヽ 3getした!
___/ ヽ ヽ、 { , 勹 `、ヽ )
,ン''フ {~ ⌒ヽ、 ヽ、`ヽ\/ ノ 、、 \\ ⌒Y⌒Y⌒
、/ / { ヽヽ、 ヽ、 \ ヽ、 ヽ、`ヽ i i トー 、ニニニ`、_
/ \/ / i ハ ヽ、 ヽ、、ヽ、 >、>、 ヽ`ヽ、 l\ \\`ー 、二二_ー‐‐‐‐‐‐‐‐‐
/ iニニ/ i | | ヽ ヽ`ヽミ >へ、,,_ヽ、ヽYヽヽ } ヽ ヽ \::.. \ ̄ ̄ ̄ ̄ ̄
./ l イ| ト| \ヽ / >イ)⌒ト`l |ヽ))) | ヽ \ \::.. \ /
/ |.l ハ | |、_,,,,,,__ \ ヽ、, 〉 l レノ/ \ ヽ \::::.... ヽ、/::::::::
/ |l ~ヽ .トイ、 i个、 /// レ 「ヽl _,,-‐ヽ、 `ー、 ヽ、::::::..... `"''
{ !. トヾ、ヽヽヽ)i , -、 》⌒>' / ヽ、、 二二ニニニニニニニ
| ト、!ト`ヽ ` < ィ ) / 〃/ / __________\_/::::::::\:::::::::::::::::::
| ト\ヽ \,_ `ヽン ,イ// / i | ,,,,---ヽ :::::::;`> 、;;;;;;;;
| ハヽ `ヽ\`二ニ='ツク ,/./ ハ l (二" `ヽ<
|l ヽ_` (三三三ニア/ | i |  ̄"""'''''''''----`----、
/ニニニニニニ===ー''ァ彡ソ、 ノ i ___,,,,-----
_,-ァ/'''/,イ ヽ<ー'''''""コ ヽ
///,, -'7 { |彡へ .} ヽ、::::::::::::....
0004デフォルトの名無しさん
2006/04/21(金) 20:49:570005デフォルトの名無しさん
2006/04/22(土) 20:44:54配列は使えるよ。
0006744
2006/04/24(月) 17:09:420007デフォルトの名無しさん
2006/04/24(月) 17:36:480008デフォルトの名無しさん
2006/04/24(月) 17:52:490009デフォルトの名無しさん
2006/04/24(月) 19:08:07・音程を変えずに、再生速度を変更する場合と
・変更した再生速度に合わせた音程に変換する のどちらかを行う
その方法には2つある
・周波数で変換する D-FFTを使い 周波数軸で変換する事 (苦労の悪いに音質はそう良くない)
・時間軸で変換する。 過不足が起きるので、それを合わせる。
時間軸で変換する方が簡単だろう。
0010デフォルトの名無しさん
2006/04/24(月) 19:14:35・時間軸で処理する方法
1、データを短時間のブロックに分割する
2、そのブロックに窓関数をかける(台形窓で十分)
分割単位は窓をかけてる区間だけオーバーラップする事になる
3、再生速度を上げる場合、ブロックを間引く
4、再生速度を下げる場合、ブロックを2度利用する
0011デフォルトの名無しさん
2006/04/24(月) 19:29:59A B C D E
_ ↓ ↓ ↓
/A\_ ↓ ↓
/B\_ ↓
/C\_
/D\
これから、B、D を間引いて
_
/A\_
/C\_
/E\
A,B,C,D,Eの時間は等間隔である必要はない。
間引いた時間の比率をコントロールすればいい。
違和感を減らすには、
1、無音期間を率先して間引く
2、繰り返し期間を検出したら、その周期の整数倍に合わせて間引く
と言う処理を入れる
0012デフォルトの名無しさん
2006/04/24(月) 19:36:29_
/ A\__
/ B \__
/ C \
AとBがオーバラップする時間を作って切り出してやる=部分的に2度利用させる。
これも、
1、無音期間を検出したら積極的に無音を延ばす
2、繰り返しを検出したら、その周期の整数倍に合わせてオーバーラップさせる
という方法で違和感を減らせる
0013デフォルトの名無しさん
2006/04/24(月) 19:37:500014デフォルトの名無しさん
2006/04/24(月) 20:01:130015デフォルトの名無しさん
2006/04/25(火) 19:56:510016デフォルトの名無しさん
2006/04/26(水) 01:05:31・周波数で変換する D-FFTを使い 周波数軸で変換する事 (苦労の悪いに音質はそう良くない)>>15
0017デフォルトの名無しさん
2006/04/26(水) 07:12:04・全体を一度に収まる大きなサイズのFFTで行う方法
・ブロック単位に短時間FFTで行う方法
に別けられる。
ピッチシフトは周波数軸での単なるシフトではなく、指数的移動なので、結構計算コストは大きい。
なお、リアルタイムという事になると短時間FFTという事になるが、
オーバーラップさせて窓関数をかけてブロックをつないでゆくと、つなぎ目で位相が合わなくなるので
違和感が発生する。 位相を合わせてつなぐと、今度はノイズが変質する。
時間軸でノイズ+サイン波を加算した場合も位相があえばサイン波は2倍になる=位相を合わせれば
按分加算出来るが、ノイズは√2倍にしかならないからノイズ音量が波打つ現象が起きるので
なかなか難しい問題だ。
0018デフォルトの名無しさん
2006/04/26(水) 07:24:00「再生速度を変えずに音程を変更」するのではなく
「再生速度を変更して音程を変更」し、それによって生じるデータの過不足を 上で書いたような
ブロック(granul)への分割と統合で補うという事になる。
再生速度を変更するには、上げるにも下げるにも強力なLPFが必要になる。
安いキーコンではLPFを補間で代用してる為に音質が悪い
0019デフォルトの名無しさん
2006/04/26(水) 13:20:39質問者は「リアルタイム(レイテンシ50msec以内)」みたいな書き方キボン。
0020デフォルトの名無しさん
2006/04/26(水) 13:29:570021デフォルトの名無しさん
2006/04/26(水) 13:31:090022デフォルトの名無しさん
2006/04/26(水) 16:55:29という方法が一般的なのかな?でもそれって発射速度が速いマシンガンとかだとものすごい
勢いでサウンドカードの同時再生音(64音ないしは128音)を消費していくような気がするんだけど・・・
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
2006/04/26(水) 17:01:38同時発音数を制限しろよ。
それから、マシンガンは、トリガー部、ループ部、リリース部の3つのサンプルを使え!
そしたら発音数は1つ。
002522
2006/04/26(水) 17:08:43バルカン砲とかだと
トリガー部、ループ部、リリース部
に分けてつなげるのが得策かもしれないけど、それよりレートが低い一般的なマシンガンだと
かえって各部の接続部分で粗が目立つような気もするんだけど・・・
> 同時発音数を制限しろよ。
これはどういうこと?
0026デフォルトの名無しさん
2006/04/26(水) 18:01:40単発が長くてもたくさんの発射音のうち気になるのは聞こえ始めと最後の消えゆく部分だけってこと。
どうせ秒3発位で一発最大8秒くらいの音でも連発でならしたら消音部分でいきなり消えてもあんまり気にならない。
002722
2006/04/26(水) 18:11:34なるほどね。
それだったら次の発砲が生じたらその一つ前の発砲音は消してしまうのも手じゃない?
それならどんなに発射速度の速いマシンガンでも常に同時発音数は1のままでしょ。
0028デフォルトの名無しさん
2006/04/26(水) 18:20:53そういう風に調整することもある、要するにリソースと効果音の持っている性質とのかねあい。
PCエンジンとか古いゲーム機だと音楽用に6音+効果音用に2音で当てて垂直同期毎の発音リクエストを優先度別に取捨したあと
現在鳴っている音より優先度が高いか等しい時に新規の音を鳴らしてた。
0029デフォルトの名無しさん
2006/04/26(水) 18:26:580030デフォルトの名無しさん
2006/04/26(水) 20:57:10最近質問するまでもないレベルの低いのおおいな
0031デフォルトの名無しさん
2006/04/26(水) 21:38:4422は厳しい制限数の中でどうやりくりしていけばいいのか聞いてるんだろ。
0032デフォルトの名無しさん
2006/04/28(金) 02:08:03> それならどんなに発射速度の速いマシンガンでも常に同時発音数は1のままでしょ。
鳴っていた音を消音して次の音を鳴らすとして、
消音したい音をいきなり消すとノイズが発生する(可能性がある)よね。
それに対処するにはとても短い時間であってもフェードアウトさせる必要が
あるんだけど、そのフェードアウト中にはもう次の音が鳴っているので、
その瞬間だけは同時発音数は 2 になるよ。
0033デフォルトの名無しさん
2006/05/03(水) 02:20:32どのゲームもだいたいアイドリングの時からエンジンの回転数が上がって行くにつれ
なめらかに音が高くなっていくようなんだけどどうやって実現しているのか不思議。
エンジンがある回転数の時の音を録音してその音源ファイルの再生速度を調整する
ことでアイドリングの時や高回転時のエンジン音も再現できるのかな?
0034デフォルトの名無しさん
2006/05/03(水) 19:17:29低回転時から高回転時の音にクロスフェードしてるんじゃないの?
エンジン音なんか割とノイズ的でファジーな音だから複数混ぜてもそんなに気にならないと思う
しかしここ全然プログラムの話題出ないな・・・
0035デフォルトの名無しさん
2006/05/03(水) 20:07:19Visual C#で特定のボタンを押したら複数のwaveファイルを同時に、ないしは多少の時間差をつけて
ならすことって可能だと思う?可能だとしたら何個くらいのwaveファイルまで同時にならせることができるだろうか?
またサウンドカード毎にプログラムをチューニングする必要ってあると思う?
0036デフォルトの名無しさん
2006/05/04(木) 06:28:28サウンドカード非依存にしたいなら、ミキサを自分で書けばいいし。
0037デフォルトの名無しさん
2006/05/04(木) 08:30:37フーリエでLPFを書くのはどうすればいいのでしょう。
たとえば、freq=44100Hz、M=1024でDFTして周波数領域に変換したとして、
cutoff_freq=11025HzのLPFを作る場合、単純に[0〜M / 4]の複素数配列だけ残して、
あとは0+0iで埋めればいいの?
わかる人教えてください。
003837
2006/05/04(木) 08:34:25なんだかこのやりかただとレゾナンスが効いてる笑。
0039デフォルトの名無しさん
2006/05/04(木) 11:55:43結果、11025/1024の整数倍の倍音が発生し 特有の変調音が発生する
フーリエ変換でLPFを作るなら
1、全部のデータ+余白が入るサイズでFFTして、 得られた結果=周波数領域に窓関数をかけて 逆FFTする
窓関数は余白の大きさにより鋭敏にする
2、短時間FFTでリアルタイム的に処理する場合は、
FIR−LPFを設計士、それをFFTしておき
データにはFIR係数サイズ分の余白(ゼロで埋めておく)をつくり
周波数軸で、掛け算して逆FFT するというのを繰り返す
0040デフォルトの名無しさん
2006/05/04(木) 12:21:06おお…、お詳しい方が。とりあえず試してみます。
どうもありがとうございます。
0041デフォルトの名無しさん
2006/05/04(木) 13:02:24ようするに、FIR-LPFをFFTで掛け算のコストを下げてやろうという事
FIR-LPFをまともに実装すると 1サンプルあたりFIRのタップ数だけ積和が必要
FFTを使えば計算量が減らせられる。
ただし、FFTは元信号が繰り返す事を前提にしてるから
FIR−タップ数だけゼロの領域を入れてやって、その影響が無い領域を作ってやる必要がある
で、巧くタップ数とサイズと、ステレオ信号をどう巧く捌くか
設計しないと計算量が増えかねないから注意ね。
004235
2006/05/04(木) 15:03:25> 聞く前に試してみるといいと思うよ。
> サウンドカード非依存にしたいなら、ミキサを自分で書けばいいし。
今まで音を再生するプログラミングって作ったことが無かったんだけど
C#で多数のwaveファイルを、かなり高精度なタイムスケジュール
(二つのwaveファイルを100msの時間差をつけて再生する等)で
管理するにはどういう手段(関数)を使ったらいいと思う?
ちょっとググッてみたら
PlaySound(もしくはsndPlaySound)関数
というのがあるらしいけどこれで複数のwaveファイルを同時再生させること
って可能かな?
0043デフォルトの名無しさん
2006/05/04(木) 15:58:07自前で加算するのが楽だと思うけどなあ・・・・
まあどうしてもC#の場合は、どんなライブラリがあるかなんて探し物的な
所で悩んでしまうんだろうけど・・・・あんまり書くと荒れるから止めとくわ
004435
2006/05/04(木) 16:01:460045デフォルトの名無しさん
2006/05/04(木) 16:16:20いちいちライブラリの都合に合わせて悩むより、そこらへん楽だよ
004635
2006/05/04(木) 17:10:24waveデータを自分で加算して再生する方法を探してみたんだけど、
Wave音源で音を鳴らす
http://www.sm.rim.or.jp/~shishido/wavtest.html
Wave音源の処理
Wave音源で音を鳴らす手順は、以下のようになります。
バッファを確保し、波形データを作成
音声形式を指定するWAVEFORMATEX構造体を作成
waveOutOpen()でWaveデバイスをオープン
データバッファの情報をWAVEHDR構造体で設定
waveOutPrepareHeader()で再生準備
waveOutWrite()でバッファの波形データを再生
再生が終了したらwaveOutClose()でデバイスを閉じる
waveOutUnprepareHeader()した後バッファを解放
あらかじめならす音をwaveデータとして作っておかないと対応できないのかな?
音の再生を開始した後に急遽新しい音を追加で再生させたり、いらなくなった音
の再生を途中で停止させる場合には向いていないかな?
0047デフォルトの名無しさん
2006/05/04(木) 18:38:46ある程度のブロック転送となるので、
急遽音を止めたいというような場合にはその用意してるブロックサイズ*ブロック数 分だけ遅延する事になります
それはしょうがないと我慢出来ないなら
ハード依存の高い方法になるんじゃないの?
0048デフォルトの名無しさん
2006/05/04(木) 22:21:15致命的なミスしている。
もっとマシなとこを参考にした方がいいよ。
004935
2006/05/05(金) 00:48:50う〜ん、ダイナミックに音の再生を制御したいのであれば
DirectSoundを使うしかないかな(´・ω・`)
>>48
ここはどう?C++だけど参考になるかな?
http://dencha.ojaru.jp/programs/pg_wave_01.html
0050デフォルトの名無しさん
2006/05/05(金) 06:05:45Javaでもサウンド扱える位だからC#なら速度がそれほど問題にならんと思うと考えてがんばってみそ。
0051デフォルトの名無しさん
2006/05/05(金) 10:41:330052デフォルトの名無しさん
2006/05/05(金) 13:04:34それをいったらWindowsは使うなということになる(w
0053デフォルトの名無しさん
2006/05/05(金) 13:09:340054デフォルトの名無しさん
2006/05/05(金) 13:21:20005535
2006/05/05(金) 17:45:02http://msdn2.microsoft.com/ja-jp/library/ms173187.aspx
ただ問題はこの方法で再生中のwaveファイルを任意の時間に停止させたり
複数(あるいは同一)のwaveファイルを時間差をつけて多重再生できるかなんだよな・・・
先は長い(´・ω・`)・・・
0056デフォルトの名無しさん
2006/05/05(金) 18:20:29DirectSound使うか自前で低レベルオーディオを使うかだな
0057デフォルトの名無しさん
2006/05/05(金) 18:21:22005835
2006/05/05(金) 18:27:02こりゃぁ大変だ、GW中に勉強しきれるかな(´・ω・`)・・・
0059デフォルトの名無しさん
2006/05/07(日) 01:23:40意味は分からんがなんかおもしろそう
006035
2006/05/07(日) 01:29:01意味はようわからんけど。
0061デフォルトの名無しさん
2006/05/07(日) 08:19:54ケプストラムは対数化してるから、ゼロ点が思いっきり強調されるってだけ
0062デフォルトの名無しさん
2006/05/07(日) 08:25:190063デフォルトの名無しさん
2006/05/07(日) 12:04:25FFT→FFT→FFT = IFFT ?
0064デフォルトの名無しさん
2006/05/07(日) 12:11:47FFT→FFT = 逆FFT*係数調整
FFT→FFT→FFT = FFT *係数調整
0065デフォルトの名無しさん
2006/05/10(水) 08:54:500066デフォルトの名無しさん
2006/05/10(水) 10:10:15うまいDJの演奏を参考にする
0067デフォルトの名無しさん
2006/05/10(水) 19:22:020068デフォルトの名無しさん
2006/05/19(金) 12:12:000069デフォルトの名無しさん
2006/05/25(木) 07:11:07処理をかけようと思っているのですが、そういう場合どんな
言語とライブラリの組合せがおすすめ、または使用されているでしょうか?
C + spLibs でやろうとしたのですがコンパイルがうまくいかなかったため
Javaに変えようと思っているのですが。。
0070デフォルトの名無しさん
2006/05/25(木) 07:25:350071デフォルトの名無しさん
2006/05/25(木) 07:37:24データを取るのも
スペクトルを出すのも、
ライブラリが必要なほど複雑な事じゃない。
というかライブラリの使い方を読む時間で作れてしまう
自分はこういうのはDelphiでやるけどね
0072デフォルトの名無しさん
2006/05/25(木) 14:49:40その場合waveを読むにはどんなライブラリを使うのがいいのでしょうか?
0073デフォルトの名無しさん
2006/05/25(木) 14:52:080074デフォルトの名無しさん
2006/05/25(木) 15:00:050075デフォルトの名無しさん
2006/05/25(木) 16:00:180076デフォルトの名無しさん
2006/05/25(木) 16:17:20そういえば、Delphiでよさげなライブラリてある?
0077デフォルトの名無しさん
2006/05/25(木) 16:23:060078デフォルトの名無しさん
2006/06/07(水) 05:21:50LGPLってことは作者に報告義務無しで商用OKってこと?
サイト翻訳したんだけどチョトわかりません。
BASSとかFMODはどういうものでしょう。安定してますか?
0079デフォルトの名無しさん
2006/06/07(水) 05:50:13ただし、LGPLなライブラリから静的リンクするコードは全てLGPLかGPLにして公開しないといけない。
LGPLなライブラリでDLLを作ってそのDLLはLGPLにしてソースを公開した上で、
DLLとリンクする本体はソースを公開しなくてもいい。
ただしその場合でもLGPLなライブラリについてちゃんとLGPLだということの説明と、
確かLGPLなライブラリのソースの入手できる場所を説明しとかなくちゃいけない。
LGPLはいちいち理解するのがめんどいよな。
0080デフォルトの名無しさん
2006/06/20(火) 10:41:28キーワード「ゲーム .wav ライブラリ」で検索しても売りもんのCDやらなんやらしか引っ掛からん。
どこか良いところ教えてくれんじゃろうか。英語で書かれててもいいから。頼む。
0081デフォルトの名無しさん
2006/06/20(火) 10:55:100082デフォルトの名無しさん
2006/06/20(火) 12:10:07TAM_MusicFactory
Vector
■WEB WAVE LIB■〜 音と声のOnLine素材集
ザ・マッチメイカァズ
Area MIDI素材集
0084デフォルトの名無しさん
2006/06/20(火) 13:51:16このスレの住民は結構高尚なことが好きなんだよ。
試しにウェーブレット変換とか離散コサイン変換とか言ってみ。
面白いように話に乗ってきてくれるから(´・ω・`)
0085デフォルトの名無しさん
2006/06/20(火) 14:09:05そんなに顔を真っ赤にするなってwww
あ、それと…
>>83 は、やねうらお説
0086デフォルトの名無しさん
2006/06/20(火) 14:39:030087デフォルトの名無しさん
2006/06/20(火) 15:38:550088デフォルトの名無しさん
2006/06/20(火) 15:53:36お前にふさわしいスレは↓だから、サウンドプログラミングの意味が解るまで二度と来るな。
【ゲ製作技術】ゲームを作るための素材を集めよう! Part2
http://pc8.2ch.net/test/read.cgi/gamedev/1113207836/
0089デフォルトの名無しさん
2006/06/20(火) 19:58:04今までちょっと尊敬してたのに、
>>83はねえな。軽蔑した。
0090デフォルトの名無しさん
2006/06/20(火) 22:48:21「サウンドプログラミングの一環」でやってる奴が素材すらマトモに見つけられないてwww
しかもスレ違いどころか板違いの質問、挙句逆切れ・・・
お前、センス無いからプログラマやめろ。
0091デフォルトの名無しさん
2006/06/21(水) 01:14:570092デフォルトの名無しさん
2006/06/21(水) 19:24:310093デフォルトの名無しさん
2006/07/04(火) 00:58:30まずホルマント周波数をどこから求めていいのかわかりません。
/a/の波形をFFTした結果のスペクトルに対してピークを求めれば
それがホルマント周波数になるのでしょうか?
それともスペクトル包絡を求めた結果の曲線のピークが
ホルマント周波数になるのでしょうか?
やりたいことのために情報を集めていると短時間スペクトル解析というのも
出てきたり、振幅スペクトルを使えばいいのかパワースペクトルを使えばいいのか
周波数スペクトルを使えばいいのか混乱しています。
0094デフォルトの名無しさん
2006/07/04(火) 07:25:10色んな方法があるわけで、演算能力が足りる範囲で好きな方法を使えばいいとおもうよ
0095デフォルトの名無しさん
2006/07/06(木) 07:06:00サウンドプログラミングするには音響学のクラスも取る必要がありますか?
物理の音に関する部分だけで十分ですか?
数学は微分積分のI,II(多変数のは取ってないです)と線形代数と統計学は取ったんですけど
他に数学で必要なクラスはありますか?
他に何か取っておいた方がいいクラスはありますか?
質問多くてすみません。
0096デフォルトの名無しさん
2006/07/06(木) 10:59:10フーリエ変換を習っ(た|てる)?
0097デフォルトの名無しさん
2006/07/06(木) 23:16:45まずは体力だな。その次は腕力と暴力。学力は一番最後でヨシ。
009895
2006/07/07(金) 05:02:44>フーリエ変換を習っ(た|てる)?
微分積分のIIでやりましたよ。軽くですけど。
あれをソラで(教科書見ずに)スラスラっと解けるようでないとダメですか?
>>97
工工エエエエエエェェェェェェ(゚Д゚) ェェェェェェエエエエエエ工工
でも、体力には自信あり。
ベンチプレスで100kg挙げられます。\(^o^)/
0099デフォルトの名無しさん
2006/07/07(金) 05:47:05スラスラと解く、というよりは、フーリエ変換が使えると
何がうれしいのかってことがわかる方が重要と思われ
0100デフォルトの名無しさん
2006/07/07(金) 06:17:48ttp://www.forest.impress.co.jp/article/2006/07/06/spreadfirefox.html
もじら組メーリングリストより
-----
spreadfirefox in AKIHABARA
1、7/8(土)、7/9(日)10:00-17:00 東京・秋葉原/秋葉原路上において、ステッ
カーとポストカード、特製CD-ROMの入った袋を配布します。配布するのは、イベント・
コンパニオンさんとメイドさん、もじら組。メイドさんにネコ耳としっぽをつけても
らい配布をしますので、要チェック!場所としては、1、ラジオ会館側駅前、2、ヨド
バシ向かい道路、3、中央通り(大きな通り)の3箇所です。人の多そうなところへ、
移動しながら配布していきます。コンパニオンさんもメイドさんも写真撮影可です。
-----
010195
2006/07/07(金) 06:57:23フーリエ変換の概念は一応理解してると思います。
スラスラとは解けないですけど。
音響学や物理などは取らなくてもいいですか?
というより、このスレの住人で取った人はいますか?
何か詳しい方が多いようなのでいるような気がしてなりません。
0102デフォルトの名無しさん
2006/07/07(金) 07:20:570103デフォルトの名無しさん
2006/07/07(金) 07:25:35受身ならどのみち身につかんと思うよ。
0104デフォルトの名無しさん
2006/07/07(金) 07:39:09授業を取るのと勉強するのとは別の問題だろう
0106デフォルトの名無しさん
2006/07/07(金) 07:49:180107デフォルトの名無しさん
2006/07/07(金) 07:54:17音は3次元の空間を伝わってくるのだという事を忘れがちだよね
0108デフォルトの名無しさん
2006/07/07(金) 15:00:05スリットを通した干渉だけ習っても3次元空間の音の干渉って説明できますか?
0109デフォルトの名無しさん
2006/07/07(金) 15:23:49音だと運動量か圧力のどっちかが小さくなるだけ。
0110デフォルトの名無しさん
2006/07/07(金) 15:46:570111デフォルトの名無しさん
2006/07/07(金) 16:47:06電磁波は進行方向を軸にした回転が伝わってくる(偏波は2つの回転が組み合わさったもの)
音は、進行方向の振動
0112デフォルトの名無しさん
2006/07/07(金) 17:06:12光のように空間上のスリットで干渉して音がホントに消える事はない。
ただし、検出器は圧力か運動量のどちらかを検出するので、片方だけを捉えれば消えたという事になる。
だからスリットではなく管として、管から外に音が出るかどうかのようにすれば 消すことは出来る
たとえば、クインケ管で実験すればいい、
左右が同じ長さの時に運動量変化は最小になるが圧力変化が最大だから外に音が出る
左右が半波長だけズレると、圧力変化が最小になる為に管から外に音は出ない。
しかし、その繋ぎ目では運動量変化は最大の点で
管の中に運動量変化を取る検出器を入れればそこでは最大音量となっているだろう
0113デフォルトの名無しさん
2006/07/07(金) 19:31:320114デフォルトの名無しさん
2006/07/07(金) 20:30:36電場、磁場の両方を交換しながら伝わってくるわけで、
その方向は進行方向に垂直だから、位相=回転角なわけで、位相が合えば両方消えるよ
0115デフォルトの名無しさん
2006/07/07(金) 20:46:32電場と磁場の両方が打ち消すためには2本のビームが平行に交わらないと
(つまり一致しないと)完全には消えないよ。2本のビームに角度差があれば
どちらかは残る。
0116デフォルトの名無しさん
2006/07/07(金) 22:20:280117デフォルトの名無しさん
2006/07/07(金) 22:35:22どっちかが残るという事は、電場だけで振動する波がありえることになるよ。
電場が振動するならその垂直方向に自動的に磁場が発生するわけで、単独振動は無理さ。
0118デフォルトの名無しさん
2006/07/07(金) 22:49:410119デフォルトの名無しさん
2006/07/07(金) 23:34:59観測しないなら消えるだの消えないだのの議論にそもそも意味がないわけで、
と考えると、なかなか難しい話だな
0120デフォルトの名無しさん
2006/07/08(土) 00:36:500121デフォルトの名無しさん
2006/07/08(土) 00:51:450122デフォルトの名無しさん
2006/07/08(涛y) 02:55:150123デフォルトの名無しさん
2006/07/08(土) 03:17:310124デフォルトの名無しさん
2006/07/08(土) 04:10:53つ「人の振り見て我が身を直せ」
0125デフォルトの名無しさん
2006/07/08(土) 04:30:26流れからすると、それは的外れだ。
0126デフォルトの名無しさん
2006/07/08(土) 04:34:50んなぁ〜こったない
0127デフォルトの名無しさん
2006/07/08(土) 04:39:140128デフォルトの名無しさん
2006/07/08(土) 04:40:45んなぁ〜こった(ry
0129デフォルトの名無しさん
2006/07/08(土) 10:16:55バイノーラルの測定文献って3つ位あるけどホロフォニックみたいな臨場感のある再生
のデータってないんだよね。
0130デフォルトの名無しさん
2006/07/21(金) 04:50:47もし出来る場合、実行時の速度以外に何か問題が発生する可能性はあるのでしょうか。
0131デフォルトの名無しさん
2006/07/21(金) 10:02:43可能。問題点は、SDKを自力で修正する必要があること。
0132デフォルトの名無しさん
2006/07/21(金) 13:11:01さらに質問で申し訳ないのですが、SDKを自分で修正するというのは、どういった箇所になるのでしょうか。
SDKのAPIクラス自体を.NETに対応させる必要があるということでしょうか?
VSTホストに対するインタフェースを変更しなければ、
ネイティブで書かれたVSTホストから.NETで作ったVSTプラグインを呼び出すことは加納なのですよね?
0133デフォルトの名無しさん
2006/07/27(木) 01:17:430134デフォルトの名無しさん
2006/08/05(土) 17:27:47うまくいきません。ずっと前にこのスレで話題になっていたときは
「ほんとうに加算するだけ」ということだったのですが・・・
8ビットステレオデータです。
単音では鳴るのですが二つを合成すると×。
0135デフォルトの名無しさん
2006/08/05(土) 17:31:260136デフォルトの名無しさん
2006/08/05(土) 17:47:110137デフォルトの名無しさん
2006/08/05(土) 17:51:11変な音がするなら>>136に一票
音がしないなら>>135に一票
0138デフォルトの名無しさん
2006/08/05(土) 17:51:258bit wavは0基点ではなく、0x80基点。
char in1, in2; // 入力
char out; // 出力
out = ( ( in1 ^ 0x80 ) + ( in2 ^ 0x80 ) ) ^ 0x80;
こんなんだったかな? 間違ってたらすまそ。
後は加算後にクリッピング処理入れる程度で鳴るはず。
0139デフォルトの名無しさん
2006/08/05(土) 18:08:04ゲーム製作技術板でそんなことを書いたような覚えはあるが>「ほんとうに加算するだけ」
0140デフォルトの名無しさん
2006/08/05(土) 18:55:09tmp = max(tmp,-128);
tmp = min(tmp,127);
out = tmp + 128;
0141デフォルトの名無しさん
2006/08/06(日) 01:17:37out = (tmp / 2) + 128;
∴
out = (in1 + in2) / 2;
0142デフォルトの名無しさん
2006/08/06(日) 04:15:53一行目からバグってんじゃん。
0143デフォルトの名無しさん
2006/08/06(日) 18:34:19音波をスピーカから出して、音を消すシステムを
作りたいのですが(もう誰かが作ってるらしいですが)、
こういったリアルタイム性が求められるものは
プログラムだけでは無理でしょうか。
0144デフォルトの名無しさん
2006/08/06(日) 18:57:58SP1 カンマ キュークイック キュークイック 200PS がここで 230PSに
まわりのクルマが なってるが キュークイック キュークイック 250PS キュークイック 245PS キュークイック
キュークイック 350PS キュークイック 450PS に なってる はっずうだ。 250PSとか 245PS 350PS 450PSとかぬかして
SP1 とはどういうのかと いうと Specialぱわーすてーじ だが
あと
4p pppp
と いう そうすると クルマは てんかは ふるぱわー状態だ
あと なまえをいうじぶんのなまえだ
じぶんのモーターアシストじてんしゃは モ−ターアシストが はたらいていなくても
つまり きってあっても かなりかるくなってるだろう。
あと SATEP 4SUTEPPU 2 という そうすると 4パー というと 4秒 ないし 40秒モードは どうしますかと
なると 4ぷれいという わかりましたと なると では てんかじき せいぎょがどうか
きいてきますというが きんきゅうじ うんてんしゃ ののっぞむままの パワーをひきだしてほしいとなる
4びょう というと にげている180の パワーが 4びょうだけ 4500PSになる。
どうしてかというと まいくろぷろせっさーゆにっと ふるもーど
こんぴゅうたーというのはそういうものなんだといえる。
モーター かいせい型 つまり モーターをこいで じゅうでんする モーターアシストじてんしゃの
になるだろう。
0145デフォルトの名無しさん
2006/08/06(日) 18:59:550146デフォルトの名無しさん
2006/08/06(日) 19:01:48もどる
0147デフォルトの名無しさん
2006/08/06(日) 19:03:070148デフォルトの名無しさん
2006/08/06(日) 19:04:080149デフォルトの名無しさん
2006/08/06(日) 19:08:28まいくろぷろせっさー ふるもーど のほうがいいかな
0150デフォルトの名無しさん
2006/08/06(日) 19:09:04リアルタイム性も何も、対象の音を得た時点でその音はもう通り過ぎているわけだから消せるわけない。
周期性のある音に対してなら有効だろうがな。
プログラムだけじゃ無理かといわれればそのとおり。
どんなに精度高く作っても、それが使える条件は限られてくる。
0151デフォルトの名無しさん
2006/08/06(日) 20:22:36180ってなに せいれき2000ねん ころかなあ r18 というところで
4km くらいてまえから policeカーとの ばとるが はじまたんだ ただr18を しっそうするだけだけど
そのくらいのきょりで ついせきされる くるまがじこるのは おかしいんだ じつは ぶつかったのは Policeカーなんだ
なんでも ちがうにんげんを たいほして あだうちとか やるんだ
にほんの ぐんしんのじんじゃが くびらい はんふる をまつったとしたらどうする
1267ねん の うみをうめつくしていた ちゅうごくの ぐんせ”い
じつは 首都がかんらくしていたら
ちゅうごくちほうが ちゅうごくちほうと いうのがちゅうごくの やくしょがあったからんだって
へいけものがたりが にほんにおける てんぷるとん てんぷるとんくびらい さま てんぷるとん てんぷるとん くびらいさま
つまり せんそうに さんかした へいしは しょばつだが
こっかこうむいんは せんそうへの さんかを もとめられる だが じたくで
テレビなどをきいていて しょくむを ほうきする のなら それはのがれているとみなされる。
ながのけんの ひっとてみな よそからきたひとたちなんだよな
0152デフォルトの名無しさん
2006/08/06(日) 20:25:00おんなは ちぶさを こしのあたりから かたまで りょうてでさするように
なるけど けっこんも あいての こっかの なるけど
おとことか やんなっちゃうな やんなっちゃうな やあんなんちゃうな なんてね
0153デフォルトの名無しさん
2006/08/06(日) 20:43:50ブリトンぞくの ちがながれてる ブリュウターニちほうに あった
あいつは かわってすまったんだよ せんそうに いって
かんぱあい じゆうの めがみのような かっぷを もって
ぶどうしゅを おんなも きれいなのはいっぱいある せんりひんも ある
せんそうに さんかした うばいたかった うめえうめえ じゆうのめがみの かっぷのようにつがれた ぶどうしゅを
えんかいだ さあ せんそうの うばいとった つまり さんかしたかった わけね
ながのけんの っぜんこうじたいらの じんこうは せいれき1900ねんから 500ねんまえは
13せいきだと おもうが
じつは 15せいきからは は にほん のよそからきた ながのけんの っぜんこうじたいらのじんこう15にん から はじまった とつたえられている。
てんぷるとん てんぷるとん くびらいさま すくいをあたえてください
クンパルベル さま すくいをすくってください はーんこくの みなまなさまに はーんさまから つたえが あるそうです。
うまって ものすごく はやいんだもん 1900ねんからの カーね かざりたてるのは
0154デフォルトの名無しさん
2006/08/06(日) 20:54:18まんがの しっずかなるっどううううは げんだいの かいしゃのことをかいてる
つまり しゅじんこうが かいしゃいんね そうして あんなもん げんだいには ないよ
ビジネスというのは なんだよね
ほうりつの しょうyもん を たてに びじねすを する つまり かいしゃね
ながのけんの きぎょうに ぴたりこの さいごだとおもう
つまり いくっら やっても だもん
いつのまにか なかまに なっちゃたんだよね けいさつしゅたいの げーむなんてやらに
ひやあ てつどうの れーるの しなりつけたのも
かきこんだ おれと はなせるにんげんが いないんだよな つまり だれも わかんないって
ぼくは うんこから はんばあがあ に はさむ にくに そっくりな うんこかこうひんを つくってみせる
けっきょく ねえ わりきれないのが よのなか だから なんとも してないの
つまり どうでもいいの、 いくっらやっても なのが しょうばい しょうばい なのよ
だから ぴったりの さいごなわけ せまいちいきの さんかがた なかまの きぎょうぐんには
0155デフォルトの名無しさん
2006/08/06(日) 21:49:35をしめていた くろーんかぎじゅつを もちいて くろーにんぐ つまり てんしゃとか いうのだが
もちいて うまれた
3じゅうれんさの せんしょくたいの いくつあるかは っずのうかつどうとは かんけいが ない
3じゅうれんさの いでんてきこうっぞう つまり 3じゅうれんさのせんしょくたいこうっぞう
は ただ そうだ つまり だけだ
2じゅうれんさの せんしょくたいの こうっぞうは 3じゅうれんさの せんしょくたいの こうっぞうよりは
ふくっざつだ。
0156デフォルトの名無しさん
2006/08/06(日) 21:52:29こうっぞうを もっていた じんるいの そせんから くーろんかぎじゅつ つまり くろーにんぐ てんしゃ
ぎじゅつを もちいて じんるいの そせんが うまれた
0157デフォルトの名無しさん
2006/08/06(日) 21:58:00べとなむで げんちでは つまり じてんしゃさ のってたんだが グラスファイバー製の
ぼうだんそうち
0158デフォルトの名無しさん
2006/08/06(日) 22:03:010159デフォルトの名無しさん
2006/08/06(日) 22:15:10あるひとに よると だが
ようろっぱのたいりくには はくしょくけい3じゅうれんさ
うわさによると ちゅうごくから にげてきた えいこくじんは にほんじんが きらいで
えいこくじんは ちゅうごくよりらしい。
こーかさすちほう 500まんにんの きゅうじんを ついそう きじゅつも ある つかわれたうまの ちくさんえきとうほう きげんせ”んには
もうあった
0160デフォルトの名無しさん
2006/08/06(日) 22:23:05はくじんが ゆうごくから きた きゅうじんから しんかしたというせつも ある らしい。
にほんの とっきょに みくだすというのが ある つまり2じゅうれんさこうっぞう が えらいというのだ
くるまを うんてんするには えらいんだというのを すてるのだが なかなか
くるまを つくるのは くらいでないと くるまのうんてんは むっずかしい。
0161デフォルトの名無しさん
2006/08/06(日) 22:33:07りゆうは 人類が かつやくしたのは わずかなきかんだったという ふれーっずが しっくりくるからだ。
人類のれき終にしゅう止符を うつんじゃ ないだろうかなあ 2じゅうれんさのかんじをかんがえる
0162デフォルトの名無しさん
2006/08/06(日) 22:40:120163デフォルトの名無しさん
2006/08/06(日) 23:37:460164デフォルトの名無しさん
2006/08/07(月) 00:14:05とはいえ、環境音を抑えるヘッドフォンもあるぐらいだから、十分早く打ち消す音を発生させればある程度音量を抑える事はできるんじゃないだろうか?
0165デフォルトの名無しさん
2006/08/07(月) 08:11:44周期性がないとかえって五月蝿くなるだけのような
0166デフォルトの名無しさん
2006/08/07(月) 08:47:14逆位相波を重ねて雑音を消す技術は既に色々応用されていますが何か。
0167デフォルトの名無しさん
2006/08/07(月) 10:49:05だからスピーカーで音を消すにはスピーカーがエネルギーを吸収しなければいけない。
だったら吸音剤をおいた方がいいよね。
ただね、
ダクト内部のような場合は、出口で丁度圧力変化がゼロになるようにしてやれば
外に出ないというのはあるよね。 でもダクトの中のエネルギーは増えている。当然だよね。
高速道路なんかの壁のスピーカーも同じ理屈だね。
0168デフォルトの名無しさん
2006/08/07(月) 11:38:05吸収しなくても逆方向のエネルギーをぶつけりゃいいじゃん。
吸音材ができることなんてタカがしれてる。
0169デフォルトの名無しさん
2006/08/07(月) 12:05:03エネルギーはその2乗項なので、物理量が虚数にならなければエネルギーは消滅しません。
つまりマイナスのエネルギーというのは無いのです。
もしかして、マイナスのエネルギーという意味を、
エネルギーを閉じ込めて、その閉じ込めた空間で吸音=熱エネルギーへの変換を行うとい
う意味に使っているのかもしれませんが
0170デフォルトの名無しさん
2006/08/07(月) 12:13:35この世の引力と反発力に♪
符号の違いに意味があるのならば
あなたは浮きますか?
0171デフォルトの名無しさん
2006/08/07(月) 12:14:48音は波なので逆相を重ねりゃ弱くなる。つりあいとって合力0にすりゃいいだけ。
あんた、頭悪いね。
0172デフォルトの名無しさん
2006/08/07(月) 12:25:39音は圧力と運動量が交換しながら伝わってゆく
でも圧力はスカラーだけど、運動量は方向成分を持った(つまりベクトル)
で圧力も場の上にあるから、
逆相を重ねるには3次元上に圧力コントロールを行える装置を配置しなければならないわけだ。
ダクトの中や、ヘッドホンのようにその一点に絞ればその点だけをコントロールする事は可能だが
音に音をぶつけてエネルギーを吸収する事は出来ない。
0173デフォルトの名無しさん
2006/08/07(月) 12:36:330174デフォルトの名無しさん
2006/08/07(月) 12:39:37任意の3次元空間で音が消せるというなら、
ハイファイ対応のハウリングキャンセラーなんて簡単に作れると思ってるんだろうな
0175デフォルトの名無しさん
2006/08/07(月) 12:46:040176デフォルトの名無しさん
2006/08/07(月) 12:47:050177デフォルトの名無しさん
2006/08/07(月) 13:05:170178デフォルトの名無しさん
2006/08/07(月) 13:34:100179デフォルトの名無しさん
2006/08/07(月) 13:40:07クインケ管
ttp://www.geocities.co.jp/Technopolis-Mars/8494/NEWS/ypc147/ypc147.htm
0180デフォルトの名無しさん
2006/08/07(月) 16:21:530181デフォルトの名無しさん
2006/08/07(月) 17:39:23http://www.cepstrum.co.jp/products/anckit/ancbasic.html
まさしくクインケ管の原理で
上流下流と書いてるように、左からの音を消すというより
左からの音を反射している。 つまり仮想の壁を作る技術にすぎない。
0182デフォルトの名無しさん
2006/08/07(月) 17:47:19ヘルムホルツ共鳴器に換えてしまっているのかもしれない。
0183デフォルトの名無しさん
2006/08/07(月) 17:55:33A ----++++----++++----++++----++++----++++
B ++++----++++----++++----++++----++++----
A+B なら完全に消えるけど、
スピーカーからの音は左右に反対位相(反対進行方向)で伝わる
++++----++++----++++----++++----++++----
+++----++++----++--++----++++----++++---
++----++++----++----++----++++----++++--
+----++++----++------++----++++----++++-
----++++----++---++---++----++++----++++
この進行波を加算すると、スピーカーの所で反射されているのと同じ
0184デフォルトの名無しさん
2006/08/07(月) 18:08:53ダクトを2又にすれば、片方の通路の音は当然1/2になる。
つまりそこで反対位相で振幅1/2になるようにスピーカーをコントロール出来れば
スピーカーがエネルギーを1/2吸収した事になる
0185デフォルトの名無しさん
2006/08/07(月) 18:34:22明かりを壁が αだけ吸収し (1-α) 反射するとする。
反射した光は再度反射するから (1-α)+ (1-α)^2+ (1-α)^3 .... と無限に反射する
部屋の明るさは 真っ黒な壁の部屋にくらべて Σ(1-α)^n 倍明るくなる。
αが小さくなると、この倍率はとても大きくなる。
白い壁、明るい色の床の狭い部屋は蛍光灯1灯でも十分明るい。
しかし、壁に黒い学生服をかけるだけで突然暗くなる。
学生服が光を吸収してしまうからだ。
同じ事は音についても言える。 部屋の中で音は壁で何度も反射される故に音は大きくなる。
この原理で増幅された音は、一箇所で吸音するだけで一瞬で小さくなる。
これを電気的に起こせば
0186デフォルトの名無しさん
2006/08/07(月) 18:38:130187デフォルトの名無しさん
2006/08/07(月) 21:08:440188デフォルトの名無しさん
2006/08/07(月) 22:52:230189デフォルトの名無しさん
2006/08/07(月) 23:27:28・既に届いてる音に対して、プログラムで対処するなら>>150の言うように周期性から予測して打ち消すしかない
・上記方法の場合でも環境依存をどう対処するか(マイクとヘッドホンの配置と特性、PCの構成等)
>>143
汎用的な物は限りなく無理に近いと思うけど、
環境依存覚悟で実験してみる価値はあるんじゃね?
0190デフォルトの名無しさん
2006/08/08(火) 01:49:16それとどんなに大声でしゃべっても通話相手にしか聞こえないマイクもほしい。
超音波ですんごいピンポイントの指向性もったスピーカー作ったのあったじゃない。
あの技術とか使ってできないかな。
0191デフォルトの名無しさん
2006/08/08(火) 03:00:21>音消してくれるエアーカーテンほしいよね。
音波レンズというものがあるので、焦点が自分の方に来ないようにしてしまえば
エアカーテンに相当するものは可能だと思う
3次元に広がる音をピンポイントで消すには
上で何度か言われている(言ってるひとは勘違いしてるみたいだけど)
逆位相の部分での干渉を利用すれば出来なくはない
ただしピンポイントなので他の場所は静かにならないし
3次元的にはエネルギーも決して無くなる訳ではない
>それとどんなに大声でしゃべっても通話相手にしか聞こえないマイクもほしい。
>超音波ですんごいピンポイントの指向性もったスピーカー作ったのあったじゃない。
>あの技術とか使ってできないかな。
すこしずらした非可聴周波数音を二つのスピーカーから発生させて
その二つのベクトルの交わる部分のみずれからくるうなりで
可聴周波数を再現するという話が出たことがあると思う
0192デフォルトの名無しさん
2006/08/08(火) 07:50:58その位置だけ消音といっても、3次元空間内でそういう点を作るのは難しい
もし可能だとしても、そこで定在波を作ってるようなものなので、
節と腹が生じる。 節で音量がゼロなら、腹では音量は2倍になるという事になる。
耳が2つあり音速は330メートル/秒程度なので、300Hz以上では
両方の耳に節が来るような定在波を作る事は出来ない
0193デフォルトの名無しさん
2006/08/08(火) 08:03:120194デフォルトの名無しさん
2006/08/08(火) 08:06:10330 [m] / ( 300 [Hz] × 2 ) = 0.505 [m]
>>192の頭の直径は 50cmしかないんだよ。
0195デフォルトの名無しさん
2006/08/08(火) 08:06:440196デフォルトの名無しさん
2006/08/08(火) 08:49:17>>>192の頭の直径は 50cmしかないんだよ。
充分でかいよ。漏れの肩幅でさえそんなにないよ。
0197デフォルトの名無しさん
2006/08/08(火) 09:04:39ただソフトウェアでとなると遅延時間がでかくなるから(一番でかいのはA/D/Aレイテンシー)、
そうとう条件は厳しくなるだろうね。
0198デフォルトの名無しさん
2006/08/08(火) 09:48:32子供の頭?
0199デフォルトの名無しさん
2006/08/08(火) 09:50:180200デフォルトの名無しさん
2006/08/08(火) 09:58:030 90 180 270 360
---______---~~~~~~---______---
節 腹 節 腹 節
波長が 1メートルなら 腹はその1/4と3/4のところだ
0201デフォルトの名無しさん
2006/08/08(火) 10:07:070202デフォルトの名無しさん
2006/08/08(火) 10:07:26逆相で音を弱くするので実用化されてる例は、
踏み切り、病院、救急車、消音ヘッドフォン、高速道路、新幹線の線路などなど。
0203デフォルトの名無しさん
2006/08/08(火) 10:24:500204デフォルトの名無しさん
2006/08/08(火) 11:07:10丁度頭の中央を狙えばそんなものじゃないの
頭の幅のデータ
ttp://homepage3.nifty.com/orangejuice/head2.html
平均
男 16.2cm
女 15.6cm
0205デフォルトの名無しさん
2006/08/08(火) 14:09:44圧力と|速度| って 90度位相差が出るのは定在波の時だけで 進行波は同相だったのか
0206デフォルトの名無しさん
2006/08/08(火) 14:23:47熱膨張で進行波を打ち消してしまうというのはどうだ?
0207デフォルトの名無しさん
2006/08/08(火) 14:55:090208デフォルトの名無しさん
2006/08/08(火) 15:47:210209デフォルトの名無しさん
2006/08/08(火) 21:19:28それとも、無きゃ作っちまえ、なスレですか?
0210デフォルトの名無しさん
2006/08/08(火) 22:43:58それがローカルルールの範囲内の質問なんですか?
0211デフォルトの名無しさん
2006/08/09(水) 08:00:56波形をマウスで作ったりしたってまともな音にならない
0212デフォルトの名無しさん
2006/08/12(土) 08:12:360213デフォルトの名無しさん
2006/08/14(月) 02:21:43ご存知でしたらどなたか教えていただけませんか。デコーダはあるんだけど。
0214デフォルトの名無しさん
2006/08/14(月) 03:06:13ない
つか、もし配布元が問題ないといっても、F社やらT社は絶対それを認めないだろ
0215デフォルトの名無しさん
2006/08/14(月) 17:50:08ではMP3のエンコーダ自体を自ら実装すれば問題のでしょうか?
0216デフォルトの名無しさん
2006/08/14(月) 18:15:24フォーマット自体には特許の及ぶところではないというのは当たり前になっているわけで、
それゆえに、LZWの特許が有効だったときも無圧縮GIFは問題無いという考えが主流だった
そう考えると、確かmp3も圧縮アルゴリズムの特許は例の2社が持っていたはずで、
それなら無圧縮mp3は問題ないことになる。
だが、それってmp3の意味無いじゃん。
0217デフォルトの名無しさん
2006/08/16(水) 13:41:26しかし、あれは酷いやり方だな。
賛同はできん。
素直にソースだけ公開しとけば問題ないのに。
0218デフォルトの名無しさん
2006/08/16(水) 23:44:51C#.NETで、DirectSoundのSecondaryBufferのエフェクトを使ってみたんだけど、
バッファに書き込んでから音が鳴るまでの時間が200msecくらいもあって、結構使えない。
そこで腹をくくってその辺りの処理を自前でやろうかと。
複数のwaveを鳴らして、その合成音にリアルタイムにリバーブエフェクトをかけるのって、
再生用バッファにwaveを加算(サンプル毎足し算)
その波形に対して随時インパルス応答を適用する
こんな感じで合ってますか?
0219デフォルトの名無しさん
2006/08/17(木) 07:05:550220デフォルトの名無しさん
2006/08/17(木) 08:37:15ファイル名が入れ替わったりするバグありますよね?
0221デフォルトの名無しさん
2006/08/17(木) 08:54:040222デフォルトの名無しさん
2006/08/17(木) 10:07:16ASIOとかWDMとかに最適化しないとめちゃめちゃ遅れるよ。
0223デフォルトの名無しさん
2006/08/17(木) 16:09:30翌日の朝やればいいじゃん
0224218
2006/08/17(木) 17:29:50処理に糞時間かかった。。ノイズもいっぱい。
このやり方じゃダメですか?
ちなみに使ったインパルス応答
ttp://noisevault.com/nv/index.php?option=com_remository&Itemid=29&func=fileinfo&filecatid=55&parent=category
これのm1_44.wav
>>222
うちのオンボードじゃASIO4ALL入れても無理でした。
0225218
2006/08/17(木) 17:52:43飛び出したサンプルだけとりあえず範囲内に凹ましてみたけどノイズは和らいだだけ。
やっぱりその周辺も同じ比率でなだめないといけない?
処理に時間かかって仕方なす
0226デフォルトの名無しさん
2006/08/17(木) 18:04:28といってFFTで掛け算回数を減らす高速化をするとブロック処理になって、希望じゃないでしょ。
だからリバーブなら思い切って一定時間の遅延にしてしまうのがいいんじゃないの?
その遅延にIIR2時のLPFかければそれらしくなるさ。
0227デフォルトの名無しさん
2006/08/17(木) 18:59:33リアルタイム性を重視してリバーブをかけるなら、
ディレイ時間の違うIIRフィルタの結果をさらにIIRフィルタに通すのが基本。
今のCPU速度だとゲームでコンボリューション・リバーブは非常識。
0228デフォルトの名無しさん
2006/08/17(木) 19:13:01幾分ハードウェア処理だから軽いだろ
0229218
2006/08/17(木) 21:29:11ttp://www.morikita.co.jp/soft/7832/iir2.c
フィルタが悪いだけ?良いフィルタのサンプルは無いだろうか。
>>227
フィルタ1の出力をフィルタ2の入力にして、その出力を適用という作業をサンプル毎に行う
と解釈してみた。
>>228
SDKが見つからないよう
0230デフォルトの名無しさん
2006/08/17(木) 22:34:370231デフォルトの名無しさん
2006/08/17(木) 22:43:590232デフォルトの名無しさん
2006/08/18(金) 06:37:492次のIIRフィルターは LPFならf0とQで係数が決まるけど、それぞれいくらにしてるの?
Q=0.7程度にして f0を変化させてみたら?
それから、あくまでも遅延した方にだけIIRをかけて、元の信号と加算するんだよ。
加算した結果飽和するなら音量を下げるAGCを使うか
飽和しないように a , (1-a) の比率で加算するか
0233デフォルトの名無しさん
2006/08/18(金) 12:05:06そのレベルならとりあえず1次のLPFでやってみたら?
過去ログ のレス14より
http://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段するといいよ
0234218
2006/08/18(金) 19:48:30そういえばさっきから全然残響音が出ないなぁと思って考えてみたんだけど、
1サンプル前じゃなくてもっと前のサンプルをフィードバックすれば良かったのか!?
っと気づいてから今更>>226の意味を理解した。ぁーぁー
それから1次なり2次のIIRを掛けて高音減衰させれば良い感じになるのか。
一応これでそれっぽいのは聞こえるようになったよう。みんなありがとうヽ(゚∀゚)ノ
後はこれとミキシングがどのくらいのレスポンスで出来るかどうかー
0235デフォルトの名無しさん
2006/08/18(金) 19:52:510236デフォルトの名無しさん
2006/08/19(土) 01:44:34音程変化の内速度調整を実装したところ、
再生速度を0.5倍にするところまでは非常にスムーズな音でこれを実現できました。
しかし、0.5を下回る倍率(〜x0.4)になった途端、音声が毒電波状態です。
現時点での実装は
・ブロックの間引き(重複)
・ブロックの窓関数処理
のみで、
・空白を優先
・繰り返しを配慮
という二点は実装していません。
自分の作っているプログラムでは効率が悪すぎて、
この二点を実装しようとすると処理時間が不足するおそれがあり、
何よりこの二点の効率の良い実装方法が思いつかなかったので。
よくよく考えてみると、この機能を実装しているプレイヤの内のいくつかは、
やはり0.5倍を下限に置いている様なのですが・・・。
何か良い解決方法はありますでしょうか?
また、それはどのような方法か教えてください。
0237デフォルトの名無しさん
2006/08/19(土) 03:24:130238デフォルトの名無しさん
2006/08/19(土) 05:11:04かけてから処理すべきとこなんじゃないの
0239デフォルトの名無しさん
2006/08/19(土) 07:28:47そうじゃないと折り返し雑音が問題になる。
綺麗な音にしたいなら、最低2倍のオーバーサンプリングしておいた方がいいかもね。
音程が変らずに再生速度だけ変化させてるならサンプリング定理の問題じゃない
0.5を下回る場合に問題が出るという事は
0.5を下回ると同じ音を3度以上繰り返し利用しなければならなくなるけど
その処理がはいってないんじゃないの
0240デフォルトの名無しさん
2006/08/19(土) 09:10:42書き方が悪くてすみません。
「音程を変化させずに速度変化をした」
処理です。
>>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;
}
/* [書き込み用バッファを再生バッファにコピー] */
という感じでの実装です。
なんだっけ、グラフィックとかで良く使う「斜めの直線を整数型のみで計算するアルゴリズム」を応用した感じなのですが。
0241デフォルトの名無しさん
2006/08/19(土) 09:12:30改行と書き込みがメッセとは逆だから間違えるなぁ・・・
とりあえず、お二人のご意見から
オーバーサンプリング+アンチエイリアスについても実装を検討してみます。
0242デフォルトの名無しさん
2006/08/19(土) 09:16:02240で示したソースの中で、i以外の変数はすべて
クラススコープです。iのみがメソッドスコープになっております。
readCountがメソッド呼び出し毎にリセット、というわけではありません。
おまけに分かりづらくてすみません・・・。
0243デフォルトの名無しさん
2006/08/19(土) 09:24:22だったら オーバサンプリングとかLPFは必要ないよ。
で、やっぱり3度利用する部分に単純にバグがあるのだと思うよ
もっとも3度も利用すると違和感があるという事なら当然そうだろうけどね
あまり2倍以上遅くする場合は、やっぱり無音期間を検出して、そこを出来るだけ引き延ばす方がいいと思うよ
たとえば0.1秒のブロックを0.05くらいに小さくして、そのブロックの音量が今までの音量より一定比率より小さいなら、
その部分の繰り返し回数を出来るだけ多くするとか
0244デフォルトの名無しさん
2006/08/19(土) 09:31:35短縮で0.1秒単位に2ブロック以上連続してすてるようになると、音声だと何を言ってるのか判らないようになってしまう。
そこまで強力に短縮するなら、
まず周期性を検出して周期の整数倍の
もっと小さいブロック (1/30)〜1/60のような(ブロックというよりgranul) サイズにして
それを捨てるようにする。必要があるよ。
0245デフォルトの名無しさん
2006/08/19(土) 09:35:110246デフォルトの名無しさん
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秒分のデータが書き込まれる
という感じに機能するので・・・。
0247デフォルトの名無しさん
2006/08/19(土) 09:48:58次善は、周期を検出してその周期の整数倍にgranulを切り出して
それを並べる
音声の場合は周期の揺らぎが音声らしさを作ってるから
母音の部分の極端な引き伸ばしは巧くゆかないけどね(周期性が増すと声が変ってしまうから)
やらないよりはマシ
0248236
2006/08/19(土) 09:52:20・・・分かり切ったことを聞いたようで、すみませんでした。
しかしそうすると演算量が極端にあがるなぁ・・・
全量ノルムチェックと倍速調整か・・・うは、頭いてえ
0249デフォルトの名無しさん
2006/08/19(土) 10:07:55周期検出の方が計算コストの低いのを探すのは大変でしょ
0250236
2006/08/19(土) 10:22:12やぁ、せっかくあちこちダイエットしたのになぁ、ってボヤキです。
再生に関係しない他のところが処理コスト食い過ぎで、
再生するとCPU利用率が3%くらい跳ね上がるもんですから。
実質的な問題はただ単に面倒くさいだけです、本当にすみません。
0251デフォルトの名無しさん
2006/08/19(土) 10:23:570252236
2006/08/19(土) 10:32:11いや、やめておこう
0253デフォルトの名無しさん
2006/08/19(土) 10:40:30毎サンプルデータ毎に
Xを入力 Yを出力 配列をM, rwp,
Y = X*(1-g) + LPF( M[ (rwp +T) % SIZE] ) *g
M[rwp] = Y
rwp=rwp % SIZE;
てな計算になるだけだから、別に遅延などそう必要ないでしょ
0254デフォルトの名無しさん
2006/08/27(日) 18:27:580255デフォルトの名無しさん
2006/08/30(水) 15:08:42どのようなのがありますか?
0256デフォルトの名無しさん
2006/08/30(水) 16:11:140257デフォルトの名無しさん
2006/08/30(水) 23:33:240258デフォルトの名無しさん
2006/08/30(水) 23:36:440259デフォルトの名無しさん
2006/08/31(木) 10:30:18フィルタ使うのが軽い。
0260デフォルトの名無しさん
2006/08/31(木) 10:31:420261デフォルトの名無しさん
2006/08/31(木) 13:25:22どういう風に使ってるんだろう。
単純に区間に区切って FFT かけて周波数を n 倍して戻すのって、
時間軸で重複させるのと等価だよなぁ。
位相をうまく合わせればちっとは良くなる気もするが、窓関数かけてたら
ほとんど影響なさそうだし。
0262デフォルトの名無しさん
2006/08/31(木) 14:44:40ヒント:フォルマント
0263デフォルトの名無しさん
2006/09/01(金) 07:53:320264デフォルトの名無しさん
2006/09/01(金) 15:20:35これ試したことあるけど、まともな音にならない。
長い区間をフーリエ変換しても、意味のある情報は得られないと思う。
> ピッチシフトは周波数軸での単なるシフトではなく、指数的移動なので
これの意味が良くわからん。定数倍すりゃいいだけじゃないの?
0265デフォルトの名無しさん
2006/09/01(金) 19:12:02恐らく「音程」に対して周波数係数が「指数」になるって言いたいんじゃないかな。
音程 周波数
-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
だから・・・
まあ何かを勘違いしている恐れがあるけど
0266デフォルトの名無しさん
2006/09/01(金) 20:15:03たとえば 2^(+1/12) = 1.05946309435929526 となって綺麗な比率にはならない
特に低周波は目が荒くなるわけで
これを旨く処理するには exp(2πki)という指数=三角関数が必要にならない?
0267デフォルトの名無しさん
2006/09/01(金) 22:00:18指数的な補完が必要ってことか。なるほど。そこまで考えてなかった。
でも、上にも書いてあるけど、周波数軸を a 倍するのって
時間軸を 1/a 倍するのと同じだよね。(音量は a 倍違うけども)
FFT 使う意味がいまいち分からないなぁ。
0268デフォルトの名無しさん
2006/09/01(金) 23:23:01綺麗な比率では無いけど考え方はあってるんじゃないの。
周波数軸上でスペクトルを上下させるのがピッチシフトだっけ?
0269デフォルトの名無しさん
2006/09/02(土) 11:50:35たしかに。
下限周波数 f_low [Hz]で周波数スペクトルを測定するには、
有限の時間1/f_low [sec.]かかるので、
結局のところグレイン・サイズ 1/f_low [sec.]で
グレイン操作して、ピッチシフトを表現することしかできないね
0270デフォルトの名無しさん
2006/10/05(木) 00:10:57ttp://pc.watch.impress.co.jp/docs/2004/0204/nishikawa.htm
ttp://www.drk7.jp/MT/archives/000120.html
0271デフォルトの名無しさん
2006/10/11(水) 18:43:00誰か教えてくれません?
0272デフォルトの名無しさん
2006/10/11(水) 22:35:32と思った
0273デフォルトの名無しさん
2006/10/11(水) 22:37:450274デフォルトの名無しさん
2006/10/12(木) 00:30:37asioCallbacks.bufferSwitch = &bufferSwitch;
asioCallbacks.sampleRateDidChange = &sampleRateChanged;
asioCallbacks.asioMessage = &asioMessages;
asioCallbacks.bufferSwitchTimeInfo = &bufferSwitchTimeInfo;
誰か音を出す方法を教えてくださいな。
0275デフォルトの名無しさん
2006/10/12(木) 00:57:17再生するサンプルソースがあると思うけど要するにその辺のcallback定義して開始すると
ASIOのsystemからbufferSwitchTimeInfo()が呼ばれる。
その中で要求された形式に応じてbuffを充填して戻る
無音だかを再生するサンプルがあると思うんで〜Info()にbreakpoint貼って
要求されたcaseのmemsetを適当な波形を返すようにしてみるとか、その辺からやってみては。
0276デフォルトの名無しさん
2006/10/25(水) 23:43:20さんくす!
でもなんか音が途切れ途切れ。。。ブツブツだわ。
どうしたらスムースになるんだ?
誰かわかる人助けてください。
0277デフォルトの名無しさん
2006/10/28(土) 04:28:22ファイル書き出し機能を作ってから聞けばいいのかもしれないのですが、
書き出し機能を作るときからおおまかな部分について知っておいた方がいいかなと
思いましたので、質問です。
キャプチャして録音しながら
DVDレコーダなんかでよくあるタイムシフトの機能を扱いたいと思っているのですが、
どういった手順になるのでしょうか?おおまかな流れについて教えて下さい。
waveもしくはmp3をストリームして録音しているときに単純にそのファイルを
開いて再生するだけなのでしょうか?
それとも、何かあらかじめ準備しなければならいことがあったり
特別な手順を踏んでタイムシフト用のファイルを作ったりしないといけないのでしょうか?
mp3でタイムシフトやるときとwaveでタイムシフトやるときのファイル形式による懸念点などありましたら、
それも教えて欲しいです。mp3でやってもwaveでやっても一緒なのでしょうか?
0278デフォルトの名無しさん
2006/10/28(土) 09:19:090279デフォルトの名無しさん
2006/10/28(土) 09:20:000280デフォルトの名無しさん
2006/10/28(土) 12:41:11FILE_SHARE_READでCreateFile()してやればいいんじゃね?
録音用のHANDLEと再生用のHANDLEで別にCreateFile()すればseek位置で干渉しないし。
wavはLR&チャンネルのバウンダリさえ気をつければどっから再生しても問題無いけど、
mp3は[4バイトのヘッダ+データ]のブロック単位でシークする必要がある。
てかmp3使うならエンコード/デコードのライブラリが必要。
フリーで転がってるソースはエンコはgogo、デコードはmpg123辺りかなぁ。
0281277
2006/10/28(土) 18:54:05どうも、ありがとうございます。
それほど複雑な処理を必要としないさそうで、ちょっと安心しました。
waveとmp3でやり方が大きく違いそうだということもわかりました。特にmp3は敷居が高そうですね。
とりあえずwaveでタイムシフトを実現させることを目指そうと思います。
こんなプログラムは探せばに既にあるんでしょうけど、勉強を兼ねて自分でやってみようと思います。
ありがとうございました。
0282デフォルトの名無しさん
2006/11/02(木) 18:55:560283デフォルトの名無しさん
2006/11/02(木) 20:40:100284デフォルトの名無しさん
2006/11/03(金) 01:30:14何が知りたいの?
0285デフォルトの名無しさん
2006/11/04(土) 15:55:440286デフォルトの名無しさん
2006/11/05(日) 00:01:03録音したデータにFFTをかけたいんですが、
データの渡し方が分かりません。
http://adlib.rsch.tuis.ac.jp/~akira/unix/ossprog/src/short/parrot.c
録音は↑のプログラムをベースにしています。
どなたかアドバイスをお願いします。
説明不足だったらすみません。
0287デフォルトの名無しさん
2006/11/05(日) 00:14:45> linuxでC言語使ってサウンドプログラミングやってます。
> 録音したデータにFFTをかけたいんですが、
> データの渡し方が分かりません。
ここで聞くような内容じゃないだろ。
プログラム初心者板にでも行った方が幸せになれる。
0288デフォルトの名無しさん
2006/11/05(日) 00:25:33データが納まってるのでそれを処理すればよい。
0290デフォルトの名無しさん
2006/11/05(日) 02:00:31time WavAmp
1 1.235
2 -0.256
3 8.242
4 -0.319
…
みたいな感じで、テキストデータに保存できるソフトです
0291デフォルトの名無しさん
2006/11/05(日) 02:12:00質問する板が違います
二度と来るな
0292デフォルトの名無しさん
2006/11/05(日) 02:13:06質問する板ってどこ?
0293デフォルトの名無しさん
2006/11/05(日) 02:41:50自分で作ればこの板でおk
0294デフォルトの名無しさん
2006/11/05(日) 03:12:10実は自分でもジャンルがよく分かってないんです。
フーリェ変換や波形分析するのはここのスレの人なのかなって
スレ一覧見て思ったので聞いてみたのです。
完全体セルの「笑えよベジータ」って声があるんだけど、それをフーリェ変換したら
どうなるのかなと思ったもので。
フーリェ変換のプログラムは持っているので、
あとは時間きざみごとの波形データが数値として取れれば…
0295デフォルトの名無しさん
2006/11/05(日) 03:18:53wavか何かに変換すればいいんじゃね?
0296デフォルトの名無しさん
2006/11/05(日) 03:51:06wavに変換すれば解析可能なソフトがあるってことですかね?
何しろ、サウンドプログラミングはズブの素人なのです。
確か、数秒のファイルでもwavにすると500KBくらいになりますよね。
プログラムのソースで500KBって結構なデータ量になります。
音楽データにどのような情報が入っているのかは分からないのですが、
ただ、欲しい情報は「波のきざみ幅」と「きざみ幅ごとの振幅」の
二つのデータなのです。
単純に波の振幅と刻幅を抽出するソフトがあれば紹介してもらいたいのです。
プログラム板一覧を見て、このスレの人なら知ってる人がいるのかなと思って質問しました。
0297デフォルトの名無しさん
2006/11/05(日) 03:59:530298デフォルトの名無しさん
2006/11/05(日) 04:02:590299デフォルトの名無しさん
2006/11/05(日) 19:18:270300デフォルトの名無しさん
2006/11/05(日) 22:32:01バイナリから直に数値データって取れんの?
0301デフォルトの名無しさん
2006/11/05(日) 22:59:31普通に取れるけど、取れても取れなくても、
フリーソフトを使う事をプログラミングとは言わない。
0302デフォルトの名無しさん
2006/11/06(月) 12:40:47普通ってどうやるの?
0303デフォルトの名無しさん
2006/11/06(月) 13:06:21普通にバイナリファイルを読み込めばいい。
バイナリファイルの読み込み方はスレ違い。初心者スレにでも池。
音声ファイルのフォーマットが知りたければぐぐれ。
0304デフォルトの名無しさん
2006/11/06(月) 13:20:44どの言語がお勧め?
0305デフォルトの名無しさん
2006/11/06(月) 13:45:23日本語でおk
0306デフォルトの名無しさん
2006/11/06(月) 14:00:48吹いたw
0307デフォルトの名無しさん
2006/11/06(月) 14:28:46ほんとに知ってて言ってるのこの人?
0308デフォルトの名無しさん
2006/11/06(月) 14:39:36ソフトを自分で作ってやるなら
1、とりあえずMP3ファイルを 16bitWAV形式に変換して保存しよう(ツールは探してね)
2、WAV形式のファイルをバイナリでオープンして、(RIFF+チャンク)で検索してデータを取り出そう
3、かけたいFFTのサイズ以下になるように窓関数をかける -->判らなければ検索してね
4、FFTをかける(ステレオなら2変数を複素FFTでやる方法を使うといいよ)
5、周波数成分毎に絶対値を出しそう
FFTは周波数は比例軸で出るので、大抵は対数軸にしたいと思うので、ココがまあキモになるね
0309デフォルトの名無しさん
2006/11/06(月) 14:51:08短時間FFTを使って ソノグラム表示もどきをやりたいのだと思う
0310デフォルトの名無しさん
2006/11/06(月) 15:12:33短時間FFTはなにかまずい?
0311デフォルトの名無しさん
2006/11/06(月) 15:26:54あ、ありがとうございます。
これで作業の方針をきめられそうです。
御迷惑お掛けしました。
ありがとうございました。
0312デフォルトの名無しさん
2006/11/06(月) 16:03:51まずくはないよ。
等Qの特性で分割して表示したいとか言い出すと、短時間FFTだと逆にメンドクサイだけで
0313デフォルトの名無しさん
2006/11/06(月) 17:24:35環境はOSがWindows2000,IDEはVisualStudio2003です。
まだOpenALのSDKは入れていないのでそのあたりから解説してくれているサイトであると助かります。
0314デフォルトの名無しさん
2006/11/06(月) 17:26:210315デフォルトの名無しさん
2006/11/06(月) 17:31:400316デフォルトの名無しさん
2006/11/10(金) 16:31:33プログラムを全てOpenALに以降することを考えています。そこでお聞きしたいのですが、
DirectSoundベースのプログラムはクライアントPCにDirectXがインストールされていれば
ハードウェアだろうかソフトウェアだろうが問題なく音を再生することが出来ました。
これがOpenALに移行するとクライアント側のPCには最低限何をインストールしておく
必要があるでしょうか?またクリエイティブのサウンドカード(EAXをサポートしたもの)、
その他のサウンドカード、オンボードサウンド、で違いというのは生じますか?
0317デフォルトの名無しさん
2006/11/10(金) 22:49:27公式のメーリングリストで聞けば?
0318デフォルトの名無しさん
2006/11/28(火) 01:48:49変数を二つ用意しても、二つ目を再生するところで
「指定したMIDIデバイスは既に使用されています。開放されるのをまってください」
という警告が出てしまいます。
mmsystem.hを使う方法で解決策はないでしょうか。
0319デフォルトの名無しさん
2006/11/28(火) 02:11:07MIDIデバイスを二つ用意したら?
0320デフォルトの名無しさん
2006/11/28(火) 02:16:24MIDIデバイスを二つ用意とはどのようにすればよいのでしょうか?
ハード面でということですか?
環境としては、PCにMIDIインターフェースをつなぎMIDI音源で音を鳴らしてます。
0321デフォルトの名無しさん
2006/11/28(火) 03:51:29まず環境を書け。
使ってる言語、OS、再生に使用してるライブラリ、最低このくらいは質問時に書いとけ。
それとデバイスの意味がわからないならそこから調べ直せ。
MIDIはWAVEと違って同一デバイスに複数ストリームを流せないから、
MIDIOUTが2ポートあるデバイスで、例えばSC88なりに別々に流すしかない。
0322デフォルトの名無しさん
2006/11/30(木) 23:47:200323デフォルトの名無しさん
2006/12/01(金) 00:35:280324デフォルトの名無しさん
2006/12/13(水) 02:15:53MM_WOM_DONEなどのメッセージ処理中はwaveOutWriteとか使えないって記述をたまに見るんですけど実際どうなんですか。
0325デフォルトの名無しさん
2006/12/13(水) 07:45:02昔は割り込み=コールバックだったり
タスクスイッチされてなかったりと
0326324
2006/12/14(木) 03:35:2995で大丈夫ならその後でも大丈夫な気がするんですけど。
0327デフォルトの名無しさん
2006/12/14(木) 10:05:4095は2000やXPとは根本的に別モノ。
0328デフォルトの名無しさん
2006/12/14(木) 13:05:500329デフォルトの名無しさん
2006/12/14(木) 18:00:56オーディオストリームのピークホールド処理(過去nサンプル中の最大値を出力)を作っているのですが、
一番安直と思われる方法=過去nサンプルをバッファしといて毎フレームでバッファ内を全サーチ
という方法で作ったところ、ちょっと重いです。高速な方法はないでしょうか。
0330デフォルトの名無しさん
2006/12/14(木) 18:26:501.過去の最高値と今の値を比較し、今の値が高ければ最高値を更新し、カウンタを0に
2.カウンタをインクリメント
3.カウンタが一定値を超えたら、過去nサンプル中の最高値を検出し、カウンタをそこからの値に
ってやりかたはどう? nの値によっては比較回数が減るよ。
0331デフォルトの名無しさん
2006/12/14(木) 18:53:14おー、なるほど、すばらしいです。
聞いてよかった。早速試してみますー
0332デフォルトの名無しさん
2006/12/14(木) 22:04:56ご報告、
入力波形の傾向によっても負荷の具合が変動するってことになりますが
平均して初めの方法よりかなり速いです。まじありがとうございます。
0333デフォルトの名無しさん
2006/12/14(木) 23:09:33それならば「最高値」を2つ持つようにすればどうだ?
それぞれA値・B値と呼ぶことにする。
1.A値と今の値を比較し、今の値が高ければA値を更新し、カウンタを0、B値を0に
2.カウンタをインクリメント
3.B値と今の値を比較し、今の値が高ければB値を更新、カウンタの値を記憶
4.カウンタが一定値を超えたら、記憶しておいた値に更新、A値にB値を代入し、B値を0に
0334デフォルトの名無しさん
2006/12/14(木) 23:10:484. を修正
4.カウンタがnを超えたら、(n-記憶しておいた値)に更新、A値にB値を代入し、B値を0に
0335デフォルトの名無しさん
2006/12/14(木) 23:12:00ともかく、1位だけじゃなく2位も記憶しておけばいいんじゃないかってことだ。
0336デフォルトの名無しさん
2006/12/14(木) 23:54:00試してみるまでもなくダメっぽいな・・・
0337329
2006/12/15(金) 00:04:49実はじぶんもそうゆうの考えたんですがね、ややこしくてあきらめちゃったんですよね。
そう簡単にはいかなかったような・・・
これって一見とても単純な処理なのに、速いアルゴリズム考えようとすると、
思いのほかアレ?て感じゃありません?
だから330の即レスはけっこう目からうろこですた
0338デフォルトの名無しさん
2006/12/15(金) 01:17:37ビデオのメーター見てても2秒毎にリセットしてるだけだよ。
0339デフォルトの名無しさん
2006/12/15(金) 02:15:130340329
2006/12/15(金) 02:17:360341デフォルトの名無しさん
2006/12/15(金) 10:36:30例えば、11025で8ビットのものは、1バイトの音声データの羅列で、
22050で16ビットのものは、2バイトの音声データの羅列で、
22050は、11025の2倍だから、22050を11025にするには、
out[0] = in[1];
out[2] = in[5];
out[3] = in[9];
:
とやってくだけでOKだと思った。
が、音がザーザーです。
0342デフォルトの名無しさん
2006/12/15(金) 10:49:48メーターだとこんなやり方もある。
あなろぐ VU メーターっぽい動き。リミッターにも使えるんじゃない?
過去のpeakを減衰させて現在値と比べる方法。
peak = peak * 0.999; // peak = max(peak-k, 0) でもなんでもいい。減衰するように。
peak = max( peak, current_sample);
0343デフォルトの名無しさん
2006/12/15(金) 10:52:448bit PCM は、ふつー符号無しデータで、0x00が負の最大、0x80が無音、
0xffが正の最大。
0344デフォルトの名無しさん
2006/12/15(金) 10:52:52リサンプリング LPF とかでググってみて。
手を抜く場合には単純に out[0] = (in[0] + in[2]) / 2 とか。
0345デフォルトの名無しさん
2006/12/15(金) 12:30:44いまく行きました。ありがとうございました。
>>344
2バイト値を1バイト値に変換する場合、単に上位バイトを格納すれば良いだけです。
これで、256で除算したことになります。
0346デフォルトの名無しさん
2006/12/15(金) 12:32:37サンプリング周波数 22050Hz のデータから 11025Hz への変換かとオモタ
0347デフォルトの名無しさん
2006/12/15(金) 12:38:0816bitPCMは符合有りなんだっけ?
0348デフォルトの名無しさん
2006/12/15(金) 12:52:55平均取ると何か良くなる?
0349デフォルトの名無しさん
2006/12/15(金) 13:10:50WAVのPCMに関しては、そう。
それ以外の文脈だと、符号有り8bitや符号無し16bitのPCMももちろん使
われることがある。
0350デフォルトの名無しさん
2006/12/15(金) 16:48:16それだとエイリアシングノイズ乗るでそ。
344のでも1/2以上のリサンプリングで乗るけど。
詳しくはFIRとかIIRとかで調べてみて。
0351デフォルトの名無しさん
2006/12/15(金) 17:18:03サンプリングレート変換の時はLPFを通して先に高域をカットしなきゃダメ。
中途半端な周波数落としをするときはウェーブレットなんかで補間したほうがノイズが減る。
0352デフォルトの名無しさん
2006/12/20(水) 14:26:55カットオフ周波数をパラメタとしてリアルタイムで生成したいんですが、
どこかにcコードサンプルとかないでしょうかね?
数学を理解して自分で書くのは無理そうでして・・・
0353デフォルトの名無しさん
2006/12/20(水) 21:48:52幾何学的な手法なら、三次曲線で補完とか、ガウシアンフィルタかける方法もあるぞ。
0354デフォルトの名無しさん
2006/12/21(木) 00:15:30sinc関数 sinc(x)=sin(x)/(x) にあなたの好みの肩特性の窓関数をかけるだけ
だが、あなたの好みが判りません。
0355デフォルトの名無しさん
2006/12/21(木) 00:16:19結局全て LPFなのさ
0356デフォルトの名無しさん
2006/12/21(木) 01:54:43そんなにシンプルな感じなんですか?
でもすいません、sincだけでは意味がわからないです・・・
xはなんでしょう?どこでフィルターの種類やカットオフはどこで決まるのでしょう。
窓はhammingでよいかと思います。
0357デフォルトの名無しさん
2006/12/21(木) 07:05:28sincは検索用のキーワード これで検索しろって意味だ
w:=2*π*f0/fs として
xが0でなければ sin( x * w) /x xが0の時 w
xを整数で±の窓関数の範囲で、窓関数を掛け算
で,ゲインがπあるから、それは除算するし、窓関数のゲイン分も掛け算すると
0358デフォルトの名無しさん
2006/12/21(木) 07:14:27理想LPFと理想HPFは 足せばフラット = 1 になるから 中央値以外は符号が反転するだけだ
0359デフォルトの名無しさん
2006/12/21(木) 10:34:01そうなんだけど、フーリエ変換しないでいいからとっつきやすいかな、と。
0360352
2006/12/21(木) 15:28:35おしえていただいた内容と、徹夜でネットをしらべまくった結果、
数学はさておき、無事うまく動作するコードが書けました。
思ってたよりシンプルなコードになったので驚きです。
ハイパスはローパス用のインパルス応答の振幅が反転された形になるんですね。
プログラムが生成したインパルス応答からフィルタ特性を解析したところ、特性も良好でした。
どうもありがとうございました。
0361352
2006/12/21(木) 21:24:160362デフォルトの名無しさん
2006/12/21(木) 23:33:280363デフォルトの名無しさん
2006/12/21(木) 23:55:150364デフォルトの名無しさん
2006/12/22(金) 01:01:270365デフォルトの名無しさん
2006/12/22(金) 01:48:010366デフォルトの名無しさん
2006/12/22(金) 03:34:300367デフォルトの名無しさん
2006/12/22(金) 07:19:21もう判ったと思うけど 中央の係数のみ 1-a の関係になって、他の係数は負数にすればいいだけ
0368デフォルトの名無しさん
2006/12/22(金) 13:42:29やっと音が出た…orz
0369369
2006/12/23(土) 22:12:57やっぱりスレッド使って処理を分けないとダメか。
0370368
2006/12/25(月) 10:56:31読込処理を非同期にして
少し多くバッファリングしたら
飛ばなくなった。
出来たプログラムはwavの非圧縮PCMしか
再生できないけどなんだか嬉しい。
0371デフォルトの名無しさん
2006/12/25(月) 22:03:51EAXを使ったゲームを起動するととたんに俺のヴォイスにエコーが
かかるようになる。どうもそのPCゲームがEAXを使っているとそれに
つられてマイク入力の音声にもエコーみたいな効果が強制的に
かけられてしまうらしい。これって現状仕方がないことなん(´・ω・`)?
0372デフォルトの名無しさん
2006/12/26(火) 00:08:53板違い。
0373デフォルトの名無しさん
2006/12/26(火) 02:36:50ゲーム系のサウンドプログラムもこのスレの範疇かと。
0374デフォルトの名無しさん
2006/12/26(火) 05:49:50ゲームの設定かOSの設定だろ?
0375デフォルトの名無しさん
2006/12/26(火) 07:49:50ゲーム作ってるの?
0376デフォルトの名無しさん
2006/12/26(火) 10:06:05非サラウンド環境でEAXを使ったら、そらエコーがかかっただけみたいになるがな。
0377デフォルトの名無しさん
2006/12/26(火) 15:12:35クリエイティブのサウンドカードだろ?
仕様だ。
市場を一社独占させるとどうなるかの好例だな。
0378 【吉】
2007/01/01(月) 03:43:350379デフォルトの名無しさん
2007/01/01(月) 13:25:070380デフォルトの名無しさん
2007/01/11(木) 20:06:070381デフォルトの名無しさん
2007/01/15(月) 21:13:430382デフォルトの名無しさん
2007/01/16(火) 20:41:580383デフォルトの名無しさん
2007/01/16(火) 23:35:480384デフォルトの名無しさん
2007/01/17(水) 00:14:210385デフォルトの名無しさん
2007/01/17(水) 10:20:29バタフライ演算をしなけりゃ低速だよ。
0386デフォルトの名無しさん
2007/01/17(水) 16:11:170387デフォルトの名無しさん
2007/01/18(木) 21:42:16/*
Risa [りさ] alias 吉里吉里3 [kirikiri-3]
stands for "Risa Is a Stagecraft Architecture"
Copyright (C) 2000-2007 W.Dee <[email protected]> and contributors
See details of license at "license.txt"
*/
/*
Phase Vocoder (フェーズ ボコーダ ; 位相ボコーダ)の実装
参考資料:
http://www.panix.com/~jens/pvoc-dolson.par
Phase Vocoder のチュートリアル。「ミュージシャンにもわかるように」
書かれており、数学音痴フレンドリー。
http://www.dspdimension.com/
無料(オープンソースではない)の Time Stretcher/Pitch Shifterの
DIRACや、各種アルゴリズムの説明、
Pitch Shifter の説明的なソースコードなど。
http://soundlab.cs.princeton.edu/software/rt_pvc/
real-time phase vocoder analysis/synthesis library + visualization
ソースあり。
*/
0388デフォルトの名無しさん
2007/02/13(火) 23:56:2524bitの場合はどうすんの?
32bitは各サンプルをfloatにぶち込めばOK?
0389デフォルトの名無しさん
2007/02/14(水) 00:31:380390デフォルトの名無しさん
2007/02/15(木) 07:11:45・・・・整数演算の方が早いというような事を言いたい人なら別だが
0391デフォルトの名無しさん
2007/02/15(木) 11:31:3716bitはshortに入れているのに?
0392デフォルトの名無しさん
2007/02/15(木) 12:19:02WAVE_FORMAT_PCM(=1)は整数の8bit,16bitしか定義されてないんじゃね?
0393デフォルトの名無しさん
2007/02/15(木) 13:29:51入れるだけなら自由だ
0394デフォルトの名無しさん
2007/02/15(木) 17:36:110395デフォルトの名無しさん
2007/02/16(金) 00:41:300396デフォルトの名無しさん
2007/02/16(金) 04:09:13全然。
例えばそこらのアプリの音声再生プラグインは、音質よりも軽くしたい場合が多いでしょ。
0397デフォルトの名無しさん
2007/02/16(金) 04:11:090398デフォルトの名無しさん
2007/02/22(木) 20:54:320399デフォルトの名無しさん
2007/02/22(木) 22:06:11加算した後でレベル調整でもすればいいんじゃね?
0400デフォルトの名無しさん
2007/02/22(木) 23:50:530401デフォルトの名無しさん
2007/02/23(金) 07:55:27たとえばA,B,Cを 30%:20%:20% でMIXする場合
int vrA=30;
int vrB=20;
int vrC=20;
int total=vrA+vrB+vrC;
int w= A*vrA+B*vrB+C*vrC;
return w / total;
}
0402デフォルトの名無しさん
2007/02/25(日) 13:09:25みんなありがとう。
やっぱ足して割ればいいのか。
0403デフォルトの名無しさん
2007/03/15(木) 11:42:48ぐぐったけど、どうも該当するものが発見できなかったんで
0404デフォルトの名無しさん
2007/03/15(木) 20:48:500405デフォルトの名無しさん
2007/03/15(木) 21:06:13その辺のシンセとかだと、右チャンネルの場合 L 0% - C 50% - R 100% って変化してたと思う
この場合だとセンターの時音量下がって聞こえるけどね。
DirectXだとセンターが両方とも100%で、右に寄せるときは左を下げてくんじゃなかったかな。
この場合センターの時音が大きく聞こえる
0406デフォルトの名無しさん
2007/03/15(木) 21:22:13> その辺のシンセとかだと、右チャンネルの場合 L 0% - C 50% - R 100% って変化してたと思う
> この場合だとセンターの時音量下がって聞こえるけどね。
つか、左寄せの場合もセンターの場合も右寄せの場合も同じ音量
> DirectXだとセンターが両方とも100%で、右に寄せるときは左を下げてくんじゃなかったかな。
> この場合センターの時音が大きく聞こえる
この場合は正解。センターの時は、左寄せ, 右寄せの時の倍 (+6dB) になる
0407デフォルトの名無しさん
2007/03/15(木) 21:29:00・音のエネルギーは振幅の2乗に比例する
・聴覚は対数特性
この辺がヒントになるかも。
0408デフォルトの名無しさん
2007/03/15(木) 22:24:48PAN振りっきりならスピーカーは1本しか鳴らないけど
センター時は2本同音量で鳴るから音量は3dBアップ。
これを補正するための3dBダウン。
これでL-C-RとPAN移動させても横一直線で移動する。
6dBダウンは再生/演奏時にモノ・ミックスされるケースを想定してのもの。
(回路内のミックスは電圧なので6dBアップ)
ハードウェア・シンセはモノ・アウトも装備する関係でそうしてあると。
0409デフォルトの名無しさん
2007/03/15(木) 22:36:58ん?センターは-3dbでしょ?
20*log(sqrt(0.5^2 + 0.5^2)) = -3.010299956639811
でいいんだよね?
だからDirectXの場合だと+3dbだったと前勉強したときは思ったんだけど・・・
間違ってる?
0410デフォルトの名無しさん
2007/03/16(金) 02:09:490411デフォルトの名無しさん
2007/03/19(月) 12:27:370412デフォルトの名無しさん
2007/03/20(火) 10:48:51frieve
0413デフォルトの名無しさん
2007/03/31(土) 10:17:20それともpitchを変化させるんですか。
0414デフォルトの名無しさん
2007/03/31(土) 10:39:30入力音を二つに分岐させる。
片方にモジュレーション(周波数変調)をかける。
二つを加算して出力。
0415413
2007/03/31(土) 10:55:390416デフォルトの名無しさん
2007/03/31(土) 11:45:55・モジュレーション速度
・フィードバック量
・分岐させた二つの加算割合
などを変化させることによってコーラス/ビブラート/フランジャーなどが作れる。
0417デフォルトの名無しさん
2007/03/31(土) 11:50:26それの大きさで呼び名が変わるってこと?
なんどもすんません。
0418デフォルトの名無しさん
2007/03/31(土) 12:30:34モジュレーション幅が広めで速度が速いとコーラスっぽくて、
モジュレーション幅が狭めで速度が遅いとフランジャーっぽい。
フランジャーの場合はフィードバック量も関係してくることが多い。
0419413
2007/03/31(土) 12:34:580420デフォルトの名無しさん
2007/03/31(土) 12:36:080421デフォルトの名無しさん
2007/04/01(日) 18:59:37一応混じれ酢すると
ふらんじゃー: 数ms以下の短いディレイに変調をかけ、元音とミックスして、
中〜高音域のコムフィルター効果でメタリックな響きを出す
こーらす :数十〜ms程度の比較的長いディレイに変調をかけ、元音とミックスして、
(たぶん超低域のコムフィルター効果で)アンビエントな音のウネリを出す
0422418
2007/04/01(日) 22:34:53補足サンキュ。418では変調速度と変調幅だけしか言及してなかった。
(変調幅を大きくする≒ディレイ値を大きくしないといけない
という勝手な理解をしてしまったよ。)
確かにディレイ値のほうが大きな影響があるな。
0423デフォルトの名無しさん
2007/04/02(月) 00:32:070424デフォルトの名無しさん
2007/04/02(月) 00:33:530425デフォルトの名無しさん
2007/04/02(月) 01:31:190426413
2007/04/02(月) 12:28:370427418
2007/04/02(月) 16:25:13Jon Dattorro. "Effect Design, Part 2: Delay-Line Modulation and Chorus". Journal of Audio Engineering Society, October 1997.
とか、あとは「DAFx」という書籍もエフェクト関係の勉強になる。
両方とも英語なのがタマニキズ。
0428デフォルトの名無しさん
2007/04/02(月) 17:10:08登場経緯的には、フランジャーが先だよね? 浅めに(?)かけてみたら 12 弦っぽい
効果があって、それ目的でパラメーター調整しやすいようにアレンジして製品化した、と。
0429413
2007/04/04(水) 09:16:25DAFxはいろいろ載ってておもしろそうですね。
Jon Dattorro Effect Designは見れなかった。残念
ただ、英語はダメなので気長にみてみます。
0430デフォルトの名無しさん
2007/04/04(水) 09:21:13実際には目的の違いから異なるアイデアを盛り込んでる場合が多いと思うよ。
たとえばコーラスはぶ厚く広げるのが目的だからディレイラインがすごく多いものとか、
変調が周期波形じゃないものとか、イロイロと。
そのへんがエフェクターの個性になってくわけだが。
0431デフォルトの名無しさん
2007/04/06(金) 04:03:47いい加減今のPCならリアルタイム入出力のFIR処理くらい出来るんじゃないかと。
これが出来ればあらかじめフィルタ係数用意して切り替えるようにすれば
ソフトウェアエフェクターってできそうだし。
で、作って見たがあえなく撃沈。音途切れ途切れ。
何が問題なんでしょう??
100万タップくらいのFIRなら余裕で動くと思ってたのに。
0432デフォルトの名無しさん
2007/04/06(金) 07:58:42とりあえずSSEは使った?(PowerPCならAltivec
大きいFIRはFFT利用して劇的に計算コスト減らした実装ができるんじゃなかったけか?
0433デフォルトの名無しさん
2007/04/06(金) 08:02:060434デフォルトの名無しさん
2007/04/06(金) 09:20:490435デフォルトの名無しさん
2007/04/06(金) 12:33:04ハードウェアのことあんまり詳しくないんだけどフィルタ係数や入力信号のバッファ
がL1 L2 超えて外部になると一気にメモリ転送の問題が発生する気がする
メモリのレイテンシーって結構デカイ気がするけど詳しい人教えて
>>433
ちょっと俺も興味あるんだけど そのソフトの詳細希望
>>434
リアルタイムでFFTだとレイテンシーもだけどブロック間の繋ぎがどうなるんだろ
0436デフォルトの名無しさん
2007/04/06(金) 13:31:52今時のPCの音楽制作環境のことまるで知らないの??
コンボリューションリバーブなんかはここ数年流行っててすでに一般的。たくさんあるぞ。
「コンボリューション VST」とかでぐぐってみなはれ
0437デフォルトの名無しさん
2007/04/06(金) 14:05:58こういうのってリアルタイム入出力できるの?
0438デフォルトの名無しさん
2007/04/07(土) 00:06:50ブロック間のつなぎはoverlap-and-addでやるだけなので、大丈夫。
0439デフォルトの名無しさん
2007/04/07(土) 07:49:56DSPプログラミングやってて、今時そうゆうの知らないことのほうが驚きですよ。
音楽制作と無関係な業界でやってる技術者だったりすると案外そうゆうもんですかね。
「DSP」っていう言葉も昔は主に専用チップ、Digital Signal Processorのことを指していたけど、
汎用PCによるリアルタイム処理が台頭してきた今は、
意味が広がってデジタル信号処理全般、Digital Signal Processingというニュアンスですよ。
0440デフォルトの名無しさん
2007/04/07(土) 08:12:27厨?
0441デフォルトの名無しさん
2007/04/07(土) 08:18:37単純に大量のかけ算するだけなら簡単だが、
FFT応用するとかいうと詳しい人なかなかいないんでしょ。
そうゆうおまいは?
0442デフォルトの名無しさん
2007/04/07(土) 08:23:46それも既出。
0443デフォルトの名無しさん
2007/04/07(土) 10:12:17ここでは板違いかもしれないけど、
たとえば、foobar2000のイコライザは8192Tapの
firフィルタで、畳み込みにfftを利用している。
foobar2000のプラグインのconvolverは、大きな
インパルスファイルを指定してやれば、
数万Tapの畳み込みも音がとぎれず再生する
こちらも畳み込みにfftを利用。
(Tap数は表示されるFFT Length の半分)
firフィルタはどうしてもレイテンシがでかくなるから
リアルタイムの演奏や画像との同期は難しいけど
パソコン上のファイルを変形させるならかなり使える。
「fft overlap save」でググるよろし。
こことかは、お勉強の過程が書いてあって
参考になるかも。
ttp://junzo.10gallon.jp/
0444デフォルトの名無しさん
2007/04/07(土) 15:15:53多分 436はその辺は考えてなかったんだろな
知識ひけらかす前に 431の質問を汲み取ってやれ
0445デフォルトの名無しさん
2007/04/07(土) 15:43:510446デフォルトの名無しさん
2007/04/07(土) 16:45:19・rawデータはwavのヘッダ無し波形
・どういう形で圧縮されているのか分からないのでデコードしようがない
一体圧縮済みrawはどういうフォーマットなんでしょうか?
0447デフォルトの名無しさん
2007/04/07(土) 17:22:42畳み込みリバーブと書いてあっても
実際はインパルス応答 入力信号を両方FFTしてオーバーラップ法を使った
周波数軸での畳み込みをしているのでは無いかということ
この辺りは説明書とかみると書いてあるのかな?
実際に最近のCPUで誰か真っ当な時間軸での畳み込みやって
何タップくらいいけるのか測定してみてくれYO
ぉ サウンドプログラミグっぽくなってきたなおぃ
0448デフォルトの名無しさん
2007/04/07(土) 17:25:30オフラインなら何億タップだろうがメモリがあるかぎりいけるだろうからw
0449445
2007/04/07(土) 19:29:09さらにすいません、
真っ当な時間軸での畳み込みというのと、FFTを使った周波数軸での畳み込み、
というのは結果が違うのですか?
FFTを使った方法は軽いけどあくまで別物なんですか?
0450デフォルトの名無しさん
2007/04/07(土) 21:14:20(精度の問題を除いて)時間軸畳み込みと全く同じ結果が得られる方法がある。
0451デフォルトの名無しさん
2007/04/07(土) 21:32:480452445
2007/04/07(土) 22:14:09なるほどです。
ちょっと調べてたらなぜ畳み込みにFFTが使われるのか、とてもわかりやすい説明みつけました。
ttp://www.nextftp.com/swlabo/m0_pctech/hp_ultraprecision/up_815_1.htm
周波数軸での畳み込み?、、、というのにあたるのかどうかよく理解できないのですが、
とにかく概算で約200倍速く計算できるようなこと書いてありました。
自分はFFT自体あまり理解できてないのですが、これ読むと魔法のようすね。
0453デフォルトの名無しさん
2007/04/08(日) 02:24:08オーダーが違うからね。
FIR 長を N として、
普通に時間領域で畳み込みすると、O(N^2)
FFT 使うと、O(N lon N)。
長さ N で FFT しちゃうと、そのサイトにある通り、循環畳み込みになっちゃうから、
実際には長さ2倍にして、半分 0 埋めてとかやる。
で、FFT + 周波数領域で掛け算 + 逆FFT ってなるんだけど、
2N log 2N + N + 2N log 2N とかで演算回数かかるけど、
O(N log N) だから、何千・何万タップとかになると圧倒的にこっちが早い。
0454デフォルトの名無しさん
2007/04/08(日) 05:27:24煽りはいいから >>447 の試してソース公開してみろって
0455デフォルトの名無しさん
2007/04/08(日) 10:04:31わざわざ最新のCPUを買わなくなって計算の見積もりは出来るだろ。
そりゃ、DSPと違って、PCの場合は演算能力の見積もりは難しいけど
44.1Kで 100万(1M)となると、モノラルで44.1G/Sの積和能力が必要になる
ゲーム機のGPUなんかでは、無理に思えない数字に見えるだろうが
パソコンだと、あと10年程先だろうね
確かに100万となると20bitにもなるわけでゲーム機のような単精度でいくら
高速でも意味はないわけだけどさ。
あ、FFTを補助的に使ってリアルタイムに実現する方法もあるんで
0456デフォルトの名無しさん
2007/04/08(日) 11:01:080457デフォルトの名無しさん
2007/04/08(日) 11:30:081.1秒毎に22秒ほどのデータをFFTして処理するので、計算時間を無視して1.1秒の遅延が必要になる。
計算時間はこのシステムが動く最悪値と考えれば2.2秒の遅延が必要になる
別けて計算する方法は、1サンプルあたりのFIRフィルタの計算は
Σ C[i]*D[i]
たとえば 現在から1万サンプルのデータDaと 99万Dbに別けると
Σ C[i]*D[i] = ΣC[i]*Da[i] + ΣC[i]*Db[i]
ΣC[i]*Db[i]は1万サンプル以上前のデータなので、FFTを使う方法で1万サンプル分を先に計算出来る
残った1万サンプルだけをリアルタイムに計算すればいい
計算量は44100*10000 = 441M/Secなので、今のPCなら不可能な数字ではない
0458デフォルトの名無しさん
2007/04/08(日) 12:01:090459デフォルトの名無しさん
2007/04/08(日) 15:18:43直線畳み込みと循環畳み込みをfftを利用して行うこととは
数学的に完全に等価です。
ですから、数千Tappを超えるfirフィルタの処理を行うとき
時間軸での畳み込み(直線畳み込み)をやるのは
無意味だと思いますね。
これが最強、最有名です。
ttp://www.ludd.luth.se/~torger/brutefir.html
0460デフォルトの名無しさん
2007/04/08(日) 15:53:220461デフォルトの名無しさん
2007/04/08(日) 15:57:070462デフォルトの名無しさん
2007/04/08(日) 16:32:430463デフォルトの名無しさん
2007/04/08(日) 16:49:500464デフォルトの名無しさん
2007/04/08(日) 16:54:40単精度32bitステレオで扱おうと思うとデータ量だけで
フィルタ係数分左右で1タップ8byte 入力信号とあわせると16byteの記憶領域が必要。
10万タップの時点で既に1.6Mの記憶領域が必要になってしまう。
それがどうしたという感じだが、もしこのデータを外部メモリから読み出そうとすると
最近のメモリで読み出しレイテンシーが10nsくらいだから
信号と係数を逐次読み込んで毎回積和をとるとしたら
1/10000sec が毎回読み出しだけで消費されてしまう時間。
さらにこれに積和時間と入力信号保持用にリングバッファなりしなければならない。
MMXにシフトレジスタ命令はあったはずだが。
まぁこれ考えるとCPUキャッシュから外れるとメモリ読み出し時間
が一番のボトルネックになる気がするんだけど。
10万タップもまったく現実的じゃないよな。
サンプリング8kでギリギリ読み出しが間に合う速度くらいw
とするとL1最低でもL2にデータ保持できる量=最大次数 くらいのノリにならねぇか?
キャッシュも自分でフルに使える分けじゃないし
かなりローレベルなプログラミング技術が要求されるよなぁ
0465デフォルトの名無しさん
2007/04/08(日) 17:01:3930msくらい遅れると明らかに違和感が出るよな。
10msくらいならおk?
0466デフォルトの名無しさん
2007/04/08(日) 17:05:21そもそも今いっているリアルタイムはそういう意味ではない。
一定量の遅延があるだけで出力し続けれるのならそれはリアルタイム処理。
入力→演算→出力
の流れが次の入力が来るまでに終っているかどうか(1サンプル内で演算が終っているかどうか)
がリアルタイム処理の定義だと思われ
0467デフォルトの名無しさん
2007/04/08(日) 17:26:360468デフォルトの名無しさん
2007/04/08(日) 17:35:23もちろんPCの場合はCODECとの通信がブロックでやってくるから、意味はないのだけど
1サンプル毎に答えを出す手法について提案されているじゃないか?
でも、コレ計算量の削減になるのかな?
256点で考えてみよう。
64点を時間領域で 残りの192点をFFTで行うとする
c0*d0+ ・・・ +c63*d63 とc64*d64+・・・c255*d255
前半は O((N/4)^2)=O(N^2/16) =4096
後半は、64サンプル毎に256点のデータで行えば 64サンプル毎に1回処理するので
4*(2N log 2N + N + 2N log 2N )=4*2*N*( 1+2*log2N) = 4*2*256*17= 34816
うーん
0469デフォルトの名無しさん
2007/04/08(日) 17:42:11単精度でFFT方式を10万タップで使うと、結果は上位8bitまでしか信用出来なくなる
浮動小数点なので、相対誤差だから十分良いといえば良いのだけどね
あと10万タップくらいならFFTでやれば今のPCならリアルタイム処理は行えるよ
実際やってるし。
だって2秒に1回計算すりゃいいんだから余裕。
素直に書いたルーチンでも1秒に10回くらいは計算出来てるよ。
0470デフォルトの名無しさん
2007/04/08(日) 17:56:28M分割した1/Mを時間領域で 残りをFFTで行うとする
この方式との比率は、
((N/M)^2 + M*2*N*( 1+2*log(N)/log(2)))/(N^2)
N=2^8ではダメだったが、
N=2^16 M=16を代入すると 約1/50
N=2^20 にすると 1/200 と大きいほど改善するようだ
さらに、細かく分割して効率化すれば、もっと効率上がるのかも
0471デフォルトの名無しさん
2007/04/08(日) 18:15:45こうか?
(((N/M)+M*( 1+4*log(N)/log(2)))/(N)
N=2^16 M=16を代入すると 約1/12 でしかない
0472デフォルトの名無しさん
2007/04/08(日) 18:24:13この時の負荷はFFTだけで計算した場合の100倍近い
0473デフォルトの名無しさん
2007/04/08(日) 19:50:03確かに時間軸での畳み込みをプログラムで実装するとそこが問題になりそうだ。
ハードのこと全然詳しくないんだが。
というかその後の話が全部周波数軸での話しになってるのが妙にうけた。
あきらかに>>464の話は時間軸での計算なのになw
FFTでの畳み込みは確かに早いんだけど精度とかアルゴリズム的なこと考慮しないといけないから面倒だな。
そういった意味では時間軸での畳み込みの限界を俺も見てみたい気がする。
0474デフォルトの名無しさん
2007/04/08(日) 19:55:58> 信号と係数を逐次読み込んで毎回積和をとるとしたら
> 1/10000sec が毎回読み出しだけで消費されてしまう時間。
1/10000[sec]/10[ns]=10^-4/10^-8=10^4[word]
1/10000secって一体なんの話?
0475デフォルトの名無しさん
2007/04/08(日) 19:59:180476デフォルトの名無しさん
2007/04/08(日) 20:03:5110万個なら1/1000がメモリ読み込み時間
10^6[個]×10^-8[sec]=10^-2
100万個なら1/100がメモリ読み込み時間
0477デフォルトの名無しさん
2007/04/08(日) 20:28:02単にFFTを使って掛け算を高速化しているのにすぎないわけで
>>464
まず、
係数については柔軟性を持たせる為に浮動小数点というのは悪くないが
データは16bit固定小数点で保持すれば十分だろう。
実用的には係数も16bit で十分。
(この場合でも積和累計レジスタには 16+16-1+17=48bit が必要)
その場合、途中係数が0が続く部分が大量に出る。
なぜなら全部が1のデータでも計算結果は2bitオーバフローしてしまうのだから。
だから0の部分をリスト形式でスキップすれば計算量は多少小さくなるかもね
キャッシュについては、
Σc[i]*d[i] は 分解出来るわけだから、たとえば256サンプル毎に
キャッシュに入るサイズで分割して計算すれば、問題ないだろう
0478デフォルトの名無しさん
2007/04/08(日) 20:31:31> 実用的には係数も16bit で十分。
ゲーム用途なら実用的かも。
音楽用途だと精度が低すぎ。
例えばリバーブの消えかけ部分のS/N比が低くなるだろう。
0479デフォルトの名無しさん
2007/04/08(日) 20:38:18リバーブの場合でも全体にスケーリングすれば十分さ。
逆にどこもかしこも係数が大きい100Kワードの係数があったとすれば
結果は簡単にオーバーフローしてしまう。
全部の係数が+1か-1であってもオバーフローするんだからさ
0480デフォルトの名無しさん
2007/04/08(日) 20:41:18固定小数点+スケーリングって事は、
トータルでは浮動小数点演算なわけだ。
0481デフォルトの名無しさん
2007/04/08(日) 20:42:56データと係数は16bit固定小数でも
内部演算結果は48bitになるっつう話ね。了解。
0482デフォルトの名無しさん
2007/04/08(日) 20:46:55桁上げが必要になるわけで、浮動小数点レジスタで計算させた方がいいと思うよ
0483デフォルトの名無しさん
2007/04/08(日) 20:48:45一体なんのための固定小数点だったんだろうね?
0484デフォルトの名無しさん
2007/04/08(日) 20:52:2116bit固定小数点の選択で何の過不足も無いと思うのだが?
0485デフォルトの名無しさん
2007/04/08(日) 20:55:01結論出たら教えてくれ。
0486デフォルトの名無しさん
2007/04/08(日) 21:05:081、FFTを使う場合でもレイテンシ1のフィルタは実現可能
ただし計算量はそれなりに増える
それでも係数器が巨大ならFFTを使わない方法よりもずっと高速
2、FFTを使わない場合でもキャッシュサイズが溢れる心配については不要
キャッシュに入るサイズにFFTでレイテンシ1のフィルタを作る時と同じように分割すればいいだけ
だったらFFT使えよと
0487デフォルトの名無しさん
2007/04/08(日) 21:06:57Intel入ってるとかだとどうなの? 例えば10クロック必要なら単純に
3GのCPUでも300M個の処理しかできないよね。
3億タップ!?って感じはするけど実際に使えるリソース考えると
>>464の言うリード時間の問題がほとんどになる気がする。
>>477
何個分割して処理しようが結局メモリからキャッシュにフィルタ係数なり入力信号なりを
リードしてから計算しないといけなくなるから無意味。
始めからCPUキャッシュ上に係数も信号も保持していないと駄目ぽ。
>>464
の言う1/10000sec が 1/1000sec の間違いだという仮定ならますますPCでの
リアルタイム畳み込みは時間軸では厳しくなりそうですね。
あと揚げ足とるようだけど10万個の係数読むなら10万個の入力信号も
読まないといけないわけで合計20万個のデータリードになるよ^^;
ということは 1/500sec が一度の積和に必要なメモリリード時間になるが。。。
キャッシュから外れたら無理だね。と思わせる時間だよなこれw
逆に質問、キャッシュ内データのアクセスタイムってどれくらいなんだろ。
ナノのオーダーじゃ全然遅いよね。ピコとかのオーダーなのかな
0488デフォルトの名無しさん
2007/04/08(日) 21:09:200489デフォルトの名無しさん
2007/04/08(日) 21:10:010490デフォルトの名無しさん
2007/04/08(日) 21:20:08フィルタの計算は、1サンプル毎にデータがズレて
t0↓ d e f g h i j k
t1↓ c d e f g h i j
t2↓ b c d e f g h i
t3↓ a b c d e f g h
係数器は同じ係数が使われる。
c0 c1 c2 c3 c4 c6 c7
f0の時点で、 d*c0+e*c1+ ・・・・ だけでなく
d*c1+e*c2+・・・・ や
d*c2+e*c3+・・・・ を先に計算しておけば
t1の時点では c*c0だけを
t2の時点では b*c0+c*c1を計算するだけでいい というわけ
で、先に計算する時に計算順をキャッシュのサイズで分割すればいいだろ?
って話をしてるわけさ
0491デフォルトの名無しさん
2007/04/08(日) 22:00:44遅延器の後ろの部分は、先に計算出来るから
計算順を変更してしまって、
1サンプルでは同じ遅延器部分を何度も計算してしまうようにしちゃえばいいって事だな
で、細かく分割して計算順を変更する手間を考えたら、
だったらFFTで計算しちゃえよと
0492デフォルトの名無しさん
2007/04/08(日) 22:03:030493デフォルトの名無しさん
2007/04/08(日) 22:05:510494デフォルトの名無しさん
2007/04/08(日) 22:11:370495デフォルトの名無しさん
2007/04/08(日) 22:18:05一体何を言いたかったの?
0496デフォルトの名無しさん
2007/04/08(日) 22:28:230497デフォルトの名無しさん
2007/04/08(日) 22:32:40例ではそうなってるけど、
実際は、これを分割するわけ、キャッシュに入るサイズで分割すれば
キャッシュの出入り回数はそれだけ実質へらせられる
0498デフォルトの名無しさん
2007/04/08(日) 22:46:22話それから
0499デフォルトの名無しさん
2007/04/08(日) 23:18:17N2=N/2-1
Σ(0..N){c[i]*d[i]} =c[0]*d[0]+c[1]*d[1] +・・・c[N]*d[N]
R1=Σ(2..N2) {c[i]*d[i]} S1=Σ(N2..N) {c[i]*d[i]}
R2=Σ(2..N2) {c[i]*d[i-1]} S2=Σ(N2..N) {c[i]*d[i-1]}
2サンプル毎に
偶数目では S1=Σ(N2..N) {c[i]*d[i]} と S2=Σ(N2..N) {c[i]*d[i-1]} を計算
Σ(0..N){c[i]*d[i]} =c[0]*d[0]+c[1]*d[1] +R1+S1で求める
奇数目では R1=Σ(2..N2) {c[i]*d[i]} と R2=Σ(2..N2) {c[i]*d[i-1]} を計算
新しいサンプリングデータがdnewとして
c[0]*dnew+Σ(1..N){c[i]*d[i]} =c[0]*dnew+c[1]*d[0] +R2+S2 で求める
そしてデータは2ワードシフトする
0500デフォルトの名無しさん
2007/04/08(日) 23:19:36× c[0]*dnew+Σ(1..N){c[i]*d[i]} =c[0]*dnew+c[1]*d[0] +R2+S2 で求める
○ c[0]*dnew+Σ(1..N){c[i]*d[i-1]} =c[0]*dnew+c[1]*d[0] +R2+S2 で求める
0501デフォルトの名無しさん
2007/04/08(日) 23:51:28DSPの場合はモジュラアドレッシングがあるからいいけど
PCの場合、俺がやった事があるのは
1、2のべき乗のサイズのバッファ取って and 演算で計算
[(wp+i) & (BufSize-1) ]
案外、効率が悪い
2、メモリを2倍とって wpの位置に書く時 [wp]と[wp+N] の2箇所に書いて
読む時はそのまま [wp+i] でアクセス
効率はいいけど、メモリが2倍必要
仮想記憶用のテーブルにアクセス出来れば、メモリを2度割り付ければいいんだろけど
他にいい方法ある?
メモリをその都度moveするコードはありえないとして
0502デフォルトの名無しさん
2007/04/09(月) 01:03:17最近は、リアルタイムの意味を取り違えている人がいるから困ったもんだ。 (あのドラマ、リアルタイムで見た とか。お前の視覚神経はコンピューターか)
0503デフォルトの名無しさん
2007/04/09(月) 01:04:270504デフォルトの名無しさん
2007/04/09(月) 10:47:290505デフォルトの名無しさん
2007/04/09(月) 13:29:270〜1のリニアなスロープを聴感上リニアにしたいのですが、いい方法ありますか?
-96〜0などとしてデシベル換算だと、0が0にならないですよね。
あるいは良く近似するカーブを得る軽い方法などありますか?
(自分は累乗をよく使うのですが、近似というところではイマイチで・・・)
0506デフォルトの名無しさん
2007/04/09(月) 13:38:18(a^x)*x^b
とか bを 1/2 つまり平方根なんて良く使うよ
0507デフォルトの名無しさん
2007/04/09(月) 14:44:14試してみましたが、かなり近似しつつ0を通るようにできますね。いいこと教わりました。
リアルタイムで毎回計算する用途だと平方根はちょっと重いですかね?
類似した方法も、いろいろ試してみたいとおもいます
0508デフォルトの名無しさん
2007/04/09(月) 18:34:32PCならテーブル作って間を直線補間するし
DSPなら4〜5次くらいに級数近似するし
0509デフォルトの名無しさん
2007/04/10(火) 01:18:11で、ソースまだ?
0510デフォルトの名無しさん
2007/04/10(火) 02:05:590511デフォルトの名無しさん
2007/04/10(火) 02:08:100512デフォルトの名無しさん
2007/04/10(火) 05:37:570513デフォルトの名無しさん
2007/04/10(火) 06:44:22FFTを使えば、計算量もメモリアクセスも激減するのに、
こっちは計算量は減らない。 当然メモリアクセスも。
ただ同じ領域を2度使うからキャッシュが効き易いというだけじゃ、試す必要もない
理論的に可能かどうかは式みれば判るだろ
0514デフォルトの名無しさん
2007/04/11(水) 06:08:28モジュラアドレッシングって巡回アドレッシングの事だよね?
Tiでいうところのサーキュラドレッシングモードみたいな。
最近のPCだとSSEでシフトレジスタ用意されてるからほぼ同じことできるよ。
そうじゃなかったらメモリ2倍使う2番目の方法が一番現実的な気がする
>>513
まぁまぁそう言わないで。
初心者さんにしてみたらFFTなんか使う方法よりもサクッとフィルタ係数畳み込める
時間軸での方が分かりやすいし書きやすいってのはあるんじゃない?
溢れさえ気にしなければそのままソースかけるし。
0515デフォルトの名無しさん
2007/04/11(水) 08:32:25SSEで モジュロアドレッシングってどうやるの?
0516デフォルトの名無しさん
2007/04/18(水) 03:20:320517デフォルトの名無しさん
2007/04/18(水) 10:15:41ムリに再現しようとしても動作が重くなるだけで意味ない、って誰か書けよ。
0518デフォルトの名無しさん
2007/04/18(水) 10:46:28モジュロアドレッシングつかわずにどう実装するんだ?
0519デフォルトの名無しさん
2007/04/18(水) 11:43:45単純に、ループと配列を使って、掛け算したのを足していく。
逆になんでモジュロアドレッシングがなきゃできないんだ?
0520デフォルトの名無しさん
2007/04/18(水) 11:58:13ソレはバッチ処理の場合だろ?
1サンプルづつデータを受信して、処理する場合、モジュロで処理しないの?
0521デフォルトの名無しさん
2007/04/18(水) 12:29:19wp := ( wp-1+length(data) ) mod length(data);
data[wp]:= 新データ;
sum:=0;
for i:=low(c) to High(c) do sum:=sum+ c[i] * data[ (i + wp) mod length(data) )] ;
だな。 もしかして、この mod がモジュロアドレッシングなのか?
0522デフォルトの名無しさん
2007/04/18(水) 12:32:070523デフォルトの名無しさん
2007/04/18(水) 14:02:00!|:::/::::::.!:::::::|:::∧::::|、::::::::!.、:::::::::::::ヽ: !:::::::::: !
i:l: ::|:/:::.!::::::ii|_:| ヽ:::!l\:::!'、\::::::::::::!::!::::::::::::.!
. |/l:::.!|, :::ヽ::::l'l:lヽ、ヽ:|l'´ヾr==ミ、:::::::|::|:::::::!::::: !
|::.!l:.!::::::lヽ|,==、 `' ヽ \:|:: !: ::: !::::::.! うるさいうるさいうるさい!
l/ `ヽ::|:::l , - 、 ll'::::!.l:::::.!:::::::.!
l`l::.!! l/ ̄ ヽ /.!::::.!:|::::::.!:::::::l
!::::.!.!ヽ ヽ ノ /::::|:::::|::.!:::::.!:::::::.!
.!::::| !::::.` ー 、._ ´ ,/ |::: !:::::|:::l::::::.!:::::::|
|:::::|.!::::.!:::::.!:::::::::`Г l-,|::::.!::::|::::::.!:::::::|
|::::::l':::::.!::::::|:::::_, -/} /:l:::::lー-��: !:::::::.!
!::::::|:::::_!, .‐' ´.:.:.:!r- 、_ /.:.:.:!::::l// /`ヽ:: !
. |::::::|/ ヽヽ.:.:.:.:.:.lィーミ./.:. :.:.:.!:::.!/ / !::.!
. |:::::::! ヽ ヽヽ.:.:.:.ヽ / .:.:/ !::::| / |::::!
0524デフォルトの名無しさん
2007/04/18(水) 15:22:39PascalとかSmalltalkとかじゃないか?
0525デフォルトの名無しさん
2007/04/18(水) 15:50:353、積和を2度に別ける
wp〜最後までと
先頭〜 に
0526デフォルトの名無しさん
2007/04/19(木) 01:57:52:= なんてほんま涙がでそうやわ。
ここ見てる人はシフトレジスタ知らない人なんだねと心底思った。
0527デフォルトの名無しさん
2007/04/19(木) 07:12:04シフト命令の間違いか? だとしても、この話題のどこにシフト命令が?
0528デフォルトの名無しさん
2007/04/19(木) 10:20:39コンパイラが勝手にやってくれるところだろ。
0529デフォルトの名無しさん
2007/04/19(木) 12:51:26このスレと過去ログを := で検索してごらん
http://www.2chdat.net/data/html/01111704/996171508.html
たぶんあなたが思うより多かった筈だ。
たぶん、スレ参加者の半数くらいは windowsではDelphi使ってるカモ
0530デフォルトの名無しさん
2007/04/19(木) 13:07:03○Delphi使ってる香具師が一人で頑張っている
0531デフォルトの名無しさん
2007/04/19(木) 13:35:490532デフォルトの名無しさん
2007/04/20(金) 05:00:43>>530に禿げ同
0533デフォルトの名無しさん
2007/04/20(金) 07:28:590534デフォルトの名無しさん
2007/04/20(金) 07:38:28実験するときはポトペタで簡単にコード試せるし
GUI付けて、他人に試してもらうの便利。
BCBもいいけどコンパイルの早さでDelphiだな
0535デフォルトの名無しさん
2007/04/20(金) 10:13:19意外とほかでの応用がきかないし、どうかな…。
0536デフォルトの名無しさん
2007/04/20(金) 10:23:18アルゴリズムを評価してもらうためと自分のテスト用ね。
コンポーネントのバグは知らない。テスト用だから気にもしてないのかもね
0537デフォルトの名無しさん
2007/04/20(金) 10:32:50お前はまずPCを買い換えろ。
テストコード程度でコンパイル速度に顕著な差が出るってどんなマシン使ってんだ・・・
0538デフォルトの名無しさん
2007/04/20(金) 10:51:14>>535はどのバージョンが何と比べて重いの?
0539デフォルトの名無しさん
2007/04/20(金) 19:16:280540デフォルトの名無しさん
2007/04/21(土) 12:42:36Delphiは1秒以内。 実行ファイルそのままクリックしてる感覚と変わらない
だからCで書いたコードのテストでもDelphiからコマンドラインでBCCでコンパイルして
pascalでテスト部は書いてるな
0541デフォルトの名無しさん
2007/04/21(土) 12:45:38MATLABとか多そうだけど
0542デフォルトの名無しさん
2007/04/21(土) 16:35:04MatlabとJava
0543デフォルトの名無しさん
2007/04/21(土) 18:22:31DSP使った組み込み向け信号処理屋みたいな人とか、
PC向けリアルタイム処理(音楽関連アプリやVSTとかDXプラグインとか)やってるひととかさ。
それによってだいぶ違うよね?
前々からそれによって微妙に話しが食い違うときがあった気が。
いわゆるゲーム屋とかでは、このスレみたいなやれFIRとかFFTとかいう話題にならないし
0544デフォルトの名無しさん
2007/04/21(土) 18:54:320545デフォルトの名無しさん
2007/04/21(土) 19:22:09ところがどっこい
エンタメ系サーバ書いてる奴がPhaseVocoder使ってたりするw
0546デフォルトの名無しさん
2007/04/21(土) 21:06:25まぁでも、光もナノテクの世界では音みたいなもんだしね。
0547デフォルトの名無しさん
2007/04/21(土) 21:11:300548デフォルトの名無しさん
2007/04/21(土) 21:13:000549デフォルトの名無しさん
2007/04/21(土) 21:13:000550デフォルトの名無しさん
2007/04/21(土) 21:37:050551546
2007/04/21(土) 21:37:39光の回折でエッジが暈けるから位相を反転して合成しようとか、
光の密度が均一じゃないから反射を利用して均一にしようとか、
そういう話を実際の光源でテストする前にシミュレーションする仕事が
よく来るのよ。実際何がどうしてそうなるのかなんてよく判らんけどね。
0552デフォルトの名無しさん
2007/04/21(土) 21:40:29あと >>109は?
0553デフォルトの名無しさん
2007/04/21(土) 22:52:39スペクトル分解(フーリエ解析)なんかは、
電磁波でも音波でも全く同じ数学なんじゃないの?
0554デフォルトの名無しさん
2007/04/21(土) 23:09:21光と音は波としての性質は同じだが、目と耳は構造も機能も全く違うからな。
0555デフォルトの名無しさん
2007/04/21(土) 23:30:56どんなナノテクwをやっているのかkwskw
0556デフォルトの名無しさん
2007/04/21(土) 23:52:110557デフォルトの名無しさん
2007/04/22(日) 00:04:21いくらなんでも愚かすぎる光学技術者だと思ったら
やっぱネタか
0558デフォルトの名無しさん
2007/04/22(日) 00:17:390559デフォルトの名無しさん
2007/04/22(日) 00:21:200560546
2007/04/22(日) 05:54:18信号としての特性に似たところがあるってのを似たようなもんだって書き間違えただけでこれだ。
それに私は自分が光学技術者だなんて一言も書いてないのだけれど。
0561デフォルトの名無しさん
2007/04/22(日) 08:06:150562デフォルトの名無しさん
2007/04/22(日) 08:35:52どんなナノテクをやっているのかちゃんと言ってごらん
0563デフォルトの名無しさん
2007/04/22(日) 08:37:10PhaseVocoderを何に使うんだろうね
0564デフォルトの名無しさん
2007/04/22(日) 10:04:38・光の波は進行方向に垂直だから進行方向が異なっても
合成した場合、電界変化がゼロになった場所は磁界変化もゼロで、その場所では検出出来ない
音の波は、
http://tmhf.eng.shizuoka.ac.jp/m5/yanafuku/resonance/wave.htm
・進行波は運動量変化が進行方向に生じるので、方向が違うならベクトル加算しても消えない
・定在波は、運動量変化と圧力は90度位相がズレているので、圧力変化が最小の場所は運動量最大である
だから音の波は干渉では消えない。
>>181 のように仮想の壁で反射する事でダクト消音は出来るが、これは干渉ではない。
・・・という理解で正しい?
0565デフォルトの名無しさん
2007/04/22(日) 10:25:130566デフォルトの名無しさん
2007/04/22(日) 10:35:270567デフォルトの名無しさん
2007/04/22(日) 10:37:43どんなナノテクをやっているのかちゃんと言ってごらん
0568546
2007/04/22(日) 11:49:46まぁ、同じレスがコピペされている段階で相手にするだけ無駄か。
0569デフォルトの名無しさん
2007/04/22(日) 12:03:50まともな神経を持った人間とは言い難いな
0570デフォルトの名無しさん
2007/04/22(日) 12:09:180571546
2007/04/22(日) 12:09:31何か寂しくなっちゃって全然関係ないこと書き込みしちゃいました。
反省したので明日ボウズにしてきます。
(;_;)
0572デフォルトの名無しさん
2007/04/22(日) 12:30:47侮辱的な発言ありがとう
ちゃんと責任とれよ
0573546≠571
2007/04/22(日) 13:19:560574デフォルトの名無しさん
2007/04/22(日) 15:08:070575デフォルトの名無しさん
2007/04/22(日) 15:46:49ホントに光も磁界変化はゼロになるのかな?
2つの送信アンテナ1,2 で逆相で送信して、等距離の3の位置で受信すると考える
�@ �A
\ /
\/
�B
電界を検出するアンテナでは、3の位置では逆相で打ち消される
では、バーアンテナを3の位置に取り付けたらどうだろ?
1−2に平行の場合は、話の通り、検出出来ない。
バーアンテナを1の同心円方向に設置すれば2に対して指向性が働いて受信出来てしまうんじゃないのか?
0576デフォルトの名無しさん
2007/04/22(日) 17:21:31バーアンテナをその向きに設置したことでバーアンテナに磁界変化が起きる=然電界も変化するわけで、
バーアンテナを設置したことで、普通のアンテナでも受信出来る位置になってしまうわけ
0577デフォルトの名無しさん
2007/04/22(日) 18:29:070578デフォルトの名無しさん
2007/04/22(日) 18:40:00だから、こういうのをしっかり掴む為にも、こういう議論は有意義だと思う
0579デフォルトの名無しさん
2007/04/22(日) 18:54:37デムパというよか、電子回路系なんだろうよ
この不思議な議論の流れから察するに
0580デフォルトの名無しさん
2007/04/22(日) 22:54:13とりあえずスレ違いの域なのは確かだな
0581デフォルトの名無しさん
2007/04/22(日) 22:57:33あんた向いてないよ
0582デフォルトの名無しさん
2007/04/23(月) 01:58:28完了推定時間、9分です。
0583デフォルトの名無しさん
2007/04/23(月) 07:31:03部屋の中に波長1mの定在波をイメージしてたりするんだろか?
0584デフォルトの名無しさん
2007/04/24(火) 01:27:430585デフォルトの名無しさん
2007/04/24(火) 01:49:55この音は丸っこい、とかカクカクしてる、とか。
0586デフォルトの名無しさん
2007/04/24(火) 03:09:57スレ違い。
プログラミング関係ねぇし、お前が何イメージしてるかなんてどーでもいい。
0587デフォルトの名無しさん
2007/04/24(火) 04:08:07この音の振幅は・・・周波数は・・・・・だめだ、差分適応PCMは圧縮できそうにない・・・・・・
0588デフォルトの名無しさん
2007/04/24(火) 07:03:29スレ違いだと思うなら、何かネタをフルべきだと思う。
それじゃ潰し屋だ。
プログラミングネタは、APIの呼び出し関係は
それぞれの環境依存がすぎて本人特定されちゃうくらいなわけで、
まあ各自マニュアル嫁って事で、話題にし辛い。
アルゴリズムネタにどうしても流れてしまうのは仕方ないと思うが・・・限界があるよな。
でも、そろそろ新人さんのhelp meネタがあってもよさそうなんだが・・・・
怖がらずに質問してくれていいんだよ>>新人さん
0589デフォルトの名無しさん
2007/04/24(火) 09:17:25プログラムの実例を教えて欲しかったんだが。 物理の勉強をしに来たわけじゃないので。
0590デフォルトの名無しさん
2007/04/24(火) 09:29:47さすがにコードまでは書いてくれんでしょ
0591デフォルトの名無しさん
2007/04/24(火) 09:58:170592デフォルトの名無しさん
2007/04/24(火) 10:10:10いちいち質問する訳にも逝かないだろう。
音関係の弄りやすいライブラリって何?
やっぱりダイレクトエックスとか?
0593デフォルトの名無しさん
2007/04/24(火) 10:11:43数式が読めない人は、プログラムの前に数学を勉強すべき。
仕組みが理解できてないと、問題があったときに対処できないだろ?
0594デフォルトの名無しさん
2007/04/24(火) 10:13:120595デフォルトの名無しさん
2007/04/24(火) 10:14:560596デフォルトの名無しさん
2007/04/24(火) 10:59:08にちゃんねらーとしてにちゃん教に入信しました。他の宗教は信仰しては逝けません。
0597デフォルトの名無しさん
2007/04/24(火) 18:57:23複雑な数式理解できないと話しにならないような場面は限られてる。
数式が出てきても必ずしも理解する必要はないし、道具として使い方知ってれば事は足りる。
そこそこ詳しい人ってのは、必要以上に難しく説明しがちなもんだわさ。
0598デフォルトの名無しさん
2007/04/24(火) 19:05:210599デフォルトの名無しさん
2007/04/24(火) 19:48:33高等教育とはそんなものじゃないよ。
中卒の方ですか?
0600デフォルトの名無しさん
2007/04/24(火) 19:53:50答えが見つかればそれを道具として中身を理解せずに使えば良いじゃんって頭悪い。
0601デフォルトの名無しさん
2007/04/24(火) 19:57:13アナログアンプのシミュレータを作りたいと思ってるです。
真空管なんかは飽和歪みがひとつの特徴らしいのですが、そのほかに注目するべき点はどこでしょう。
位相特性みたいな話しをよく聞くのですが、
この場合の位相特性とは具体的にどうゆうことなんでしょう?
アナログアンプ的な特徴的な位相特性とはなんでしょう?
0602デフォルトの名無しさん
2007/04/24(火) 20:18:17, -‐'´ ヽー 、
, .'´ ソー ヽ
-≠Z´, , ヽ ヽ
/ / / / /, 、 ヽ ヽ
/ イ ,' ,' .ィハ l ! 、 、 ', ', !
/' ,'.i ! .l /l.l l !、 l ヽ i | l
l' l k l l7`|'-、.ヽ lヽ. ト、 ヽ | l l l
l ハ i .{lr≠、ヽ \‐ヘ'ヽヽl-. トl ! i l
|' .',lx!i !|::;:} _,r≠=、卜!' ,'. |.!ヾ、
i'l ー' !l、::::;:}》. //`y イ'|' `
lヽ ' `ー'/ .//,.ノ/ |
l 、 ,、 |/ ヽ、 - /ソ /ィX.、
r┴-'ニ< ヽ--、 ` ーz- ' ´/ィ'´ヽヽ、ヽ
てー _`._j弋ー' ヽ、.,r,ニ-´ー ´. l l.l }
, -‐y‐ '{ /´::::::、ヽ. ̄ヽy'-´ヽヽヽ l l !'
,〃'´ Y´:::::::::::::} /ー:、:::::::ヽ', ', l l !
{、ヽ l:.:::::::::::::::l /:::::::::::::ヽ:::::l | l ///
| ヽヽ、 i::::::::::::::::l/::::::::::::::::::::i;:::l l l ,r ニ 'l
>>597・・・中卒のDQN旋盤工と推測・・・性交経験なし・・・
0603デフォルトの名無しさん
2007/04/24(火) 21:05:27回路シミュレータでやってる人がいるので
http://www.geocities.jp/ltspice_swcadiii/tube/index.html
これをベースにやればどう?
0604601
2007/04/24(火) 21:42:16きほんてきなことなんだけど位相特性というのは、
周波数成分ごとの信号の遅れ(ディレイ)と単純に考えていいの??
ここのページのグラフだと、高域成分ほど遅れてると見るんでしょか。
実際に周波数特性をフラットなまま周波数成分ごとの遅れをシミュレーションするとしたら、
どういう実装方法になるんだろう。
0605デフォルトの名無しさん
2007/04/24(火) 21:58:2310KHzで360度だから1遅延程度を入れて位相特性図を描きなおした方がいいと思う
位相だけを補正するなら
APF=オールパスフィルタ
が 検索キーワード
0606デフォルトの名無しさん
2007/04/24(火) 22:00:450607デフォルトの名無しさん
2007/04/24(火) 22:05:36短時間FFTで周波数軸上で音の加工は基本的に出来ない。
短時間FFTを使うならFIRフィルタの高速計算の目的で
位相特性だけを加工したいなら、オールパスフィルタ( IIRフィルタ)を複数組み合わせるのが最適
オールパスフィルタには1次と2次があり、
どちらも実現式は非常に簡単。
googleさんで調べて、ダメならまた聞いて。
0608デフォルトの名無しさん
2007/04/24(火) 22:25:15なんでそんな貧しい行為に必死になるかな
0609デフォルトの名無しさん
2007/04/24(火) 22:40:030, 0.038394
1, -0.188396
2, 0.958548
3, 0.191451
これで大体高域が90度回る
低域で位相を回したいならIIR-オールパスフィルタでないと面倒だ
0610デフォルトの名無しさん
2007/04/24(火) 23:01:380, 0.0370952
1, 0.0338991
2, 0.0622815
3, 0.0796952
4, 0.1040610
5, 0.1494064
6, 0.1928090
7, 0.2834788
8, 0.7217380
9, -0.5518646
10, -0.1280079
11, -0.0307499
12, -0.0003218
13, 0.0023316
14, 0.0115652
15, 0.0163134
16, 0.0076485
17, 0.0086209
0611601
2007/04/24(火) 23:07:07とりあえずフィルタの実験に入ることにします。
FIRも係数このぐらいのなら低負荷でいけますね。(てか設計すんの速いですね・・・
0612デフォルトの名無しさん
2007/04/25(水) 01:13:290613601
2007/04/25(水) 01:18:18オールパスフィルタをスタックしたりして極端なことやってみてるのですが
スペアナ見てるぶんには周波数特性変わらないのに、
ほんとに音の太さとか(というと曖昧だけど)ニュアンスが変わって
特にベースやキックなんかの低音楽器はわかりやすいですね。
周波数特性だけじゃ出音は語れないっての痛感・・・
0614デフォルトの名無しさん
2007/04/25(水) 02:33:15でしかないわけだから本来の周波数情報のうち大部分欠落した情報を見せられているから
無理もない話なのかもしれん。
0615デフォルトの名無しさん
2007/04/25(水) 03:03:57経験的にどうなるかは知ってても、知らない人に説明できる自信は無い。orz
なんとなくプラグイン買う金がないから自分でなんとかしよう的な雰囲気はあるよね。
PCでシュミレーションもいいけど、実際に回路設計して半田ごてで制作するのも楽しいと思うよ。
0616デフォルトの名無しさん
2007/04/25(水) 06:30:10位相の周波数的変化を群速度という。
0617デフォルトの名無しさん
2007/04/25(水) 10:12:43素の音と、軽くディストーションをかけてLPFを通したものをまぜて、
それにディストーションをかけてHPFを通すと、アンプの音になる。
役立つ参考リンク
http://www.harmony-central.com/Guitar/guitar-amp-evolution.html
http://www.harmony-central.com/Guitar/guitar-amp-evolution.html
0618デフォルトの名無しさん
2007/04/25(水) 10:16:01世も末だな
0619デフォルトの名無しさん
2007/04/25(水) 17:16:410620デフォルトの名無しさん
2007/04/26(木) 08:29:570621デフォルトの名無しさん
2007/04/26(木) 08:46:44オールパスフィルタで フェーズシフタとかワウワウ とか
0622デフォルトの名無しさん
2007/04/26(木) 22:50:54このスレってスレタイから想像するのと微妙に雰囲気違う気がするな。
次回から【FFT】デジタル信号処理プログラミング【IIR/FIR】とかにしてはw
0623デフォルトの名無しさん
2007/04/26(木) 23:18:180624デフォルトの名無しさん
2007/04/26(木) 23:40:49おまいはスレタイからどんな想像するのか言ってみろ
0625デフォルトの名無しさん
2007/04/27(金) 00:47:34もっとサウンドそのものというか、コンテンツ自体に近いイメージないか?
あとゲーム系。実際サウンドプログラマーと呼ばれる職種があるしさ
シンセなんかの音色を作ったりするのもサウンドプログラミングと呼ばれることがあるしな。
0626デフォルトの名無しさん
2007/04/27(金) 01:00:320627デフォルトの名無しさん
2007/04/27(金) 01:16:41その辺はDTM板で扱う話題のような。
まあ、紛らわしいのは良くないんで次スレは「音声処理」にでもするか?
「デジタル信号処理」は音声以外にもいろいろあるし。
0628デフォルトの名無しさん
2007/04/27(金) 01:25:03シンセの音色はマズイが、その上はまあスレ違いとは言われないだろ
0629デフォルトの名無しさん
2007/04/27(金) 01:35:29このスレの流れだと「信号処理」(デジタルに限らないが周波数は可聴領域)って感じかしらん?
0630デフォルトの名無しさん
2007/04/27(金) 01:49:050631デフォルトの名無しさん
2007/04/27(金) 02:47:44デジタルオーディオを扱うソフトウェア技術を総称してなんと呼ぶのか、ということだな。
DSPプログラミング、とかもありかな。
0632デフォルトの名無しさん
2007/04/27(金) 04:42:50ドライバ語ってもいいし、MIDIデータ語ってもいいじゃない。
0633デフォルトの名無しさん
2007/04/27(金) 06:12:38それにしても
サウンドプログラミングというと、楽器機材のオペレーションや打ち込みを意味したり
サウンドエンジニアというと、音楽スタジオのレコーディング・ミキシングエンジニアを意味したりするから
世の中ややこしいわな・・・
音楽スタジオのエンジニアのほうもそう言ってたの聞いたことある
0634デフォルトの名無しさん
2007/04/27(金) 06:32:140635デフォルトの名無しさん
2007/04/27(金) 07:48:400636デフォルトの名無しさん
2007/04/27(金) 10:05:210637デフォルトの名無しさん
2007/04/27(金) 10:46:000638デフォルトの名無しさん
2007/04/27(金) 10:57:13正規乱数を累積すればいいのだが、正直にやると、発散してしまう。
単純に乱数を2個取って は cは小さい係数として
d := ( (rand()-rand())*c + d*(1-c) );
この d を単位時間毎に更新しては、オフセットとして加算しては?
0639デフォルトの名無しさん
2007/04/27(金) 10:59:12ランダムに値を増減する、というのを何度も繰り返すと、
元の値に近い部分が最も多く、元の値から離れたものが最も少なくなる。
これが一番簡単な1/fゆらぎの作り方。
0640デフォルトの名無しさん
2007/04/27(金) 12:02:55ここは音響全般のプログラミングでしょ。
ゲームとか楽曲とかのエンジニアはミュージックプログラミングの方が近い。
DTM板の方が適当だろうね。プログラムあんまり関係ないし。ソフトでどう表現するかの方が主体。
0641デフォルトの名無しさん
2007/04/27(金) 15:28:54いろいろできるみたいなんだけど。
http://www.dtmm.co.jp/archives/2007/04/flashmod.html
0642デフォルトの名無しさん
2007/04/27(金) 20:32:19おお興味ある。
前からFlashでリアルタイムのサウンド処理できたらと思ってたんだけど、不可能とあきらめてた。
で、びっくりしたんでざくっと調べてみたんだけど、
最新のFlash CS3(FLASH 9) with ActionScript3で可能になってきたっぽいな
ランタイムVM(Flash player)もインタープリタ式からJITコンパイラに変わったり
すげすげ
0643デフォルトの名無しさん
2007/04/28(土) 01:51:29ECMAScriptのJIT実装ってどうやって型の解決してんだか、そっちが気になったのと
AMラジオの帯域だと今時のCPUで処理可能なんだなと思うとサウンドプログラミングって名前で良いのかとちょいと疑問に思う(w
0644デフォルトの名無しさん
2007/04/28(土) 07:08:22いい加減にしろキチガイ
0645デフォルトの名無しさん
2007/04/28(土) 08:06:19単なる実行エンジンの改良で早くなったときいたんだけど。
というかマジちんこ痒い。
0646デフォルトの名無しさん
2007/04/28(土) 08:10:140647デフォルトの名無しさん
2007/04/28(土) 08:27:410648デフォルトの名無しさん
2007/04/28(土) 09:18:102.7MHzの1bit信号を88.2kHzのPCMに変換するデシメーションフィルタ
って、あるけど
http://www.sony.jp/products/Consumer/SACD/format/index.html
サンプリング周波数は2.8224MHzとあるから64倍でしかないのだから
コレって何てこと無い単なるFIRのLPFだよね?
演算負荷下げる為にFFT使う程度だと思えるのだが
0649デフォルトの名無しさん
2007/04/28(土) 13:06:20そんなInterfaceの過去記事みたいな話題を
いまさらここでやって何になるの?
何かハッタリをこいたつもりなのかこの親父は
0650デフォルトの名無しさん
2007/04/28(土) 13:07:420651デフォルトの名無しさん
2007/04/30(月) 08:57:31作ってみたいのですが、何かいい参考書、文献、Webなどありませんか?
みなさんは、サウンドプログラミングを始めるとき、何をとっかかりにして
スタートしたんですか?
0652デフォルトの名無しさん
2007/04/30(月) 09:17:12SDKを落として、そのDSP.Hを見れば判ると思う。 他に特に資料は必要なかったよ。
0653デフォルトの名無しさん
2007/04/30(月) 11:38:49http://delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FWinAmp
0654デフォルトの名無しさん
2007/04/30(月) 11:55:590655デフォルトの名無しさん
2007/04/30(月) 12:28:450656デフォルトの名無しさん
2007/04/30(月) 16:52:03>>653
感謝。参考に勉強させていただきます。
0657デフォルトの名無しさん
2007/04/30(月) 17:15:50同時にWikipedia以外のWikiも盛り上げよう!
0658デフォルトの名無しさん
2007/04/30(月) 17:36:380659デフォルトの名無しさん
2007/04/30(月) 17:40:190660デフォルトの名無しさん
2007/05/01(火) 18:46:42経過をすっ飛ばして結果だけを見たらそうだろうな
0661デフォルトの名無しさん
2007/05/04(金) 01:11:36モデムみたいに音声帯域で振幅変調して送受信するのか?
0662デフォルトの名無しさん
2007/05/04(金) 04:55:34送信したらラジオじゃないから
0663デフォルトの名無しさん
2007/05/06(日) 13:01:070664デフォルトの名無しさん
2007/05/06(日) 13:28:430665デフォルトの名無しさん
2007/05/06(日) 13:32:330666デフォルトの名無しさん
2007/05/09(水) 18:48:34周波数変調(FM)した結果をアンチエイリアス化するにはどうしたらいいすか?
オーバーサンプリング以外の方法で。
発生してしまったナイキスト周波数以上の高次倍音を取り除くというより、
あらかじめナイキスト周波数以上の倍音を含まないように周波数変調を行うみたいなイメージなんですが
0667デフォルトの名無しさん
2007/05/09(水) 20:08:150668デフォルトの名無しさん
2007/05/10(木) 00:55:360669デフォルトの名無しさん
2007/05/10(木) 02:56:34TSPがどう関係あるの??
0670デフォルトの名無しさん
2007/05/10(木) 03:21:29俺も考えた事ある
積分とかできんのかな
0671デフォルトの名無しさん
2007/05/10(木) 10:25:21だからみんなオーバーサンプリングかフィルタをかけるかする。
オーバーサンプリングがいやなら、補間して平均とってデータをなまらせるか、
フィルタをかけるかぐらいしかない。
0672デフォルトの名無しさん
2007/05/10(木) 10:49:34sinc関数との畳み込みした結果が綺麗になってくれたらいいんだけど
0673デフォルトの名無しさん
2007/05/10(木) 13:12:13の1サンプル分の区間の積分とかできんの?
CPU負荷はとんでもないかも
知ったぶりぶり
0674デフォルトの名無しさん
2007/05/10(木) 13:17:16∫ sin(t*freq + ( sin(t*freq*ratio)*depth ) ) * sin(x-t)/(x-t) dt
では?
0675デフォルトの名無しさん
2007/05/10(木) 15:06:38フィルタだけでは折りかえしちゃったのはもう取れないよな
結局upサンプリングしてフィルタしないと
0676デフォルトの名無しさん
2007/05/10(木) 15:09:33ナイキスト周波数以上が折り返しても、ソレはソレで
0677デフォルトの名無しさん
2007/05/10(木) 15:36:14周波数変調というより、サイン波の位相変調(世間のFM音源と同じように)と考えて
1サンプルあたりの位相の変化幅を制限するみたいなアプローチはだめすかね??
山を飛び越えないようにみたいな
0678デフォルトの名無しさん
2007/05/11(金) 07:06:250679デフォルトの名無しさん
2007/05/11(金) 20:56:480680デフォルトの名無しさん
2007/05/13(日) 02:03:47ありがとう。
0681デフォルトの名無しさん
2007/05/13(日) 13:05:13低レベルから高レベルまで大丈夫だと思うからさ
0682デフォルトの名無しさん
2007/05/13(日) 14:17:270683デフォルトの名無しさん
2007/05/13(日) 15:46:402次IIRフィルタの係数をゆっくり変更するので我慢しておくれ。
0684デフォルトの名無しさん
2007/05/13(日) 15:53:41http://ufcpp.net/study/digital_filter/biquad.html
f0/Qを変更する場合、実行中に急激に変更すると発振する場合があるので
ある程度ゆっくり変更しなければいけない。
どの程度ゆっくりでなければいけないかは、教えられない。自分で試してくれ。
f0/Qを独立に制御出来るフィルターもあるけど、それは教えられないよ。
0685デフォルトの名無しさん
2007/05/13(日) 18:24:410686デフォルトの名無しさん
2007/05/13(日) 18:32:03for(i=0; i<A; i+=1) data[n] += data[n-i] / (A-i);
0687デフォルトの名無しさん
2007/05/13(日) 19:45:40A := 8;
for(n=DLY; n<Length-DLY; n+=1)
for(i=; i<A; i+=1) data[n] += data[n-DLY-i] / (A-i);
0688デフォルトの名無しさん
2007/05/13(日) 23:36:27まずこの二つの音を聞いて欲しいですが、
http://kissho6.xii.jp/14/src/1yon2350.wav.html
http://kissho6.xii.jp/14/src/1yon2351.wav.html
片方がオリジナルで、もう片方はOpenALに出力された音をファイルに落としたものです。
ずいぶん変わったような気がするのですが、
これ実際のところどの程度劣化しているのでしょうか?
また、これだけでこの原因が分かる方がいたら是非教えて欲しいです^^
0689デフォルトの名無しさん
2007/05/14(月) 01:22:26後者 nSamplesPerSec 22050
えーと。
0690デフォルトの名無しさん
2007/05/14(月) 04:06:44倍違うサイズにすら気付かないフリして釣ろうって辺りが無理ありすぎ。
マジレスすると、マ板の方が良く釣れると思われ。
0691デフォルトの名無しさん
2007/05/14(月) 08:29:38後者 未知のエネルギーを感じる・・・
なんだこれは・・・!?
0692デフォルトの名無しさん
2007/05/14(月) 09:25:140693688
2007/05/14(月) 10:09:05ありがとうございます。
サンプリングレートが違うことは気づきませんでした。
ただ、これは書き忘れていたのですが後者がオリジナルで、
前者がOpenALから出力したものです。
(>>688の書き方でミスリードされた方がいたらすいません^^)
つまり、自分としては44100の後者の方が音質が劣化していると感じたのですが、
そういったレスが無いとするとあまり優位な差では無い、もしくは完全に自分の間違いと言うことなのでしょうか?
もしくはどちらがオリジナルか分からなければ優劣はつけられないと言うことなのでしょうか?
(音量レベルが違うことやサンプルの長さが短いなどの問題もありそうですが^^)
0694デフォルトの名無しさん
2007/05/14(月) 10:30:31後者 nSamplesPerSec 22050 ステレオ
モノラルとステレオの差が大きいのだろ
0695デフォルトの名無しさん
2007/05/14(月) 11:04:30< '´  ̄ ヽ
__彡ノメノノlノリ〉
\ `ソリ!゚ ヮ゚ノi 耳も2つとかケチくさいこといわずに、
><(つ!>つ 3個とか4個とかついてれば、立体感あるのかしら?
/ ,く//_|l〉
 ̄ l.ノl.ノ
0696デフォルトの名無しさん
2007/05/14(月) 11:09:39地上には重力があるから上下については鈍感でよかったんだろな
0697デフォルトの名無しさん
2007/05/14(月) 11:26:43逆だと思ってたから、どうやってステレオ化してるのかとちょちビビッてたよ。
44.1Kの方が後から作られたんなら、単にモノラル化されただけ。
0698デフォルトの名無しさん
2007/05/14(月) 12:48:320699デフォルトの名無しさん
2007/05/14(月) 12:53:36でもこの場合単に振動を感知するだけだから話が違うかもしれない
0700デフォルトの名無しさん
2007/05/14(月) 23:50:51#あ、あいつらは耳を動かすから指向性を持たせられるのか。
0701デフォルトの名無しさん
2007/05/15(火) 00:05:03>>697
そうでした。
OpenALは内部でモノラル音源になってしまうことを
すっかり忘れていました。
一応3Dサウンドらしく、ステレオを左右の音に分解して
それぞれの発生位置を左右にズラしてみたのですが、
結局モノラルのままでした。
http://kissho6.xii.jp/14/src/1yon2362.wav.html
0702デフォルトの名無しさん
2007/05/15(火) 00:22:48という話をたまに聞くんだけど、それってどうなの?
例えばこんなの。(以下、シェーダー(?)ソース)
// result(i) = s(i)*0.5 + s(i-1)*0.3 + s(i-2)*0.2 + s(i-3)*0.1;
// ( result は最終的な再生音 )
// ( s(i)はi番目のサンプル )
//
// この手順をすべてのサンプルに対して適用する。
// r はs(i)と同義
r *= 0.5;
t = sample(-1); // t に一つ前のサンプルを代入
r += t * 0.3;
r += sample(-2) * 0.2;
r += sample(-3) * 0.1;
return r;
プログラム上ではこんな感じに展開される。
switch (channels や bits_per_sample とか適当に) {
case 8ビットモノラル: {
dst = (uint8_t *)dst_ptr;
src = (const uint8_t *)src_ptr;
for (i = 0; i < size; ++i) {
dst[i] = (uint8_t)(src[i]*0.5 + src[i-1]*0.3 + src[i-2]*0.2 + src[i-3]*0.1);
}
} break;
case 16ビットモノラル: {
dst = (uint16_t *)dst_ptr;
src = (const uint16_t *)src_ptr;
...
}
0703デフォルトの名無しさん
2007/05/15(火) 01:21:120704デフォルトの名無しさん
2007/05/15(火) 07:39:260705デフォルトの名無しさん
2007/05/15(火) 21:51:31プログラムだけ出されても正直理解に苦しみますが、とりあえずありがとう。
0706デフォルトの名無しさん
2007/05/15(火) 22:13:48あなたがやりたい事は>>208さんのやりたい事と同じだから、参考にしたら?
0707デフォルトの名無しさん
2007/05/15(火) 22:15:230708デフォルトの名無しさん
2007/05/16(水) 12:33:40たしかにそうなんですけどね^^
Creativeあたりが汎用的なチップを作ってくれないと、
ゲームなどで使うのは難しそうです
>>704
まさにそんな感じですね。
EAXを再現できるような
命令セットを妄想するだけでも楽しそうです^^
0709デフォルトの名無しさん
2007/05/16(水) 13:37:35あと、そういうFIRフィルターかけても頭部伝達関数くらいしか使い道が無い。
で頭部伝達関数は一瞬面白いけど、長時間聞けないよ。
気持ち悪いんだよね。
0710デフォルトの名無しさん
2007/05/16(水) 14:06:37その結果をサウンドカードでD/A変換して外部のスピーカーにつなぐような時代
になると確信している。
サウンドカードの優劣はEAXに対応しているかではなく、D/A変換の精度の高さで
評価される時代が到来するんじゃないかな?
0711デフォルトの名無しさん
2007/05/16(水) 15:23:391つのコアの一定の時間をサウンド処理に使ってることになるっしょ。
わざわざ1つのコアをサウンド専用に独立させるメリットは少ないかもね。
それとサウンドカードの優劣でEAX重用視してるのなんてゲーマーぐらいだとおもうが
0712デフォルトの名無しさん
2007/05/16(水) 18:23:42専用CPUて一昔前のゲーム機のハード仕様だろ、それ。
おまいさんが10年前から書き込んでるとしてもサターン辺りに抜かれてるくらい発想が遅れてる。
今時のPCならその程度の処理メインCPUで十分過ぎるし、特殊な用途なら既にいくらでも実現されてる。
>710
デジタル出力してアンプでD/Aしる、ってかそうしてるだろ?
0713デフォルトの名無しさん
2007/05/16(水) 18:47:45> デジタル出力してアンプでD/Aしる、ってかそうしてるだろ?
確かゲームに関しては5.1chサラウンドサウンドのデジタル出力は著作権か何かの
問題で禁止されていたと思う。だからゲームでサラウンドを実現するにはアナログで
5.1ch出力しなければならない。
どうしてもデジタルにこだわるなら2chにダウングレードされてしまう。
0714デフォルトの名無しさん
2007/05/16(水) 19:03:330715702
2007/05/16(水) 19:52:14>>702は>>703に対してのレスです。
CPUでSPU作ったら面白そうじゃない?
→DSP使えば
→(DSPで計算するのは)Creativeあたりが汎用的なチップを作ってくれないと難しいんじゃない?
という流れなので、別にCPUで計算することを否定してるわけでは無いです。
むしろ推奨派です。
0717702
2007/05/16(水) 20:28:39自分は別にEAXを特に優遇しているわけではありません。
EAXと同等のことができる汎用的なSPU命令セットがあれば
他のことをするにもいろいろと応用が利くのでは無いかと思ったのです。
「参考にするにはいいんじゃないかな」程度の意味でお願いします^^
PS
話が前後して申し訳ないのですが、もしかして>>702さんは
「DSPを参考にすればいいんじゃない?」
という意味でDSPと言ったのでしょうか?
たしかに、ちまたにあるDSP用のソースを
x86やPowerPCあたりで高速に実行できれば、それはすばらしいと思います。
0718デフォルトの名無しさん
2007/05/16(水) 23:23:35>話が前後して申し訳ないのですが、もしかして>>702さんは
702はお前だろ?
もう少し落ち着いて、考えをまとめてから書け。
コードもその調子で書くとバグだらけになるぞ。
0719デフォルトの名無しさん
2007/05/17(木) 00:03:12と思うんだけど。
兎にも角にもまずDSPプログラム以外の割り込み処理が第一関門だよな。
んでFIRを時間軸で実装・・・ってとこで書いてた人がいたけど外部RAMとの
転送速度の遅さが第二関門。
SIMD命令とかをVCで使うにはインラインでもアセンブラ使わないとどうにもならないから
要求されるプログラミング能力の高さが第三関門。
1はμTronでもPCに入れて組込みOSみたいにすればまぁできない事もないかもな
2はアーキテクチャ的にまず無理だよなぁ。DSPの設計なんてほとんどそこに金かけてるようなもんだもんな。
3は誰かがすごいライブラリでも作ってくれたらまぁできないことも無いか。
っと妄想。
実際PCをDSPチックに使えるようになったらいいよな〜 DSPなんて評価ボードでも高いし。
PCならコスト10分の1くらいで何でもかんでも付いてくるし。
0720デフォルトの名無しさん
2007/05/17(木) 06:24:15って発想が臭すぎる
PowerCoreとかUADのカスタムプラグインて自分で作れんのかね
0721デフォルトの名無しさん
2007/05/17(木) 11:55:13サウンド専用CPU載せるにしろDSP載せるにしろ、アセンブラレベルは理解してないと不味くね?
発展すればそのうちCgみたいなのが出てくるかもしんないけど
0722デフォルトの名無しさん
2007/05/17(木) 12:10:561、入力と出力の間の加工
2、インタラクティブな合成・加工
1については、現状では、サンプルレートがデバイス毎に微妙に異なるので
そのサンプルレート調整をする仕掛けが無く、PCで一般的に行うのは無理な状況
そもそもCODECが既に強力なLPFを要求するにで、ここで既に遅延を持っている以上
数サンプルの遅延で処理するというのは、無理
2については、低レベルオーディオを使っても100ms程のバッファを用意してやらないと
他の割り込み処理で時間を食われると、音が途切れてしまう問題がある。
0723デフォルトの名無しさん
2007/05/17(木) 12:30:02栗がうまくMSに取り入っているから、PCゲーでの音の処理は、PS3やXBOX○のように
CPUのコア上で処理することはできないようなレスを以前誰かがしていたような気がする。
OpenALとのからみだったかな?
0724デフォルトの名無しさん
2007/05/18(金) 01:44:57たしかに純粋なDSPのような性能が求められると厳しいかもです。
1
もちろんμTron使うという手もあるのですが、
Windows上で実行可能な形式にしてしまうのが現実的かなという気がします。
2
これはCPUをベクトルプロセッサ的に扱おうとするといつも出てくる問題ですよね。
画像処理で考えた場合、800×600×4bppな画像の転送+加工を1秒間に60FPS×2回程度は
問題なく行うことができますので、そこから考えると
800×600×4×60×2 = 219[MB/s]
このあたりがSPU on CPUの性能限界でしょうね。
sseを使って4サンプルまとめて計算&ロード・ストアしていけば
あと2倍くらいは性能がでるかもしれません。
他にも、メモリ技術の進歩がこの性能を引き上げてくれるに違いないです。
(上がってくれるといいなぁ^^)
3
そうですね。誰かがやってくれると思います^^
>>722
2については、スレッドの優先順位を上げることで
ある程度は対応できますよ。
0725デフォルトの名無しさん
2007/05/18(金) 05:14:08現実的にはPCには高機能のオーディオアプリケーションが沢山ありますよね。全盛といってもいいくらい。
入出力レイテンシーもかなり小さくなってるし、
高品位なソフトシンセを複数動かしつつ、HDから何十トラックものストリームオーディオを再生し、
なおかつ大量のエフェクトをかけて・・・みたいなことがリアルタイムで動く時代なのに、
CPUのリアルタイムオーディオ処理能力は、DSPと比べてやっぱ劣るもんなの??
0726デフォルトの名無しさん
2007/05/18(金) 05:25:01音楽制作用途のアプリケーションとかだと、現実的にはFIRってあまり必要にならないし。
0727デフォルトの名無しさん
2007/05/18(金) 10:10:50http://www.dtmm.co.jp/archives/2007/04/firkefir.html
0728デフォルトの名無しさん
2007/05/18(金) 11:25:15直線位相特性という、定めた遅延時間だけ遅れるけど、遅れた状態では完全に
位相特性がフラットなものが入っているのよ
0729デフォルトの名無しさん
2007/05/18(金) 11:33:16ttp://ja.wikipedia.org/wiki/SPU#SPC700
スーファミのSPU作ったのって、なんとクタたんなんだよな
0730デフォルトの名無しさん
2007/05/18(金) 12:47:35最近の CPU は糞早いし、マルチメディア用の専用命令も持ってるから、
性能的にはそんなに劣りはしないと思う。
DSP の利点は、ハードリアルタイム性の保証とか、
コストパフォーマンス(チップサイズ、価格ともに)かな。
大き目の据え置き機器は今後、PC 上のソフトウェアに置き換えられて減ってくかも。
でも、携帯型のとか、小さめの機器では DSP の利点がある。
0731デフォルトの名無しさん
2007/05/18(金) 13:12:43民生用に使われてるDSPだと200MIPS も無いのが殆どさ
0732デフォルトの名無しさん
2007/05/18(金) 21:39:38Intel CPUなんか実際のアプリでMIPSで比較したら一桁低いよ。
CPUの性能自体はそりゃDSPに比べたらめちゃめちゃ早いけどな。
>>726
オーディオアプリとかは知らないがDSP使って信号処理するような製品作るときは
まだまだFIRが多いよ。FFT使って〜とかやるよりは設計が楽だからだろうね。
そもそもDSP自体がFIRを構成しやすいように作ってあるし、命令も備えているから。
ま、あれだ グダグダ机上の空論やってもしょうがないから誰か
Windowsアプリで サウンドカード経由の入出力使った リアルタイムFIRフィルタプログラム作ってよ。
俺はWindowsアプリのプログラミング能力は0だw TiのDSPなら使えるが・・・
0733デフォルトの名無しさん
2007/05/18(金) 23:05:15PowerCore mk2(モトローラ56K/150MHzを4個)とPCネイティブ(C2D)
で同じプラグインを使った場合(両方用が出てるプラグイン)
PowerCore mk2の場合18個に対して、C2Dでは30個以上動いたそうな。
ただし、PowerCore mk2自体はPCIで接続されてるから、そのオーバーヘッドもありそうだがね。
0734デフォルトの名無しさん
2007/05/19(土) 01:57:31プラグインで良く見かけるリニアフェーズEQってどうやってるの?
2次IIRとかじゃないわけだよな。設定変更すると動的にIR生成するFIRですかね。
他にも方法あるの?
0735デフォルトの名無しさん
2007/05/19(土) 02:34:51与えた特性との最小二乗誤差なり minmax 誤差なりを最小化する
線形位相 FIR とか、線形に近い位相の IIR を作る手法はあるよ。
0736デフォルトの名無しさん
2007/05/19(土) 07:07:24IIR+位相補正ってことですか?
0737デフォルトの名無しさん
2007/05/19(土) 11:30:31時系列の方で二乗誤差を最小化とかそういう制約付けて設計すると、
IIR でもあんまり位相がゆがまない。
もちろん、次数は高めになる。
0738デフォルトの名無しさん
2007/05/19(土) 23:58:25実際のアプリでって、それ石の性能比較じゃねーじゃんw
パイプラインの深い最近のintel系CPUと、DSPをMIPS値で単純比較するのもどーかとは思うがな…
0739デフォルトの名無しさん
2007/05/23(水) 08:17:50そもそも浮動小数点演算出来るDSPに恵まれてる人の方が少ないだろうし
0740デフォルトの名無しさん
2007/05/24(木) 02:30:45そういう意味じゃなくね?
パイプライン云々って事は命令の並びで効率変わるってことでしょ?
Intelは内部でCISC命令に置き換えてるしSIMD命令なんかもあるから単純に1命令単位で比べても意味ないっしょ。
実装にも左右されるだろうけど、>733みたいなタスク単位の処理量での比較なら意味ありそうだけど。
0741デフォルトの名無しさん
2007/05/24(木) 02:32:32CISCはRISCの間違い。
すまそ。
0742デフォルトの名無しさん
2007/05/26(土) 11:19:59プログラマブルな汎用フィルタとして使えるような話が盛り上がってるから
それを待ってみたいな。
0743デフォルトの名無しさん
2007/05/26(土) 11:49:00頭部伝達関数みたいな気持ち悪い音出すだけじゃ、特にありがたみがない。
0744デフォルトの名無しさん
2007/05/26(土) 11:57:27いったいどれほどの使い道があるんだろう。
自分、全然詳しくないんだけど、結構あるのかな?
0745デフォルトの名無しさん
2007/05/26(土) 14:44:41サウンド用DSPは専用ハードならではの低レイテンシなわけで、
GPU通すくらいレイテンシあっていいなら現行ハードでも十分だろ。
結局この手のハードは 入力→処理→出力 が非同期で安定して動くところがメリットなんであって、
サウンド出力の存在しないグラボに音データ送ったところで手間増えるだけ。
0746デフォルトの名無しさん
2007/05/26(土) 17:17:17GPUがサウンド処理用として適しているということではなくて、
最近の強力なGPUの処理能力を遊ばせとくのはもったいないからって感じだと思う。
重くなるリバーブなんかをGPUで処理できれば、負荷を気にせずゴージャスな実装ができるとか、
CPU側であと10個コンプやEQ使えるみたいな感じなんでは。
0747デフォルトの名無しさん
2007/05/27(日) 04:40:33組み込みやクローズドなシステムばっかりやってるプログラマは
NuendoとかLogicとかPCベースのDAWが今どんなことになってるか一度見てみるのもいいと思う。
うらしまたろうになってしまうよ。
0748デフォルトの名無しさん
2007/05/27(日) 08:15:450749デフォルトの名無しさん
2007/05/27(日) 09:39:23今の話題は低レイテンシをどうやって実現するかであって
DAWの多機能性では無いと思うんだが
0750デフォルトの名無しさん
2007/05/27(日) 10:06:560751デフォルトの名無しさん
2007/05/28(月) 03:52:15結局アウトボードでDSP積む時代に逆戻りしてるよ。
0752デフォルトの名無しさん
2007/05/28(月) 10:14:52業界が全然わかってないなw
開発メーカーは、TDMからだんだんRTASに移行してるだろ。
0753デフォルトの名無しさん
2007/05/28(月) 17:25:350754デフォルトの名無しさん
2007/05/28(月) 20:32:31純粋にサウンドの良し悪しとコストパフォーマンス
UAD-1のハードウェアがどうとかじゃなくて、そこで動くプラグイン=ソフトウェアの出来が良かったと。
ま要するにFIRのタップ数じゃなくてまずサウンドデザインってこった
0755デフォルトの名無しさん
2007/05/28(月) 22:49:14ついてなくて、高機能、何万次のFIRでもリアルタイム処理可能とかのたまう輩がでてくるんだろうなあ。
無理して話についてこなくてもいいのに。
ちなみに、音質とかサウンドデザインなんていうのも今の流れじゃなし。
0756デフォルトの名無しさん
2007/05/29(火) 02:34:300757デフォルトの名無しさん
2007/05/29(火) 06:40:53否定レスの材料にするって流れだよ。
0758デフォルトの名無しさん
2007/05/29(火) 10:07:430759デフォルトの名無しさん
2007/05/29(火) 12:38:45いや純粋にそのへんの業界のことしらないんで。
サウンドスレだしオーディオ・音響機器とかエフェクタとか?
0760デフォルトの名無しさん
2007/05/29(火) 14:34:17セクシーボイスアンドロボとかいうドラマの現場でもたしか使われているはず。
0761デフォルトの名無しさん
2007/05/29(火) 15:10:220762デフォルトの名無しさん
2007/05/30(水) 10:08:34自分の声を松田聖子に変えられる技術があるなんて知らなかったw
せいぜいピッチシフト、フォルマントシフト、
スペクトラム・シェイパーぐらいしかないと思ってたよ。
こういうのだとCPUでもリアルタイムでできるから、まったくの新技術なんだろうね。
0763デフォルトの名無しさん
2007/05/30(水) 10:15:27フォルマントよりもう一段上でないと人変換までは無理だよ
0764デフォルトの名無しさん
2007/05/30(水) 10:27:360765デフォルトの名無しさん
2007/05/30(水) 13:04:31単なる空想科学なんじゃね?
0766デフォルトの名無しさん
2007/05/30(水) 13:13:55人間の声ってめちゃめちゃ複雑だから、せいぜいAntaresのAVOX程度の加工が関の山。
誰かの声っぽく合成するだけでも難しいのに、同じ声に加工する技術があるなら、教えてほしい。
0767デフォルトの名無しさん
2007/05/30(水) 13:20:140768デフォルトの名無しさん
2007/05/30(水) 13:53:090769デフォルトの名無しさん
2007/05/30(水) 19:46:50誰かの声ってなら声質よりも喋り方とか表情とか演技の部分の影響の方が多いと思うぞ
それこそコンピューターの一番不得意な部分だが
0770デフォルトの名無しさん
2007/05/30(水) 21:01:43安倍総理のカ行みたいな上手く発音出来ない子音だったり、そういう部分が似てると感じるんじゃないの?
ものまねとか見るとそう感じる。
声質だけなら「自分の声を松田聖子に変える」なんてのも機械的に可能だろうし、
松田聖子のものまねで喋れば似るだろう。
ただ普通に喋っただけで同じになるとしたら>761しかありえないが、音声認識をリアルタイムでという時点で極めて困難だろう。
0771デフォルトの名無しさん
2007/05/30(水) 21:20:27某タレントがCDを出すのに'あ'から'ん'まで録音しただけで歌ってないと言っていたが本当だろうか
0772デフォルトの名無しさん
2007/05/30(水) 21:43:58まず無理。
そういえば昔J-POPはコンピューターが全部自動で作ってるって言ってるヤツもいたな。
それと似た類いの戯言だ。
今の技術だとせいぜいVocaloidぐらいが限界じゃないかな
たぶんピッチ補正をオートでかけまくりの声を合成音声だと間違ってるんじゃないだろうか。
フォルマントの単純シフト、ピッチ変換位だけじゃどうやってもどことなく自分の声っぽいんだよね
0773デフォルトの名無しさん
2007/05/30(水) 21:45:11出来なくは無さそうだけど、ホントだとしたらすげぇな。
ただ、大抵の人は高音域で声が裏返るけどそういうところってどう処理してるのか気になる。
0774デフォルトの名無しさん
2007/05/30(水) 21:58:41全部は言い過ぎだが最近の楽曲のほとんどはコンピューター合成された音だぞ。
だからコンサートとCDの音質の差は開く一方で・・・
0775デフォルトの名無しさん
2007/05/30(水) 22:01:54ちょっと前に松下がプリセットされた曲の速度やピッチを変えることで
BGMを作る機械出してたよね。
0776デフォルトの名無しさん
2007/05/30(水) 22:06:27シンセ音とメロディを混同してね?
コンピュータが自動で作曲&編曲系はいくつか見たけど、
作曲&編曲と呼べるレベルのもは一度も目にしたことが無い。
0777デフォルトの名無しさん
2007/05/30(水) 22:27:420778デフォルトの名無しさん
2007/05/30(水) 23:02:10以前、vipでエッチなセリフや喘ぎ声を自分で喋って録音したものをトーンだか
再生スピードだか調整して女性の声っぽくしてうpしてた馬鹿を思い出した。
しかも、その直後、それに逆の変換をかけて元の音声に近いとてもキモイものを
うpしてる馬鹿もいた。・・・アレは本当にキモかった。
0779デフォルトの名無しさん
2007/05/31(木) 00:10:34個人の声をわからなくするのに単純なピッチチェンジかけてたりするが、
きょうびあれ意識低杉だよな〜
完全とまではいかなくても、ほぼ元に戻せるのにさあ
0780デフォルトの名無しさん
2007/05/31(木) 01:37:14だからわかっているところはちゃんと多重処理とかかけているが
0781デフォルトの名無しさん
2007/05/31(木) 03:54:010782デフォルトの名無しさん
2007/05/31(木) 04:01:28自動伴奏って?
人間ジャズミュージシャンの演奏と呼吸を合わせてセッションできるならすごいな。
そうゆうの夢なんだよ。
0783デフォルトの名無しさん
2007/05/31(木) 10:08:44とあるミュージシャン(そこそこ有名)と音声合成の話になった時、
その人は、「あ」から「ん」まで録音して並べたら楽できるのではと思ってやってみたが、
全然使い物にならなかった、って言ってたぞ。
>>777
ジャズでBIABにはかなうまい。自動作曲させてもまだ一番マシ。
>>782
人間と呼吸を合わせてセッションする類の研究はMax/MSPの方面、特にフランスで盛んだよ。
日本人でもやってる人が何人かいたはず。
0784デフォルトの名無しさん
2007/05/31(木) 10:37:04>>782
独奏の変化にも対応可能だそうだよ。
ttp://ci.nii.ac.jp/naid/110002885261/
>>783
上のはここの研究室ね。
ttp://staff.aist.go.jp/m.goto/PROJ/virja-j.html
#どっかで伴奏のリアルタイム生成みたいなの見かけたんだけどどこだったかなぁ
0785デフォルトの名無しさん
2007/05/31(木) 11:32:2820人くらいの同時発音で同じく50音録って応援歌みたいなの作ってた人居た。
ソロボーカルで綺麗なものを作るのは難しいだろうけど、用途限れば使い道はいろいろありそう。
0786デフォルトの名無しさん
2007/05/31(木) 12:52:22DSPネタばっかりだったからこうゆう話しは面白いな(スレタイ的に範疇にはいるのか微妙だけどさ
この研究は人間はピアノ担当と決まっているみたいだけど、演奏はMIDI情報として交換するのかな。
それともオーディオ信号から解析するのだろうか(だったらまたすごい
0787デフォルトの名無しさん
2007/05/31(木) 15:03:56是非DTM板の自動作曲スレをお気に入りに登録してうれ
プログラマ不足だ
【アルゴリズミック】 自動作曲 【コンポジション】
http://pc11.2ch.net/test/read.cgi/dtm/1143044078/
0788デフォルトの名無しさん
2007/05/31(木) 15:45:020789デフォルトの名無しさん
2007/05/31(木) 17:25:470790デフォルトの名無しさん
2007/05/31(木) 19:49:02サウンドプログラムと書いたりしてるな
0791デフォルトの名無しさん
2007/06/01(金) 04:46:54DTM板周辺では両方の意味普通に使うよ
ここのプログラミングみたいなことも自動作曲とか音響とかでやる場合はあるし、
リズムプログラミングとか打ち込みの事をさす場合もある、でもあんまりつかわん
リズムの打ち込みとか言っちゃうし
0792デフォルトの名無しさん
2007/06/03(日) 00:09:21つ HDMI
ただ入力の規格は無いけど。
0793デフォルトの名無しさん
2007/06/04(月) 12:03:47でも将来的にはCPUの中にGPUが統合されていく流れがあるみたいね。
今みたいなマルチコア化は実質的なメリットが少ないもんだから、
汎用コアを増やすよりGPUを統合して(もはやGPUと呼ばないのかも
グラフィックのみならず強力な汎用ベクトル処理プロセッサとして利用するとかなんとか。
AMDはそのためにATI買ったという話しだしね。
0794デフォルトの名無しさん
2007/06/04(月) 12:42:17汎用バススロットにCPUより高い発熱体設置って狂気の沙汰とは思えん。
せめてCPU用の大型クーラーをGPUにも装着できるような配置にしてほしい。
0795デフォルトの名無しさん
2007/06/04(月) 14:40:20難しい言葉を使ってみて素で間違えてる馬鹿w
0796デフォルトの名無しさん
2007/06/04(月) 14:58:39m9(^Д^)プギャー
0797デフォルトの名無しさん
2007/06/04(月) 17:37:16汚名挽回の類義語?
「狂気の沙汰」を使うならそのあとに「とは思えん」の否定は不要。
否定を入れるなら「正気の沙汰とは思えない」になる。
ま、PC弄るのも程々にして日本語の勉強もな。
0798デフォルトの名無しさん
2007/06/04(月) 17:50:040799デフォルトの名無しさん
2007/06/04(月) 18:02:43とか言われちゃいますよ
0800デフォルトの名無しさん
2007/06/04(月) 19:10:08これじゃあCPU+GPUべた褒めだよwwwww
0801デフォルトの名無しさん
2007/06/04(月) 21:07:380802デフォルトの名無しさん
2007/06/04(月) 21:37:190803デフォルトの名無しさん
2007/06/12(火) 00:42:03waveファイルに移動平均の計算をしてLPFをかけようと思っているのですが、
waveファイルが格納されているbufに移動平均の式をかけると、
実際の曲よりも大きな音で、ザーっというノイズが流れてしまいます。
移動平均の部分のプログラムは、
for(i=50;i<BUFSIZE;i++)
{
j=0;
for(j=0;j<50;j++)
{
sum+=buf[i-J];
}
buff[i]=sum/50;
}
write(/dev/dsp,buff,BUFSIZE);
みたいな感じになってます。
ちなみにOSはFedoraCore6で、言語は普通のCだけしか使ってません。
とりあえずノイズが出てしまう原因だけでも知りたいのですが、
どなたかご教授お願いします。
0804デフォルトの名無しさん
2007/06/12(火) 01:02:53・jとJは同一だよな?
・変数の型は?
・sumを初期化しろ
・3行目の j=0;はいらんだろ
0805803
2007/06/12(火) 01:31:27buff[]とbuf[]は別物です。
jとJは同一です。完全に表示ミスです・・
変数は全てintでやってます。
おっしゃる通りで、3行目のj=0はsum=0の誤りでした。
自分で書いといて間違えばっかで申し訳ないです。
0806デフォルトの名無しさん
2007/06/12(火) 02:03:14↓
buff[i-50] = sum/50;
じゃない?
0807デフォルトの名無しさん
2007/06/12(火) 02:06:40write(/dev/dsp, buff, (BUFSIZE - 50) * sizeof(int));
じゃね?
0808デフォルトの名無しさん
2007/06/12(火) 02:39:230809デフォルトの名無しさん
2007/06/12(火) 02:47:56というか、デバッグくらい自分でやれと
0810803
2007/06/12(火) 02:48:23レスありがとうございます。
>>806
自分のやり方だと、
前か後ろどちらかの50点には目を瞑るしかないと思っていたのですが、
その書き方ならなんとかなりそうです。
>>807 のほうなんですが、
移動平均をかけていない buf[] だと、
write(/dev/dsp, buf, BUFSIZE);
で問題なく再生されるのですが、
その場合でも *sizeof(int)をつけたほうが良いですか?
あと追記で、waveファイルは
16bit 2ch サンプリングf=48kHz、t=30秒程のものを使用しています。
0811デフォルトの名無しさん
2007/06/12(火) 02:54:29入力処理を書いてみろ。
0812803
2007/06/12(火) 03:24:01上にも書きましたが、16bitでやっています。
>>811
確認してみたら、>>803で書いたものとまた若干違うところがありました。
何度も直して、本当にすいません・・
while ( 1 )
{
length = fread( buf, 1, BUFSIZE, wave.fp );
write( dsp, buf, length );
}
となっています。
恥ずかしながら、waveファイルの再生の部分は自分が書いたものではなく、
元からあったwaveファイル再生のプログラムに移動平均の式を書き加えています。
0813デフォルトの名無しさん
2007/06/12(火) 06:47:09bufの型はちゃんと16bitになってるか? 8bitや32bitでやってないか?
あるいは符号無しになってないのか?
0814デフォルトの名無しさん
2007/06/12(火) 08:12:22おまいはwaveファイルのフォーマットを理解していない。それが原因。
はい終了。
0815デフォルトの名無しさん
2007/06/12(火) 08:18:23煽るのは、もちっと育ててからにしろ!
>>812 RIFF ヘッダというのがwavファイルには付いていて、
それをまず読んでサイズや形式を調べてる筈なんだが?
0816デフォルトの名無しさん
2007/06/12(火) 09:42:37同意。
最低限の調べ物をしてない教えてクンに餌を与えるな。
そいつの為にもならん。
0817デフォルトの名無しさん
2007/06/12(火) 12:23:36新人クンとか教えてクンとかいっても
このスレは質問者で成り立ってると思うがなあ
ベテランっぽい人は話題出せないし、あとは荒らしみたいなのばっかりだし
0818803
2007/06/12(火) 14:05:13いろいろとご意見ありがとうございます!
たしかにみなさんのおっしゃる通り、勉強不足感はいなめない状態です。
プログラムをいじる前に、waveファイルのフォーマットについてちゃんと勉強してみます。
自信がついたらまた違う名前で質問しにくるかもしれないんで、
そのときはヨロシクおねがいします。
板汚し失礼しました〜
0819803
2007/06/13(水) 18:12:09昨日騒いでたことは色々いじった結果無事解決しました。
色々忠告していただきましてありがとうございました。
まだいくつか問題はありますが、一ヶ月くらいはうじうじ考えてみようと思います。
それでもダメそうならまた質問にくるかもしれません。
ではROMにもどります。
失礼しました。
0820デフォルトの名無しさん
2007/06/13(水) 19:00:540821デフォルトの名無しさん
2007/06/13(水) 20:14:140822デフォルトの名無しさん
2007/06/13(水) 20:15:170823デフォルトの名無しさん
2007/06/13(水) 20:44:420824デフォルトの名無しさん
2007/06/13(水) 20:57:200825デフォルトの名無しさん
2007/06/13(水) 21:42:150826デフォルトの名無しさん
2007/06/13(水) 22:36:090827820
2007/06/13(水) 23:24:51mciSendStringでmidiを鳴らしていています。
音楽を変える時、前をstop、close、次をopen、playとやっていますが、
50回に1回ぐらい、openの時にMMSYSTEM275
指定したファイルが見つからないのエラーが出てしまいます。
ソフトを同じように進めて実行しても、出る時と出ない時があります。
自分で原因と思っているのは、以下の感じです。
・closeの処理をopenが抜かしてしまっている?
→sendだから処理が終わるまで戻ってこない気もするが
・closeすると、まれにカレントディレクトリの位置が変わる?
→それか実はプログラムの別の所で変えてしまっていたが、
stop、closeでは違っていてもエラーは出ない?
・引数文字列をPCTSTRにキャストしないといけない?
→しなくても一応警告はでない
・手違いで既にopenしているのをopenしてしまっている?
→別のエラーメッセージが出てくれると思うが
ググって見ると、以下のようなのが出てきます。
・プログラムの位置のパス名が長い
→当然ユーザーの好きな位置に置いてもらいたい
・デバイスが複数あると問題が起こることも
→ひとつしかない
・ファイル名には別途""を使わないとダメ?
→気をつけないといけないが、今の位置には空白はない
・機種vaioとしてのバグ?
→system.iniは書き換えたくない
実験しているんですけど、如何せん起こる事の方が少ないので難しいです。
原因と思われることがありましたら、教えてください。
0828デフォルトの名無しさん
2007/06/13(水) 23:46:34エラーしたら何度かリトライするとか。
0829820
2007/06/14(木) 00:25:49なるほど、エラーメッセージを表示して終了するのではなく、
中ではこっそりと何度かopenを試みるという事ですね。
それも入れたいと思います。
0830デフォルトの名無しさん
2007/06/14(木) 00:36:37安定度は幾分か上がると思う。
ってか、MIDIなら再生部自作してもそんな手間じゃないよ。
0831820
2007/06/14(木) 00:54:57DirectXはなんとなく使いたくないです。
自作は、waveの方で少しやった事があるので、
少し感じはつかんでいるんですけど難しそうです。
mciは他にもCPU率高いし、リソースも使えないし、
ループ再生も雑なので、不便なんですけど。
0832デフォルトの名無しさん
2007/06/14(木) 02:34:44dshowはDirectXではなくPlatformSDKだぞ。
WMPとほぼ等価の動作になるしmciでぐだぐだやってるよりはいいと思うが、使いたくないならしゃーないな。
0834デフォルトの名無しさん
2007/06/14(木) 23:36:22だと思うけど違うのかな?
0835デフォルトの名無しさん
2007/06/14(木) 23:45:590836デフォルトの名無しさん
2007/06/15(金) 00:51:370837820
2007/06/15(金) 01:27:48数百回は音楽変更の機会があったのに、エラーが起きてくれない・・
>>834-836
DirectXバージョン*が必要とかそういうのです。
もうデフォで大体入っていると思いますが。
後、DLLも使っていません。
0838デフォルトの名無しさん
2007/06/15(金) 02:30:260840デフォルトの名無しさん
2007/06/15(金) 16:44:560841デフォルトの名無しさん
2007/06/15(金) 17:58:42延々実況デバッグみたいのも勘弁だな
0842デフォルトの名無しさん
2007/06/15(金) 18:03:33そろそろ逆ギレをはじめるんじゃないかと思うと気が気でない。
0843デフォルトの名無しさん
2007/06/15(金) 20:09:380844820
2007/06/15(金) 20:22:27教えてくれたかた、ありがとうございました。
0845820
2007/06/15(金) 20:58:39原因は、>>827のカレントディレクトリの位置が変わるでした。
プログラムを起動して、別のパスにあるwavなどを開いて再生したり、
または別のプログラムを起動した後、音楽の変更処理を行うと
確実に275エラーが発生してくれました。
なので、音楽変更の前に再びカレデレを
プログラムの位置にすればエラー回避できそうです。
aliasでもいいかもしれません。
なお、notifyによる連続再生の時は、
カレデレが違っていても普通に処理されます。
その後、音楽変更処理を行うと、同じように275エラーが発生します。
0846デフォルトの名無しさん
2007/06/16(土) 04:47:140847デフォルトの名無しさん
2007/06/16(土) 05:55:100848デフォルトの名無しさん
2007/06/19(火) 21:18:38おめでとう
ちゃんと事後報告した行動は評価するよ
0849デフォルトの名無しさん
2007/06/26(火) 19:33:35いくつかの音を重ねたり、ゲーム内で音量を操作したりしたいです。
できればライセンスに縛られたくないので、ライブラリはなるべくライセンスが緩いもので……
0850デフォルトの名無しさん
2007/06/26(火) 20:16:440851デフォルトの名無しさん
2007/06/26(火) 21:38:46>音を重ねる
APIにデータを流す前に、単純に複数の波形のデータを加算してAPIに渡す。
>音量
APIにデータを流す前に、単純に波形データに数値を掛ける。
1.0未満なら音量は下がるし、1.0よりも大きければ上がる。
0852デフォルトの名無しさん
2007/06/26(火) 22:12:48iアプリとかならAudioPresenterとかMediaSoundとかがあったなぁ。
ってかJavaスレで聞いた方が早いと思われ・・・
0853849
2007/06/26(火) 23:06:36wavはClipクラス、midはSynthesizerクラスで扱えることが分かりました。
>>851の重ねる方法、音量を加工する方法はそこには書いて
ありませんでした…ちょっと難しそうです。
mp3はデコード処理があるため?ライブラリが必要なようです。
また、ライブラリがあってもPureJavaだと速度的に難しい?みたいな
ことが書かれているMLがありました。
とりあえずwavとmidで進めてみます。 >>851-852 感謝です。
0854デフォルトの名無しさん
2007/06/27(水) 04:15:380855デフォルトの名無しさん
2007/06/27(水) 04:48:32何様だよw
0856デフォルトの名無しさん
2007/06/27(水) 05:33:260857デフォルトの名無しさん
2007/06/27(水) 13:15:55ogg形式ならjavaの実装がある
ttp://www.jcraft.com/jorbis/
0858デフォルトの名無しさん
2007/06/28(木) 13:57:27*[0123456789]
逆再生用データ
*[9876543210]
これはなんていうの?
*[0927456381]
0859デフォルトの名無しさん
2007/06/28(木) 14:35:00言ってる意味が解らないし、そもそもサウンド関係無いような気がするが?
0860.858
2007/06/28(木) 15:17:58昔とある人が、前後反転させたデータ全体をn等分して更にそれを反転、
そしてnを∞とするとどうなるか、というのをアナログ回路実験したんだが、
それをデジタルにすると858に書いてある様になるらしい。
これについて詳しく知りたいので、できれば関連するキーワードでも見つけられたらと思って。
0861デフォルトの名無しさん
2007/06/28(木) 17:21:04「それ」てなんだ
0862デフォルトの名無しさん
2007/06/28(木) 17:29:590863デフォルトの名無しさん
2007/06/28(木) 20:15:51そんなアルゴリズム聞いたこと無いなぁ。
ちなみにどんな音で鳴るの?
窓の大きさと繋ぎ方が解れば再現できそうだけど、意味のある音が出るとは思え無いんだよなぁ・・・
0864デフォルトの名無しさん
2007/06/28(木) 20:36:570865デフォルトの名無しさん
2007/06/28(木) 20:54:550866デフォルトの名無しさん
2007/06/28(木) 21:46:52860自身言葉を覚えただけで全く意味は分かってないだろ
0867.858
2007/06/28(木) 23:39:17通常再生と逆再生が混じって聞こえる感じです。
「とある人」というのは、何十年も前にこの事に関する論文を書いた人で、
もしかしたら今は死んでしまっているかもしれません。
0868デフォルトの名無しさん
2007/06/29(金) 00:19:040869デフォルトの名無しさん
2007/06/29(金) 02:13:22とある人の名前でぐぐって、見つからなければ諦めろ
0870デフォルトの名無しさん
2007/06/29(金) 02:56:260871デフォルトの名無しさん
2007/06/29(金) 14:05:41FFTによるピッチシフトするプログラムを作ったのですが、
周波数をシフトさせると、音量が小さくなってしまいます。
FFT→周波数操作→逆FFTした後、出力する際の振幅に
xをかけて、周波数 * 1.0 (つまり変化させない)の場合に
元通りの音量になるようにxを調整したところ、
周波数を * 2.0したときに、感覚で音量が半分以下になってしまいます。
シフトさせる量と、振幅にかけるxには
関数関係が必要なんだと思いますが、
どんな式にすればいいんでしょうか?
【補足】
・使い物になるかは度外視して周波数 * 8.0とかやってみたところ、
音量はむしろ元より大きくなりました。
まぁ、シフト量は0.5〜2.0くらいを限度にしたほうがいいようですね。
・もろもろの処理の仕方はCマガに載っていたものをそのまま使っています。
FFTサイズ2048、オーバーラップ4で、出力の際にコサイン窓をかけてます。
0872デフォルトの名無しさん
2007/06/29(金) 16:14:230873デフォルトの名無しさん
2007/06/29(金) 16:18:53虚数成分を処理して無いとかじゃね?
0874871
2007/06/29(金) 16:31:33えっ?処理してない!
Cマガのソースだと逆FFTの結果は実数部しか使ってない。
そうか、逆FFT後は虚数成分が出るから、それを無視することで
そのぶん振幅が減ってしまうってコトかな…
ちとやってみます。
…と思ったけどその前に>>872を読んだほうが良さそうなので見てみます。
0875871
2007/06/29(金) 21:19:17耳で聞くと、高い音ほど小さく聞こえる、と。
>感覚で音量が半分以下に
と書いたのは少々語弊があって、
元ファイルと変換後ファイルを、波形を表示するソフトで表示すると、
全体的な波形の幅が、大体半分以下になってます、ってことです。
…で、虚数を使おうとしたけど、どう使えばいいかわかりません。
そもそも、逆FFTの結果得られた値の虚数は何を表しているのか?
適当に、ルート(実数*実数+虚数*虚数)とか試してみたけど
ヘンなガタガタした波形になります。
数学知識が足りず、FFTを理解できてないのですぐつまづく…。
0876デフォルトの名無しさん
2007/06/29(金) 21:43:42(x*x+y*y)^.5じゃ負数が無くなるから、実数部の符号を最後に掛けてみるとか。
・・・ごめん、適当言った。
0877デフォルトの名無しさん
2007/06/29(金) 23:15:21単純なピッチシフト処理で、IFFT 後のデータに虚部が出るっておかしいよ。
0878デフォルトの名無しさん
2007/06/29(金) 23:15:51IFFTの結果得られる虚数成分はゼロじゃなくちゃおかしいよ
そもそもピッチシフト法の説明がないし,誰も応えられんのとちゃう?
0879871
2007/06/30(土) 00:22:33そう、それをやってみた結果がガタガタ。
>>877-878
虚数が出てるかどうか、確認してませんでした。
確認してみたところ、出てます。
この時点で既におかしいのか。
もともとC++のソースをCに直して実装したから、地味なバグが居るのかな…。
ピッチシフト法の説明が十分にできる理解レベルにないと思いますが、
こんな説明でいいのかな。↓
・もとの信号をFFTで1本1本の正弦波に分解。
・各正弦波の振幅・位相を求める。振幅はそのままとっておく。
・位相を、「位相差計測法」によって真の周波数を測定
・周波数軸上でシフトし、位相差計測法の逆処理
・もとの振幅と処理済の位相を実数・虚数に直してIFFT
0880871
2007/06/30(土) 00:39:42上記質問にピンポイントに答えられる方がいるのが
一番ありがたいのですが、それよりまず簡単な質問。
そもそも普通、ピッチシフトしたら音量が下がるなんてことは無い?
(つまり、明らかに俺のソースのバグ?)
0881デフォルトの名無しさん
2007/06/30(土) 01:34:42ピッチシフトも何もせず、素通しのつもりのコード書いてみた場合、
音量下がらない?
一度それ試して。
ピッチシフトするって、要するに、周波数領域でデータをずらしてくのよね?
その際、音程下げるなら低周波、上げるなら高周波のデータがちょっと欠けるわけで、
その欠けた分の音量は下がって当然だけど。
音程2倍程度でそんな音量変わるとも思えない。
0882871
2007/06/30(土) 01:49:34ああ、下がります。
例によってCマガのソースが、なわけですが
出力する際に波形に…つまりIFFT後の実数に「4」をかけてます。
(※ソースを知っている人のために注意を入れておくと、
かけてる数字は8だが、コサイン窓をかけてオーバーラップして
出力してるぶん、そもそも2はかけなきゃいけない。)
この「4」が何なのか、書いてないので意味がわからないのです
(解説には「ゲインの調整をしています」としか書いてない)
ちなみに、これ4だと多すぎるみたいで…。
このままのコードで素通しすると、むしろ音量が上がってます。
0883デフォルトの名無しさん
2007/06/30(土) 02:01:35何タップの FFT でやってる?
FFT の実装の仕方によるんだけど、その 4 のところは、
FFT のタップ数か、その平方根かを入れないと駄目かもしれん。
0884デフォルトの名無しさん
2007/06/30(土) 06:05:23ソースをどっかのロダにうpしる
その方が早い
0885デフォルトの名無しさん
2007/06/30(土) 14:14:21自分で作る必要ないだろ
0886デフォルトの名無しさん
2007/06/30(土) 14:51:52あとはライブラリ使うのがうざいとか。
0887871
2007/06/30(土) 15:07:38Cマガのソースには、FFT関数自体は載ってなかったため
FFTはこれを使いました。↓
ttp://www5.airnet.ne.jp/tomy/cpro/sslib8.htm
使ったのはfft1()です。
ちなみに引数iterの意味がわからず、
ページ上部の「使用例」を参考に、必ず0を渡してます…。
0888デフォルトの名無しさん
2007/06/30(土) 15:13:080889デフォルトの名無しさん
2007/06/30(土) 15:14:220890デフォルトの名無しさん
2007/06/30(土) 15:18:18http://oku.edu.mie-u.ac.jp/~okumura/algo/
ここの
http://oku.edu.mie-u.ac.jp/~okumura/algo/archive/algo.lzh
のfft.cオヌヌメ
ライブラリ使うのうざいっつって他人のソースマンマ使ってるんじゃ意味無い気もするがな。
0891871
2007/06/30(土) 16:40:53ありがとうございます、
気持ち処理が早くなったような気がします。
当然とは思いますが結果は何も変わりませんね。
どうも「真の周波数を測定」とか「一度振幅・位相に変換」
あたりが怪しい。
ちょっと実験でやってみようと思ってることが…
下記のようにしたら、音の高さが半分になる、
って認識合ってますよね?
・FFTする(説明のため、FFTサイズを2048とする)
・結果の前半の1024個を、実数・虚数どちらも
x[0] = x[0];
x[1] = x[2];
x[2] = x[4]; …と続けて、前に詰めていく
・x[512]〜x[1023]は全部0にする
ところで、逆FFTするとき、後ろ半分は
どういう状態にしておくのが正しいんですか?
今は、実数・虚数とも0にしてるんですが。
0892デフォルトの名無しさん
2007/06/30(土) 17:15:19いや、だからピッチシフトしてみる前に、
素通しの FFT → IFFT の結果確かめてみろって。
高周波に関しては、普通は 0 で埋めとく。
ない情報は(簡単な方法では)作れない。
たいていの音はハーモニクスを持ってるっていう経験則から、
低周波の情報を使って(元々ない)高周波を推定する手法はあるけど、
詳細は知らない。
0893デフォルトの名無しさん
2007/06/30(土) 19:01:12お前がFFTを理解出来てない、でFA。
簡単に説明するとN=8の時、
x[0],y[0]はDC成分
x[1]=x[7],y[1]=y[7]はそれぞれ周期1のsin,cos成分
x[2]=x[6],y[2]=y[6]はそれぞれ周期2のsin,cos成分
x[3]=x[5],y[3]=y[5]はそれぞれ周期3のsin,cos成分
x[4],y[4]はそれぞれ周期4のsin,cos成分
というようにN/2で対称なデータになり、対称のままifftすれば虚数成分は出現しない。
0894デフォルトの名無しさん
2007/07/03(火) 23:36:51>原信号に含まれる最大周波数成分を f とすると、
>2f よりも高い周波数 fs で標本化した信号は、
>低域通過(ローパス)フィルターで高域成分を除去することによって
>原信号を完全に復元することができるということを示している。
5512Hz の正弦波をサンプリング周波数 11025Hz でサンプリングしたら、
とても原信号を完全に復元したとは言えないような結果になった。
#音量が大きくなったり小さくなったりを繰り返して聞こえる。
以下のフリーウェアで簡単に再現できるので理由を教えてくれると有り難い。
WaveGene
http://www.vector.co.jp/soft/win95/art/se097634.html
WaveSpectra
http://www.vector.co.jp/soft/win95/art/se085448.html
0895デフォルトの名無しさん
2007/07/03(火) 23:55:440896デフォルトの名無しさん
2007/07/03(火) 23:58:240897デフォルトの名無しさん
2007/07/04(水) 00:19:190898デフォルトの名無しさん
2007/07/04(水) 00:33:43本当に理論どおりならサンプリング周波数の0.49999倍でもうなりが出ずに完全に復元できる。
0899894
2007/07/04(水) 00:40:50>2倍じゃ完全復元なんてできないよ。図に書いてみればすぐ分かる。
やはり、完全復元は無理だよね。
>>896
>1Hzの差でうなりが出るんじゃね?
うん、激しくうなってます。
で、894の標本化定理の説明の引用元は wikipedia なんだけど、
これって間違ってるって考えてよいのだろうか?
気になって眠れなそうだったんだけど、
これで寝れそう。 895氏、896氏に感謝。
0900デフォルトの名無しさん
2007/07/04(水) 00:43:04離散ではない連続関数のフーリエ変換をきちんと理解すればわかる。
0901デフォルトの名無しさん
2007/07/06(金) 15:51:460902デフォルトの名無しさん
2007/07/06(金) 16:25:480903デフォルトの名無しさん
2007/07/06(金) 17:12:410904デフォルトの名無しさん
2007/07/06(金) 18:10:090905デフォルトの名無しさん
2007/07/06(金) 18:14:02カットオフ周波数でスパッと切れる理想ローパスフィルタ(=カーネルがsinc関数)が実現できるならね
0906デフォルトの名無しさん
2007/07/06(金) 18:29:50そしてサンプリングデータも-∞から∞の時間範囲ですべて揃ってるならなw
0907デフォルトの名無しさん
2007/07/06(金) 21:07:03適当なところであきらめろ
それか難聴になればおk
0908デフォルトの名無しさん
2007/07/06(金) 21:22:05普通は 5512Hz の入力をほとんど通さないのに、どうやって録音したのかという事だろ?
どんな急峻なLPF使ってるんだと、
LPFが入ってないなら理解出来るが、LPF無しでは 折り返しがひどくて使えない筈。
さらに、DACも、最近のDACはデルタシグマ方式だから、やっぱりLPFが入ってて 5512Hzを聞くのは難しい。
テスト信号発生ソフトのリンクを張ってるって事は、、単にサイン波をソフトで作ったのか?
だったら嘘吐き野郎がという事になるが
0909デフォルトの名無しさん
2007/07/06(金) 23:19:17あぁ、強烈で理想的なローパスとは、録音する時の事ですか。なるほど。
0910デフォルトの名無しさん
2007/07/06(金) 23:35:560911デフォルトの名無しさん
2007/07/06(金) 23:50:590912デフォルトの名無しさん
2007/07/07(土) 07:20:46ただ,これを実現するには、出力まで10秒以上の遅延が必要だろう。
現実的な数10msの遅延で実現出来るフィルタでは 5512Hzは入力でもカットされ 出力でもカットされるだろう
0913デフォルトの名無しさん
2007/07/07(土) 21:10:14再生時に遅延しまくると困るな。
MDみたいに4秒バッファと称して遅延も込み込みにする手法はどうだ?w
0914894
2007/07/07(土) 22:17:38テスト信号発生ソフトを使えば、理想にかなり近い状態で、
標本化が可能だと思ったからです。
私が標本化って書いたのは、録音してないからです。
で、再生はWindows のサウンドレコーダを使ったんですが、
この場合、個々のサンプルを通過する正弦波を再生するのではなくて
個々のサンプルを適当に通過するような正弦波よりとがった
波形で再生されました。
FFTの結果には、本来再生できないはずの5512Hz以上の成分が、
表示されたりしてました。
少なくとも Windows のサウンドレコーダを使用した場合には、
定理とかけ離れた動作をするようですね。
0915デフォルトの名無しさん
2007/07/07(土) 22:28:21ドライバが同一ならどんな再生ソフト使っても同じだぼけぇ
再生時のローパスってのはD/A変換の際にかけるもので、それはサウンドカードの仕事だ
デコーダでもサウンドドライバでもないわアホ
0916デフォルトの名無しさん
2007/07/07(土) 22:32:02ちゃんと全部の話を理解しようとしてみなよ
それと,100Hzだろうが1000Hzだろうが,正弦波の切り出し方によっては
スペクトルにいくらでも高周波がでてくるって
もういい加減この話題は疲れた
0917デフォルトの名無しさん
2007/07/07(土) 22:36:09む、ちょっと考えてもわからん。これはフーリエ変換を勉強しなおしたほうがいいな俺
0918894
2007/07/10(火) 23:22:5311025Hzのファイルを読んでから、
サンプルを補って22050Hzや44100Hzでデバイスに出力するような、
プレイヤーがありそうなので、サウンドレコーダと明記してみました。
また、グラフィックイコライザつきのプレイヤーなどでは、
デバイス出力前にフィルタが動作しているように感じます。
ところで、再生時のローパスフィルタの役割が未だに理解できません。
どなたか、ヒントを頂ければ幸いです。
0919デフォルトの名無しさん
2007/07/10(火) 23:41:180920デフォルトの名無しさん
2007/07/11(水) 00:08:46再生時のローパスフィルタはDACの回路の話だってのはわかってる?
0921デフォルトの名無しさん
2007/07/11(水) 04:38:54例えばサンプリング周波数が100Hzの時は50Hz未満の正弦波をAD→DA変換で正しく
復元できると、サンプリング定理は言っている。
D(n) = sin(th * n/100), thは角周波数 th < 50*2*π
原信号が丁度50Hzの場合はDnが一定(直流)になってしまい、正しく変換できない。
D(n) = sin(50*2*π*n/100) = sin(n*π) = 0
では、原信号が51Hzの時はどうか?
D(n) = sin(51*2*π*n/100)=sin((100-49)*2*π*n/100)=sin(-49*2*π*n/100 + 2*π*n)
= -sin(49*2*π*n/100)
つまり49Hzの信号(逆相)をD/A変換した時とまったく同じになってしまう。
ここまでお判りでしょうか?プロットツールでグラフを描いてみることをお勧めする。
即ち、49Hzの信号をA/D変換したデータは、51Hzの信号をA/D変換したデータと区別
できないことになる。この信号をD/A変換すると、49Hzの信号と51Hzの信号が混ざった
信号になってしまいます。この51Hzの信号をサンプリングノイズ(量子化雑音)といいます。
49Hzの信号と51Hzの混合した信号に2Hzのうなりが生ずることもグラフを描いて確認
してみると良いと思います。
この49Hzと51Hzの混合したアナログ信号からLPFを用いて51Hzの信号を取除けば
原信号を完全に復元できる、というのが標本化定理の言うところです。
0922デフォルトの名無しさん
2007/07/11(水) 08:19:27再生はDACが行う。 ADCが瞬時値を読んでるように
音声用のDACも理屈の上ではパルスを出さなければいけない。
このパルスをカットするのにアナログレベルでLPFが必要だ。
しかし、パルスを出すのと、特性の良いアナログLPFは難しいので、
サンプル周波数を上げ、オンオフの方が楽なので1ビットの出力にしたデルタシグマの
DACが現在音声用では主流だ。
サンプリング周波数をあげるのは強力なLPFが必要になる。
たとえば128倍にサンプリング周波数をあげるには、1個データがあって残り127個がゼロの
データをfs/256 のf0で十分なカットをしなければならない。
そうすると、f0=5512.5で 5512Hzは殆どカットされてしまう
0923デフォルトの名無しさん
2007/07/11(水) 10:16:37記録できるギリギリの周波数のサイン波はほぼ矩形波。
矩形波をフーリエ変換すると、たんまり高周波がでるだろ。
それをカットする。
0924デフォルトの名無しさん
2007/07/11(水) 11:21:08>信号になってしまいます。この51Hzの信号をサンプリングノイズ(量子化雑音)といいます。
これ、どっかの書籍でも同じような事書いてるの見たことあるけど、
サンプリングノイズじゃなくてエイリアシングノイズだろ。
量子化ってのは音量(波の高さ)をbit値に置き換える作業の事で、
その時に出る誤差で乗る雑音を量子化ノイズと呼ぶ。
0925921
2007/07/11(水) 17:28:04ずっと量子化ノイズと言ってました。何時からかは覚えてませんがその書籍を
読んだのかもしれません。時間軸方向に連続した信号をサンプリングで量子化
することで発生するノイズですから量子化ノイズと言っても間違いでは無い
気がしますが・・・ 言い訳っぽいですね、ごめんなさい。
ここはエイリアシングノイズに訂正します。
ご指摘に感謝です。
0926921
2007/07/11(水) 17:37:2012行目
×信号(逆相)をD/A変換した時 → ○信号(逆相)をA/D変換した時
18行目
×サンプリングノイズ(量子化雑音) → ○エイリアシングノイズ
#なんか途中から文体変わってるし多重人格かしらん
0927デフォルトの名無しさん
2007/07/11(水) 17:53:56> サンプリングで量子化することで発生するノイズですから
だーかーらー、標本化と量子化はまったく別の概念だっつーの
0928デフォルトの名無しさん
2007/07/11(水) 19:00:36昔、アナログのBBDエコーというのがあったけど、
これは標本化はあるけど、量子化は無い(アナログだから)
0929デフォルトの名無しさん
2007/07/11(水) 22:49:01音圧を離散化→量子化
でおk?
0930デフォルトの名無しさん
2007/07/12(木) 04:16:23音圧は離散化っつーと多少誤解があるかも。
別に量子化は整数じゃなくてもいいし、整数じゃなくても量子化ノイズは存在する。
0931デフォルトの名無しさん
2007/07/12(木) 07:49:07okだけどサンプリングと量子化を同じ意味で使う事もあるから読むときは要注意
0932デフォルトの名無しさん
2007/07/12(木) 20:29:28その書き手が間違ってるね
0933デフォルトの名無しさん
2007/07/13(金) 13:47:24(逆に言うとサンプルしたい周波数の2倍以上ではなく2倍を越える周波数?)
>>921
うねりのない49Hzをサンプリングして出力したとき「うねり」が付いてしまったら、再現できていないと思うのですが。
0934デフォルトの名無しさん
2007/07/13(金) 14:10:59サンプリング定理は、無限に来る信号に対してだから、以下とか未満とかの区別はない
実用的には用意出来るLPFの特性によるという事になる。
49Hzが無限にサンプリングされていて、DACで理想的なインパルス出力が出来て
その出力に完全に50Hzで切れる理想LPFが付けられるならうねりは出ない。
うねりが出るのは、LPFの性能が十分でなかったり、
インパルスでない出力しか出せないからだ
なお、モノラル値で記録した場合に1/2であって、
振動は本来は円運動なので、
円運動に対して複素数で記録した場合はサンプリング周波数まで再生出来る
0935デフォルトの名無しさん
2007/07/13(金) 14:21:31>>921はエイリアシングの話しかしてないよ。
「原信号を完全に復元できる」と書かれているけど、その復元原理は説明されていない。
完全に復元できるかどうかは>>934の説明が正しい。
0936デフォルトの名無しさん
2007/07/13(金) 16:49:59何で人に聞くかなぁwwwwwwwwwww
0937894
2007/07/13(金) 23:59:02>サンプリング定理は、無限に来る信号に対してだから、以下とか未満とかの区別はない
>実用的には用意出来るLPFの特性によるという事になる。
未満でない場合は直流と50Hzの区別がつかないように感じます。
もう少し解説していただけないでしょうか?
0938デフォルトの名無しさん
2007/07/13(金) 23:59:580939デフォルトの名無しさん
2007/07/14(土) 00:04:5350Hzは無理だけど49.999999999999999999Hzなら「完全に」復元できる。
0940894
2007/07/14(土) 01:16:03でも自信がないので脳内をさらします。
間違いの指摘を頂ければ幸いです。
・標本化時のLPFは、ナイキスト周波数以上の成分が
エイリアスとして混入するのを防止するため。
・標本を通過する波形をナイキスト周波数以下の正弦波を合成して
作成するとその波形は元の波形を完全に再現したものとなる。
・標本をインパルスとして再生すると、ナイキスト周波数をはさんで、
鏡のようにエイリアス様の成分が発生する。
そのためナイキスト周波数以上の成分をLPFで除去しないと、
元の波形は再現されない。
以上は、無限精度/無限期間の標本と理想的なLPFを必要とするので、
実世界では妥協が必要である。
・計算のみでwaveファイルを作成すると、理想に非常に近いLPFを使用して
標本化を行った場合と同様のファイルを作成できるが、
そのようなファイルは実際に再生しようとすると理想に非常に近いLPFを
使用しないと正しい再生結果が得られない。
0942デフォルトの名無しさん
2007/07/16(月) 11:47:23今まできつい事言ってわるかった。
この調子で勉強に励め。がんばれ。
0943デフォルトの名無しさん
2007/07/16(月) 13:47:28理想的な50HzでカットするLPFの特性ってどういう関数になるか知ってる?
そう50Hzのサイン波になるのさ
それとの無限の畳み込みだから、理屈から言えば、50Hzには無限のゲインを持ってる
だからまあ、理屈の上では50Hzは無限小の振幅になっても、無限大のゲインで再生出来る事になるのさ
0.9999999999999..... と無限に続く数字は 1/9*9 だから1になるみたいなもの
0944デフォルトの名無しさん
2007/07/16(月) 21:51:53それだと、どんな信号でも理想的なLPFを通すと50Hzになってしまうのでは?
0945デフォルトの名無しさん
2007/07/16(月) 21:54:100946デフォルトの名無しさん
2007/07/17(火) 01:27:55理想LPFのカーネルはsinじゃなくてsinc関数だろwwwwwwwwwwwwwwwwwwwwwwwwwwwww
50Hzに対してゲインが無限のフィルタのどこが理想的なんだよwwwwwwwwwwwwっうぇwっうぇwwww
0947デフォルトの名無しさん
2007/07/17(火) 08:48:37でも946みたいのは不快だな
0948デフォルトの名無しさん
2007/07/17(火) 11:44:03LPF の応答は sinc。
0949デフォルトの名無しさん
2007/07/22(日) 00:07:41限りなく理想に近いsinc関数での畳み込みと、最終確認は画像での波形確認ってことで、
仮想的に理想の状態を作る事は出来んのか?
894はその話をしてたんだと思うのだが。
その状態で、高サンプルレート(アナログのアナロジーとして)で、低中周波のサインを生成して、
(Sinefreq-1hz)*2 位の「位相ずれによるうねりが発生しそうな」サンプルレートでサンプリングして、
それを高サンプルレートにもう一度持ってきて、理想のLPFをかけても、低周波のうねりって残ってるんじゃないか?(誤差レベルは無視しても)
という話では
0950デフォルトの名無しさん
2007/07/22(日) 00:29:130951デフォルトの名無しさん
2007/07/22(日) 00:31:53それを「仮想的に理想」といいたいんなら、それは可能。
0952デフォルトの名無しさん
2007/07/22(日) 02:08:44だからあ、無限までやらなくても無視できる誤差レベルまでやれば確認位取れるでしょう
0953デフォルトの名無しさん
2007/07/22(日) 02:35:14それで「低周波のうねり」が確認できたとしたら、それは畳み込みを有限で打ち切ったせいだろ。
「無視できる誤差レベル」って何を基準に言ってるんだ?
標本化定理の理論どおりにsincで畳み込めば絶対にうねらないことは数式的に明らかなんだから、
もし「低周波のうねり」が残ったとしたらその時点で「理想のLPF」じゃないだろ。
おまえがいったい何を確認したいのかわからん。
0954デフォルトの名無しさん
2007/07/22(日) 02:37:30RSA公開鍵暗号だってそういう雰囲気だし
0955デフォルトの名無しさん
2007/07/22(日) 05:20:440956デフォルトの名無しさん
2007/07/22(日) 09:51:24LPFのシミュレーションの精度(畳み込みの長さなど)を高めるにつれて
徐々にうねりが減っていく様子が観察できればそれで十分だな。
たとえば矩形波のフーリエ展開が本当かどうか確かめたくてずっと足していっても
永久にリップルがなくならない(けど全体として矩形波には近いづいていく)のと似たようなもんやね。
0957デフォルトの名無しさん
2007/07/22(日) 11:43:080958デフォルトの名無しさん
2007/07/22(日) 12:07:230959デフォルトの名無しさん
2007/07/22(日) 12:23:11矩形波のフーリエ級数展開を有限長で打ち切ったときのリップルのオーバーシュート量は
倍音をいくら増やしていっても減少せずにずっと持続するよ(ギブス現象)。
http://ja.wikipedia.org/wiki/%E3%82%AE%E3%83%96%E3%82%BA%E7%8F%BE%E8%B1%A1
波形としての極限は矩形波に一致するけど、リップル幅の極限はゼロにならないという不思議な現象。
0960デフォルトの名無しさん
2007/07/22(日) 12:31:430961デフォルトの名無しさん
2007/07/22(日) 12:51:13実現不可能だと言う事を言いたいんだろ。
「無限に足せばいけるよ!」
っていう話はみんな理解してると思うよ。
計算上の工夫で「無限に近い状態」を作り出せるのかって事を聞きたかったんじゃない?
俺は数学科じゃなかったし、無限の数学的な扱い方なんて知らんけどよー。
0962デフォルトの名無しさん
2007/07/22(日) 13:08:35>>959のギブス現象は、n項までで打ち切ったときのオーバーシュート量をa[n]とすると、
n→∞の極限を計算してもa[n]がゼロにならないっていう意味でしょ(具体的には0.089490に収束)
標本化定理のシミュレーションでは不連続点はないからギブス現象は発生せずに収束するはずだから、
その意味では、>>956で例として矩形波のフーリエ級数展開を挙げたのはあまり適切でない気もする
0963デフォルトの名無しさん
2007/07/22(日) 13:59:120964デフォルトの名無しさん
2007/07/22(日) 14:02:420965デフォルトの名無しさん
2007/07/22(日) 14:23:270966デフォルトの名無しさん
2007/07/22(日) 15:38:56まったく適切ではない
0967デフォルトの名無しさん
2007/07/22(日) 16:15:05標本化したインパルス列をsincで畳み込むということは、結局sincを平行移動させて加重和をとることに帰着される。
sincの平行移動の関数群は互いに直交するから、同じ直交展開としてフーリエ級数展開との類似性は認められる。
「まったく適切ではない」というのは言い過ぎではないだろうか。
0968デフォルトの名無しさん
2007/07/22(日) 19:46:21>>956はそんなこと言ってるか?
0969デフォルトの名無しさん
2007/07/22(日) 22:26:240970デフォルトの名無しさん
2007/07/23(月) 01:00:22話が脱線しまくりだけど、標本化定理を直交関数系による級数展開として捉える考え方は面白いと思った。
band-limitedな任意の関数はsinc関数の平行移動の和として必ず表現できるわけね。
0971デフォルトの名無しさん
2007/07/23(月) 13:09:03と普通に思えるよなwww
自分で自分に突っ込んで楽しいかおぃ?
0972デフォルトの名無しさん
2007/07/23(月) 13:30:370973デフォルトの名無しさん
2007/07/23(月) 16:42:570974デフォルトの名無しさん
2007/07/23(月) 22:36:440975デフォルトの名無しさん
2007/07/23(月) 23:47:460976デフォルトの名無しさん
2007/07/24(火) 21:25:35いたいな
0977デフォルトの名無しさん
2007/07/24(火) 21:32:040978デフォルトの名無しさん
2007/07/25(水) 12:45:55DSPサウンドプログラミング4
【信号】サウンドプログラミング4【処理】
どっちがいい? それとも他の提案ある?
0979デフォルトの名無しさん
2007/07/25(水) 12:53:000980デフォルトの名無しさん
2007/07/25(水) 13:22:36もともとネタが多いわけじゃないんだから、幅広い意味で
0981デフォルトの名無しさん
2007/07/25(水) 13:31:41思っちゃう初心者がいそう
0982デフォルトの名無しさん
2007/07/25(水) 14:08:42サウンドプログラミング4
http://pc11.2ch.net/test/read.cgi/tech/1185340076/
0983デフォルトの名無しさん
2007/07/25(水) 14:54:03乙!
レス数が950を超えています。1000を超えると書き込みができなくなります。