サウンドプログラミング5
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2009/01/11(日) 13:43:21各エフェクタの組み合わせとか、
プログラミング外の話題はDTM板の方がいいよ
サウンドプログラミング4
http://pc11.2ch.net/test/read.cgi/tech/1185340076/
サウンドプログラミング3
http://pc11.2ch.net/test/read.cgi/tech/1145573675/
サウンドプログラミング2
http://pc8.2ch.net/test/read.cgi/tech/1091054082/
サウンドプログラミング
http://pc5.2ch.net/tech/kako/996/996171508.html
0002デフォルトの名無しさん
2009/01/11(日) 13:43:52リアルタイム
バッチ処理の対語で、ゼロレイテンシの事ではない。
遅延はあっても途切れずに処理する事をいう
レイテンシ
ADCからDACまでにかかる時間の事だったり
DSPの掛け算なんかで命令から実際に答えが出るまでの命令サイクル数の事だったり
DSP
デジタル・シグナル・プロセッサ の場合は信号処理用のMPUの事
デジタル信号処理の事を言う場合もある
0003デフォルトの名無しさん
2009/01/11(日) 19:27:140004デフォルトの名無しさん
2009/01/11(日) 20:14:470005デフォルトの名無しさん
2009/01/11(日) 21:47:350006デフォルトの名無しさん
2009/01/11(日) 22:57:570007デフォルトの名無しさん
2009/01/11(日) 23:20:40バッファ領域と、バッファの先頭をさすポインタを用意して、ポインタをぐるぐるまわして、読み出しと書き込みをする。
0008デフォルトの名無しさん
2009/01/11(日) 23:24:340009デフォルトの名無しさん
2009/01/12(月) 05:24:400010デフォルトの名無しさん
2009/01/12(月) 16:34:520011デフォルトの名無しさん
2009/01/12(月) 17:04:58入力信号列をx[n]としたとき、y[n]をどう計算すればいいでしょうか?
512サンプル等ずつで計算するんでしょうか?
0012デフォルトの名無しさん
2009/01/12(月) 18:10:15たとえば y[0...n] と、ポインタ p を用意するだろ?
バッファに詰めるのは、y[p] = x; p++; if(p>n)p=0; を動かし続けりゃいいだけ。
取り出すのは、pからディレイタイムに応じたぶんだけ前の部分。y[p-サンプル数]な。
0013デフォルトの名無しさん
2009/01/12(月) 18:13:41その演算が畳み込みになってるんですかね?
0014デフォルトの名無しさん
2009/01/12(月) 23:15:32そこから0との掛け算の部分を取りのぞいたら>9や>12と同じものが完成
ディレイは文字通りある時間後だけに応答するわけで、畳み込みする間でもない
0015デフォルトの名無しさん
2009/01/13(火) 00:15:57おれはバッファをポインタでぐるぐる循環させて、
循環バッファか(考え方ではFIFOバッファ)
でバッファの長さがディレイタイム
バッファに残すレベルがディレイの音の大きさ
で、2週目以降バッファに書き込むとき前のも
一定割合でミックスしたらフィードバックディレイ
ってやってた
0016デフォルトの名無しさん
2009/01/13(火) 00:39:480017デフォルトの名無しさん
2009/01/13(火) 01:08:16そういう?
ディレイだったら俺のだったらあげるけど。
理論書いてあるとこはあるけどね
ライブラリはどこでもありそうだけどね
おれは使わないからしらねけど
0018デフォルトの名無しさん
2009/01/13(火) 01:23:13ま、組めない奴は
http://www.musicdsp.org/
でも行け。
0019デフォルトの名無しさん
2009/01/13(火) 06:51:340020デフォルトの名無しさん
2009/01/13(火) 10:10:58amp = 0.5;
delaytimenum = snd.fsamp * 0.3;
rptime = 2;
for (int i = 0; i < snd.num; i++)
{
sndout.s[i] = snd.s[i];
for (int j = 1; j <= rptime; j++)
{
int n,m;
m = (int)((double)n - (double)j * delaytime);
if (m >= 0)
{
sndout.s[n] += pow(amp, (double)j) * snd.s[m];
}
}
}
こんな感じですかね?17さんのも参考にしたいので見せていただけるとありがたいです
>>18 参考にしてみます
0021デフォルトの名無しさん
2009/01/13(火) 11:47:57/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0022デフォルトの名無しさん
2009/01/13(火) 13:15:170023デフォルトの名無しさん
2009/01/13(火) 15:32:410024デフォルトの名無しさん
2009/01/13(火) 20:31:300025デフォルトの名無しさん
2009/01/13(火) 20:53:58そうだけど、それを現在のに加算すると
効果が得られる。
時差あるから周波数特性がギザギザになる。
>>20
delayタイム以外は直に書き込んであるけど…
一個サンプルを入れると一個返ってくる見たいな
感じで作った。
//delaysample=delaytime(ms)*サンプリング周波数/1000
int delay1(int in,int delaysample){
static int delaybuf[20000];
static int delaycousor=0;
if(delaycousor>=delaysample)delaycousor=-1;
delaybuf[++delaycousor]=in;
return(delaybuf[delaycousor]*0.75+delaybuf[((delaycousor+1>delaysample)?0:delaycousor+1)]*0.25);
//return(delaybuf[delaycousor]*0.75+delaybuf[delaycousor+1]*0.25);
}//func end
0026デフォルトの名無しさん
2009/01/15(木) 20:35:27どっかに過去ログまとめたほうがいいかね。
0027デフォルトの名無しさん
2009/01/15(木) 20:42:11うん
0028デフォルトの名無しさん
2009/01/16(金) 06:15:59全く音の知識は無いんですが、周波数を変更する場合の存在しない中間サンプリング点を打つ場合
直線上に打つのは酷いってのはわかるんですが、補間で曲線上に打っても同じぐらい酷いと思うんですが
これはどうやって打てばいいんですか?
0029デフォルトの名無しさん
2009/01/16(金) 09:53:05ひどくない
たとえばフーリエ変換して周波数成分を欲しい領域に移動して
逆フーリエ変換すれば得られる等
0030デフォルトの名無しさん
2009/01/16(金) 10:44:04あれって一定の範囲内ってのがいいかげんで、
しかも途切れが含まれなかったり単音じゃないと酷いと思うんですが
ほんとにこれが主流なんですか?数学と無理やり抱き合わせるんじゃなくて
音専用の予測アルゴリズムとかはないんでしょうか?
0031デフォルトの名無しさん
2009/01/16(金) 12:20:24中間点をとるっていうのは
__ ̄ ̄__ ̄ ̄
が
___― ̄ ̄ ̄―___― ̄ ̄ ̄
みたいになるっていう意味でしょうか?
0032デフォルトの名無しさん
2009/01/16(金) 13:02:04リアルタイム性の必要な処理なら、足して2で割るのもよく使われるよ。
0033デフォルトの名無しさん
2009/01/16(金) 14:50:50そうです。
>>32
いやニュートンとかスプラインのことをいったんですが、どのみち音に特化してなければ同じですが。
足して2で割るって酷くないですか?間が飛びぬけて山谷になってるかもしれないのに
それって意外な事実ですよね。実際変換ソフトなら全部似たり寄ったりだと思って使ってました
0034デフォルトの名無しさん
2009/01/16(金) 15:04:53あなたがするべき事は実際に大量のデータで統計を取る事だな
音情報である以前にスピーカーを振動させるための電圧である事も考慮しつつ
0035デフォルトの名無しさん
2009/01/16(金) 16:02:04なんか英文を直訳したような文章だな
0036デフォルトの名無しさん
2009/01/16(金) 19:29:17これの根拠が分からない。ファイル圧縮ならまだ一般的な感じもするが。
0037デフォルトの名無しさん
2009/01/16(金) 20:06:500038デフォルトの名無しさん
2009/01/16(金) 21:05:19サンプリング定理
0039デフォルトの名無しさん
2009/01/16(金) 21:25:39速度を気にしないなら、周波数領域に変換してから間を埋めろ。
0040デフォルトの名無しさん
2009/01/16(金) 21:38:10変換すると、時間分解能みたいのが
ゆるくなるから音質悪くなる希ガス
0041デフォルトの名無しさん
2009/01/16(金) 21:57:16DCT自体は可逆だぜ。
速度やらサイズやらのために細かい部分を捨てることが多いだけで。
0042デフォルトの名無しさん
2009/01/16(金) 22:05:29可逆なのは無限に加算したときだけじゃないの
普通は切り捨てるからそこで音質落ちるんだよ
程度問題だけど人間の耳で分からないレベルで
気にならなければOKでしょ
0043デフォルトの名無しさん
2009/01/16(金) 22:10:140044デフォルトの名無しさん
2009/01/16(金) 23:33:43扱うのはデジタルデータなんだから無限に加算する必要なんざねーよ。
0045デフォルトの名無しさん
2009/01/16(金) 23:39:15変換するってこと?
0046デフォルトの名無しさん
2009/01/17(土) 00:00:590047デフォルトの名無しさん
2009/01/17(土) 08:36:00AsioKs
http://fanzo.real-sound.net/iCubicProject/
0048デフォルトの名無しさん
2009/01/19(月) 18:19:020049デフォルトの名無しさん
2009/01/21(水) 10:51:490050デフォルトの名無しさん
2009/01/24(土) 11:24:360051デフォルトの名無しさん
2009/01/24(土) 16:08:40ディレイは少し前の入力値を、現入力値に加算
エコーは少し前の出力値を、現入力値に加算
という理解で合ってるのかな・・・
0052デフォルトの名無しさん
2009/01/25(日) 15:10:530053デフォルトの名無しさん
2009/01/25(日) 16:15:46やほーーー、yahoo...
0054デフォルトの名無しさん
2009/01/25(日) 19:40:150055デフォルトの名無しさん
2009/01/25(日) 23:34:170056デフォルトの名無しさん
2009/01/26(月) 09:08:59005755
2009/01/26(月) 11:14:09じゃあ、リバーブはどう認識してるの?w
005855
2009/01/26(月) 11:18:52* (ギリシア*kh*)ギリシア神話のニンフ。ヘラの怒りを買って他人のことばを繰り返すことしかできなくなる。ナルキッソスを恋したがその愛を告げられず、苦悩の果てに声だけ残り、こだまになったという。
* (英echo)
1 こだま。やまびこ。
2 残響。
国語大辞典では、↑だそうだよ。
>>56の風呂場でヤッホーと叫ぶと、2、3秒してからヤッホーが戻ってくるのか?w
0059デフォルトの名無しさん
2009/01/26(月) 11:32:25006055
2009/01/26(月) 11:54:090061デフォルトの名無しさん
2009/01/26(月) 12:08:53リバーブは残響
リバーブの実装方法の中にはディレイを用いるものもある
006255
2009/01/26(月) 12:09:42パラメーターは、原音にたいし、何秒後に何回返すか、音質をどう変化させていくか、音量をどう変化させていくか、
ぐらいしかないと思う。
リバーブは、原音にたいし、0.01秒後ぐらいから反射が始まって、全体的にワオ〜ンという音を作らなければならないから難しいと思う。俺は全然わからないw
006355
2009/01/26(月) 12:24:27リバーブの製品でも「これ風呂場リバーブじゃん」ってバカにされるからね。
0064デフォルトの名無しさん
2009/01/26(月) 13:17:53あれは山びこじゃなくて、風呂系の響きだよな。
0065デフォルトの名無しさん
2009/01/26(月) 18:57:130066デフォルトの名無しさん
2009/01/27(火) 01:24:59エコーはフィードバックディレイだ
リバーブはディレイタイム(レベルも?)のばらばらな
無数のディレイを加算して再現したりしなかったり
いろんな方法があるみたい
>>64
スプリングリバーブは、昔アナログのころ
バネのある空間に音を飛ばして戻ってきた
音をリバーブとして(ry
0067デフォルトの名無しさん
2009/01/27(火) 17:16:010068デフォルトの名無しさん
2009/01/27(火) 23:30:420069デフォルトの名無しさん
2009/01/30(金) 11:49:27調べた限りグラフばかりで、グラフから読み取るのは精度的にも問題ありそうなので、
周波数毎のゲインの数値データが欲しかったりします。
1) Web等で数値データとして配布されていますか?
2) もしなければ下記の仕様書の購入を検討するのですが、
そもそも仕様書自体には数値データは含まれているのでしょうか?
ISO226:2003 http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=34222
0070デフォルトの名無しさん
2009/01/30(金) 23:58:53でかい本屋で立ち読みできるからいってみたら?
0071デフォルトの名無しさん
2009/01/31(土) 21:20:01なるほど、その手が。
ありがとうございます。早速行ってみます。
0072デフォルトの名無しさん
2009/02/06(金) 15:52:380073デフォルトの名無しさん
2009/02/06(金) 21:11:17そんなさがってた?
0074デフォルトの名無しさん
2009/02/08(日) 22:06:580075デフォルトの名無しさん
2009/02/08(日) 22:54:44それはドゥレイだろ!
0076デフォルトの名無しさん
2009/02/09(月) 21:47:30超遅レス乙
0077デフォルトの名無しさん
2009/02/13(金) 12:54:222 3 4 5ってデータがあったら
2 2 3 3 4 4 5 5にしたらいいんですか?これで再生速度50%?
0078デフォルトの名無しさん
2009/02/13(金) 17:46:22やってみるといいよ
0079デフォルトの名無しさん
2009/02/13(金) 21:19:47こんなん
23456789 ←6〜9をフェードアウト
23456789←2〜5をフェードイン
0080デフォルトの名無しさん
2009/02/14(土) 01:21:020081デフォルトの名無しさん
2009/02/14(土) 10:09:260082デフォルトの名無しさん
2009/02/14(土) 13:11:100083デフォルトの名無しさん
2009/02/17(火) 00:00:50ttp://toragi.cqpub.co.jp/Portals/0/backnumber/2009/01/p202.pdf
0084デフォルトの名無しさん
2009/02/17(火) 03:00:39mp4の音と映像を分離したいと思っているのですが。
0085デフォルトの名無しさん
2009/02/17(火) 07:44:340086デフォルトの名無しさん
2009/02/17(火) 10:55:52ライセンスはLGPLになるが
0087デフォルトの名無しさん
2009/02/20(金) 23:08:07おー、それ買ってみた
今度よもと
0088デフォルトの名無しさん
2009/03/08(日) 12:03:380089デフォルトの名無しさん
2009/03/08(日) 14:55:070090デフォルトの名無しさん
2009/03/08(日) 15:16:16ノーマライズしたり無音部分を取り除いたり
簡単な帯域通過フィルタができたりするコマンドラインツールです
0091デフォルトの名無しさん
2009/03/08(日) 16:45:41つ sox
0092デフォルトの名無しさん
2009/03/08(日) 18:43:41まさにこんなやつです!
さんくす
0093デフォルトの名無しさん
2009/03/08(日) 22:10:08SDK,低レベルAPIを使っています.
入力,出力共にマルチバッファリングを行っているのですが,
入力と再生の間に,バッファ数に従う遅延が生じてしまいます.
体感では,(1バッファに録音する秒数 * 用意したバッファ数)秒
の遅延が生じていると思われます.
リアルタイムに近い動作を実現したいため,
1バッファに録音する秒数(RecSEC)を短くしています.
現在の設定では RecSEC = 0.005 [sec/buffer] です.
バッファ数が少ないと音声がブツブツと途切れてしまいますが,
バッファ数を増やす事で解決しました.
これで遅延量が少ない動作が実現できたと思っていたのですが,
RecSEC = 0.1 として実行してみたところ,約0.1[sec]の遅延を期待していたのですが
約(0.1*バッファ数)[sec] という大きな遅延となってしまいました.
ソースコードをアップしましたので,解決方法をご教授願います.
waveInStart の実行位置を変えてみる等色々とやってみましたが
よくわかりませんでした.
pass: sagehoge
ttp://www2.uploda.org/uporg2074476.txt.html
アルゴリズムによる遅延を解消したいです.
よろしくお願いします.
0094デフォルトの名無しさん
2009/03/08(日) 22:57:41遅延云々以前に入力と出力を同期させてないように見える
バッファ単位の入力完了イベントでたった今読み取ったバッファを
出力にまわす、という処理をしなくてはならないのに、
入力と出力を同時に走らせてタイミングは運にまかせてるから
録音よりも再生が先行してたまたまバッファまるまる1周分の遅れ
が生じているのでは
waveXXXは使ったことないので推測でしかないが
0095デフォルトの名無しさん
2009/03/09(月) 10:37:27別々に用意してコピーする方がいいかもしらん
0096デフォルトの名無しさん
2009/03/09(月) 15:32:05まー、デバイスによるのかもしんないけど、
waveIn/waveOut系は互いに同期取ってるわけでも無いし保証も無かったと思うから
一番短い理論上可能な「1バッファ分のレイテンシ」すら難しいと思うよ。
頭が悪すぎてハナシにならない。
0098デフォルトの名無しさん
2009/03/09(月) 15:56:280099デフォルトの名無しさん
2009/03/09(月) 19:07:47010093
2009/03/09(月) 22:03:47私自信 wave*** を使い始めたばかりなので
(それが免罪符だとは考えていませんが)
よく分かりません.検討致します.
>>95
ありがとうございます.
それは何故でしょうか?
>>96
「1バッファ分」が理想的ですが,
用意したバッファ分のレイテンシとなる事が避けられたら満足です.
>>97
解決策が分かるのですね.
お暇な時にアドバイスをお願いします.
0101デフォルトの名無しさん
2009/03/10(火) 09:12:54音楽が入ったWAVファイルの音程を変えずにテンポを変えたいです。
普通はどのように実装するものでしょうか?
WAVEFORMATEX のサンプリングレートを変更するとテンポは変わりますが音程も変わってしまいます。
0102デフォルトの名無しさん
2009/03/10(火) 09:29:100103デフォルトの名無しさん
2009/03/10(火) 10:02:280104デフォルトの名無しさん
2009/03/10(火) 10:19:24テンポを上げるときは波形データを2倍した後間引きするとか
音質は保証の限りではないが
0105デフォルトの名無しさん
2009/03/10(火) 10:19:28http://nis-ei.eng.hokudai.ac.jp/~aoki/laboratory04.html
0106デフォルトの名無しさん
2009/03/10(火) 11:07:13テンプレ化か、FAQとサンプルソースのwikiとかあった方がいいのかねぇ
0107デフォルトの名無しさん
2009/03/10(火) 13:11:150108デフォルトの名無しさん
2009/03/10(火) 13:30:21>>101 は >>77-83 と同じだろ
0109デフォルトの名無しさん
2009/03/10(火) 13:36:560110デフォルトの名無しさん
2009/03/10(火) 16:13:230111デフォルトの名無しさん
2009/03/10(火) 21:11:14タイムストレッチはここの説明が分かりやすいかもな。
実装したことないけどw作ったらUPよろw
音声再生速度変換 : もっとゆっくりしゃべって!
http://blogs.msdn.com/windows_multimedia_jp/archive/2009/03/04/9458418.aspx
0112デフォルトの名無しさん
2009/03/10(火) 21:21:39つ105
0113デフォルトの名無しさん
2009/03/10(火) 23:43:39200Hzの音を2倍速にするとき
10msに一度30万ステップの自己相関するん?
リアルタイムだと厳しそうね
0114デフォルトの名無しさん
2009/03/11(水) 21:04:040115デフォルトの名無しさん
2009/03/11(水) 22:19:07そうしないと元の音との互換性が低くなるだろ
0116デフォルトの名無しさん
2009/03/12(木) 02:24:19ディレイっぽく聞こえるのを低減させるために
オーバーラップさせる時間を周期性としてる
周期性を求めるのに自己相関使ってるのは
FFTに比べ低音を考慮したときの精度がいいからとか
実装が楽だからとかじゃね
0117デフォルトの名無しさん
2009/03/16(月) 01:30:58それって結構難しいのよ
論文読むのがいいかなぁ…
0118デフォルトの名無しさん
2009/03/16(月) 07:28:377.実験6:再生速度の制御
↑で十分じゃん
0119デフォルトの名無しさん
2009/03/16(月) 18:55:070120デフォルトの名無しさん
2009/03/16(月) 19:06:41音楽となるとMIDIのようなソースレベルでテンポを変えないと無理だろ
0121デフォルトの名無しさん
2009/03/16(月) 19:11:060122デフォルトの名無しさん
2009/03/16(月) 19:19:35それを合成すればなんとかなるかもしらん
0123デフォルトの名無しさん
2009/03/16(月) 22:40:16それはむずかしい
un4seenってとこのライブラリ
たしかオープンソースの再生速度変更が
けっこう優秀。
WMPより優秀と思う
0124デフォルトの名無しさん
2009/03/20(金) 13:20:45WaveTone(ttp://www.vector.co.jp/soft/win95/art/se421780.html)
↑このソフトはどういった変換でスペクトル算出しているのか見当つきますでしょうか。
当方、FFTで似たようなプログラムを組んでみたのですが、低音域の周波数分解能があまりに悪く、
実用とはほど遠い結果になりましたので、先輩方のお知恵をお貸し頂きたいです。
何卒よろしくお願い申し上げます。
0125デフォルトの名無しさん
2009/03/20(金) 14:42:06ゼロ詰めしたりフレーム長を増やしたりしてね.
0126デフォルトの名無しさん
2009/03/21(土) 12:18:51・FFT結果から山を見つけて頂点を補完
・各音階に属する周波数成分で平均化(画像縮小アルゴリズムの面積平均法みたいな感じ?)
サイトの画像見る限りでは低音の精度は粗いからFFT後になんか処理してると思われ
0127デフォルトの名無しさん
2009/03/23(月) 00:42:110128デフォルトの名無しさん
2009/03/27(金) 00:26:38みつからないけどどこ?
0129デフォルトの名無しさん
2009/03/27(金) 05:51:08質問させてください。
速度とともにピッチが変更されてもかまわないのですが、
たとえば98%遅くするなど、単純な整数比ではない場合はどう実装すればよいのでしょうか。
アップサンプリング/ダウンサンプリングの手法ではこれは実現できないのでしょうか?
80%〜120%の間で、速度を変更したいです。
よろしくお願いします。
0130デフォルトの名無しさん
2009/03/27(金) 07:37:39ttp://www.un4seen.com/
ttp://www12.plala.or.jp/mojo/Delphi/delphi6-Z.html
タイムストレッチはたしかbass_fx
>>129
>>118でも見れ
98%の速度にするには、100×nサンプル再生した後
2×nサンプル戻った位置から再生する
0131デフォルトの名無しさん
2009/03/27(金) 12:56:110132デフォルトの名無しさん
2009/03/28(土) 21:46:56あれかけないとノイズがでることがある
0133デフォルトの名無しさん
2009/04/03(金) 23:28:050134デフォルトの名無しさん
2009/04/08(水) 02:00:47同じ係数で短時間FFTしてオーバーラップするのとは
同じ事でしょうか? 異なる場合は、どのような点が異なるのでしょうか?
0135デフォルトの名無しさん
2009/04/08(水) 18:02:31http://infoshako.sk.tsukuba.ac.jp/InfoRes/jdoc/MATLAB5/jhelp/toolbox/signal/fftfilt.html
0136デフォルトの名無しさん
2009/04/09(木) 02:53:22ありがとうございますー
0137デフォルトの名無しさん
2009/04/15(水) 00:57:20RBJ Audio-EQ-Cookbook見ながらピーキングフィルタを使ってシングルバンドのEQらしきものは実装できました。
これをLOWとHIGHの2バンドにしようとしてるのですがうまくいきません。
この場合、どんなふうにコードを書けばいいのでしょうか?
0138デフォルトの名無しさん
2009/04/15(水) 01:30:12トンコロ的な、2~3バンドで全体を調整できるようなものにしたいなら
シェルビングタイプ2つにして直列に通す
0139デフォルトの名無しさん
2009/04/15(水) 22:35:18ありがとうございます。
ピーキング2つを並べてLOW,HIGHの順でやってるんですが、
LOWの効きがシングルのときよりかなり弱く(効いてない?)なってしまうんです。
「直列」っていうのをちゃんとプログラミングできてないんですかね・・・
0140デフォルトの名無しさん
2009/04/20(月) 13:53:010141デフォルトの名無しさん
2009/04/20(月) 14:02:520142デフォルトの名無しさん
2009/04/20(月) 23:30:39なんか、ASIOSDKがあるらしいので、入手できた。
0143デフォルトの名無しさん
2009/04/20(月) 23:44:550144129
2009/04/25(土) 17:54:51亀ですみませんが、ありがとうございます。
100*nサンプルを再生バッファに入力した後、2*nサンプルもどってバッファを入力する処理を実装してみたのですが、
再生時にノイズが乗ってしまいました。
波形の接続部分がきれいに合わないためだと思うんですが、
これにローパスフィルタをかければノイズは消えるものなのでしょうか。
それとも僕の方法がまちがっていますか?
こわれたテーププレーヤーのような効果をデジタルで実装するのに他に何か有効な方法はないでしょうか。
よろしくお願いします。
0145デフォルトの名無しさん
2009/04/25(土) 18:16:44いきなり切替えたらノイズが出るので、
フェードアウト・フェードインさせながら切替えないといけない
http://floor13.sakura.ne.jp/book03/book03.html
のchapter11.zip
0146デフォルトの名無しさん
2009/04/25(土) 18:45:520147129
2009/04/25(土) 19:04:13おおお、ありがとうございます。
なるほどお, この本買って読んでみます。
0148デフォルトの名無しさん
2009/04/27(月) 00:48:41便乗ですまんけど、
FFTは暗黙に処理範囲の両端が繰り返すけど、FIRだと繰り返さないよね
ブロック処理ってそのあたり大丈夫なのかな?
0149デフォルトの名無しさん
2009/04/27(月) 15:47:10FIRだと切れ目無くできるからいいけど
FFTはぶった切るから窓関数+最後
オーバーラップが必要ってことか
0150デフォルトの名無しさん
2009/04/27(月) 22:15:45計算値が区間の最初の方に影響するってことだろJK
0151デフォルトの名無しさん
2009/04/28(火) 00:15:260152148
2009/04/28(火) 00:21:42後半ピンクノイズみたいな波形があって、それをFFTして周波数成分を
操作して戻すと、ゼロだった前半部に微小な波形が出るよね。
要するにプリエコー、ポストエコーなんだけど、
これはオーバーラップだと解決できないと思うんだ。
0153デフォルトの名無しさん
2009/04/28(火) 00:57:45FFTは時間成分ないんだから当たり前
0154デフォルトの名無しさん
2009/04/28(火) 01:27:08んと、解決できない、でOK?
とすると、>>135は無効ってことになるけど・・・
0155デフォルトの名無しさん
2009/04/28(火) 07:55:330156デフォルトの名無しさん
2009/04/28(火) 21:36:300157デフォルトの名無しさん
2009/04/29(水) 04:49:22一回の計算についてはFIRもFFTと同じくブロック処理以外の
何ものでもないのだが?
どちらも対象の有限長のブロック以外は全然計算対象に入っ
ていない。
FIRの代わりにFFTを使う時、FIRでの場合と同じように1サン
プルづつずらしてFFTを行い、その結果を正しく評価すれば
FIRでの場合と同じ結果が得られるんじゃない?
ただ、それだと普通にFIRやるよりも計算量が増えるので、
それをひっくり返す手法としてオーバーラップ法があるの
だと理解してるが?
0158デフォルトの名無しさん
2009/04/29(水) 14:31:42てことは、オーバーラップは単に計算量対策で、
FIRとFFT+オーバーラップは本来は代替不可能ってことか。
0159デフォルトの名無しさん
2009/04/29(水) 22:26:47一回の計算についてはプログラミング上
ブロック処理にしてもしなくても
出力はFIRならいっしょだからそれは考えないとして。
FIRとFFTの違いはサンプル数の違いがでかくないか?
FFTはサンプル数でかくしないと周波数領域で操作できる
周波数ステップ荒くなるし
FIRは少なくてもある程度できる。
サンプル数大きくするとそれだけFFTの計算に入れる時間が
大きくなるから時間分解能下がる
FIRはリアルタイム処理だから時間分解能最大。
それでサンプル数が一緒での議論だと、
FFTは実際(データが何かにもよるけど)窓関数とかかけなきゃ
だめだからそれだけデータ量そこでへっちゃうから、
最終処理後のデータの品質さがる
だから目的に合わせて選べばいんでは
0160デフォルトの名無しさん
2009/04/29(水) 22:40:47いまいち良くわからんのだが、、
>FFTはサンプル数でかくしないと ... FIRは少なくてもある程度できる。
同じステップ数として、FFTの時間領域で、FIRフィルタの
設計上のカーブを各点で取ったフィルタ処理は違うもの?
違うとすればどの辺りが?
> サンプル数大きくすると ... 大きくなるから時間分解能下がる
時間分解能はサンプリング周波数で固定だと思うけど、、、
短時間FFTのオーバーラップ回数が少なくなるってこと?
> FFTは ... それだけデータ量そこでへっちゃうから、
データ量は減らないと思う。
0161デフォルトの名無しさん
2009/04/29(水) 23:35:07FFT/FIRの基本的な仕組みすら理解出来てねーだろお前。
159の説明は波形処理の基礎だぞ。
まずは自分で調べて考えろ、なんでも聞いて済まそうとすんな。
0162デフォルトの名無しさん
2009/04/30(木) 00:00:23ただ罵倒するだけのレスは無価値ですよ、いつもの方。
0163デフォルトの名無しさん
2009/04/30(木) 01:51:36あの、
ここでの説明だとあれだから本買ってきた方がいいよ。
最初の方は強いて言えば違わないけど、
それぞれの癖とか特徴とかできることできないことあるから
目的に応じたいい方をえらべよ
二つ目は
>サンプル数大きくするとそれだけFFTの計算に入れる時間が
>大きくなるから時間分解能下がる
これはFFTの時間分解能だから。
160が言ってるのは多分サンプリング定理とかそこら辺の
波形のデジタル化の時の時間分解能の事をいってるんかな?
FFTの原理とか時間領域-周波数領域のサイトとか本とかみればわかると思うけど
みつめ
何バイトとかのデータ量はへらないけど、なんというか削ってるんだから論理的な
データ量は減るよね?
たとえばwav->mp3圧縮の時みたいな感じで
たとえばデータを波形ととらえて周波数領域に変換して周波数高い一部分を少なくして
時間領域に戻してもバイトは変わらない。でも何か(なんらかの情報)は減っている。
0164デフォルトの名無しさん
2009/04/30(木) 02:02:29うーん……難しくていいので正確に書いてもらえると嬉しいです。
理解してるとかしていないのかという問題よりも、163の説明の中の
一つ一つの用語が式とか定理のうち具体的に何を指しているのかが曖昧すぎて分からない。
> FFTの時間分解能
>>160の時間分解能は指摘の通りデジタル化の際の時間分解能です。
で、説明だとFFTという変換自体にに時間分解能ってパラメータなり特性が存在するんですよね?
> データ量
窓かけの周波数特性でサイドローブが出る話ですよね。
歪みは出ると思いますが、それが情報が減っているということ?
0165デフォルトの名無しさん
2009/04/30(木) 05:43:39>FFTはサンプル数でかくしないと周波数領域で操作できる
>周波数ステップ荒くなるし
>FIRは少なくてもある程度できる。
そんなことない。
「NタップのFIR」は「サイズNのFFT+周波数領域での積和演算」
と等価でしょ?
0166デフォルトの名無しさん
2009/04/30(木) 21:11:03「ある程度」だから実用性を考えての
ことだよ
小さいタップ数で同じ事ができるんだったら
小さい方がいいだろ
0167デフォルトの名無しさん
2009/04/30(木) 21:35:01一般的なFFTの話だが
FFTはサンプル数を大きくすれば周波数分解能はあがるが、
それだけ時間領域でも…
たとえば音楽だと22050hz、4096FFTだと一回のFFTで
4096サンプル=0.185秒分のデータが必要になる
音楽だと0.185秒だとテンポの速い音楽だと音符が2個分
含まれていることもあるかもしれない。(極端な話)
上のFFTだと5.38hzごとの周波数領域のデータだ。
このようにFFTではサンプル数を大きくすれば得られる周波数データの
hzの間隔は少なくなり詳しく得られるが、それだけたくさんの時間を
計算に組み入れなければならないので、いらないデータも含まれるかも
しれない。sin波だったらずっと同じだからいいけど、PCMなんかだと
刻一刻と周波数成分が変わっていってるので(音楽なので刻一刻と
かわらないとおかしいが)一回の計算にいれる時間は少ない方が
その時点の周波数は正確に表れる。
この文を読めばFFTの時間分解能、周波数分解能の意味は
なんとなくわかるだろ
0168デフォルトの名無しさん
2009/04/30(木) 22:12:17いやそれはとっくに分かってるんだが・・・
ピッチ検出ならゼロクロスなりケプストラムなり使うし。
で、そもそもの疑問である
>>163
> 最初の方は強いて言えば違わないけど、
これをkwsk
0170デフォルトの名無しさん
2009/05/06(水) 22:11:32>>168
NタップのFIRをFFTで実装しようとすると時系列データもN用意して
Circular ConvをConvにするため最低Length=2N+1のDFTを行う必要がある。
(信号分析しないから窓掛けしないとする)
DFT自体は丸め誤差とかを除いたら単なる座標変換だから周波数領域での掛け算も
時間領域の畳み込みも等価なんだけど、フレーム単位で処理する必要があるから
出力時には最低Nサンプルの遅れがある。
反面、FIRだと過去Nサンプルのバッファを用意して置けば新しいサンプルが入ったときに
バッファからフィルタの出力をその時点で得られる。
同じ性能を発揮するのに必要なタップ数が変わることはありえないし、
時系列でFIRを処理するから周波数分解能が云々とか、それを座標変換した
領域で作業するから周波数分解能が云々ってないし、考慮する要件は数理的なものよりも
処理時間やFFT-IFFTするオーバーヘッドや誤差への許容に関すること。
更に言えば、Portaudioみたいに最初にデータをバッファにためてバッファがいっぱいになったら
コールバックを呼ぶようなやつだったら、正直FIRを時間ドメインでやろうが周波数でやろうが
変わらない。
リアルタイム性を重視するフィルタだったらFIRを時系列で畳み込む方がいい場合もある。
特にタップ長が短い場合。
0171デフォルトの名無しさん
2009/05/20(水) 23:46:32VistaでWin32APIのmidiOut〜系でMIDIを出力しているんだが、
どうにも我慢ならないほどの遅延が発生する(200ms程度)。
出力先をデフォルトのMIDIマッパーの代わりに、Timidity++→ASIOにしても同程度の遅延が発生するので、
多分APIに問題があるんだと思う。
そこで、他のAPIに乗り換えようかと思ったんだが、
DirectMusicは消滅した上に64bitアプリで使えないようなので、
他の選択肢が欲しい。
なんかないかな?
0172デフォルトの名無しさん
2009/05/20(水) 23:53:350173デフォルトの名無しさん
2009/05/21(木) 00:02:120174デフォルトの名無しさん
2009/05/21(木) 09:57:02APIを疑う前になぜMIDIインタフェース+外部音源の組み合わせで試さないのか不思議だな
0175デフォルトの名無しさん
2009/05/21(木) 10:22:23少なくともXPまでの環境でmidiOutで200msecも遅延するとか聞いたこと無い
Vistaのドライバとかの問題だと思うが、ソフトMIDI音源とかで試してみた?
0176デフォルトの名無しさん
2009/05/21(木) 12:35:56外部音源とか持ってねーよwwww
Timidity++のGUIからmidiファイルを再生してみたけど、たぶん遅延してない。
>>175
全く違うハードウェア構成の2台のVistaで同様の遅延が発生してる。
で、さっきXPマシンで試験したけど遅延しない。
何ヶ所かの英語フォーラムで、Vistaだと遅延が発生するという報告があるのよ。
0177デフォルトの名無しさん
2009/05/21(木) 13:33:55なんにせよmidiOUtの問題じゃないと思うんだが
VISTA環境があれば試すんだがなぁ
0179デフォルトの名無しさん
2009/05/21(木) 13:59:15あとTimidity++自体に遅延があるからASIOを使ってもMSGSより遅いぞ
0180デフォルトの名無しさん
2009/05/31(日) 17:26:05公式見ても初期化部分しか書かれてなくて何をすればいいのかすらわからん
0181デフォルトの名無しさん
2009/05/31(日) 21:03:25oggのlibならexamplesディレクトリに encoder_example.c があると思うけど、それじゃだめなん?
0182デフォルトの名無しさん
2009/06/05(金) 13:24:010183デフォルトの名無しさん
2009/06/06(土) 14:21:40メモリ上を飛び回って処理をしているのですが、音源の時間に比べて20倍の処理速度が掛かります。
DSPとやらを使えばもっと高速にできるらしいのですが、どうやって使えばいいのでしょうか?
Google先生に効いてもネット上に資料はあまりなく、困っています。
VC++9.0SP1を使ってプログラミングをしています。誰かVC++からのDSPの使い方を教えてください。
0184デフォルトの名無しさん
2009/06/06(土) 16:19:54DSPは単純な演算を高速に(あるいは並列に)こなすものだから
処理の種類によっちゃ効果がない
0185デフォルトの名無しさん
2009/06/07(日) 02:42:57どんなマシン使って20倍なのかわからないけど、
最近のPCでそのスコアならアルゴリズムから見直さないとどのみち無理な気が。
一言にDSPっていってもピンキリだし、PCから使うならどこかの評価ボードみたいなの買うしかないんじゃないかな?
本気でDSPに手出すなら開発キット&コンパイラで数十万、仕事じゃないなら個人に販売してくれるかってのも微妙な所。
たぶん想像してるよりもはるかに敷居高いと思う。
波形処理の高速化なら一番お手軽なSIMDに手出してみれば?
モノによっては5〜10倍くらい期待出来る。
0186デフォルトの名無しさん
2009/06/09(火) 13:12:400187デフォルトの名無しさん
2009/06/09(火) 18:29:55アルゴリズムと定数だけそいつから聞き出して自分で実装する
0188デフォルトの名無しさん
2009/06/09(火) 20:49:190189デフォルトの名無しさん
2009/06/09(火) 21:05:530190デフォルトの名無しさん
2009/06/09(火) 21:30:330191186
2009/06/11(木) 12:55:560192デフォルトの名無しさん
2009/06/26(金) 18:55:460193デフォルトの名無しさん
2009/06/26(金) 19:03:430194デフォルトの名無しさん
2009/06/26(金) 21:17:35リアルタイムじゃないなら
0195デフォルトの名無しさん
2009/06/28(日) 21:04:34WindowsXPでサウンドデバイスを2つ以上インストールしているマシンがあるとします。
再生デバイスと録音デバイスにそれぞれ別の物を設定しているとして、
録音デバイスから入力した音声をそのままダイレクトに再生デバイスから出力させることは
できますか?
0196デフォルトの名無しさん
2009/06/28(日) 23:57:27プログラム作っていいなら AudioIn → プログラム → AudioOut は簡単に実装できる。
まぁ、レイテンシは発生してしまうけど。
Virtual Audio Cable とか既存のツール使ったらプログラム組まなくても簡単にいけるかな。
0197デフォルトの名無しさん
2009/07/02(木) 15:13:37DirectSound で再生しながら、
横軸に周波数、縦軸に音量を表すようなグラフを
リアルタイムで描きたいです。
とりあえずWAVを再生するところはできてるんですけど、
そのようなグラフを描くにはどうすればいいですか?
一応↓のコードを手に入れたのですが、どういうふうに使えば... ?
ttp://www5.airnet.ne.jp/tomy/cpro/sslib8.htm
0198デフォルトの名無しさん
2009/07/02(木) 17:40:480199デフォルトの名無しさん
2009/07/02(木) 18:21:18テストアプリ書いてデバッガなりコマンドプロンプトなりに変換結果出してみるとかやってみた?
サイン波形なりを食わしてみればすぐ理解できる
0200デフォルトの名無しさん
2009/07/02(木) 23:50:01これは0 で初期化して問題ないですか?
あと、iter は何の値なんでしょうか??
0201デフォルトの名無しさん
2009/07/03(金) 00:53:28fft2(), fft2x()のjのforループでkは使われてない→たぶんコピペって k += nmax を消し忘れ
iterはループ回数の演算省略用じゃね? 0渡せば勝手に計算するようになってるだろ
0202デフォルトの名無しさん
2009/07/05(日) 23:56:30あれってなにがすごいの?
0203デフォルトの名無しさん
2009/07/07(火) 21:12:01当時のチップの速度でリアルタイムにピッチやらフォルマントやらを操作して、それをもとに音作りできるところ。
0204デフォルトの名無しさん
2009/07/09(木) 23:57:30n個の時間領域のデータxn(t)をFFTし、
Xk(f)のパワースペクトルを得たとします。(k=n/2)
パワースペクトルの自然対数を取り、IFFTすると思うのですが、IFFTするには
実部と虚部の情報が必要ですよね?パワースペクトルの対数をとったら、虚部が
わからなくなってしまいますよね。
そのところでわからなくて困っています。わかる方教えてください。
0205デフォルトの名無しさん
2009/07/10(金) 00:15:43IFFTは別に虚部がなくてもいいです.
それとスペクトルのkはnのままでいいと思います.
スペクトルは偶関数になってるので,IFFTすれば実数成分(ケプストラム)が求まると思います.
0206デフォルトの名無しさん
2009/08/15(土) 03:03:10半日以上とか1日とか数日とか、長時間起動してると、必ず反応がかなり遅れるようになるけど、それはなぜ?
複数のソフト、いろいろな環境で再現性があるのでOSの問題なんだろうかと思うんですが。
たとえばwavespetcraとかDeskTopLevelMeterとか、他にも山ほどあります。
0207デフォルトの名無しさん
2009/08/15(土) 11:25:170208デフォルトの名無しさん
2009/08/16(日) 15:56:49多分、ただのページングだよ。
0209デフォルトの名無しさん
2009/08/17(月) 16:48:43リアルタイム(1バッファ遅延)に入力→加工→出力を行うAPIを探しています。
調べたところWDM?ではカーネルミキサを通す分遅延がありすぎて話にならない
ディフォルト出力ならKernel Streamingが良いと聞きました。
Win32APIのwaveXXXX関数は、関数の内容的にハードウェアに直接アクセスしてるように思えるのですが
実際のところ、Winのカーネルミキサを経由していたりするのでしょうか?
0210デフォルトの名無しさん
2009/08/17(月) 23:22:46waveIn()/waveOut()で遅延がネックになるレベルならPCでの処理は難しいと思うが、
WinAPIよりはリアルタイム処理に向いてると言われるASIO使ってみれば?
0211デフォルトの名無しさん
2009/08/17(月) 23:54:390212デフォルトの名無しさん
2009/08/18(火) 00:49:410213デフォルトの名無しさん
2009/08/18(火) 10:04:27DirectXはミキサ通すはず。
>>212
VistaはCoreAudioっていうんだな。Macかとオモタ
0214デフォルトの名無しさん
2009/08/19(水) 00:03:48ゆっくりさせると、響いている様になってしまい良くないです。
NHKテレビで、波形の山を増やすとか言ってたが、
波形の山一個単位(一周期単位)でコピーして増やしたり減らしたりするアルゴリズムを僕は考えていたのですが、実現されていないのでしょうか。
0215デフォルトの名無しさん
2009/08/19(水) 00:09:28ちょうどいい間隔でスキマがうまるならそれでいいだろうよ。
どうせギャップができて似たような音になると思うけど。
0216デフォルトの名無しさん
2009/08/19(水) 00:25:22ピッチ検出の話になるが、ゼロクロス検出の精度が実際微妙ってことを
考えると、似たような理由で何かの障害があるんだと思うよ
0217デフォルトの名無しさん
2009/08/19(水) 10:22:13が、実際の音声は周波数はおろか振幅エネルギーも
時間変動する
よってf0の定義自体がまず困難
少しでもずれがあればパルスノイズが発生(矩形窓の場合)
蛇足だか、なんだかんだで窓関数は有効だよ。
目的に応じて最適な窓関数とオーバーラップ数の設計をすればいいし
0218デフォルトの名無しさん
2009/08/19(水) 19:03:38nhkでそんな話してくれるの?KWSK
0219デフォルトの名無しさん
2009/08/20(木) 01:06:24音質を優先するなら、周波数領域に変換してからリリース部なんかを中心に引き伸ばせ。
0220デフォルトの名無しさん
2009/08/20(木) 23:02:580221デフォルトの名無しさん
2009/08/21(金) 04:29:170222デフォルトの名無しさん
2009/08/21(金) 05:37:430223デフォルトの名無しさん
2009/08/21(金) 10:13:290224デフォルトの名無しさん
2009/08/21(金) 18:53:170225デフォルトの名無しさん
2009/08/21(金) 19:06:270227デフォルトの名無しさん
2009/08/24(月) 00:29:440228デフォルトの名無しさん
2009/08/24(月) 01:41:470229デフォルトの名無しさん
2009/08/24(月) 02:07:020230デフォルトの名無しさん
2009/08/24(月) 06:21:320231デフォルトの名無しさん
2009/08/24(月) 06:22:500232デフォルトの名無しさん
2009/08/24(月) 06:32:010233デフォルトの名無しさん
2009/09/10(木) 15:14:29簡単な波形合成を行うプログラムを作っているのですが、中々FMについて理解が進みませんorz
0234デフォルトの名無しさん
2009/09/10(木) 16:38:490235デフォルトの名無しさん
2009/09/11(金) 16:57:040236デフォルトの名無しさん
2009/09/11(金) 19:18:030237デフォルトの名無しさん
2009/09/11(金) 21:43:380238デフォルトの名無しさん
2009/09/17(木) 14:46:03ここのTranscribe!ってソフトのタイムストレッチ/ピッチシフトがめちゃ精度良いように思うんだけど、
どうやって実現してるか先輩方わかります?
0239デフォルトの名無しさん
2009/09/20(日) 19:13:260240デフォルトの名無しさん
2009/09/20(日) 19:17:060241デフォルトの名無しさん
2009/09/20(日) 19:21:310242デフォルトの名無しさん
2009/09/20(日) 19:50:040243デフォルトの名無しさん
2009/09/20(日) 19:54:570244デフォルトの名無しさん
2009/09/20(日) 19:57:430245デフォルトの名無しさん
2009/09/23(水) 20:42:23(waveOutPrepareHeaderで指定したWAVEHDR構造体のlpDataの参照先のデータのことね)
やってみたら一応動作はしたんだけど、これが出来るならWaveOut系APIの遅延も短く出来るよな
0246デフォルトの名無しさん
2009/09/23(水) 22:22:230247デフォルトの名無しさん
2009/09/23(水) 23:00:21woWriteの後はデータ管理としてはOS側だろ?
バグ作り込むようなもんだからできるできない以前にやらない
仕様として保証されていない動作に依存するようになるとデバッグが泥沼だよ
0248デフォルトの名無しさん
2009/09/25(金) 11:49:05良く分かりません。教えていただけないでしょうか。
実際、色々調べてみてある程度はわかったのですが、
「Peak Amplitude」があまりよくわからなかったのと、
音量設定の単位がdbになっているので、設定の仕方が難しい、
合わせにくいというところでつまずき、そのままになっていました。
現在わかったことは、ピーク時の振幅(Peak Amplitude)、
トラックごとに音量を設定する値(Radio Replay Gain Adjustment)、
アルバム単位で設定する値(Audiophile Replay Gain Adjustment)
の3項目でタグが構成されていて、これらの値を使って音量をdb単位で調整する、
ということです。
タグの読取りはそれぞれの形式(tta,ape,mp3)で異なるが、
提供されているライブラリを使えば読取りは比較的簡単に出来る。
というところまでは行きついたのですが、
実際に読み取った値からどう処理するかが難しく、
実装するのが難しい状況です。
今考えているのが、勝手にdbの単位を独自の値に置き換えて(0dbが125とか)、
音量を調整すればいいのかも?と思っているのですが、
それにしても、ピーク時の振幅(Peak Amplitude)がよくわからないので、
どう使って良いか悩み、ここでつまずいています。
ご存じの方、教えていただけないでしょうか。
0249デフォルトの名無しさん
2009/09/25(金) 21:42:49全てはdBとリニアの変換くらいは自在にできるようにしてからだ。
Peak Apmplitudeは意味そのまんま最大振幅と思うんだが。最大はmaximumだとか言うなよ?
0250デフォルトの名無しさん
2009/09/26(土) 03:12:01dB = 20log(A/B) log:常用対数
(パワーの場合は10log(A/B))
例)
Aが1、Bが10の時AはBに対して20dB落ち(-20dB)
上記のような比を表す他に、dBV, dBu, dBmなど、具体的な単位
(例えば1Vなどの電圧)に対する比を計算し、実際の値を表すこともある
例)
0dBm = 1 mW
0251デフォルトの名無しさん
2009/09/26(土) 16:45:56ありがとうございます。
試行錯誤してみます。
0252デフォルトの名無しさん
2009/09/26(土) 17:22:01ピアノについては見つけられたものの、そのほかの楽器が中々見つけられません
0253デフォルトの名無しさん
2009/09/26(土) 19:15:25曲によって振幅が違うから、その状況を表しているんですね。
それにしても、何故「1」が最大値なんでしょうか。
「1」の基準は何でしょうか?
質問ばかりで申し訳ないのですが、ご存じの方教えてください。
よろしくお願いいたします。
0254デフォルトの名無しさん
2009/09/26(土) 19:24:26もうされてないと思うけど
0255デフォルトの名無しさん
2009/09/27(日) 03:19:10自分でスペアナ通せよ。
>>253
Maxが100%=1だと計算しやすいから。
0256デフォルトの名無しさん
2009/09/27(日) 04:00:30本当にありがとうございます。
0257デフォルトの名無しさん
2009/09/29(火) 14:23:14リアルな音じゃなくても、倍音構成を調べるくらいには使えるんでない?
0258デフォルトの名無しさん
2009/09/30(水) 20:15:570259デフォルトの名無しさん
2009/10/06(火) 05:56:05-25dBから-30dBに音量が下がったら振幅値にいくつかければいいんだ…
0260デフォルトの名無しさん
2009/10/06(火) 06:14:420261デフォルトの名無しさん
2009/10/06(火) 06:34:53説明すらできねぇ…
0262デフォルトの名無しさん
2009/10/06(火) 07:07:58>>250 の逆の変換になるので、この場合、10^(-5/20)を掛ければよいはずです。
0263デフォルトの名無しさん
2009/10/06(火) 09:42:46(パワーの場合は10log(A/B))
-25dBから-30dBに音量が下がったら振幅値にいくつかければいいんだ…
-25dBの正弦波を、-30dBの正弦波にしたいって事だよね?
>>250 の逆の変換になるので、この場合、10^(-5/20)を掛ければよいはずです。
0264デフォルトの名無しさん
2009/10/06(火) 10:40:13ありがとうございます!まさにコレが知りたかったんです…
教えていただいたことを参考にして
ttp://geocities.yahoo.co.jp/gl/flawtips0/view?.date=20050324
を試してみたのですが、同じ波形を得ることが出来ませんorz
計算は間違えてないと思うのですが…表が誤っているのでしょうか?
0265デフォルトの名無しさん
2009/10/06(火) 13:59:15http://www.geocities.jp/flawtips0/Pic/wav2.html#p14
ここを見ると周波数分布の山の高さがdbと合ってるから表は間違ってないと思う
0266デフォルトの名無しさん
2009/10/06(火) 15:02:14質問しちゃったりするしね。どんな分野でも。
育て直しじゃないが、学習のプロセスをゼロから辿り直すわけで。
日本語が中高生レベルに見える点にはあえてつっこまない
0267デフォルトの名無しさん
2009/10/06(火) 17:22:03http://homepage3.nifty.com/sawai/neiro/neiro.html
http://flawtips.ami.amigasa.jp/blog/051230.html
http://www.terawave.net/amane/contents/soundworks/
http://d4.princess.ne.jp/msx/datas/OPLL/YM2413AP.html
0268デフォルトの名無しさん
2009/10/06(火) 19:34:08検索すればすぐにわかるんだろそんなこと
0269デフォルトの名無しさん
2009/10/06(火) 19:36:59重ね合わせる高周波の位相がずれてるとうまくいかないよ
0270デフォルトの名無しさん
2009/10/06(火) 20:59:510271デフォルトの名無しさん
2009/10/06(火) 23:41:370272デフォルトの名無しさん
2009/10/07(水) 07:29:49まず試してみたソースを出せ、話はそれからだ
0273デフォルトの名無しさん
2009/10/08(木) 22:17:03違うバッファに用意しとけばいんじゃない?
メモリーのコピー作業はそんなに重くない
とこだよね
書き方によるけど
0274デフォルトの名無しさん
2009/11/02(月) 14:47:390275デフォルトの名無しさん
2009/11/17(火) 13:12:21半分は1/2倍。
0276デフォルトの名無しさん
2009/11/17(火) 21:11:570277デフォルトの名無しさん
2009/11/17(火) 23:25:320278デフォルトの名無しさん
2009/11/18(水) 01:42:200279デフォルトの名無しさん
2009/11/18(水) 04:35:380280デフォルトの名無しさん
2009/11/18(水) 07:08:02なんじゃこりゃ?
0281デフォルトの名無しさん
2009/11/18(水) 08:21:50リバーブ成分を取り除いてみたことはあるな
そこからサラウンドに繋げられたか・・・
0282デフォルトの名無しさん
2009/11/24(火) 12:58:22ばーか、エネルギーは振れ幅の二乗だろ。アホ
0283デフォルトの名無しさん
2009/11/24(火) 13:47:16いつからエネルギーの話になったんだろうか
ああ脳内で世界が固定されちゃってるんですね
0284デフォルトの名無しさん
2009/11/24(火) 14:04:51×>>275
×>>276
0285デフォルトの名無しさん
2009/11/24(火) 14:10:0420log10(b/a) = 10log10((b/a)^2)
0286デフォルトの名無しさん
2009/11/24(火) 14:25:1920*log10(1/2) = -6.02 dB
0287デフォルトの名無しさん
2009/12/12(土) 14:30:440288デフォルトの名無しさん
2009/12/23(水) 05:08:00スピーカーに再生するプログラムを書いてるんだけど
再生の方が速くて困ってる。
具体的には、
20ms間隔で20ms分の音声データをwaveOutWriteで書き込んでるんだけど、
waveOutProcのコールバックが0〜15ms間隔くらいで返ってくる。
waveOutAPIってこういうもんなの?
0289デフォルトの名無しさん
2009/12/23(水) 05:19:100290デフォルトの名無しさん
2009/12/23(水) 13:45:320291デフォルトの名無しさん
2009/12/24(木) 21:40:040292デフォルトの名無しさん
2009/12/24(木) 21:42:340293デフォルトの名無しさん
2010/01/07(木) 22:02:10C言語はなんとなくわかりますが,非常に苦手です。
C++はわかりません。
VBでPCMデータをアップサンプリングするプログラムを作った経験はあります。
こんな私にもわかるようなASIO SDKの使い方を解説したサイトまたは書籍などご存じありませんでしょうか?
0294デフォルトの名無しさん
2010/01/09(土) 00:00:320295デフォルトの名無しさん
2010/01/09(土) 15:41:280296デフォルトの名無しさん
2010/01/10(日) 10:01:36それがASIO SDKとどう結びつくかを他人に説明する気はないの?
0297デフォルトの名無しさん
2010/01/10(日) 15:04:010298デフォルトの名無しさん
2010/02/10(水) 10:44:380299デフォルトの名無しさん
2010/02/10(水) 11:52:49double cdef[] = {3.0, 5.0, 7.0, 8.0, 10.0, 12.0, 14.0, 15.0};
for (int i = 0; i < 8; ++i)
{
DWORD freq = (DWORD)(440.0 * pow(2.0, cdef[i]/12.0));
Beep(freq, 500);
}
0300デフォルトの名無しさん
2010/02/10(水) 12:04:09がんばって作った俺の努力の結晶が無駄に・・・
http://codepad.org/VxXlvVkM
0301デフォルトの名無しさん
2010/02/10(水) 12:13:170302デフォルトの名無しさん
2010/02/10(水) 17:28:350303デフォルトの名無しさん
2010/02/12(金) 21:39:59努力した内に入らないよw
0304デフォルトの名無しさん
2010/02/13(土) 21:52:440305デフォルトの名無しさん
2010/02/13(土) 22:02:26久し振りに笑うプログラムに出会った
これは面白い
Windowsにこのような機能がまだ残されていたとはw
0306デフォルトの名無しさん
2010/02/13(土) 22:03:090307デフォルトの名無しさん
2010/03/01(月) 03:52:18基本的な質問で悪いんだけども
周波数ごとの音量ってのは
実部のスペクトル?
それとも実部と虚部から求めるパワースペクトル?
0308デフォルトの名無しさん
2010/03/01(月) 03:57:21パワースペクトルが音量に相当するなら
実部=0、虚部≠0の場合
周波数は無いのに、音量はあるのか?
実部が音量に相当するなら、パワースペクトルの意味ってなに?
とか、よくわかんなくなっちゃったのです
0309デフォルトの名無しさん
2010/03/01(月) 05:09:56アニメで見ると分かりやすいね
0310デフォルトの名無しさん
2010/03/03(水) 01:10:53読みました。
たしかにアニメーションついててわかりやすいですね。
んで、周波数ごとの音量に相当するのは、
パワースペクトルってことですね。
ありがとうございました。
0311デフォルトの名無しさん
2010/04/23(金) 22:54:200312デフォルトの名無しさん
2010/05/11(火) 22:50:570313デフォルトの名無しさん
2010/05/13(木) 23:02:000314デフォルトの名無しさん
2010/06/03(木) 09:06:10現在2つのwavファイルを読み込み、データ部を足し算することで「両方同時になっているwavファイル」を作成、出力することができました。
ここで疑問なのですが、16bitWAVの場合、データ部の値は
-32768〜32767
となりますが、2つの足し算なら「int型に変えたあと足して、限界を超えたら丸めこみ、shortの範囲に戻す」すればいいとわかります。
ですが、3つの音を足すとなると、丸めこみを最後に一括してやるか、足すたびにやるかで結果が変わってしまいます。
例:
丸め(30000 + 30000 - 10000) = 32767
丸め(丸め(30000 + 30000) - 10000) = 22767
今はまだ、足す音が3つと決まっているから1単位時間毎にintで計算>shortで吐き出しで問題ないのです。
が、もし「任意にユーザーの選択により次々音を足し算できるツール」のようなものを作る場合
やはり単位時間毎に一旦intとしてバッファを作り、WAVファイルとして出力する際に丸めこむべきなのでしょうか?
0315デフォルトの名無しさん
2010/06/03(木) 11:52:390316デフォルトの名無しさん
2010/06/03(木) 13:11:05個数で割る。というのがよくわかりませんが、任意に追加できるため個数はその場その場で定まらないのを想定しています。
例えばAとBを合成して、とりあえずそれを再生。
ユーザーがそれを聞き、「やっぱりCも合成しよう」となった時などを想定しています。
AとBの合成音を再生するために、合成音を出力するバッファを用意しますよね。
その後Cを合成するのが決定した時、
・再度A、Bのデータもひっぱってきて、3音合成する
というよりは
・A+Bの合成音にCを合成する
ほうがメモリー効率や処理速度などで有利そうです。
ですがそれだと丸めこみ問題がでてしまいます。
0317デフォルトの名無しさん
2010/06/03(木) 13:35:550318デフォルトの名無しさん
2010/06/03(木) 14:55:02一体16bit音源を何万個合成するつもりだよw
0319デフォルトの名無しさん
2010/06/04(金) 00:22:21> その後Cを合成するのが決定した時、
そんだけ仕様が未確定だと汎用的にプログラム書くしかないから効率もクソもない。
数百万サンプル程度の加算が問題になるような環境ならできることの自由度を下げる以外ない。
あと「〜そう」で目についたところを最適化するのはほぼ最悪の戦略。
かなりの確率で最適化ポイントを間違う
0320デフォルトの名無しさん
2010/06/04(金) 17:33:010321デフォルトの名無しさん
2010/06/04(金) 20:45:17r = 初期値1.0
出力サンプル = 合成サンプル * r
出力サンプルが16bit幅超えたら、r = abs(合成サンプル) / 32768.0 で更新
r < 1.0 なら時間経過と共に少しずつ1.0へ戻してやる
実用レベルで実装するなら細かいノウハウとかあるからDSP関係の文献自分で調べて
0322デフォルトの名無しさん
2010/06/05(土) 00:00:11俺もコンプレッサ/リミッタ関連について調べてみることをお勧めする。
0323デフォルトの名無しさん
2010/06/08(火) 11:34:15ノーマライズすればいい。
0324デフォルトの名無しさん
2010/06/08(火) 18:08:07不動明王を使うだろ普通
0325デフォルトの名無しさん
2010/06/09(水) 09:59:470326デフォルトの名無しさん
2010/06/11(金) 21:27:02分解能32ビットとかで作業用データ配列を作成すると良い。すべて加算した後16ビットレンジに収まるよう最適化する。
一旦WAVファイルをセーブした後、さらに別のWAVファイル加算したいときは、16ビットでは精度が不足するので、
以下の方法を取る。
WAVファイルの分解能をfloatか24ビットとする。フォーマットの設定が16ビットと異なるがちゃんと再生されるWAVファイル
を作成することができる。
参考:
WAVEFORMATEX構造体
WAVE_FORMAT_IEEE_FLOAT
0327デフォルトの名無しさん
2010/06/11(金) 21:35:42-> WAVEFORMATEX
24ビット
-> WAVEFORMATEXTENSIBLE
0328デフォルトの名無しさん
2010/06/20(日) 01:58:190329デフォルトの名無しさん
2010/06/20(日) 11:29:530330デフォルトの名無しさん
2010/06/20(日) 17:38:340331デフォルトの名無しさん
2010/06/21(月) 02:37:190332デフォルトの名無しさん
2010/06/21(月) 02:40:310333デフォルトの名無しさん
2010/06/21(月) 13:39:430334デフォルトの名無しさん
2010/06/21(月) 18:37:520335デフォルトの名無しさん
2010/06/22(火) 17:59:370336デフォルトの名無しさん
2010/06/22(火) 18:04:230337デフォルトの名無しさん
2010/06/22(火) 18:27:24とかそんなデータが入ってる。
この楽器の音は演奏する側が用意しなきゃならない。
実際の楽器の音などをサンプリングして内蔵しておいて要求に合わせて
編集して出すことになると思うよ。
0338デフォルトの名無しさん
2010/06/22(火) 18:56:280339デフォルトの名無しさん
2010/06/22(火) 21:27:550340デフォルトの名無しさん
2010/06/23(水) 02:34:560341デフォルトの名無しさん
2010/06/23(水) 06:13:28破壊型のウィルスだろう
0342デフォルトの名無しさん
2010/06/23(水) 09:18:120343デフォルトの名無しさん
2010/06/23(水) 10:26:030344デフォルトの名無しさん
2010/06/23(水) 10:36:190345デフォルトの名無しさん
2010/06/23(水) 10:41:08そしたら普通に式書いてそれでウェーブ作ればいいじゃない。
まずはサイン波でやってみそ
0346デフォルトの名無しさん
2010/06/23(水) 10:41:16ワーム 非寄生 自己増殖もしくは移動
トロイ 寄生 非自己増殖
マルウェア 上記を含む迷惑ソフト全般
0347デフォルトの名無しさん
2010/06/24(木) 20:27:320348デフォルトの名無しさん
2010/06/25(金) 12:45:15できる限り少ない容量で、いい音を出すって言う。
0349デフォルトの名無しさん
2010/06/25(金) 19:40:320350デフォルトの名無しさん
2010/06/25(金) 21:47:45シンセ作りたいってことでしょ?
ニコニコ動画にJavaでソフトシンセ作ってる人がいるよ。
ところでこのスレの住人でJava使ってる人いる?
Javaにサウンドプログラミングは耐えられるかな。
0351デフォルトの名無しさん
2010/06/26(土) 11:40:24キーワードだけでもいいので教えていただけると幸いです
0352デフォルトの名無しさん
2010/06/26(土) 12:20:10Java自体は問題ない。Javaで書かれた音楽ソフトもある。
>>351
http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
0353デフォルトの名無しさん
2010/06/26(土) 13:15:16ありがとうございます!読ませていただきます。
0354デフォルトの名無しさん
2010/06/26(土) 16:58:02つ ttp://msdn.microsoft.com/en-us/library/ff537519(VS.85).aspx
カーネルモードで動くドライバーを書く必要がある
素人では無理
0355デフォルトの名無しさん
2010/06/26(土) 19:15:350356デフォルトの名無しさん
2010/06/27(日) 13:00:210357デフォルトの名無しさん
2010/06/27(日) 13:02:370358デフォルトの名無しさん
2010/06/27(日) 20:25:49元の波形のスペクトルを変えてしまっていることになりませんか?
0359デフォルトの名無しさん
2010/06/27(日) 20:36:580360デフォルトの名無しさん
2010/06/27(日) 20:47:451
0361デフォルトの名無しさん
2010/06/27(日) 22:33:32おお、ありがとう。
これをC++に移植してみるよ。
0362デフォルトの名無しさん
2010/06/30(水) 12:37:42元の周波数は保存できても音質みたいなのは絶対違うと思うけど
なんで誰も突っ込まないのか不思議。
0363デフォルトの名無しさん
2010/06/30(水) 12:47:02それをナイキスト周波数でばっさり切る理想的なローパスフィルタを通せば、
元の通りのサイン波が出てくる。
0364デフォルトの名無しさん
2010/06/30(水) 13:30:120365デフォルトの名無しさん
2010/06/30(水) 21:39:22それよりも位相がずれてたら、波形がなくなるよな
そっちが問題
0366デフォルトの名無しさん
2010/07/01(木) 21:40:220367デフォルトの名無しさん
2010/07/01(木) 21:45:270368デフォルトの名無しさん
2010/07/01(木) 22:24:22どういうこと??詳しく
サンプリングポイントを最高周波数の位相に合わせてシフトするの?
0369デフォルトの名無しさん
2010/07/02(金) 11:07:18こゆ話?
0370デフォルトの名無しさん
2010/07/02(金) 14:02:380埋めしてDFTサイズ増やしたって本当の意味での分解能が上がるわけないでしょ。
ただsinc補完される(丸くのっぺりした波形になる)だけだよ。
0371デフォルトの名無しさん
2010/07/03(土) 19:28:49ということですよね?ただアップサンプル時に差し込んだ0に意味がないと
0372デフォルトの名無しさん
2010/07/05(月) 13:58:12サンプリングレートの半分のサイン波はパルス波になってるだろ?
でもサンプリングレートの半分以上の周波数は出ないはずだろ?
ではパルス波の倍音はどこにいったの?
0373デフォルトの名無しさん
2010/07/05(月) 14:24:510374デフォルトの名無しさん
2010/07/05(月) 14:47:560375デフォルトの名無しさん
2010/07/05(月) 15:12:310376デフォルトの名無しさん
2010/07/05(月) 15:41:19ナイキストレートで折り返す
0377デフォルトの名無しさん
2010/07/05(月) 15:59:370378デフォルトの名無しさん
2010/07/06(火) 19:25:07>サンプリングレートの半分のサイン波はパルス波になってるだろ?
意味不明
0379デフォルトの名無しさん
2010/07/06(火) 20:56:450380デフォルトの名無しさん
2010/07/08(木) 22:53:42どこから「パルス波」が出てくるのかわけわからん。
0.5fsを超える周波数成分がある信号なら超えてる部分は折り返すし、倍音(1.0fs)
成分があるならそれは折り返してDC成分になる。
0381380
2010/07/08(木) 23:57:43初期位相によっては振幅がどっかいっちゃう(最悪0になる)。
0382デフォルトの名無しさん
2010/07/09(金) 00:03:46カップリングコンデンサが大抵入るから16〜20Hzぐらいの余裕が必要?
0383デフォルトの名無しさん
2010/07/12(月) 22:36:01ASIO SDK 2.2 についてきた hostsample をビルドすると
(hostsample.vcproj を VC++2008 でオープン)
Debugビルド → 正常に動く
Releaseビルド → 動かない
となってしまいます><
たどってみると、ASIOGetChannels()がReleaseビルドの時は
おかしな値を返してる(outputチャンネル数が2なのに8と)ようです・・・
何がだめなのでしょうか?
0384デフォルトの名無しさん
2010/07/12(月) 22:39:520385デフォルトの名無しさん
2010/07/12(月) 23:02:23とりあえずばっさり違うPCでデバッグするのが吉
0386デフォルトの名無しさん
2010/07/12(月) 23:06:120387383
2010/07/12(月) 23:23:29ありがとうございます
見た感じシンプルで間違えようが無さそうなんですけどねー>hostsample
ライブラリとかプロジェクトの設定まわりでもう少しもがいてみます
一応ASIO対応のプレーヤーからは音が出るので正しいやり方はあるんでしょうね・・・
0388デフォルトの名無しさん
2010/07/12(月) 23:29:240389デフォルトの名無しさん
2010/07/12(月) 23:30:340390デフォルトの名無しさん
2010/07/13(火) 15:00:480391デフォルトの名無しさん
2010/07/23(金) 00:17:24質問させてください
サーバでwavファイルをいろいろ操作しながらストリーミング配信のようなことをしたいので、
その方法を模索中です
具体的には、ドップラー効果を付加したwavファイルをクライアントに聞かせたいのですが、
ストリームで流すためにはどのようにwavファイルを生成すればよいでしょうか?
0392デフォルトの名無しさん
2010/07/23(金) 01:56:360393デフォルトの名無しさん
2010/07/23(金) 03:35:46波形のデータはすぐに読み込むことが出来たのですが、
ここから時間ごとの音量のグラフを作るにはどうすればいいですか?
0394デフォルトの名無しさん
2010/07/23(金) 06:59:430395デフォルトの名無しさん
2010/07/23(金) 15:08:29二乗平均平方根でググれ
0396デフォルトの名無しさん
2010/07/23(金) 17:14:45>>393
音量とは何かって事とWavファイルの情報は何を意味するのかを考えてごらん
0397393
2010/07/23(金) 18:11:22ありがとうございます。
0398デフォルトの名無しさん
2010/07/23(金) 23:43:47二乗平均平方根とか大学行くと勉強するのでしょうか。
0399デフォルトの名無しさん
2010/07/24(土) 00:14:490400デフォルトの名無しさん
2010/07/24(土) 04:19:29波形のクリッピングを検知するのに使われる
聴覚上の音量とはほど遠いぞ
0401デフォルトの名無しさん
2010/07/24(土) 10:33:480402デフォルトの名無しさん
2010/07/26(月) 21:41:54もしくは聴覚フィルタシミュレーションしろ
パターソンの論文でも嫁
0403デフォルトの名無しさん
2010/07/27(火) 13:26:07アナログなメーターの動作か?
あれはピークじゃないんだ。
0404デフォルトの名無しさん
2010/07/27(火) 23:55:510405デフォルトの名無しさん
2010/09/16(木) 08:39:48遅レスですまんが、ラウドネス計算をするプログラム見つけたので貼っとく。
http://d.hatena.ne.jp/amarui/20100223/1266893744
0406デフォルトの名無しさん
2010/10/28(木) 08:47:48ピッチシフトですごく遅いピッチのときに
ノイズを軽減する良い方法ってありますか?
なるべく処理が重くない実装を探しています。
0407デフォルトの名無しさん
2010/10/28(木) 18:50:580408デフォルトの名無しさん
2010/11/04(木) 23:07:08FFTで求まったフーリエ級数にどんな処理をして逆FFTすれば
ピッチの変更が出来ますか?
0409デフォルトの名無しさん
2010/11/05(金) 03:46:20音量下げると個々の音が小さくて困ってます。
皆様どう対処されてるんでしょう
0410デフォルトの名無しさん
2010/11/09(火) 13:10:43ピッチの変更を、音色とテンポを変えずにピッチだけ変更とエスパーしてみる
FFTを勉強し始めたレベルでは、この課題は難しすぐる
マジで答えると本が書ける
ローパス・ハイパスなんかのフィルターや
ハムキャンセラーやイコライザーから始めては
>>409
どんな音源波形か知らんが、サイン波にエンベロープをかけた程度なら
その現象がおこる
音の強さは音量によるのではなく、アタック部分の音質による
ノイズやインパルス成分
サンプリング音を使うのも手だが、ちゃんとした音源作りは難しいよ
0411デフォルトの名無しさん
2010/11/09(火) 19:05:400412デフォルトの名無しさん
2010/11/27(土) 00:20:040413デフォルトの名無しさん
2010/11/27(土) 06:24:180414デフォルトの名無しさん
2010/11/27(土) 14:08:440415デフォルトの名無しさん
2010/11/27(土) 18:19:42かな?
0416デフォルトの名無しさん
2010/11/28(日) 21:27:270417デフォルトの名無しさん
2010/11/29(月) 12:19:36エンベロープをトランペット風にアレンジ
0418デフォルトの名無しさん
2010/12/03(金) 23:50:49日本語で解説してあるページってありませんか?
musicdspとかに英語で解説してあるテキストはあるんですが、わかんない……
0419デフォルトの名無しさん
2011/01/05(水) 23:52:35何に役立つのかがわからん
0420デフォルトの名無しさん
2011/01/17(月) 10:45:400421デフォルトの名無しさん
2011/05/11(水) 13:54:57.620422デフォルトの名無しさん
2011/05/11(水) 20:02:21.430423デフォルトの名無しさん
2011/05/14(土) 02:39:14.50早く普及して欲しいわあ
http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html
0424デフォルトの名無しさん
2011/05/14(土) 17:46:14.44リアルタイムだとCPUパワー余っててもブツ切れだな
>>418
今更かもしれないけど、要は矩形波や鋸波の倍音構成を
正弦波の合成で再現してやれば絶対に折り返しノイズが発生しないって理屈
0425デフォルトの名無しさん
2011/05/14(土) 18:35:41.66その理屈自体はわかりますが、実際にリアルタイムに正弦波で矩形波とかを合成すると
どう足掻いても音が飛んでしまいプチノイズの嵐になるわけで。
それを避ける為の合理的な計算なんかも恐らくBLITってのには含まれてると思うんですが。
どっちかってーとそっちを知りたい。
0426デフォルトの名無しさん
2011/05/14(土) 19:32:35.230427デフォルトの名無しさん
2011/05/14(土) 20:15:42.1210000Hzの正弦波waveファイル(16bit)を窓関数なしでFFTしたとき
サンプル数が以下のときの最大のパワーは
1024 は 15701165
2048 は 25431718
4096 は 62699682
8192 は 101021697
でした
同じ正弦波なのに最大値が違うのが
なんか納得行かないんです
0428デフォルトの名無しさん
2011/05/14(土) 23:25:45.40BLITは>>424で解説した理屈以上のものじゃないぞ
実装時は基音を元にした各倍音の位相テーブルを作っておいて
合成するのが一般的・・・なハズだ。俺もそんなに多くの実装を目にしたわけじゃないが
0429デフォルトの名無しさん
2011/05/14(土) 23:31:20.131024サンプルで正弦波が途切れるwaveファイルに
各サンプル数でFFTをかけてみたらどうなるかな?
0430デフォルトの名無しさん
2011/05/14(土) 23:36:14.42読んでく、っていう手法の解説を(それとは関係ないけど)昔読んだことがある。
440個ごとに読み出せば440Hzの波形が出てくる、ってことね。
0431デフォルトの名無しさん
2011/05/15(日) 00:04:26.790432デフォルトの名無しさん
2011/05/15(日) 00:16:43.77回答ありがとうございます
ご指示の通りサンプル数453のwaveファイルで試したところ
以下のような結果になりました(FFT時に、波形の無い部分は0埋め)
1024 … 7200310
2048 … 7200310
4096 … 7284914
8192 … 7284914
4096と8192が微妙に違いますが、ほぼ同一の値が得られました
この結果はつまり、>>427で値が違ったのは
切り出した波形の総エネルギーが違うから
という理解でいいんでしょうか?
最大パワーは2048なら1024の2倍、4096なら4倍になるというような感じで
0433デフォルトの名無しさん
2011/05/15(日) 12:42:05.05その解釈でいいと思う.
DFTの定義によるけど,サンプルを総和することになるからFFTポイント増やすと値は増えるはず.
そのFFTの値をそのまま逆変換する場合,サンプル数で割るから値は増えずに元に戻るよ.
http://ja.wikipedia.org/wiki/離散フーリエ変換
0434デフォルトの名無しさん
2011/05/15(日) 23:06:01.47ありがとうございました
独学でやってるんで
ふとした疑問を聞ける人がいなくて困ってたんです
助かりました
0435デフォルトの名無しさん
2011/05/16(月) 08:58:32.29手持ちの2つのデバイスで再生させると、両方とも一応256ソースまではAL_NO_ERRORで同時再生できてしまいました。音は潰れますが。
ソフトウェア処理だからだとしたら、逆にハードウェアでOpenALに対応していたら発音数が256以下だったりするのでしょうか?
0436デフォルトの名無しさん
2011/05/16(月) 09:56:29.19もうあんまり覚えてないけれど、十何個かそこらしか生成できなかった記憶が
0437デフォルトの名無しさん
2011/05/16(月) 15:42:28.67実装依存だと思う
0438デフォルトの名無しさん
2011/06/01(水) 18:46:50.150439デフォルトの名無しさん
2011/06/01(水) 20:31:34.741オクターブは12半音
なので半音上は2^(1/12)倍
あとは計算して
0440デフォルトの名無しさん
2011/06/01(水) 20:49:34.76あと、音ってなんで足して2で割ると混ざるの?
すごい不思議なんだけど
0441デフォルトの名無しさん
2011/06/01(水) 23:39:43.31水面の波紋も同じ。
0442sage
2011/06/10(金) 12:50:15.47VSTGUIを使って、Idle()のなかで描画するようにしたら、なんだか動きが遅くて・・
VUメータのようなものを描画するときは、
「GDI+」とか、「directX」で描画したほうがいいのかな・・?
誰か、詳しい人おしえてくらはい
0443デフォルトの名無しさん
2011/06/10(金) 13:29:46.460444sage
2011/06/10(金) 13:42:33.15ひとまず、GDIでやってみます。
0445デフォルトの名無しさん
2011/06/12(日) 03:56:21.180446デフォルトの名無しさん
2011/07/13(水) 23:20:28.69全くイメージできずに行き詰っています。
PCMであれば間に0を挟んでアップサンプリング,FFT,
LPFといった処理をしたことはあるのですが,1ビットは
ちんぷんかんぷんで・・・
どなたか,勉強のしかたをアドバイスいただけないでしょうか?
PS3でのDSD→PCM変換は教科書どおりにやっているから音
質がよいといった表現を見かけますが,その教科書に相
当する考え方をまずは知りたいと思っています。
0447デフォルトの名無しさん
2011/07/13(水) 23:49:06.80単純にLPFのあと間引きすればいいんじゃないの?
0448デフォルトの名無しさん
2011/07/14(木) 22:49:54.08PCMであれば,
倍精度浮動小数点の配列→FFT→LPF→逆FFT→倍精度浮動小数点の配列
という手法ならわかるのですが,1ビットのときは???
0449デフォルトの名無しさん
2011/07/15(金) 05:18:09.01+1と-1の集合だから
落とし込みたいサンプリング周波数の範囲で足し算して割るだけ
0450デフォルトの名無しさん
2011/07/15(金) 22:58:53.96ごめんなさい。よくわかりません。
>+1と-1の集合だから
これはわかりました。1と0ではないのすね。
>落とし込みたいサンプリング周波数の範囲で足し算して割るだけ
ここがわかりません。
もしよろしければ,もう少し具体的にお教えいただけるとありがたいのですが。
1bit 2822400Hz→16bit 44100Hzだとどのような計算になるでしょうか?
2822400個の配列があるとして,
0〜44099の1or-1を合計して,その値を44100で割るという事になるのでしょうか?
あれ,でもこれだと1秒間に64サンプリングしかできない・・・
0451デフォルトの名無しさん
2011/07/15(金) 23:25:44.27とりあえず答えの一つみたいの見つけた
ttp://www.hydrogenaudio.org/forums/index.php?showtopic=37717&start=0&p=670042entry670042
ttp://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=5524
0452デフォルトの名無しさん
2011/07/15(金) 23:35:52.83コメントありがとうございます。
>単純なFIRフィルタも理解できないのか?
はい。全くわかりません。
今回の処理に必要という事でしょうか?そのキーワードもあたってみます。
>とりあえず答えの一つみたいの見つけた
ありがとうございます。VB開発者なものでソースコードの解読に苦労しそう
ですが,こちらも勉強してみます。
少し道がひらけた気がします。ありがとうございます。
0453デフォルトの名無しさん
2011/07/16(土) 00:08:10.450454デフォルトの名無しさん
2011/07/16(土) 00:16:12.16LPFに「どんな」ってどういう事でしょうか?
単純に一定周波数以上の値を「0」にしてから逆FFTしてるだけなのですが・・・
0455デフォルトの名無しさん
2011/07/16(土) 12:09:18.411ビット 2822400Hz→マルチビット 44100Hzの場合
仮に32768サンプルの1bitデータがるとして,
2822400÷44100=64なので
64個毎に合計して,その値を64で割ることを512回繰り返せば,
512サンプルのPCMなったりするかなぁ思うのですが,どうでしょうか?
0456デフォルトの名無しさん
2011/07/16(土) 22:28:25.89https://wiki.mozilla.org/Audio_Data_API
0457デフォルトの名無しさん
2011/07/18(月) 12:35:39.550458デフォルトの名無しさん
2011/07/18(月) 22:40:35.17再生するのって出来ないんでしょうか
mozSetupやmozSampleRateで周波数を変えてもうまくいかず
WAVファイルの音階を変えて再生する作曲ソフトを作りたいんだけど
JavaScriptが駄目ならC言語とかでもいいんだけど
そもそも音階というのは単に周波数の値を変更するだけで変えられるもんなんでしょうか
それともデータをちゃんといじってあげないといけないのか
0459デフォルトの名無しさん
2011/07/19(火) 01:01:25.74これはすごいな、普通にFireFox上で動作するソフトシンセとか見つかってびっくりした。
時代を感じる。
0460デフォルトの名無しさん
2011/07/27(水) 22:59:59.821,1,1,0,1,1,1,1
という1bitの連続したデータを
同じサンプリング周波数のマルチビット整数にすると
1,2,3,2,3,4,5,6
となる。
という考え方は誤っているでしょうか?
上記の方法で作成したPCMデータは音としては聞き取れますが,
音質としてはひどいものでした。
低域がかろうじて鳴っているだけで,中域,高域はまったく感じられませんでした。
どなたかアドバイスをいただけないでしょうか?
0461デフォルトの名無しさん
2011/07/29(金) 11:05:29.12ttp://oshiete.goo.ne.jp/qa/1816052.html
ttp://patent.astamuse.com/ja/published/JP/No/2008141470/
ttp://blog.goo.ne.jp/commux/e/e08c353a7d0d5be49a00c3c61e7b8372
まぁ既に読んでてそれでも解らないってんならお前には無理だから諦めろ
0462デフォルトの名無しさん
2011/07/29(金) 23:03:13.95ありがとうございます。
この2週間ほどグーグルに聞いてはいたものの,理解できるような
文献が見つからなかったので,こちらを頼った次第です。
2つ目は見つけましたが,理解不能でした。
1つ目と3つ目はまだ見たことがなかったので,これから読んでみよ
うと思います。
この度は誠にありがとうございました。
重ねてお礼申し上げます。
0463デフォルトの名無しさん
2011/08/10(水) 17:26:29.680464デフォルトの名無しさん
2011/08/15(月) 08:33:50.58サイン関数の値を書き込む方法みたいなダサい方法は普通使いませんよね。
ということでみんなやってるやり方とかはどの本に乗ってますか?
0465デフォルトの名無しさん
2011/08/15(月) 10:47:57.130466デフォルトの名無しさん
2011/08/15(月) 10:49:18.14恥を晒したな・・・
というわけでレスポンスよろwww
0467デフォルトの名無しさん
2011/08/15(月) 11:16:50.80そうなの?
0468デフォルトの名無しさん
2011/08/16(火) 17:33:17.53お前の考えるスマートな方法を先に言えよw
0469デフォルトの名無しさん
2011/08/17(水) 06:03:03.150470デフォルトの名無しさん
2011/08/18(木) 14:55:06.340471デフォルトの名無しさん
2011/08/18(木) 17:37:12.630472デフォルトの名無しさん
2011/08/19(金) 23:43:29.000473デフォルトの名無しさん
2011/09/06(火) 21:10:52.49自分で調べてやってみた方法は,
1. 44.1kHzに0を挿入して8倍(352.8kHz)にアップサンプリング
2. FFT→LPF(音の周波数22.05kHz)→逆FFT
3. 352.8kHzを間引いて48kHzにする
上記の方法では,処理も遅く高域にノイズが発生しているように聞こえます。
どなたかテクニックを伝授していただけないでしょうか?
0474デフォルトの名無しさん
2011/09/06(火) 21:44:25.26ttp://www.madlabo.com/mad/book/
ここの「任意レート変換 サンプリングレートコンバータ.pdf」がわかりやすい
0475デフォルトの名無しさん
2011/09/09(金) 13:33:50.63高域にノイズ発生の問題はLPFの効きが弱く、折り返し歪が発生しているのでは?
極端に遅いなら2のやり方がおかしい気がする。
0476デフォルトの名無しさん
2011/09/10(土) 21:40:40.41ありがとうございます。
私には難解な内容ですが,一読してみようと思います。
>>475
>高域にノイズ発生の問題はLPFの効きが弱く、折り返し歪が発生しているのでは?
コメントありがとうございます。
整数倍の場合は品質的に問題ないように思います。
恐らく非整数倍のときの「3」の間引き方の方法を工夫しなくては
いけないのかと思って入るのですが・・・
0477デフォルトの名無しさん
2011/09/14(水) 23:43:13.48きれいにやるには >>474 のような方法が現実的だし、実際よく行われてます
44.1kHz:48kHz=147:160なので、
タップ長(たとえば101)×(出力パターン数)160の
係数テーブルを作って計算します
(係数を削減する方法もある)
>>473 のようにFFTを使いたいなら、
窓がけ、オーバーラップ、などをしないと不連続ノイズが出ると思います
FFTするし、それなりに重いのは仕方ないでしょう
適当にやるには、(0挿入ではなく)前の値を保持(0次ホールド)するか
直線補完(1次ホールド的な?)でもしながら48kHz信号を無理やり作り、
20kHzくらいのカットオフの高めの次数のLPF(IIRなら8次以上とか)をかければ、
まあきれいではないけど、軽くできるできるんじゃないかな
波形の見た目のきれいさを求めて、あんまり音的には意味の無い
近時曲線でサンプルを補完しちゃう人もいますけどね
それが割といい音がすることもw
0478デフォルトの名無しさん
2011/09/15(木) 09:23:19.37画像みたいに数タップのLanczosで補完しちゃだめなの?
Bスプラインを使ってたハイエンドメーカーもあったようだけどそっちは高域が落ち込むだろうし
0479デフォルトの名無しさん
2011/09/15(木) 14:26:55.65する意味無いだろ。
0480デフォルトの名無しさん
2011/09/15(木) 21:23:55.86> アップサンプリングなら元データのほうが周波数低いんだから
というよりサンプリング周波数比が単純じゃないのが面倒なのでしょう
> 画像みたいに数タップのLanczosで補完しちゃだめなの?
それは >>474 を数タップでやるのと同じことなのでOKだと思います
ただ、(これを言うと画像屋さんには怒られるけど)
画像と比べて音は求められるSNが非常に高いので
数タップで、また、固定の係数なんかではあまり良いスペックは出ません
0481デフォルトの名無しさん
2011/09/16(金) 00:42:18.8544.1kHzから48kHzへ変換する場合、160倍の0補完アップサンプリングと
147倍の間引きダウンサンプリングをするなら、タップ数が1000〜とかでも
演算結果が0になることがわかっている分は除けるから
畳み込みの回数は1サンプルに対して〜10程度になるよ
0482デフォルトの名無しさん
2011/09/18(日) 13:53:58.23これって、どんなアルゴリズムで動いているのでしょうか?
0483デフォルトの名無しさん
2011/09/19(月) 13:45:51.250484デフォルトの名無しさん
2011/09/20(火) 00:36:37.93触ってないけど、それほど目新しいものでもなさそう
0485デフォルトの名無しさん
2011/09/20(火) 10:25:16.55可視化するのは個人的に目から鱗
0486デフォルトの名無しさん
2011/09/20(火) 10:43:31.84売れてんのかは知らんが
0487デフォルトの名無しさん
2011/09/20(火) 12:18:45.340488デフォルトの名無しさん
2011/09/20(火) 22:50:00.32>左右のパワースペクトルを差分取って定位割り出しって感じかな
左右の定位置を求める方法、もっと詳しくしりたいのですが、
なにか資料とかキーワードとかあります?
0489デフォルトの名無しさん
2011/09/20(火) 23:34:00.51超アカデミックな基礎としては、ブラウエルトの音像定位の本(日本語は絶版してると思う)
だけどそこまでのことはやってないでしょうw
せいぜい各周波数エレメントごとのLRの振幅比からパンを割り出してるくらいじゃないのかな?
位相差も見てたらすばらしいと思うけど
0490デフォルトの名無しさん
2011/09/20(火) 23:46:39.32http://www.amazon.co.jp/dp/4306041972
これでしょうか?情報ありがとうございます。
0491デフォルトの名無しさん
2011/09/21(水) 07:28:44.42センターに定位してるのが普通だし、周波数帯域も限定されてて
比較的簡単な部類なんだから、他のパートでやってくれないと。
0492デフォルトの名無しさん
2011/09/22(木) 08:29:13.640493デフォルトの名無しさん
2011/09/22(木) 09:25:19.790494デフォルトの名無しさん
2011/09/22(木) 21:39:46.26漠然としすぎてて難しい質問だな
係数をかけたりzバッファにためたりするプログラムをしているよ
0495デフォルトの名無しさん
2011/09/23(金) 19:41:08.59フィルタをどうすると言う書き込みは多いけど、フィルタ自体はどうしているのかなと思って。
みな自作しているけど、疑問なく作れるってことですか?
0496デフォルトの名無しさん
2011/09/23(金) 20:45:36.37デジタル信号処理の知識があればできるよ
0497デフォルトの名無しさん
2011/09/23(金) 23:53:21.01アナログのフィルタ回路の作り方を探る手もあると思うよ。
0498デフォルトの名無しさん
2011/09/25(日) 14:22:59.210499デフォルトの名無しさん
2011/09/26(月) 18:42:41.99ゆとり世代の耳にはデジタル入力がついてるのか
アナログというよりs領域で設計してs-z変換ということでしょ
特にIIRフィルタはs領域での設計は楽だから
z領域で設計するのは至難の業だ
アナログ回路の伝達関数をs関数にすることも楽だ
0500デフォルトの名無しさん
2011/09/26(月) 23:27:19.82掴んだのを移動できるのは見たことないぞ
0501デフォルトの名無しさん
2011/09/30(金) 14:03:49.60遅せぇよ、ただしこれはマスキングなピッチ・タイムストレッチは別機能
ttp://www.psoft.co.jp/jp/product/chronoplayer/index.html
0502デフォルトの名無しさん
2011/10/02(日) 01:58:36.590503デフォルトの名無しさん
2011/10/07(金) 13:50:37.35あるMIDI機器を操作した際に出るSystem Exclusiveをプログラム・チェンジに変換して、
演奏情報も一緒に別の機器に送りたいんですが、何を勉強すればいいでしょうか?
当方プログラミングの経験なしです・・・(無理っすか?
0504デフォルトの名無しさん
2011/10/07(金) 20:44:26.89って本がMIDIについて結構詳しく書いてあったような気がするので
立ち読みして良さそうなら買ってみたらどうだろう
0505デフォルトの名無しさん
2011/10/08(土) 02:03:07.42ありがとうございました! 立ち読みしてみます。
でも、友人に「無謀だ」と言われ、くじけそうな心・・・
0506デフォルトの名無しさん
2011/10/08(土) 12:27:45.51簡単に実現したいのだったらMaxとかPureDataという手もあるかもしれない。
0507デフォルトの名無しさん
2011/10/08(土) 17:21:10.44という本を買って読んでいるんですけど、何をしているのかわからない箇所があるので教えてください。
音声ファイルのオープン時にWAVEファイルのPCMデータ(1サンプル16bit)を読み込んでいるのですが、その際に
short data;
double *pcm = calloc( length, sizeof(double) );
for( n=0 ; n<length ; n++ )
{
fread( &data, 2, 1, fp );
pcm[n] = (double)data/32768.0; /* 音データを-1以上1未満の範囲に正規化する */
}
と、省略して抜き出しましたが、コメントはそのままです。
そして、ファイルへの出力時に
double s;
for( n=0 ; n<length ; n++ )
{
s = ( pcm[n]+1 )/2.0*65536.0;
if( s > 65535.0 )
data = (short)(pcm
0508デフォルトの名無しさん
2011/10/08(土) 17:37:49.80-32768 〜 +32767 より -1.0 〜 +1.0 の方が加工とか処理するのにわかりやすくて扱いやすい、と本の中の人は思ったんだろう
ファイルに書くときは当然また16ビットに戻す必要がある
0509507
2011/10/08(土) 17:44:14.96for( n=0 ; n<length ; n++ )
{
s = ( pcm[n]+1 )/2.0*65536.0; �@
if( s > 65535.0 ) s=65535.0;
if( s < 0.0 ) s=0.0;
data = (short)(s+0.5)-32768; /* 四捨五入とオフセットの調節 */
fwrite( &data, 2, 1, fp );
}
そこで、わからないのは何故double型にして-1〜1の範囲に変換(正規化?)しているのかです。
本文には「精度を考慮して正規化する」とあるだけで、こうすることによってどうして精度が良くなるのかがわかりません…。
正規化でググっても違う意味のものが検索されてしまいます。
それから元に戻すときはどうしてわざわざ �@ のように(これだと0〜65535の範囲になる)してから、-32768〜32767に
戻しているのかとか…。必要なんでしょうけどどういう効果があるのか具体的にわからなくてもやもやしていて先に進めません。
ググって調べられるワードなどでも何でも良いので教えてもらえるとありがたいです。よろしくお願いします。
0510507
2011/10/08(土) 17:49:38.18>>508
なるほど、扱いやすいプログラミングの好みみたいなものなんでしょうかね。
あまり深く考えないほうがいいのかな。
0511デフォルトの名無しさん
2011/10/08(土) 17:53:33.06複数のフィルタかけたりすると累積の計算誤差も減るし
まあ耳でわかるようなもんじゃないかもしれないけど、わざわざ誤差作るほどじゃないという感じでもある
0512デフォルトの名無しさん
2011/10/08(土) 18:15:54.00単純に整数化すると -0.999...〜+0.999... の範囲が 0 になるんじゃないかな
0513507
2011/10/08(土) 20:13:36.07加工する過程での細かな誤差を嫌ったという感じなんでしょうかね。
正規化(?)をするのとしないのとでは実際どの程度違う結果になるのかわかりませんけど、
いまはあまり気にしなくてもいいのかな。
実際は読者からの細かい突っ込みを嫌ったためのような気も(笑)
少なくとも音声データの加工そのものとは直接関係ないようなので先に進んでみます。
ありがとうございました!
0514デフォルトの名無しさん
2011/10/08(土) 23:20:53.19(こんな事をきいてるようじゃ無謀と言われてもしょうがないですねw)
0515デフォルトの名無しさん
2011/10/09(日) 01:54:00.110516デフォルトの名無しさん
2011/10/09(日) 12:25:41.01後半でデータ加工するのに都合良いようにしてんだろ
0517デフォルトの名無しさん
2011/10/09(日) 20:37:19.480518デフォルトの名無しさん
2011/10/10(月) 07:25:15.75それ使っちゃえば安くて速い、という。
0519デフォルトの名無しさん
2011/10/10(月) 08:42:11.6220年くらい前に終わってる
0520デフォルトの名無しさん
2011/10/10(月) 09:59:32.9610年くらい前でも整数演算でやる方がずっと速かった。
SSEとか出だしてからじゃないか?
0521デフォルトの名無しさん
2011/10/10(月) 10:49:13.67加工前に1000倍して加工後に1/1000にするとかでしょうか?
0522デフォルトの名無しさん
2011/10/10(月) 10:49:50.24あるいはAlphaあたり。
0523デフォルトの名無しさん
2011/10/10(月) 18:27:05.120524デフォルトの名無しさん
2011/10/10(月) 19:30:11.420525デフォルトの名無しさん
2011/10/10(月) 20:17:47.25MIDI命令みたいに可変長byteの整数つかってもおもろいかも。
0526デフォルトの名無しさん
2011/10/10(月) 21:37:15.040527デフォルトの名無しさん
2011/10/11(火) 00:35:05.10サンプリングレートが異常に高い分野ではまだまだ現役
最近は浮動小数点DSPも安くなったし、オーディオなら、オーバーフローとか
ヘッドルームとかほぼ考えなくて済むメリットの方がかなり大きい
が、まだ32bit floatが主流で、24bit精度が精一杯
フィルターかけまくり、ミキシングしまくりだと、そろそろ精度的に限界かな
PCのアプリなんかは64bit doubleが使われるようになってきたし
(PCのCPU(FPU)はもともとdoubleの方が計算速度速いっていうのもあるけど)
(メモリもたくさん使えるしね、DSPに比べたら無限にあるみたいなもの)
(ただし同じパフォーマンス出すのにCPUのコストは10倍以上、下手したら100倍かかるけど)
DSPも倍精度浮動小数点になっていくのかなぁ
0528デフォルトの名無しさん
2011/10/11(火) 01:47:28.46DSPの定義の問題なのかな?
0529デフォルトの名無しさん
2011/10/11(火) 04:02:54.67固定小数じゃないとリアルタイム処理はきついね
0530デフォルトの名無しさん
2011/10/11(火) 21:18:03.93機能を実装すると考えた場合,FFT意外に何か考えられる手段はあ
るのでしょうか?
もしくは,完全フリーで高速なFFTライブラリがあれば教えていた
だけるとありがたいです。
ソースコードの開示が必要ないものがよいのですが・・・
今は大浦さんのFFTを使わせてもらっていますが,もっと速いもの
はないかなぁと思いまして。
0531デフォルトの名無しさん
2011/10/11(火) 21:24:23.870532デフォルトの名無しさん
2011/10/11(火) 21:40:06.150533デフォルトの名無しさん
2011/10/11(火) 22:26:00.16FFTの手段っていうのは漠然過ぎない?
フリーだとFFTWが有名だけどコードの開示は知らないです。
0534デフォルトの名無しさん
2011/10/11(火) 22:26:35.10今は主要各社ラインナップありますよ
まあ確かにDSPとしてはハイエンド系かな
もちろんアーキテクチャは積和命のDSP
>>530
よくあるタイプは、高域に非線形ひずみかけて倍音を発生させて、
さらに高い超高域を作り出している
例えば、HPFで高域取り出す→クリップさせる→奇数次倍音発生
→超高域HPFかけて取り出す→原音に足しこむ
みたいな感じ(偶数次倍音の発生とか、足しこみ方とかいろいろあるけど)
こうして作られた超高域は、一応倍音だから、元は有ったかもしれないんですw
0535デフォルトの名無しさん
2011/10/11(火) 22:35:54.76FFTした場合は周波数成分へのアクセスは簡単なので,
そこは工夫次第でどうにでもなりそうですよね?
ただ,FFTそのものの処理時間がネックに感じています。
>>534
むむむ,難しい・・・すいません。頭の悪い私には理解
不能でした。
FIRとかIIRとかそっち系でしょうか?実はFIRを理解して
おらんのです。
0536デフォルトの名無しさん
2011/10/11(火) 23:02:03.26そっち系ですw
でも分かれば非常に軽く実装できますよ
FFTは万能なようで色々面倒なこともあります、まず重いし
連続処理じゃなくてブロック処理になるんで、
連続信号の音を綺麗に処理するのは結構苦労します
分析には向いてますけどね
とりあえず時間分解能と周波数分解能で悩むでしょうw
0537デフォルトの名無しさん
2011/10/11(火) 23:46:24.26やはりそっち系でしたか!
まずはFIRの勉強しないといけませんね。
FFTはどうしても矩形窓を使いたかったので,オーバーラップの
実装に苦労しました。
ありがとうございます。
0538デフォルトの名無しさん
2011/10/12(水) 23:11:48.27・1〜32767
・0
・-1〜32768
でデータを表現する事ができますよね。
しかし,+と−で解像度が1つ異なるのですが,
浮動小数点数との相互変換のとき,この1つの違
いをどう考えればよいのでしょうか?
0539デフォルトの名無しさん
2011/10/12(水) 23:41:13.43問題ないのでは?
x∈R
-32768.0 <= x < 32768.0 と考え
デジタルデータ d は x の小数点以下を切り捨て、それより小さい最初の整数に変換されると考えると、「解像度」に違いはないと思います。
0540デフォルトの名無しさん
2011/10/12(水) 23:50:08.69ですから,+の場合に整数→浮動小数点変換する場合は
32767÷32768なのか
32767÷32767なのかという事です。
0541デフォルトの名無しさん
2011/10/13(木) 00:16:41.05変換前の PCM データを x,
変換後の浮動小数点データを y としたとき、
y = x * 32768
とすれば問題ないと思いますが‥‥‥。
別の例で考えてみます。
*----*----*----*----*----
0 1 2 3 4
0 <= x < 5 の連続値をとるアナログデータをデジタルデータ化する方法として、x の小数部分を切り捨てた値に代表させるとします。
このとき 0 に代表させられるアナログデータ、1 に代表させられるアナログデータ、‥‥‥ 4 に代表させられるアナログデータ
とグループ化した場合、どのグループも「属するアナログデータの数は同じ」と考えられないでしょうか。
ここでは、アナログデータ x ≠ 5.0 としていますが、仮にアナログデータ x = 5.0 の場合もデジタルデータは 4 とする、としてもほとんど問題ないと思います。
しかし正確な説明は難しい。数学の言葉としては何が該当するでしょうかね。1 対 1 対応ではないからカントールの濃度ではないでしょうし。
0542541
2011/10/13(木) 00:20:06.74失礼
y = x / 32768.0
ですね。
あと図は、
*----*----*----*----*----
0 1 2 3 4 5
です。
0543デフォルトの名無しさん
2011/10/13(木) 00:42:59.23では,ちょっと質問を変えてみますと,オーディオ/サウンド
関連の分野では常識としてどうすべきかというものがあるので
しょうか?
それとも,ソフトや機器によって実装はマチマチなのでしょう
か?
0544デフォルトの名無しさん
2011/10/13(木) 14:43:43.30分母ができほど制度が高くなるイメージ。
0545デフォルトの名無しさん
2011/10/13(木) 21:57:28.96まあ浮動小数点で扱うなら32768とかで割らなくてもいいんだけどね
オーディオ入出力のAPIによっては浮動小数点を選択すると-1.0〜+1.0になってることが多いね
16bitデータをそのままQ15フォーマットの固定小数点データとみなせば-1.0<=x<1.0となる
>>543
細かいところはまちまちでしょう
ただPCでは飽和処理を自動でやってくれないので自分でやること
float x;
short y;
if (x<-32768.0) y=-32768; else if (x>32767.0) y=32767; else y=(short)x;
とかね
そういえば>>512を気にする場合は
x=x+32768.0;
if (x<0.0) y=-32768; else if (x>65535.0) y=32767; else y=(short)((unsigned short)x-32768);
とかかな?
0546デフォルトの名無しさん
2011/10/13(木) 23:26:24.28なるほど。
大変参考になりました!
ありがとうございます。
0547デフォルトの名無しさん
2011/12/07(水) 17:04:17.87ケプストラムからスペクトル包絡を求めたいとおもってるんです。
で26次元のケプストラムから求めるには32ポイントでのフーリエ変換して指数変換でいいのですかね。
0548デフォルトの名無しさん
2011/12/10(土) 00:14:57.52低域の分解能がほしい。時間分解能もほしい
0549デフォルトの名無しさん
2011/12/10(土) 01:17:45.000550デフォルトの名無しさん
2011/12/10(土) 07:35:19.94http://www42.atwiki.jp/syugyou?cmd=upload&act=open&pageid=250&file=oto2.html
0551デフォルトの名無しさん
2011/12/10(土) 07:51:02.370552デフォルトの名無しさん
2011/12/10(土) 09:02:43.690553デフォルトの名無しさん
2011/12/10(土) 14:22:41.110554デフォルトの名無しさん
2011/12/12(月) 23:34:02.83ttp://www.it.ice.uec.ac.jp/SRV-DB/
ギャルゲから音声抜き出したのかとw
0555デフォルトの名無しさん
2011/12/13(火) 00:07:32.020556デフォルトの名無しさん
2011/12/13(火) 00:19:05.94データの種類が多すぎて,どこから聴いたら良いかわからないという方のために, 「おすすめ」を書いておきます.
まず,どんな発話内容であるかその全体を把握したいという方は,ステレオで聴ける方は, 自然な話速での
男女ステレオデータ:5分45秒:第1回収録版 もしくは 同:第2回収録版をお聴きになってみて下さい.
モノラルでしか聴けない方は, 自然な話速での男女モノラルデータ:5分45秒:第1回収録版)
もしくは 同:第2回収録版をお聴きになってみて下さい.
なお,研究素材として用いるために, 音声データにはコンプレッサなどで音圧を上げる処理を施しておりません.
CDなどで言えば,マスタリング工程前のデータということになります. このため,全体として音量は小さめですので,
パソコン側の音量を最大にして試聴して頂ければ幸いです. ボリューム最大でも音量が足りないパソコンをお使いの方は,
簡易コンプレッサで音量を上げた 大音量版:ステレオ:5分45秒:第1回収録版をお聴き下さい.
無処理ならではの伸び伸びとした魅力は失われますが, 全体の感じはつかめると思います.
0557デフォルトの名無しさん
2011/12/13(火) 00:20:12.05音声の研究の進展のため,あるいは,信号処理技術の発展に寄与するためであれば, 広く利用を許可したいと思います.
ぜひ,企業や大学での研究で,素材として使って頂ければと思います. また,学会発表,展示会発表などにおいて,
本データを信号処理したもの,あわせて,比較のために本データそのものを 参加者に聴かせることは可能です.
新製品や新技術や技術改良の効果を具体的にアピールするために, 本素材と本素材をその技術で処理した結果の音声を発表
(学会,展示会,Webページに掲載,CDとして配布) することも許可したいと思います.
どうぞ,技術の進歩のために有効にお使いになって下さい.
なお,役者志望の方が 練習または評価を受ける目的で本データベースを利用するようなことは構いません.
たとえば,対話型の音声の片方に自分の声を挿入するなどです.
データセット3のように音楽を付けたデータを製作し発表することも含め, 良識の範囲内であれば許可します.
ちなみに,データセット3の音楽は, 本データベースのために作曲し製作したオリジナルソースです.
音声の基準(2つ上の段落で説明した基準)の範囲内であれば, 発表や展示やWeb掲載に利用可能です.
BGMが加算されたソースに対する音声認識や話速推定などの研究で, 標準ソースとして利用していただければ幸いに存じます.
原稿「雪」については,本データベース用のオリジナル原稿ですので, 原稿そのものについては,
その一部または全部を許諾無しに無料で利用(読み上げ,テキストの掲載や印刷や配布など) してもらって構いません.
ただし,「雪」と読売新聞の「編集手帳」の発声データについて, 意図的に原稿とは違う意味になるように
編集することはお断りします.
(続く)
0558デフォルトの名無しさん
2011/12/13(火) 00:21:33.20協力して下さっていますので, 発声して下さった方々に迷惑がかかるような行為があった場合は,
必要な処置をとらさせて頂きます.
義務ではありませんが, 本データベースの音声や原稿を利用したものを発表・配布する場合は,
「話速バリエーション型音声データベース(SRV-DB)を利用した」 もしくは, 「SRV-DBを利用した」 ことを
書き添えて頂ければ幸いに存じます. 定期的に「SRV-DB」でWeb検索し,本データベースが 期待どおりに
皆さんに活用して頂いていることがわかれば, 今後,さらに充実したものにしていきたいと思っております.
謝辞
声優による読み上げに関しまして, 第1回収録に出演して下さいました,男性声優VM00様,女性声優VF00様には,
非常に遅い音声から,非常に速い音声まで,かなりの幅があったにもかかわらず, どの話速でも魅力的で心のこもった
聞き応えのある音声を発声して頂きました. お陰さまで,本データベースは研究用としての価値はもちろん,
聴くだけでも音声の素晴らしさを味わうことができる大変充実したものになりました. ここに深く感謝いたします.
また,第2回収録に出演して下さいました,男性声優VM01様,女性声優VF01様には, さらに,第1回収録での
発話ペースにあわせて発話して頂くという条件で収録させて頂きました. このような難しい条件にもかかわらず,
個性的で魅力的な役を演じて下さいました. その結果,全く同じ発話速度に制御された上で,異なる男女の
ペアの方々が それぞれ個性あるキャラクターを演じて下さっているという, 貴重なデータベースを完成させることが
できました. ここに厚く御礼申し上げます.
(続く)
0559デフォルトの名無しさん
2011/12/13(火) 00:21:53.80チーフマネージャー様に厚く感謝いたします, 氏のご協力なくしては,データセット1〜3はここまで充実させることは
出来なかったと思います. ここに厚く御礼申し上げます.
その他,発話のプロフェッショナルによる読み上げ(データセット4と6)に関しましては,
株式会社エス・オー・プロモーションのご協力を頂きました. 本研究の意義にご理解下さいました佐藤邦宏様,
話速を厳密に管理して発声して頂くというたいへん難しい注文に 応えて下さいました,落合こず恵様(話者PF00),
小松上花様(話者PF01), 山田直広様(話者PM00)に感謝いたします. また,編集手帳につきましては,
読売新聞社より,文章掲載と 音声ファイル公開の許可を頂きました.ここにお礼申し上げます.
0560デフォルトの名無しさん
2011/12/13(火) 00:36:08.120561デフォルトの名無しさん
2011/12/13(火) 09:06:06.810562デフォルトの名無しさん
2011/12/14(水) 00:21:16.180563片山博文MZ ◆0lBZNi.Q7evd
2012/01/15(日) 11:05:55.310564デフォルトの名無しさん
2012/01/15(日) 11:16:21.02DFT(FFT)+IDFT(IFFT) でなんとかなりませんか?
0566デフォルトの名無しさん
2012/01/15(日) 20:12:36.600567デフォルトの名無しさん
2012/01/16(月) 02:25:31.21それとも周波数成分ごとに分解?
楽器ごとなら非常に難しい
NMFとかで調べてみるといいかも
周波数成分ごとならいらない音を
フィルタで除去すればいい
ノイズだけ除去ならスペクトル減算法とかある
0568550
2012/01/17(火) 07:37:18.39周期=レート/周波数;
c=2*円周率/周期;
e=cos(c);
f=sin(c)/(2*精度);
無限インパルス応答(配列,1,-2*e,1,1+f,-2*e,1-f);
function 無限インパルス応答(配列,b0,b1,b2,a0,a1,a2){
var x0,x1,x2,y0,y1,y2,i;
var len=配列の長さ;
x0=x1=x2=y0=y1=y2=0;
for(i=0;i<len;i++){
x2=x1;x1=x0;x0=配列[i];
y2=y1;y1=y0;
y0= (b0*x0 + b1*x1 + b2*x2 - a1*y1 - a2*y2)/a0;
配列[i]=y0;
}
}
引数を変えるといろんなフィルタができるよ
ググればでるよ
0569デフォルトの名無しさん
2012/01/17(火) 21:04:46.81見るからに双二次フィルタだけど、3タップって言うの?
0570デフォルトの名無しさん
2012/01/18(水) 08:15:55.820571デフォルトの名無しさん
2012/01/18(水) 09:04:17.47ほんとうですか?
0572片山博文MZ ◆0lBZNi.Q7evd
2012/01/18(水) 11:07:22.22可変閾値、フーリエ変換しかり。ゆえに音声の学習が終わったら画像処理も
勉強しなされ。ヒューリスティックな音声解析のソフトが少ないので諸君の
研究テーマにしてはいかがだろうか?
0573デフォルトの名無しさん
2012/01/18(水) 19:50:05.75DAC内蔵のオーバーサンプリングとかのデジタルフィルタがあれば
そこでクリップする可能性はあるね
でもかなり高い周波数で相当変なことしないと大きく飛び出ることはないよ
普通は気にすること無いと思う
0574デフォルトの名無しさん
2012/01/21(土) 12:19:34.10買ってこい
http://www.roland.co.jp/products/jp/R-MIX/
ステマが済んだら能書き垂れてねえでどっか行け
0575デフォルトの名無しさん
2012/01/22(日) 10:12:25.78ttp://jp.techcrunch.com/archives/20120118improvement-on-age-old-mathematical-principle-could-yield-improved-images-video/
リンク先の論文読んだけど俺にはさっぱり理解できなかった
数学詳しい人ならこれ見ながらC++でアルゴリズム書けるのかと思うと羨ましい
0576デフォルトの名無しさん
2012/01/22(日) 12:57:04.470577デフォルトの名無しさん
2012/01/22(日) 14:57:41.5010乗とかなら意味あるけど。
0578デフォルトの名無しさん
2012/02/03(金) 07:42:45.580579デフォルトの名無しさん
2012/02/04(土) 23:45:34.27>>568みたいなのがもっと増えて欲しい
0580デフォルトの名無しさん
2012/02/07(火) 20:11:07.86>>579
自分のこと棚に上げるなよw
知らないなら質問すれば?
0581デフォルトの名無しさん
2012/02/07(火) 20:47:19.720582デフォルトの名無しさん
2012/02/07(火) 22:59:43.080583デフォルトの名無しさん
2012/02/12(日) 04:09:56.35実装が欲しいだけなら某cookbookでも参照しろよ
音出したけりゃ今のところ基本波形はBandlimited Synthesisでファイナルアンサーだし
あれ、語ることもう無くね?
0584デフォルトの名無しさん
2012/02/17(金) 23:31:19.531または0のDouble値をFIRのLPFに渡してDouble値を貰う。
64サンプル毎にもらったDouble値を出力する
って事であってますか?
0585デフォルトの名無しさん
2012/02/18(土) 00:32:40.38スレ内くらいは検索しようや >>446-
0586デフォルトの名無しさん
2012/02/18(土) 00:51:21.08>446の流れは読んだつもりですが、わかりませんでした。
スミマセン。
0587デフォルトの名無しさん
2012/02/18(土) 01:10:49.251bit のデータは一つ前の値に対して-1なのか、 +1なのかを記録してるのは理解してる?
pcmは今の値が幾つなのかを記録してる
0588デフォルトの名無しさん
2012/02/18(土) 09:22:15.20同一人物としか思えない
0589デフォルトの名無しさん
2012/02/18(土) 11:19:53.63ありがとうございます。
では、1または-1の値をFIR-LPFフィルタに渡すということでよいのですね?
その結果の値がマルチビットになるのでしょうか?(もしそうだとすると1bitの入力なのになぜマルチビットが返ってくるのかわかりませんが)
そうであれば、1/64に間引きして出力すると44100HzのPCMが出来るという事になりますか?
>>588
ソースコードへのアクセスの仕方がわかりませんでした。
0590デフォルトの名無しさん
2012/02/18(土) 11:53:00.600591デフォルトの名無しさん
2012/02/18(土) 16:03:07.13理解まったくできてないようだね
数値とグラフを書いてみなよ
可視化するとわかりやすいよ
0592デフォルトの名無しさん
2012/02/18(土) 16:56:42.17>数値とグラフを書いてみなよ
何の数値とグラフを書いたらよいのでしょう?
下記の処理はできるようになりました。
1.PCMデータ入力
2.FIR-LPF
3.PCMデータ出力
1ビットずつデータを取り出す事はできます。
1と-1の連続したデータを次にどうすべきなのでしょうか?
0593デフォルトの名無しさん
2012/02/18(土) 17:09:20.78x-=1
0594デフォルトの名無しさん
2012/02/18(土) 17:43:25.86値を加算して累積させていくということですね。
ここまではOKです。
思いつきで、1bitの入力データをshort型の配列に加算しながら格納しました。
44100HzのPCMにするため、単純に1/64に間引き(64サンプルごとに値を出力)してWAVファイルとして保存しました。
音として確認できるものはできたのですが低音のみで、4kHz以上の周波数成分は出力されていませんでした。
1bitの累積値の配列は何型に保存すべきでしょうか?
Long,Integer,Short/Single(float),Double
次にこの累積値の配列をどうすべきでしょうか?
ご指導いただけると助かります。
0595デフォルトの名無しさん
2012/02/18(土) 20:57:14.76FIRの係数は
ttp://achapi2718.blogspot.com/2001/04/fir-javascript.html
を使用して、作成しました。
FIR-LPFのタップ数:513
サンプリング周波数:2822400
カットオフ周波数は22050
音がはっきり聞こえるようになってきました。しかし、盛大に「シャー」というノイズがのっています。
係数作成時の指定が悪いのでしょうか?
どなたかご助言をいただけるとありがたいのですが。
0596デフォルトの名無しさん
2012/02/18(土) 23:21:30.31まず1bitデータがちゃんと作れてないと思う
フィルターは確か3TapのIIRだった記憶がある
sonyの論文に載っているが、何処にあるか覚えてない
0597デフォルトの名無しさん
2012/02/18(土) 23:28:36.86大抵の1bit audioはすべて40k以上のノイズ吐いてます。
再生できるスピーカー少ないし、聞こえないし、測定も難しいから気にするな
0598デフォルトの名無しさん
2012/02/19(日) 01:04:10.64ありがとうございます。
FIR-LPFをひたすら追いかけていましたが、IIRなんですね。
まずはIIRの勉強をする事にします。
>まず1bitデータがちゃんと作れてないと思う
フィルタをかける前の1bitデータに問題があるという事でしょうか?
もう一度見なおして見ることにします。
0599デフォルトの名無しさん
2012/02/19(日) 01:16:27.49わー! できましたー!
>まず1bitデータがちゃんと作れてないと思う
LSBファーストの意味を間違えてたみたいです。逆に配列したらノイズのない22kHzまでノイズのないデータができました。
ありがとうございます。
これから色々と音質を調整したいと思います。
本当にありがとう。色々とアドバイスをいただいた他の皆さんにも感謝です。
0600デフォルトの名無しさん
2012/04/22(日) 00:31:06.78DTMで使う簡易daw的なソフトを作ろうと思っているのですが、
vsthost,midiシーケンサーの2つの機能は最低限内包したいと思っています。
そのソフト内で
midiシーケンサー → vsthost
のような流れでmidi信号の通信が発生すると思うのですが、
このmidi信号の通信を行うために仮想midiケーブル的なプログラムを書かなければいけないのかな?
と思い当たりました。
参考になりそうなソフトはないかと色々調べてみたところ
midiyokeなど他にも色々見つかったのですが
例えば
http://www.johnrofrano.com/tutorials/virtualmidirouter.htm
ここのソフトだと、インストールする際、レジストリへの追加が発生している(ハードウェアの追加の部分で)
ようです。
しかし、欲しいのはあくまで自作プログラム内でのmidi通信用の仮想バスなので、
自分の場合はわざわざレジストリに登録するようなソフトにしなくてもよいのではと思ったのですが
自信がありません。(windows multimedia library とかの絡みでレジストリ登録は必須なのでしょうか)
このあたりのことについて教えていただけないでしょうか。
また、仮想midiケーブルを開発するにあたって参考になるページなどありましたら教えていただけると幸いです。
よろしくお願いします。
0601デフォルトの名無しさん
2012/04/22(日) 18:42:20.78まずDAW内でMIDI"信号"そのもののやり取りは発生しない
MIDIイベント構造体でやりとりすればいいだけ(正確にはVstEvents*)
初っ端からそんなんで大丈夫か?
0602600
2012/04/23(月) 01:12:24.70VstEvents*について調べてみました。
http://www39.atwiki.jp/vst_prog/m/pages/77.html?guid=on
ここのページを見ると、VstEvents*を引数に取る関数として
processEvents()
が挙げられており、その説明文に
「MIDIメッセージをホストアプリケーションから受け取る関数」
とあります。
この説明文を見て、これは
VSTホストアプリケーションからVSTiアプリケーションに
MIDIメッセージ(VstEvents)が送られた際、VSTiアプリケーション側が
MIDIメッセージを取得するための関数、と理解しました。
0603600
2012/04/23(月) 01:12:44.04「MIDIメッセージを送信するタイミングを時間軸で管理して適切に送信する」
機能も兼ね備えているもの、なのでしょうか。
自分のイメージでは
SMFファイル → Midiシーケンサー → VSTホスト → VSTi
load midimsg送信 VstEvents送信
という感じで、VSTホストとVSTiとの通信する際VstEventが使われるが、
MidiシーケンサーとVSTホストが通信する際には実際のMIDIメッセージがやりとり
されているのではないかと思ったのです。
このような感じで、自分が作りたいのはVSTホストなので
midi通信用のプログラムが必要なのでは、と思ったのですが、
この構図は間違っているのでしょうか。
VSTホスト自体がMIDIシーケンサーの役割も果たしているのでしょうか?
ご教示いただけると幸いです。
0604デフォルトの名無しさん
2012/04/23(月) 01:18:46.45SMFファイル → Midiシーケンサー → VSTホスト → VSTi
load midimsg送信 VstEvents送信
わかりづらくてすみません。
上記のような感じです。
また、
http://www.hermannseib.com/english/vsthost.htm
ここで配布されているvsthostはmidiinに入力されるmidiメッセージを
解析してvstiを鳴らすようになっているようですが、
自分が作ろうとしているのは、
1つのアプリケーションの中でSMFファイルのロードからして、
vstiを鳴らすまでやることができるようなものをイメージしています。
よろしくお願いいたします。
0605デフォルトの名無しさん
2012/04/23(月) 03:00:42.450606600
2012/04/23(月) 10:41:56.25MIDIシーケンサーとVSTHostの通信の際には
生のMIDIメッセージのやりとりが必要なのではないか?という疑問です。
ただ、VSTSDKの中にMIDIシーケンサー用のプログラムが用意されていて、
それをVSTHostの中から呼べるようになっていたりするなら、
わざわざMIDIシーケンサーや仮想MIDIケーブルを自前で用意する必要もない気がするのですが
そのあたりのことがわからないので教えていただきたいのです。
自分が作りたいものはSMFをロードして音源としてVSTiを使用して音楽を再生する
簡易DAW的なものです。
0607デフォルトの名無しさん
2012/04/23(月) 19:05:51.57途方も無い勘違いをしているのでどこから正していけばいいのか・・・というより
>>601で解決しなかったので驚愕ってとこ
VSTホストは自分で実装するんだよな?
アプリのvsthostをそのまま使うわけじゃないんだよな?
0608デフォルトの名無しさん
2012/04/24(火) 00:28:40.14midiシーケンサーはmidiイベントを出力するもの。
midiシーケンサーでvstiを鳴らすにはmidiイベントをvsteventsに変換しないとvsthostが受け付けない
vstiの音はデジタル信号なのでシーケンサーとは時間(クロック)同期しないといけない。デジタルだから。
midiでvtsiを鳴らすだけならvsti対応のmidi playerであってdawではない。簡易dawはmidiは扱わない。オーディオのみ。
仮想結線するのと、ソフト内部でmidi信号をvsteventsに変換してシーケンスするのは広義では同等。しかし、これを仮想Midiケーブルなんて発想には普通はならない。
vsti とsmf以外はすべて自前で用意しないと駄目。midi playerとvsthostが内包したソフトを作るのでしょ?その二つが内包しているのに、それらを繋ぐ部分(仮想ケーブル?)を用意するってどのような発想?
0609デフォルトの名無しさん
2012/04/24(火) 04:18:17.90相手は超初心者なんだからもう少し優しく教えてあげないと。
さもなくばスルーでOK
0610デフォルトの名無しさん
2012/04/24(火) 04:38:42.26シーケンスファイルも通信データもケーブルも全部MIDI付くから
まずMIDIの解説サイト熟読してMIDIメッセージとsmfファイルフォーマット理解しないと無理じゃね
0611デフォルトの名無しさん
2012/04/24(火) 10:51:49.450612600
2012/04/24(火) 12:00:28.18>>607
>アプリのvsthostをそのまま使うわけじゃないんだよな?
参考になりそうなところがたくさんあるみたいなのでソース見て色々調べていますが、
全部そのまま流用という感じではないです。
>>608
>midiでvtsiを鳴らすだけならvsti対応のmidi playerであってdawではない。簡易dawはmidiは扱わない。オーディオのみ。
なるほど。
>仮想結線するのと、ソフト内部でmidi信号をvsteventsに変換してシーケンスするのは広義では同等。
これもわかりやすい説明ありがとうございます。
つまりmidiシーケンサー(≒midiプレイヤー?)側でmidiメッセージをVstEventsに変換して、
仮想midiケーブルなんてものを通さずに直接Vstホスト側に渡してしまえばいいという理解で合っていますでしょうか?
0613600
2012/04/24(火) 12:01:39.86dominoとVstHostを連携させる時にMidiYokeが必要だったので、仮想midiケーブルに該当するものが必要なのかなと思ったのです。
dominoとVstHostを連携させるときはdominoにはvst関連の機能はないようなので、
domino側で生のmidiメッセージを出力してVstHost側でmidiメッセージからVstEventsに変換しているという感じでしょうか。
自分で開発する際の参考にしたいのですが、midiメッセージをVstHostに送る前にVstEventsに変換しても、
VstHostに送ってから変換してもどちらでも大丈夫なのでしょうか(単純に設計による感じな気もします)
0614デフォルトの名無しさん
2012/04/24(火) 13:01:16.150615デフォルトの名無しさん
2012/04/24(火) 14:41:07.21一つのソフトならどこで変換しても同じじゃないの?
ソースのここからはvsthostって分けるのは勝手。何を心配しているのかわからない。素人プログラミングならソースを書いていろいろ試した方が、ここで調べるよりためになるよ。
仮想ケーブルはイレギュラーなものだから忘れた方がいいよ。きみの作りたいものは普通のソフトみたいだから
0616デフォルトの名無しさん
2012/04/24(火) 18:49:46.20そうすりゃ今までバカな質問してたってことがはっきりするから
勝手に仕様を想像して、その想像を元に質問してるから(俺らの)話が通じないんだよ
はっきり言って埒があかねえ
0617デフォルトの名無しさん
2012/04/24(火) 18:50:03.150618デフォルトの名無しさん
2012/04/24(火) 19:02:02.09その程度の知識で自慢したいわけ?
0619デフォルトの名無しさん
2012/04/24(火) 20:15:57.17わざとすっとぼけた事言っているようにしかみえんw
自演じゃなかったら、からかわれてるんじゃねーの?
0620デフォルトの名無しさん
2012/04/24(火) 23:09:12.670621デフォルトの名無しさん
2012/04/27(金) 03:14:41.65いえいえ
0622600
2012/05/03(木) 00:40:53.79>vsthostとmidi playerは別のソフトとして作るの?
いえ、同じソフトとして作ろうとしています。
ですので、仮想MIDIケーブルのようなものは全く必要なく、
VstEventsをmidiシーケンサー側で時間管理して正しいタイミングで
VstHostに送ればよいだけですね。
色々とよく分からない勘違いをしていたようで失礼しました。
>まずVST SDKの仕様書を読めよ
vstの仕様書とは
http://www.gersic.com/vstsdk/
これでしょうか。
いろいろ読んで勉強してみることにします。
アドバイスありがとうございます。
また何か質問させていただくことがあるかもしれないですが
よろしくお願いします。
0623デフォルトの名無しさん
2012/05/07(月) 12:43:46.090624デフォルトの名無しさん
2012/05/15(火) 21:51:42.68音の強さをデシベル表記で騒音データベースに記録し続けるようなシステムを
開発しようと考えています。
そこで疑問なのが、ライン入力とデシベルの換算部分です。
ソフトで取り込んだPCM波形強さはマイクの感度やオーディオボードのADC、
またWindowsでしたらボリュームコントロールなど
様々な個所で音量調整されます。
正確にデシベル数を入力したい場合に何か良い方法はないでしょうか?
0625デフォルトの名無しさん
2012/05/15(火) 22:04:23.33測定器なんてそんなもん。
0626デフォルトの名無しさん
2012/05/15(火) 22:11:59.12そうすると正確に指定したデシベルの騒音だせる機械が必要になるのかな
売ってるのか不明だけど。
0627デフォルトの名無しさん
2012/05/15(火) 22:27:28.060628デフォルトの名無しさん
2012/05/15(火) 23:48:10.74http://www.onosokki.co.jp/HP-WK/products/keisoku/soundvib/sc3100a_2120a.html
マイクサイズが1/2インチか1/4インチじゃないとダメだけどね。
ピストンフォン買うと気圧計もついてくる。気圧変動も考慮して自分で調整。
JIS規格によると結局は比較校正になる。ピストンフォンはマイクが嵌らないと意味ないので、大抵は校正された騒音計の値に合うよう調整する。小数点以下一桁がなんとなく合っていればいいと諦めるのが大事。
0629デフォルトの名無しさん
2012/08/27(月) 23:45:56.000630デフォルトの名無しさん
2012/08/28(火) 00:06:39.700631デフォルトの名無しさん
2012/08/28(火) 02:20:47.160632デフォルトの名無しさん
2012/09/04(火) 00:28:56.20調べても出てこないんだよ
0633デフォルトの名無しさん
2012/09/04(火) 00:29:38.36それ本格的じゃないだろう
0634デフォルトの名無しさん
2012/09/04(火) 09:02:58.18調べ方が足りないなー。
古典的だけど、まずはGTTMあたりから勉強してみたらどう?
0635デフォルトの名無しさん
2012/09/14(金) 08:33:57.660636デフォルトの名無しさん
2012/09/22(土) 03:50:40.32それなに?
0637デフォルトの名無しさん
2012/09/22(土) 21:32:00.10Lerdahl and Jackendoff : A Generative Theory of Tonal Music. MIT Press(1983)
説明
ttp://www.asahi-net.or.jp/~NM7Y-TKUC/4-61.htm
動いてるのがあるところ
ttp://music.iit.tsukuba.ac.jp/hamanaka/index_j.html
こんな感じですか、わかりません><
0638デフォルトの名無しさん
2012/09/24(月) 04:18:22.770639デフォルトの名無しさん
2012/09/24(月) 04:42:46.190640デフォルトの名無しさん
2012/09/24(月) 13:23:10.47http://www.coronasha.co.jp/np/isbn/9784339011258/
0641デフォルトの名無しさん
2012/09/27(木) 14:37:26.48が揃っているC++のライブラリってありますでしょうか?
Synthesis Toolkitとか調べてみてSMFをloadするクラスは見つけたのですが、
上記のような機能を有したクラスは見つかりませんでした。
ご存知の方いらっしゃったら教えていただけると嬉しいです。
0642デフォルトの名無しさん
2012/09/27(木) 19:12:06.99なかなか「これは」というものに出会わないね。
MIDI APIは、オーディオに比べ自由度が高すぎるのが原因だろうね。
結局、シーケンサーを作っている人は、自分用のMIDIライブラリを書いていると思う。
0643641
2012/09/27(木) 21:09:32.94なるほどです。
では自作する場合について試行錯誤してみたのですが、
以下2パターンの方式を考えました。
1. 読み込んだSMFデータからすべてのトラック内のmidiイベントを
シーケンシャルに並べ直し、midiイベントごとに再計算されたデルタタイムと
共にデータを格納された配列のようなものを作り、
whileループ内でsendMidiMessage()とsleep(deltatime) を繰り返す
2. 読み込んだSMFファイルからトラックごとにスレッドを生成し、
そのそれぞれの中でsendMidiMessage()とsleep(deltatime)を繰り返す
0644641
2012/09/27(木) 21:10:43.24この実装方式だと途中再生やシークの実装ができないような気がしてきました。
1の方だと途中再生もシークも可能だと思うのですが、
>すべてのトラック内のmidiイベントをシーケンシャルに並べ直し、
>midiイベントごとに再計算されたデルタタイムと共にデータを格納された配列のようなものを作り、
この部分の実装に結構手間がかかるのでは・・と危惧しています。
1の方式で正解なのでしょうか。
>すべてのトラック内のmidiイベントをシーケンシャルに並べ直し、
>midiイベントごとに再計算されたデルタタイムと共にデータを格納された配列のようなものを作り、共にデータを格納された配列のようなものを作り、
この部分を行なってくれるライブラリのようなものがすでにあればよいなと思うのですが・・
アドバイス頂けると嬉しいです。
0645デフォルトの名無しさん
2012/09/27(木) 21:27:53.30とりあえずSMFの解析結果をダンプしたり、実時間で少しずつイベントを処理していくだけような
簡単なプログラムから始めたほうが理解が進むんじゃないかと。
ちなみに1の手法として書かれている配列って、
もしかしてtick単位で展開された全演奏データを並べた配列をイメージしてる?
短い曲ならまだしも、分解能が大きかったり演奏時間が長かったりしたら
配列の要素数が爆発しそうな予感がする。間違ってたらゴメン。
0646デフォルトの名無しさん
2012/09/27(木) 21:38:41.41tick単位で展開された全演奏データ、の意味するところがよくわからなかったのですが、
全てのトラックの全演奏データの配列で、
配列の要素は1つのmidiメッセージとそのデルタタイムを
格納した構造体をイメージしてました。
つまり全トラックに含まれているMIDIメッセージの数が
配列の要素数と同じになる感じです。
こうして一元管理しておかないと途中再生やシークができないと思ったんですが、
イベントごとのタイムを最初から全部計算しておけばいいような気もしてきました。
デルタタイム分スリープさせるという考え方は合ってはいるのでしょうか。
0647デフォルトの名無しさん
2012/09/28(金) 01:30:15.68・各トラックに処理すべきメッセージがあれば必要なだけ処理しポインタを進める
・1msecのスリープ(事前にtimeBeginPeriod(1)必須)
・全てのトラックがEOTにたどり着くまでループ
デルタタイムでスリープ再生すると、恐らく絶対時間が合わなくなる
あとはシークも盛り込むのであればノートon/offだけ無視して時間進められるようにするか、
擬似的に状態保持するとか、多少考える必要がある
あと厄介だったのは曲中のテンポチェンジかな
時間経過をデルタタイム換算で処理していくなら問題ないけど、
事前にデルタタイムを実時間に変換するなら注意
0648デフォルトの名無しさん
2012/09/28(金) 09:39:14.850649デフォルトの名無しさん
2012/09/28(金) 09:40:18.360650デフォルトの名無しさん
2012/09/28(金) 11:01:27.45後半変なこと書いて申し訳ない。
ともかく言いたかったのは>>647でも書かれてるように
デルタタイムのような相対時間をわざわざ絶対時間に換算しなくても
処理できるんじゃないかな、ってことです。
>>647
巻き戻しできるプレイヤーを作ったことがないので想像ですが、
通常のイベント処理時は状態変化の履歴を蓄積していって、
巻き戻し時はその履歴をさかのぼって処理しなおしていく感じで
過去の状態を再現する感じなんでしょうか?
テキストエディタのUNDOバッファや、各種アプリの操作履歴みたいな感じで。
0651デフォルトの名無しさん
2012/09/28(金) 11:40:24.45・各種リセットメッセージ
・先頭からシーク位置までのノートon/offメッセージ以外の全てを送信
ってやってた
バンクやプログラム、その他の全ての状態を一回通読して必要最低限だけ送るってのがスマートではあるけど、
実機相手だと上手く動作しないmidがあったので、当時上記実装でお茶を濁した
まぁそのへんはmidファイルや再生機器次第かと
0652デフォルトの名無しさん
2012/09/28(金) 12:41:55.55なるほど、ありがとうございます。
>>650を書いた時点ではプレイヤー側が全状況を把握して、
巻き戻しで状況を遡って再現していけばいいかなと思ってましたが、
現在の再生位置に無関係な任意の位置へのシーク、と考えれば
頭からの再生し直す方が実装も一つにできますし、素直な方法だと思います。
0653虫頭
2012/09/28(金) 16:29:17.480654646
2012/09/30(日) 16:10:22.63かなり参考になりました。
とりあえず再生用スレッドを用意する方式で実装し始めてみたいと思います。
また何かわからないことが出ましたら質問させていただきたいと思っていますので
お答えいただけると幸いです。
0655デフォルトの名無しさん
2012/10/20(土) 13:29:20.39Windows で OpenAL を使いたいのですが、
最近、OpenAL11CoreSDK を公式から落とそうとしても、500 internal server error が出て落とせません。
何か原因、もしくはミラーサーバなどご存知の方はいないでしょうか?
0656デフォルトの名無しさん
2012/10/24(水) 10:31:52.20ブラウザ変えてみては
0657デフォルトの名無しさん
2012/10/25(木) 22:07:25.40いただいたアドバイス等に従いまして、TSE3 というMIDIシーケンサーライブラリを見つけ、
Windows XP 上で SMFをロードして内蔵Midi音源にmidiメッセージを飛ばして
音を鳴らすところまでできたのですが問題も発生しており、
また質問させていただきに来ました。
0658657
2012/10/25(木) 22:13:22.31http://ux.getuploader.com/sience1_20/download/234/20121025+210212.m4a
それっぽいものは鳴っているのですが、ブツブツ切れてしまい全く正常に再生できていません。
0659デフォルトの名無しさん
2012/10/25(木) 22:17:18.08ノートオフメッセージを飛ばす前にプログラムが終了しているからなのかな?
と見当を付けています。が、であれば途中が切れているのはなんなのだろうと・・
0660デフォルトの名無しさん
2012/10/25(木) 22:51:38.89あとはランニングステータスの処理ミスで送信チャンネルがおかしくなってるとか
音は鳴ってるんだし、フルのSMFだとデバッグし辛いだろうからドレミの3音だけ鳴らすような単純なSMF作ってトレース実行してみては?
0661657
2012/10/27(土) 20:34:00.78なるほどその方法でトレースしてみます。
ちなみにソースコード的にはざっくりと以下のような感じです
timeBeginPeriod(1);
do
{
transport->play(smf, startClock); // TSE3ライブラリ使用
transport->poll(); // TSE3ライブラリ使用
Sleep(100);
} while (true);
timeEndPeriod(1);
0662デフォルトの名無しさん
2012/10/27(土) 23:17:50.85transport->play()が無限ループの内側にあるのは書き間違い?
TSE3 0.3.1のサンプルを見ると外側にあるけど。
0663デフォルトの名無しさん
2012/10/28(日) 17:27:11.02transport.status関数をなぜ使わない?
0664657
2012/10/29(月) 02:04:42.78サンプルコードまで見ていただいたようでして、本当にありがとうございます。
その後調査を進め少し進展があったのですが、また詰まってしまっています・・。
何度も恐縮なのですが、よろしければまたアドバイスをいただけますと幸いです。
長文になってしまうのでpastebinに文を貼り付けました。
ご覧頂けると嬉しいです。
http://pastebin.com/FdWfrqUM
0665デフォルトの名無しさん
2012/10/29(月) 03:11:24.28ttp://tse3.sourceforge.net/doc/Article.html
ここの Examples of using TSE3 に再生方法書かれてるから、まず永久ループをなんとかしろ
それと startClock の値は?
transport.play の第二引数は再生開始位置だから
src/examples/midifile/midifile.cpp(74行)見る限りじゃ整数型で 0 渡せばいいはず
ライブラリソースに手加えてるなら作業前に全部元に戻す事
0666デフォルトの名無しさん
2012/10/29(月) 08:44:16.86midifile.cppの中身もシンプルだから悩むところは少ないんじゃないかな。
0667デフォルトの名無しさん
2012/11/11(日) 05:31:58.52ノイズは周波数成分の高いところに出てきそうなので一見いらないように思えるのですが・・・
0668デフォルトの名無しさん
2012/11/11(日) 13:33:32.01そして窓無しで解析するなら正弦波はその周期ぴったりで抜き出さないと正確にフーリエれない
0669デフォルトの名無しさん
2012/11/13(火) 11:47:06.67例えばナイキスト周波数ギリギリのサイン波とよばれるものなんか矩形波だし。
0670デフォルトの名無しさん
2012/11/13(火) 12:05:12.320671デフォルトの名無しさん
2012/11/13(火) 12:09:31.560672デフォルトの名無しさん
2012/11/15(木) 12:39:26.850673657
2012/11/16(金) 12:30:57.99>>666
レスありがとうございます。
お礼が遅れましたすみません。
その後調査を続け、なんとかSMFを正常に再生させるところまで行きました!
tse3/の中に plt/Win32.cpp というファイルがありまして、
win32api用の実装が途中までしかされていないのが原因だったようです。
timeGetTime関数等を使って調整することでうまく再生されるようになりました。
また分からないことが出てきたら質問させていただきますので宜しくお願いします。
0674デフォルトの名無しさん
2012/11/16(金) 13:15:08.18へー
0675657
2012/11/16(金) 21:00:35.60「このモジュールは途中までしか実装してないので適当に微調整して使ってね!」
的なことが書いてあったのでした笑
0676デフォルトの名無しさん
2012/11/17(土) 10:31:05.78スペクトル→ケプストラム変換の逆変換には窓掛け要らないよ。
0677デフォルトの名無しさん
2012/11/19(月) 16:05:45.464096サンプルでLRそれぞれFFTしたあと、
各周波数の振幅と位相を調べて、
位相と振幅が近いもの(定位が真ん中に近いもの)
をボーカルとみなして、実数部虚数部を0にしてから
再度iFFTかけてPCMに変換するという処理をかいたんだけど
なんか、ボーカルが半分くらいの音量になってるけど消えないんだ。
なぜかわからないので、教えていただけますか?
0678デフォルトの名無しさん
2012/11/20(火) 03:13:09.35左右の引き算とかで。モノラルになっちゃうけど
0679デフォルトの名無しさん
2012/11/20(火) 07:54:31.08BestPracticeってのがあるんだけど
ステレオ保ったまま周波数域で間引くなら
それ参考になるよ
0680デフォルトの名無しさん
2012/11/20(火) 08:30:41.38素晴らしいです。ありがとう。
0681デフォルトの名無しさん
2012/11/20(火) 08:31:42.81そう、モノラルになるのが嫌なんです
0682デフォルトの名無しさん
2012/11/20(火) 15:39:47.03BestPracticeもKaraokeProcessで、
LRに逆位相RLを足しこんで作ってますね。
LPF/HPFとPAN計算で工夫はしていますが・・・
FFTでのvocal cancelのサンプルプログラム無いですかねぇ
0683デフォルトの名無しさん
2012/11/20(火) 17:34:49.19しかもFFT解析結果はパルスではなくなだらかに周波数成分が分散する
なので、音声だけ半分くらいカット出来てるなら、0fillした帯域の周辺もある程度カットしてやればいんじゃね?
0684デフォルトの名無しさん
2012/11/21(水) 05:12:21.68が、あんまり重くないしFIRIIRかそこらへんか上記のやり方でやってるんだろうな
ステレオ維持できてるし。幅って設定項目あるからちょっと余計に削るといいのかもね
0685デフォルトの名無しさん
2012/11/21(水) 21:32:40.99ヒント:内積
0686デフォルトの名無しさん
2012/12/09(日) 21:22:29.37位相を比較する時に、−πと+πは近いと判定してますか?
位相の引き算は、複素数の割り算でできるので、
それで判定するのが楽だと思います
同時に振幅の比較もできますしね
見当ちがいのことを言っていたらごめんなさい
0687デフォルトの名無しさん
2012/12/09(日) 22:24:36.94ありがとう
0688デフォルトの名無しさん
2012/12/10(月) 10:39:15.81激安で抜ける
○1000円〜
「新宿 アイアイ 」
○1500円〜
「西川口 マーガレット 」
○2000円〜
「新宿・錦糸町 あんぷり亭 」
「新宿 ダブルエロチカ 」
0689デフォルトの名無しさん
2012/12/15(土) 01:29:59.43いま、synth1の音を鳴らすことができるVstHost的なアプリを開発したいと考えているのですが、
http://www.geocities.jp/daichi1969/vstidev/index.html
http://www.geocities.jp/daichi1969/softsynth/
ここのページを見るとどうもsynth1はVst SDK 2.0 という
かなり古いバージョンのsdkを使っているようでして、
スタインバーグの公式ページにいってもSDK ver2.3とver2.4しか見当たらないのです。
synth1を鳴らそうと思ったら sdk 2.0 が必要、という解釈は合っていますでしょうか?
またsdk 2.0 を今手に入れようとしたらどうすればよいでしょうか・・
持っている人を探すしかないのでしょうか。
教えていただけますと嬉しいです。
0690デフォルトの名無しさん
2012/12/17(月) 21:28:44.53であとから接続したusbオーディオインターフェース
認識できるのですがwindows7だと認識できなくて
オンボのミュージックデバイスしか認識できません。
7でどうにか認識させてミキサーいじる方法無いでしょうか?
0691デフォルトの名無しさん
2012/12/17(月) 21:55:24.540692デフォルトの名無しさん
2012/12/18(火) 10:41:59.180693デフォルトの名無しさん
2012/12/18(火) 10:43:27.740694657
2012/12/26(水) 18:51:57.20またお聞きしたいのですが、
このページの
http://eternalwindows.jp/winmm/wave/wave03.html
for (i = 0; i < dwBufferCount; i++) {
wh[i].lpData = (LPSTR)lpWaveData;
wh[i].dwBufferLength = dwDataSize;
wh[i].dwFlags = 0;
waveOutPrepareHeader(hwo, &wh[i], sizeof(WAVEHDR));
waveOutWrite(hwo, &wh[i], sizeof(WAVEHDR));
}
の部分を実装してみたのですが、
これを実行させてみるとwaveOutWriteの実行のタイミングで(おそらく)
毎回「プツッ」というノイズが発生してしまうんですが、
これってどのように回避すればよいでしょうか。
osはwindows xpと7です。
どなたか宜しくお願いしますm(_ _)m
0695デフォルトの名無しさん
2012/12/26(水) 21:21:08.15よくわかんねーけど、forの手前にSleep(500);入れてみるとか
あと、ダブルバッファに同じポインタ突っ込んでるようにみえるけど、合ってんのコレ?
0696デフォルトの名無しさん
2012/12/27(木) 01:23:11.78「プツッ」は再生したWAVEデータの最初と最後の振幅値に大きな差があるんじゃない?
lpWaveDataのデータの前半と後半をそっくりmemcpyとかで交換([A][B][C][D]→[C][D][A][B]に)
して、[D]と[A]の間でプツッがでるならこれが原因かと。
0697デフォルトの名無しさん
2012/12/29(土) 09:55:30.950698デフォルトの名無しさん
2013/01/17(木) 18:00:33.82お礼が漏れておりました。。失礼しました。
>「プツッ」は再生したWAVEデータの最初と最後の振幅値に大きな差があるんじゃない?
まさにこの通りでした。
プログラムのバグで、波形がなめらかな曲線を描いてなかったようです。
ありがとうございましたm(_ _)m
0699デフォルトの名無しさん
2013/01/18(金) 22:58:28.81律儀に報告おっつ乙!
0700デフォルトの名無しさん
2013/03/19(火) 23:13:24.210701デフォルトの名無しさん
2013/03/20(水) 02:16:02.34Abletonでも素直に使っとけよ、良いもの素直に認められない偏屈が世界を変えれると思う?
0702デフォルトの名無しさん
2013/03/20(水) 05:03:08.15ttp://www.youtube.com/watch?v=WOrsP767ER0
0704デフォルトの名無しさん
2013/03/21(木) 05:30:23.680705片山博文MZパンク ◆0lBZNi.Q7evd
2013/03/30(土) 18:14:11.020706デフォルトの名無しさん
2013/03/31(日) 03:54:40.740707デフォルトの名無しさん
2013/04/07(日) 02:10:30.00C言語でしローパス作ってください
inに入力
outが出力
sanprusがサンプル数
cutがローパスの周波数です。
以上
0708デフォルトの名無しさん
2013/04/07(日) 02:28:16.860709デフォルトの名無しさん
2013/04/07(日) 03:29:57.50ww
ローマ人じゃね?w
0710デフォルトの名無しさん
2013/04/07(日) 03:56:51.89その条件だけでは作れないわな
0711デフォルトの名無しさん
2013/04/07(日) 03:59:08.550712541
2013/04/07(日) 09:35:48.570713デフォルトの名無しさん
2013/04/07(日) 21:25:30.15でも立派にローパスだしな。
あの書き込みでは何をしていいやら。
0714デフォルトの名無しさん
2013/04/08(月) 03:19:29.420715デフォルトの名無しさん
2013/04/08(月) 03:20:04.30ボケ防止ならやれよ老人ども
0716デフォルトの名無しさん
2013/04/08(月) 03:33:15.19ヒント
void lopass(short *in, float *out, long sanprus, float cut){
while (sanprus--)
out[sanprus] = (float)(in[sanprus]+in[sanprus+1])/2;
}
0717デフォルトの名無しさん
2013/04/08(月) 12:03:37.47void lopass(short *in, float *out, long sanprus, float cut)
{
float avg=0.0f;
for(long i=0;i<sanprus;++i){
avg+=(float)(*(in+i)/sanprus);
}
for(long i=0;i<sanprus;++i){
*(out+i)=avg;
}
}
0718デフォルトの名無しさん
2013/04/08(月) 22:19:51.98カットしたい周波数だけ渡されてもサンプリング周波数の指定無いから無理だろ?
って思ってたけど、無視すればよかったのかw
0719デフォルトの名無しさん
2013/04/08(月) 22:34:54.470720デフォルトの名無しさん
2013/04/09(火) 00:38:38.960721デフォルトの名無しさん
2013/04/09(火) 02:44:09.38まぁそんな感じ
0722デフォルトの名無しさん
2013/04/10(水) 00:04:22.37FIRフィルタだとすると
先ずFIRフィルタの係数を逆DFT+窓関数等で求める
そして、その係数を使ってFIRフィルタする
ググれば、C言語で係数を求めるプログラムやFIRフィルタするプログラム
がころがっているよ
0723デフォルトの名無しさん
2013/04/12(金) 22:26:10.04↑寒い奴登場
つーか、お前らの周りにもいるだろ
自称明るい人、自称おもしろい人って奴
結局ソイツらってさあ
流行りの芸人のギャグとか流行りのCMとかをパクってるだけに過ぎないんだよね
ワイルドだろぉ、もそろそろだしね
職場とかクラスの人気者で笑ったことがない
なにがおもしろいんだろ?
テレビの真似してるだけなのに
0724デフォルトの名無しさん
2013/04/13(土) 02:08:40.412. 話すときは、だらだらとしゃべらない
3. 話すときに、怒ったり泣いたりしない
4. わからないことがあったら、すぐに質問する
5. 話を聞くときは、話している人の目を見る
6. 話を聞くときは、他のことをしない
7. 最後まで、きちんと話を聞く
8. 議論が台無しになるようなことを言わない
9. どのような意見であっても、間違いと決めつけない
10. 議論が終わったら、議論の内容の話はしない
0725デフォルトの名無しさん
2013/04/13(土) 06:14:21.24こいつ空気読めてねぇなぁ
0726デフォルトの名無しさん
2013/04/13(土) 13:06:21.970727デフォルトの名無しさん
2013/04/13(土) 13:15:52.69http://kohada.2ch.net/test/read.cgi/pcnews/1365242417/139-141
コンソール研究所は13日、C言語やJavaを使う学生を採用しない方針を固めた。
これは昨今のソフトウェア開発現場において社内研修期間を嫌う企業や官公庁の意向を取り入れたもので、
「 卒業=即戦力 」 が求められる新時代への突入を明確にしたものである。
たいていの面接官は ” 学生時代にどんな部活に所属していましたか? ” などと聞くが、それは時代遅れと
なったようだ。
また、C言語やJavaのスキルを問うものに対しても、「 実務経験がなければ意味がない 」 と言う現場の声も
反映した。
コンソール研究所の開発現場から一人の声を拾ってみた。
(以下ソース参照)
0728デフォルトの名無しさん
2013/04/13(土) 13:25:18.614. わからないことがあったら、すぐに質問する
この二つは矛盾しています
仮に後で質問するとすればメモを取らなければならず
5. 話を聞くときは、話している人の目を見る
6. 話を聞くときは、他のことをしない
ここでまた矛盾が拡大します
10. 議論が終わったら、議論の内容の話はしない
これは何を言ってるのか判らない
0729デフォルトの名無しさん
2013/04/13(土) 19:09:27.58ブラインドで聞こえなくてもそれ含んだ音楽聴けば高音の伸びが違うとか言ってるけど
それがガムラン音楽というどっかの民族の音楽しかないらしいし
0730デフォルトの名無しさん
2013/04/13(土) 19:17:37.480731デフォルトの名無しさん
2013/04/13(土) 21:27:16.680732デフォルトの名無しさん
2013/04/14(日) 00:58:00.13単体で取り出しても認知できないから「聴こえない」というわけでもないようだね奴らの言い分だとね
0733デフォルトの名無しさん
2013/04/14(日) 07:55:09.13人が聞くこと前提の音楽再生用途では不要だよ
高音質LANケーブルとか信じてるキチガイなんて相手してらんねーよ
0734デフォルトの名無しさん
2013/04/14(日) 10:38:04.570735デフォルトの名無しさん
2013/04/14(日) 11:35:24.430736デフォルトの名無しさん
2013/04/14(日) 23:58:19.67しかし生のガムランゴングなら有り得るかもな。
耳には聴こえなくても体に高周波の空気の振動は伝わるわけで。
うんこしたくなるとか。
0737デフォルトの名無しさん
2013/04/15(月) 05:44:20.310738デフォルトの名無しさん
2013/04/15(月) 09:54:33.10でも、サンプリング周波数を高くするのは定位の精度に影響するんじゃないかな。
ステレオ再生の時は、サンプリング周波数が左右の時間差(位相差)の最小単位を決めるわけだからさ。
0739デフォルトの名無しさん
2013/04/15(月) 12:22:56.19そういうけど、シールドしてないLANケーブルが発するノイズは相当なもんだよ
それがアナログ回路に回り込んでオーディオ信号を濁すことは十分にあり得る
0740デフォルトの名無しさん
2013/04/15(月) 12:39:42.47そもそも、音源であるマスターレコード自体がデジタルデータでしかないと言うのに。
0741デフォルトの名無しさん
2013/04/15(月) 13:05:20.89EMCは出さない方法があるなら出さないのが一番
0742デフォルトの名無しさん
2013/04/15(月) 13:06:53.25生 EMI
0743デフォルトの名無しさん
2013/04/15(月) 18:48:29.54生 正
0744デフォルトの名無しさん
2013/04/15(月) 19:20:52.74omi
0745デフォルトの名無しさん
2013/04/15(月) 21:00:28.75ハイサンプリングレートはいいと思うけどね。
だったらマスターそのままよこせよってことで
ハイサンプリングレートデーターになるんだろうね。
0746デフォルトの名無しさん
2013/04/15(月) 23:07:58.14LANケーブルが拾うノイズならまだわかるが、ケーブルがノイズ発するわけねーだろ
そもそもLANからのノイズが耳で解るレベルで乗っちゃう設計じゃ、どんなケーブル使っても同じだよ
0747デフォルトの名無しさん
2013/04/16(火) 01:54:48.300748デフォルトの名無しさん
2013/04/16(火) 14:34:35.50>ケーブルがノイズ発するわけねーだろ
お前がそう思うんならそうなんだろう
お前の頭の中ではな
0749デフォルトの名無しさん
2013/04/16(火) 17:05:30.010750デフォルトの名無しさん
2013/04/16(火) 19:02:40.75鏡に向かって何言ってんの?
0751デフォルトの名無しさん
2013/04/16(火) 22:20:11.99つーか、ノイズ出すほどのケーブルなら、LANのパケットにもノイズ乗るんじゃね?
通信不能なくらい。
0752デフォルトの名無しさん
2013/04/16(火) 23:04:20.33LANはノイズを受ける事についてはある程度は強いよ
差動だから
0753デフォルトの名無しさん
2013/04/17(水) 02:35:41.270754デフォルトの名無しさん
2013/04/17(水) 19:09:38.80女の子がエンジンをかけて後ろから白い煙出てたらたまらん(笑)
昔出会い系で吸わして貰った(笑)
0755デフォルトの名無しさん
2013/04/17(水) 21:33:06.40肺がんで早死にしたいの?
0756デフォルトの名無しさん
2013/04/20(土) 19:04:48.58measure :: songA -> songB -> Float な感じ?
上の人たちに会話に着いていけないぐらいの初心者だけど、頑張りたい。
皆がどのような工程をソフトを作ってるときに辿っているのか分からないけど、DFDなど-> コーディングな感じで行きたいと思う。
出来れば何か道筋みたいなものを教えてもらいたい。
0757デフォルトの名無しさん
2013/04/20(土) 19:11:24.110758デフォルトの名無しさん
2013/04/20(土) 19:58:08.90PCMデータの差分をとる
songA[]={-50,100,20,30,-40};
songB[]={60,100,30,20,50}:
songd = malloc(songbytes);
if(songd){
short v;
for(v=0;v<sizeof(songA);v++)
songd[v] = songA[v]-songB[v];
}
}
0759デフォルトの名無しさん
2013/04/20(土) 20:13:58.38手始めにコード進行を解析するプログラムを考えてみれば?
できるかどうかわからんけどw
0760デフォルトの名無しさん
2013/04/20(土) 20:14:26.28曲のどんな特徴の類似度を計りたいかによるね
0761デフォルトの名無しさん
2013/04/20(土) 22:03:55.06波形の頭を揃えるのも必要になるけど
0762デフォルトの名無しさん
2013/04/20(土) 23:08:00.36キーが違うと似てない曲になったりもする
0763デフォルトの名無しさん
2013/04/21(日) 01:12:17.16プログラミングもう一度勉強します。java?
javaでスペースインベーダーぐらいしかプログラムしてない。
ピアノの楽譜を眺めていて、音符?の配置が似ていたら「曲が似ている」んじゃないかな?の思ったのが始まり。
音の高さより波長の類似性をみた方がいいのかもしれない。
PCMデータの取扱いは
javax.sound.sampledパッケージでいけるのかな?
0764デフォルトの名無しさん
2013/04/21(日) 07:19:24.060765デフォルトの名無しさん
2013/04/21(日) 20:15:05.01おまえはFF3の劣化コピーからやりなおせ
0766デフォルトの名無しさん
2013/04/21(日) 20:27:57.37ファイナルファンダジーしか出でこない。
0767デフォルトの名無しさん
2013/04/21(日) 20:33:05.610768デフォルトの名無しさん
2013/04/21(日) 22:28:35.74効率的にはFFTがいいらしいが、分かりやすさの為にDFTを選んでみる。
何か、源波形や周波数特性、フーリエ逆変換などあるみたいだけど、どれが良いのだろうか?
曲が似てるって思った時って、音階など、振幅や音の高さが似ているとき?
0769デフォルトの名無しさん
2013/04/21(日) 22:44:47.15パターン認識だよ。
FFTの周波数領域や波形を見たところで似てると「感じる」かどうかは判らんだろう。
リズムを比較するのがせいぜいだろうな。
0770デフォルトの名無しさん
2013/04/21(日) 23:58:58.22散々言われてるけど、最低でもコード進行識別出来ないと無理じゃね
0771デフォルトの名無しさん
2013/04/22(月) 20:23:40.30曲全体のスペクトル見て、似てる似てないでも
いいんじゃないかな、最初は。
リズム主体の曲か、ハーモニー主体の曲か、
めちゃくちゃな曲か、くらいの分類はできるよ。
0772デフォルトの名無しさん
2013/05/06(月) 23:11:29.32いつのまにかLGPLになってやがった・・・
0773デフォルトの名無しさん
2013/05/22(水) 01:13:06.280774デフォルトの名無しさん
2013/05/28(火) 05:48:55.32下のを入れたんですがうまくうごきません。なぜでしょうかirotvierでも登録されていません
IMoniker * pMoniker;
IRunningObjectTable *pROT;
int hr;
if (FAILED(GetRunningObjectTable(0, &pROT))) {
printf("fil;");
}
hr = CreateItemMoniker(L"!",L"FilterGraph 0 pid 0", &pMoniker);
if (SUCCEEDED(hr)) {
hr = pROT->lpVtbl->Register(pROT,0, pUnkGraph, pMoniker, pdwRegister);
pMoniker->lpVtbl->Release(pMoniker);
}else{printf("fail");}
pROT->lpVtbl->Release(pROT);
return hr;
0775デフォルトの名無しさん
2013/05/29(水) 05:23:35.460776デフォルトの名無しさん
2013/05/29(水) 10:14:15.070777デフォルトの名無しさん
2013/05/29(水) 23:05:09.330778デフォルトの名無しさん
2013/06/01(土) 19:40:32.47大抵の発言は正しい。
しかし、偉い人の言うことをそのまま実行することが世のため人のためとは
いえない。
てなわけでマナー講座を開講することにしよう。
第1弾として、「自己解決」について問題提起する。
なお、このコーナーの記事は管理人の独断に基づく記事なので、
世間一般の考えとは違うかもしれない。
私が間違っていたら積極的に議論して欲しい。ただし「荒らし」はやめてね。
掲示板で質問して、暫くしてから「自己解決しました」って書き込む人が多いよね。
きちんと「自己解決しました」って書くことで、掲示板の住人は答えを書く手間が省ける。
だから自己解決したことを伝えるのは間違いではない。
でも、あなたが使っている掲示板はGoogleが巡回している。
あなたが書いた質問はGoogleに見られている。
似たような質問を持った人があなたのいる掲示板にやってくる。
でも、そこの掲示板には答えがないので役に立たない。
訪れた人はあなたを憎む。
だから、自己解決したときは、解決方法も書きましょう。
以上
0779デフォルトの名無しさん
2013/06/02(日) 10:05:47.130780デフォルトの名無しさん
2013/06/05(水) 21:43:45.82ブラームスの演奏データ復元プロジェクト
http://ccrma.stanford.edu/groups/edison/brahms/brahms.html
ここの住人ならもっとうまいことやれないか?
0781デフォルトの名無しさん
2013/06/09(日) 06:40:02.83http://www42.atwiki.jp/syugyou/pages/255.html
でけたよ〜
0782デフォルトの名無しさん
2013/06/09(日) 21:28:27.13同じデータをDirectSoundで鳴らしてもそういう現象は無いのだが。
できれば勝手にフェードインをやめさせたい。
0783デフォルトの名無しさん
2013/06/13(木) 04:12:30.46ソースでもうp
0784デフォルトの名無しさん
2013/06/18(火) 19:51:47.74理解力無いね
0785デフォルトの名無しさん
2013/06/21(金) 01:11:07.28じゃ理解力のあるあなたに説明してもらおうか
0786デフォルトの名無しさん
2013/08/03(土) NY:AN:NY.ANhttp://anago.2ch.net/test/read.cgi/software/1375351613/
0787デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0788デフォルトの名無しさん
2013/09/05(木) 11:19:01.710789デフォルトの名無しさん
2013/09/05(木) 11:53:47.310790デフォルトの名無しさん
2013/09/05(木) 12:05:09.38別にJavaでソフトシンセとか作ったっていいんだぜ
今時のCPUパワーなら余裕
0791デフォルトの名無しさん
2013/09/05(木) 13:04:59.46ソフトシンセとかもっと言えばDAWそのもの
>>790
やっぱりC辺りなのか本買って勉強してみるサンクス
0792デフォルトの名無しさん
2013/09/06(金) 22:30:42.83JavaScriptのWeb Audio API試してみてね
0793デフォルトの名無しさん
2013/09/18(水) 23:48:04.520794デフォルトの名無しさん
2013/10/06(日) 19:06:44.700795デフォルトの名無しさん
2013/10/06(日) 19:32:49.28列挙したピークから倍音成分を必要なだけ取得(3〜5倍音程度?)
倍音の合計レベルが大きい物を基音として採用
倍音成分の乗り方がわかってる音なら合計レベル算出時に係数として加味
あと、このままだとFFTの低音域は制度が悪いので基音ピークの左右のレベルから補正かけてあげる
0796デフォルトの名無しさん
2013/10/06(日) 21:04:27.57別の言い方をすると、
隣接する2つの倍音の差の周波数が基本周波数になる。
音によっては基本周波数のレベルが低いもの、さらに存在しないものさえある。
また鐘の音のように基本周波数を特定しずらいものもある。
初歩的どころか、とても難しい解題だよ。
0797デフォルトの名無しさん
2013/10/07(月) 15:16:01.89必要な精度、許される処理時間によってさまざま
FFTですむ精度で良いなら>>795のやり方が簡単
0798デフォルトの名無しさん
2013/11/10(日) 16:56:05.94目的のサンプリング周波数に間引けばOKですよね。
逆にPCM to DSDの工程がよくわかりません。
とりあえず、2822400HzにアップサンプリングしてLPFをかけることになるのでしょうか?
0799デフォルトの名無しさん
2013/11/10(日) 21:12:09.131次ならすぐできるし感覚をつかみ易いでしょう
高次になるとそれなりに知識が必要になります
0800デフォルトの名無しさん
2013/11/10(日) 23:31:53.42ΔΣ変調を調べてみると難しい言葉ばかりで理解できないのですが、
ノイズシェーピング処理の事をいうのでしょうか。
現状の理解では以下の流れになるのではないかと思っています。
(1)2822400Hzにアップサンプリング
(2)LPF
(3)高次のノイズシェーピング(1次なら理解したつもりです。)
(4)1ビットに変換
高次のノイズシェーピングがさっぱりわかりません。
また何を根拠にdouble型の値を1と0に振り分けているのかも不明です。
アドバイスなどいただけるとありがたいのですが。
0801デフォルトの名無しさん
2013/11/11(月) 00:09:17.69ほぼ理解できていることになると思うのですが・・・
次数が高くなると入力信号によって発振する場合が出てくるので
その点のケアをする必要が出てきます
なぜそうなるのかが分からない場合はデジタル信号処理の
勉強をしっかりやり直しましょう
たとえ1次で変換してもS/N比は悪いですが1bitストリームは
作れるのでまずはそれで試してみては?
3次くらいまでは発振の心配はありません
0802デフォルトの名無しさん
2013/11/11(月) 22:39:59.71ありがとうございます。
とにかくやってみる事にします。
最後に1つだけ、ノイズシェーピングをかけたとしてもdouble型の配列が得られるだけですよね。
何を根拠に1と0に振り分けるのかだけ教えていただけませんか?
0803デフォルトの名無しさん
2013/11/12(火) 00:04:50.310は0Vの意味ではなく-1を表すシンボルと考えればいいでしょ。
0804デフォルトの名無しさん
2013/11/12(火) 00:21:19.19ノイズシェーピングを使わずに単に符号で分ける1bitサンプリングではディストーションが掛かった音になってしまうのを
誤差をフィードバックすることで複雑な変化をさせてLPFで取り除けるようにしているってことです。
0805デフォルトの名無しさん
2013/11/12(火) 07:57:27.70どうやらまだ理解できてないようですね
1bitに丸める場合はただのコンパレートです
なので中央値より大きければ1を出力し最大値からの誤差をフィードバックする
中央値より小さければ0を出力し最小値からの誤差をフィードバックする
というような感じになります
0806デフォルトの名無しさん
2013/11/12(火) 21:50:54.00ありがとうございます。
要するに、0以上は「1」、0未満は「0」という事になるのですね。
正の数のときは1から引いた値を、負の数のときは-1から引いた値を
次のサンプルに加算するという事になると理解しました。
0807デフォルトの名無しさん
2013/11/12(火) 22:44:15.88どういたしまして
0808デフォルトの名無しさん
2013/11/17(日) 18:53:15.46私も数ヶ月前からDSDを始めたばかりなのですが、
(4)のところはサンプリングレート2822400Hzで得られた
double型の演算結果データが正の値ならビットを1に、ゼロ
または負の値ならビットを0にして、1バイトが8ビット(=8個の
double型データに対応)で詰めて並べて、これをDSDデータとして
dsf形式でファイルに書き出したら、とりあえずAudioGateで
再生できました。
よろしければ、お互いゆっくりと楽しみながらやっていきませんか。
0809デフォルトの名無しさん
2013/11/17(日) 20:57:43.93http://www1.axfc.net/u/3090551
akiko
0810デフォルトの名無しさん
2013/11/17(日) 21:59:32.66ttp://www.tv-tokyo.co.jp/mv/wbs/trend_tamago/post_54136
0811デフォルトの名無しさん
2013/12/14(土) 16:52:45.900812デフォルトの名無しさん
2013/12/27(金) 00:08:15.70格好良かったから自分もやってみたいところだったが、USBギターケーブルってものを見つけた。
USB GUITAR LINK GUITLINK という製品。
プログラマの端くれとしてはギターの音を拾うプログラムを書いてみたくなったんたけど、
これってどういう仕組みなんだろう?
この機器に関係なく楽器用のAPIとかってあるのかな?
0813デフォルトの名無しさん
2013/12/27(金) 02:06:57.850814デフォルトの名無しさん
2013/12/27(金) 08:35:18.84PCや普通のAV機器の入力に直でギター繋ぐなよー、受け側が壊れる場合もある
ttp://www.g200kg.com/jp/docs/dic/impedance.html
0815デフォルトの名無しさん
2013/12/27(金) 15:07:40.440816デフォルトの名無しさん
2013/12/29(日) 11:15:14.72> 通常のミキサーのマイク入力などにそのまま接続しても正常に音が出ない。
「正常に音が出ない」という表現を「壊れる」と解釈するのは斬新だなw
0817デフォルトの名無しさん
2013/12/30(月) 04:53:09.660818デフォルトの名無しさん
2014/01/05(日) 16:14:20.64まず、音声を機器に取り込むには、マイク入力と、ライン入力 とかあったりする。
どちらも、電圧をオシロスコープで見ると、よくある音声波形が見えるのだが、
2つの違いは、その大きさが違うということ。(詳しく言うと、インピーダンスの違いが大きいが、それはおいておこう)
ところで、コイルに磁石を出し入れすると電圧(電流)を生じるのは分かるかな。
エレキギターも、コイルが入っていて、弦の振動が、電圧になるのだが、微弱すぎるんだ。
そこで、ギター入力可能な端子というのは、ギターの微弱な電気を、増幅させる回路が入っている。
( 詳しくいうと、入力インピーダンスがすごく高い、かつ、増幅率の高いアンプ、というのがポイント)
つまり、USBギターケーブルっていうのは、いろんなPCにもついている音声入力端子 を、
ギターの微弱音に対応させた専用のもの、と覚えておけばよいだろう。
0819デフォルトの名無しさん
2014/01/05(日) 16:33:14.29察しのとおり、PCに入ってきた音声信号は、OSやAPI、ドライバなどがまとめて取り扱う。
自作のプログラムは、用意されたAPIに対して、データのやりとりをして処理を行うこととなる。
なお、USBの信号を、OSやAPIに渡すまでの処理は、機器のメーカーが用意してある。
通常、USBを指したら、ドライバをインストールしてください、って出るだろ?それ。
で、例えばWindows の場合、音声信号を扱うAPIは、何種類かある。
マイクロソフトが標準で用意しているドライバは、
Windows マルチメディアAPI(MME) mmsystem.h
Windows Audio Session API (WASAPI)
DirectSound
など。
でも、マイクロソフトのAPIは、割とどんな機器でも対応できるような仕様で音声信号をまとめるので、
それがいやだ、って言う人のために、楽器用のオーディオドライバも第3者から提供されている。
それが、ASIOとかいうドライバ。
で、ASIOとかに対応したプログラムを書きたいなら、ASIOのSDKを入手して、
asiodrivers.h をインクルードして、、、などとプログラムをすればよいのだが、
一定時間内に処理を終わらせないと音が途切れるなど、各種のオーディオプログラミングテクニックが必要。
0820デフォルトの名無しさん
2014/01/05(日) 16:46:47.67(a) USBギターケーブルと通信するための、USB信号を自分で解析して、自分で制御する
(b) a はメーカーの用意したUSBドライバに任せて、
自分は、そのUSBドライバが対応しているオーディオAPIとやりとりするプログラムを自作する
といったプログラムをすることとなる。
どちらも結構面倒である。 というか (a)は無理。
(a)をやりたければ、ハードウェアの自作から始めた方が早い。
つまり、ギターの音を拾うのはあなたには無理であろう。あきらめなさい。
0821デフォルトの名無しさん
2014/01/05(日) 16:48:14.94そのソフトウェアを使ったプログラミングならば、割と簡単にできる。
例えば、Processing のmimimライブラリを使えば、簡単に音声入力を扱える
http://r-dimension.xsrv.jp/classes_j/minim/
もし、音声エフェクトアプリとかに興味あるのなら、VSTエフェクトの自作とかも探ってみる。
VSTっぽいみたいなのを、簡単にやってみたいなら ↓ とか面白いかも。
http://jvaptools.sourceforge.net/scripteffect/screenshot.htm
Javaの文法で音声エフェクトを簡単にリアルタイムコーディングできて面白い。
0822デフォルトの名無しさん
2014/01/05(日) 17:35:31.98ブラウザがオーディオ入力信号を扱うことができれば、
あとは自分のJavaScriptは、そのAPIに対してデータのやりとりとかメソッド実行を行うだけだ。
今のところ Chrome なら、
WebRTC とか WebAudio API を使えば、
オーディオ入力データを getUserMedia()関数で取得できる。
0823デフォルトの名無しさん
2014/01/16(木) 02:58:43.07単にフーリエ変換後ある周波数以上のデータを含めないって帯域制限の掛け方できる?
0824デフォルトの名無しさん
2014/01/16(木) 03:09:57.75逆フーリエ変換のときに。
0825デフォルトの名無しさん
2014/01/17(金) 22:51:27.40フレームに処理前のサンプルを入れる時点で余分にサンプルをとって、
フレームを重複させながら処理するんだったような。
0826デフォルトの名無しさん
2014/03/31(月) 14:53:16.34ID:OkqtQFpz元となる音の一番目のサンプルとインパルスのサンプルの一番目の音を掛け算して
次に元となる音の一番目の音とインパルスの2番目の音と掛けて、元となる2番目とインパルスの1番目を
掛けたものを足すみたいにやってけばいいんですよね?
0827デフォルトの名無しさん
2014/04/02(水) 12:23:16.75ID:FY64sASs0828デフォルトの名無しさん
2014/04/23(水) 01:22:14.76ID:Be8/NqvO0829デフォルトの名無しさん
2014/04/23(水) 09:35:49.37ID:Fk2AHs0tたくさん右に振ったパンとたくさん左に振ったパンを混ぜると広くて
たくさんを小さくにすると狭いんですか?
あとパンの振ってあるステレオファイルをパンを振るにはどうするんですか?
0830デフォルトの名無しさん
2014/04/23(水) 09:45:29.51ID:5vldvyzpディレイをかける
0831デフォルトの名無しさん
2014/04/23(水) 10:22:20.03ID:ezfyJwXq0832デフォルトの名無しさん
2014/04/23(水) 10:34:58.59ID:Fk2AHs0tそれと広がりとどう関係するんですか?
0833デフォルトの名無しさん
2014/04/23(水) 11:06:08.12ID:GdSWjfVB脳が空間を認識するからだろ
0834デフォルトの名無しさん
2014/04/23(水) 12:51:33.30ID:6VikSZRx縦の広がりはリバーブ
0835デフォルトの名無しさん
2014/04/30(水) 17:30:57.64ID:96+BbSAHこのときの誤差ってどの程度のものなんですか?
0836デフォルトの名無しさん
2014/04/30(水) 19:01:17.86ID:+zw06xcU式は思い出せないけど、
計算機イプシロン 情報落ち でググって。
0837デフォルトの名無しさん
2014/05/05(月) 11:16:12.48ID:Mu2ScZdD0838デフォルトの名無しさん
2014/05/11(日) 11:50:22.46ID:0MhL7reQ「これじゃあ、わざわざ、立派な外部スピーカー買わなくても良いじゃんw」
とさえ考えてしまう俺がいるのであった...。
プロはどう思うか知らんが、素人だと、そこまで考えてしまうくらいだから。
0839デフォルトの名無しさん
2014/05/11(日) 11:54:30.79ID:uVLDDIJFソフトにしろハードにしろシンセで作った
濃厚な音を再現性良く出すには
それなりのスピーカーが必要だと思ってた
0840デフォルトの名無しさん
2014/05/11(日) 16:16:19.06ID:xo7pnJy3信号にその逆特製を施してやるとかできないもんだろうか?
0841デフォルトの名無しさん
2014/05/11(日) 16:23:16.03ID:Kc1eCup4http://www.ikmultimedia.com/mobile/products/arc/?O=JP
割と安価だし自分でやる必要性は感じないかな
0842デフォルトの名無しさん
2014/05/11(日) 16:46:14.09ID:+P2aAX7z0843デフォルトの名無しさん
2014/05/12(月) 13:02:09.34ID:qGQ9K6530844デフォルトの名無しさん
2014/05/12(月) 13:20:51.32ID:2vYhWLPf測定時の部屋の反響程度だよね
0845デフォルトの名無しさん
2014/05/12(月) 20:12:08.66ID:di4+ZeX/言われてみれば、等化器か。
正直、調味料的な見方してた。
0846デフォルトの名無しさん
2014/05/12(月) 20:33:27.39ID:eNXkL11P0847デフォルトの名無しさん
2014/05/12(月) 22:42:37.82ID:cG/EbP950848デフォルトの名無しさん
2014/05/13(火) 18:53:31.89ID:TbMp8/0S0849デフォルトの名無しさん
2014/05/18(日) 12:40:16.32ID:7YUGvOzg波形自体がそういう音の成分を含んでいるのか、スピーカーを通すとそういう音が鳴るのか
どちらですか?
0850デフォルトの名無しさん
2014/05/18(日) 13:16:24.42ID:vXasxGe80851デフォルトの名無しさん
2014/05/18(日) 13:19:50.84ID:OJTIBpRp前者ならA点からB点をサイン曲線とかで補間してやれば立ち上がりが若干緩くなる
他のやり方だとオーバーサンプリングして戻してもノイズ消えるんじゃないかな?
後者はそもそも補間してないって話だよね
0852デフォルトの名無しさん
2014/06/02(月) 16:32:33.23ID:2EOO5SfK音を左右大きさ変えて音源移動してるイメージにしたいのに
なかなかうまくいかないわ
0853デフォルトの名無しさん
2014/06/04(水) 11:14:33.83ID:JjkiX3zX実際は右からも聞こえるからな。
反射音なしなら左からしかきこえないってことなんだろうけど。
0854デフォルトの名無しさん
2014/06/04(水) 23:03:23.65ID:ZoWoj1bU0855デフォルトの名無しさん
2014/11/01(土) 01:49:48.99ID:i3hu5hPg0856デフォルトの名無しさん
2014/11/01(土) 22:17:04.75ID:TOmVtt0r0857デフォルトの名無しさん
2014/12/12(金) 03:57:40.57ID:L50nhIUx0858デフォルトの名無しさん
2014/12/16(火) 14:13:56.88ID:mKQuEY+m0859デフォルトの名無しさん
2014/12/17(水) 14:49:10.86ID:ejUwy2/10860デフォルトの名無しさん
2015/05/21(木) 16:48:17.77ID:jFMq0sb+0861デフォルトの名無しさん
2015/05/21(木) 18:17:56.84ID:CKzSELPq0862デフォルトの名無しさん
2015/05/21(木) 18:36:07.04ID:/4m8f8ei0863デフォルトの名無しさん
2015/05/22(金) 04:41:53.77ID:SjToadmy現在の余りあるCPUパワーを使えば数トラック分の波形をリアルタイムに合成しつつ出力も
可能なのかどうかとか聞いてみたかったんですが、ここじゃ扱えないんですか……
残念です
0864デフォルトの名無しさん
2015/05/22(金) 09:39:23.96ID:LopKJOfq0865デフォルトの名無しさん
2015/05/30(土) 01:36:22.68ID:SCc3gZg50866デフォルトの名無しさん
2015/05/30(土) 01:40:27.05ID:0K4sPnsN0867デフォルトの名無しさん
2015/05/30(土) 09:32:38.41ID:Kc1ZQXk+0868デフォルトの名無しさん
2015/06/01(月) 11:49:47.71ID:jClPxdDj0869デフォルトの名無しさん
2015/06/01(月) 11:53:42.07ID:Fvr773oX0870デフォルトの名無しさん
2015/07/12(日) 18:13:06.44ID:eGQP6pyJ0871デフォルトの名無しさん
2015/07/17(金) 00:20:33.70ID:5h7Be4GN0872デフォルトの名無しさん
2015/07/17(金) 10:02:30.77ID:X7JQ6nLKwaveOutWrite使う話?
0873デフォルトの名無しさん
2015/07/17(金) 12:21:32.91ID:RO6b+9z4この際目的を果たせればどんな方法でも文句は言いません、お願いします
0874デフォルトの名無しさん
2015/07/17(金) 13:14:12.33ID:amtl7PFWhttp://www13.plala.or.jp/kymats/study/MULTIMEDIA/waveOut_create.html
0875デフォルトの名無しさん
2015/07/17(金) 18:23:07.91ID:MAxfs6tFしかもすんごい分かりやすいサイト
…ええ話や
0876デフォルトの名無しさん
2015/07/17(金) 21:16:13.13ID:RO6b+9z40877デフォルトの名無しさん
2015/07/17(金) 21:25:00.17ID:amtl7PFW0878デフォルトの名無しさん
2015/07/18(土) 01:49:43.20ID:VyGMEck6「サイト見てもこの辺がよく理解出来ないんです」
って話ならまだわかるよ
でもキミ…なんなの?
何で上から目線なの?
0879デフォルトの名無しさん
2015/07/18(土) 07:52:54.33ID:+gZxBITT現にそのサイトだって何十回と見てきました
もう問題は自己解決したので結構です
ありがとうございました
0880デフォルトの名無しさん
2015/07/18(土) 09:55:30.83ID:InMkSBJ70881デフォルトの名無しさん
2015/07/18(土) 14:05:00.32ID:1dCgaP/Aプログラムなんかやってないで死ねばいいのにな>>879は
0882デフォルトの名無しさん
2015/07/19(日) 08:22:25.53ID:bmSa34820883デフォルトの名無しさん
2015/07/19(日) 09:02:53.81ID:5PwANh2+自演乙
はよしねよ
0884デフォルトの名無しさん
2015/07/19(日) 09:33:32.25ID:bmSa3482お前頭悪そうw
0885デフォルトの名無しさん
2015/07/19(日) 09:49:52.62ID:l1XxyCFZもう死ねばよくね?おまえw
0886デフォルトの名無しさん
2015/07/19(日) 09:54:46.24ID:bmSa34820887デフォルトの名無しさん
2015/07/19(日) 09:57:45.98ID:l1XxyCFZわかってんならはよ死ねよカス
0888デフォルトの名無しさん
2015/07/19(日) 10:04:36.49ID:bmSa34820889デフォルトの名無しさん
2015/07/19(日) 10:10:00.45ID:l1XxyCFZアホ特有の考えなの?
0890デフォルトの名無しさん
2015/07/19(日) 10:45:29.82ID:rjdaqXDS>>888死んでもうたん?
0891デフォルトの名無しさん
2015/07/19(日) 11:11:54.10ID:UqoVBwNq通常運転でお願いします
0892デフォルトの名無しさん
2015/07/19(日) 12:00:22.33ID:Npxm1YBjつべこべ言わずにさっさと市ね
0893デフォルトの名無しさん
2015/07/19(日) 12:05:08.40ID:x0QgGbu9おとりこみ中でしょうか…
0894デフォルトの名無しさん
2015/07/19(日) 12:09:06.13ID:00gWbno52chの夏なので暫く時間がかかります
0895デフォルトの名無しさん
2015/07/19(日) 12:10:07.90ID:qIuV8crCググレカス
0896デフォルトの名無しさん
2015/07/19(日) 12:10:45.32ID:x0QgGbu9では次スレくらいで質問させてもらいますね
0897sage
2015/07/19(日) 12:19:01.59ID:U0Q8gnMSわかりますw
0898デフォルトの名無しさん
2015/07/19(日) 12:20:44.30ID:U0Q8gnMS0899デフォルトの名無しさん
2015/07/19(日) 20:31:44.43ID:1azLGWk4頭悪いのが一匹住み着いてるけど
ほっとけばいいよ
バカまるだしだから見りゃすぐわかるだろけど
一応まとめとく
【バカの書き込み一覧】
>>873
>>876
>>879
>>882
>>884
>>886
>>888
>>892
>>895
0900デフォルトの名無しさん
2015/07/20(月) 00:49:37.62ID:x3k6Wnexわざわざ損をする行動ばかりしてるけど
今までの人生そんなことばかりなのか
0901デフォルトの名無しさん
2015/07/20(月) 01:02:50.99ID:TiBMlu350902デフォルトの名無しさん
2015/07/20(月) 01:26:40.56ID:sh2i3Gaj0903デフォルトの名無しさん
2015/07/20(月) 04:17:38.83ID:gQqIhgKH0904デフォルトの名無しさん
2015/07/20(月) 08:43:08.46ID:5uik2pSO>>876
>>879
>>882
>>884
>>886
>>888
>>892
>>895
氏ね
0905デフォルトの名無しさん
2015/07/20(月) 21:53:36.03ID:AGKnnOa8フリーソフトでAPEタグのあるファイル探して
見つけたらタグ文字検索すればいいんじゃね?
タグ文字は次の8文字
'A' 'P' 'E' 'T' 'A' 'G' 'E' 'X'
1文字1byte
Version2はヘッダとフッタで2箇所あるらしい
詳しい事は↓で
ttp://pppea.s16.xrea.com/freeware/mpachk.html
0906デフォルトの名無しさん
2015/07/21(火) 08:50:50.41ID:IkzkvI7X>>876
>>879
>>882
>>884
>>886
>>888
>>892
>>895
くたばったか?w
0907デフォルトの名無しさん
2015/07/21(火) 12:25:38.00ID:D5PG4eJe0908デフォルトの名無しさん
2015/07/21(火) 12:29:28.71ID:cDZFCGvg0909デフォルトの名無しさん
2015/07/22(水) 00:57:46.50ID:HE+mVOuz0910デフォルトの名無しさん
2015/07/27(月) 19:53:40.97ID:KH8d/GA1変換誤差を次のサンプルに繰り越す方式でOK?
0911デフォルトの名無しさん
2015/07/28(火) 05:18:17.99ID:QwU65quk0912デフォルトの名無しさん
2015/08/15(土) 13:28:15.97ID:x5Zzj+B4waveInOpenが成功しない(´;ω;`)
0913デフォルトの名無しさん
2015/08/16(日) 10:39:56.12ID:gulCE2GF0914デフォルトの名無しさん
2015/08/16(日) 11:14:07.86ID:0tax/iFh0915912
2015/08/16(日) 18:35:32.80ID:68k2mLDo>>914
Win10Home
Office2003
Private Const WAVE_FORMAT_PCM = 1
Private Const WAVE_MAPPER = -1
Private Const CALLBACK_WINDOW = &H10000
Public Function 入力デバイスのオープン()
Private m_コールバック用ウインドウハンドル As Long
m_コールバック用ウインドウハンドル = FindWindow(vbNullString, UserForm1.Caption)
Private m_入力フォーマット As WAVEFORMATEX
With m_入力フォーマット
.nFormatTag = WAVE_FORMAT_PCM
.nChannels = 2
.nSamplesPerSec = 44100
.nBitsPerSample = 16
.nBlockAlign = .nChannels * .nBitsPerSample / 8
.lAvgBytesPerSec = .nBlockAlign * .nSamplesPerSec
.nSize = 0
End With
Debug.Print waveInOpen(m_入力デバイスハンドル, WAVE_MAPPER, m_入力フォーマット, m_コールバック用ウインドウハンドル, 0, CALLBACK_WINDOW)
Call waveInClose(m_入力デバイスハンドル)
End Function
結果:
waveInOpen()で32が返ってくる(Private Const WAVERR_BADFORMAT = 32)
0916デフォルトの名無しさん
2015/08/16(日) 19:14:13.15ID:mEfh+Nxq0917デフォルトの名無しさん
2015/08/16(日) 20:17:38.90ID:0tax/iFhPrivate Const WAVE_MAPPER = -1
Private Const CALLBACK_WINDOW = &H10000
Type WAVEFORMATEX
wFormatTag As Integer
nChannels As Integer
nSamplesPerSec As Long
nAvgBytesPerSec As Long
nBlockAlign As Integer
wBitsPerSample As Integer
cbSize As Integer
End Type
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByRef clsname As String, ByRef winname As String) As Long
Declare Function waveInOpen Lib "winmm.dll" (ByRef hIn As Long, ByVal did As Long, ByRef pfmt As WAVEFORMATEX, ByVal cb As Long, ByVal cbi As Long, ByVal f As Long) As Long
Declare Function waveInClose Lib "winmm.dll" (ByRef hIn As Long) As Long
0918デフォルトの名無しさん
2015/08/16(日) 20:18:50.68ID:0tax/iFhDim hIn As Long
Dim cbwnd As Long
Dim fmt As WAVEFORMATEX
cbwnd = FindWindow(vbNullString, UserForm1.Caption)
With fmt
.wFormatTag = WAVE_FORMAT_PCM
.nChannels = 2
.nSamplesPerSec = 44100
.wBitsPerSample = 16
.nBlockAlign = .nChannels * .wBitsPerSample / 8
.nAvgBytesPerSec = .nSamplesPerSec * .nBlockAlign
.cbSize = 0
End With
Debug.Print waveInOpen(hIn, WAVE_MAPPER, fmt, cbwnd, 0, CALLBACK_WINDOW)
Call waveInClose(hIn)
End Sub
Windows10pro / Office2003 で 0 戻り確認済
0919デフォルトの名無しさん
2015/08/16(日) 20:28:14.66ID:W8CNJz1mありがとうございました
ゼロが戻りますた
0920デフォルトの名無しさん
2015/08/16(日) 20:37:36.34ID:mEfh+Nxq0921デフォルトの名無しさん
2015/10/21(水) 21:42:10.56ID:XzqBxa//耳の良い奴に、PCが繰り出す擬似的なパイプオルガンの音を聞かせたら、
「この程度?」と、見事に笑われてしまった。
0922デフォルトの名無しさん
2015/10/21(水) 21:51:29.12ID:kNGAvyWJそりゃ電子オルガンの音なんでしょ。
0923デフォルトの名無しさん
2015/10/22(木) 10:39:57.21ID:CeSwqlxw0924デフォルトの名無しさん
2015/10/22(木) 10:52:17.20ID:8pCzy0710925デフォルトの名無しさん
2015/10/22(木) 13:19:47.55ID:522gqyPwスピーカーを変えるべき
0926デフォルトの名無しさん
2015/10/22(木) 22:59:22.96ID:IPNK5Wr+出せるなら、逆にノーベル賞ものでは?
0927デフォルトの名無しさん
2015/10/23(金) 11:04:24.97ID:9hpieugb0928デフォルトの名無しさん
2015/10/23(金) 13:32:59.23ID:E9Sd6aCq0929デフォルトの名無しさん
2015/10/25(日) 12:17:41.81ID:UUHJNkfD発想は邪道かな。
0930デフォルトの名無しさん
2015/10/27(火) 02:47:25.06ID:TrEmiTqs>>927と言ってることあんまり変わってないしコペルニクス的かと言われると疑問じゃないか
0931デフォルトの名無しさん
2015/10/27(火) 08:32:41.56ID:O948v5f30932デフォルトの名無しさん
2015/10/27(火) 08:46:42.54ID:LdCFlBPw0933デフォルトの名無しさん
2015/10/27(火) 11:03:55.55ID:Zj/nXK800934デフォルトの名無しさん
2015/10/27(火) 14:33:45.22ID:qWbm94Vlサンプリングでパイプオルガンにどこまで迫れるもんかな、、と今ググったら
http://kohrogi.com/?p=4119
こんなのあるんだね、フリーの音源データ3.2GBかあ
0935デフォルトの名無しさん
2015/10/27(火) 14:36:15.26ID:qWbm94Vlhttp://store.samplephonics.com/products/the-leeds-town-hall-organ
カートに入れて買うんだな、£0 だってさ
0936デフォルトの名無しさん
2015/10/27(火) 21:20:04.37ID:2IaUfj9s他の楽器はそこそこ再現できるが、これだけは再現が難しいと思う。
0937デフォルトの名無しさん
2015/10/28(水) 04:56:23.58ID:2vlbbPP00938デフォルトの名無しさん
2015/10/28(水) 14:23:28.36ID:0c7VcdM30939デフォルトの名無しさん
2015/10/29(木) 23:19:12.54ID:7SyTUtuaあれにどこまで迫れるかだ。
0940デフォルトの名無しさん
2015/10/29(木) 23:33:45.82ID:IDJmDfjiピアノとかドラムは力技で再現度がすごいけどさ
良く使うであろうギターですら打ち込みは困難だし
パイプオルガンなんかはスピーカーで再現できないというだけで
シンセとしては再現しやすいほうだね
0941デフォルトの名無しさん
2015/10/30(金) 07:10:28.86ID:jV4eid+MBGMのwavファイルに声のwavファイルを重ねたりとか。
ビットレートとビット数が同じだったら加算するだけでいいの?
16ビットだったらC言語のshort型と同じだからそれを足し算すればいいの?
0942デフォルトの名無しさん
2015/10/30(金) 10:53:25.00ID:bGTI8z090943デフォルトの名無しさん
2015/10/30(金) 19:31:27.32ID:jV4eid+Mサンクス!
0944デフォルトの名無しさん
2015/10/30(金) 22:13:49.33ID:jV4eid+Mオーバーフローしない最大数値にしようと思うんだけど、
if ( dat > 255 ) dat = 255;
各ビットでこれやったら何かおかしなことにならないの?
今のこぎり波作って遊んでるんだけど、
例えば全く同じのこぎり波を加算しまくって上記のやり方で詰めたら谷間の長さが少なくなっていくよな。
|/ ←こんなのこぎり波が
|/~ ←こんな形になるよな
これって詰めたらマズいんじゃないか。
だからと言って詰めないわけにもいかないし、どうすんだこれ。
0945デフォルトの名無しさん
2015/10/30(金) 23:22:44.63ID:k5vGnOwJ最初は素直に足して、その範囲が例えば、
30〜400になったとすると、
それを0〜255に収まるように変換する
30〜400から各々、30を引いて、0〜370にして、
それに、(255 / 370)を掛ける
0946デフォルトの名無しさん
2015/10/30(金) 23:30:13.32ID:jV4eid+Mありがとう。
そうすると怨霊の下がるところが出てきそうだけど・・・
怪しい波形はなくなるな。
それでやってみます。
0947デフォルトの名無しさん
2015/10/30(金) 23:53:47.25ID:k5vGnOwJ変換のやり方は無限にある
例えば0〜370を、0〜255にするのに、
0〜99 → 0〜99
100〜199 → 100〜149
200〜299 → 150〜199
300〜370 → 200〜255
これで、中音量の範囲が狭くなる
100〜300 → 100〜200 に変換される
0948デフォルトの名無しさん
2015/10/31(土) 01:25:46.44ID:1AeangT80949デフォルトの名無しさん
2015/10/31(土) 08:49:02.59ID:9AQCVfGL各ビットでやる ってのが意味分からん。
オーバーフローして切り詰めたら音割れの状態、歪んだ音になる。
0950デフォルトの名無しさん
2015/10/31(土) 11:22:14.92ID:q0Cy/Du3あるよな。
0951デフォルトの名無しさん
2015/10/31(土) 12:07:12.20ID:eH4IcMDe増幅器でも同じ問題は起きるよ
0952デフォルトの名無しさん
2015/10/31(土) 12:08:48.72ID:eH4IcMDeそれやるとピアニッシモの部分の音が消えてしまうからだめ
0953デフォルトの名無しさん
2015/10/31(土) 13:32:22.97ID:IVNTd+mA後から正規化すればよいだろう
>>910-911も参考に
0954デフォルトの名無しさん
2015/10/31(土) 15:06:27.45ID:1AeangT8じゃあどうすればいいんだよ?
小さい音が消えるか、大きい音が歪むかのどちらかじゃないの?
それとも変なAGCでもやれと?
0955デフォルトの名無しさん
2015/10/31(土) 15:27:05.52ID:HAtMuR9zgainとreleaseを変えられるようにしとけ。
0956デフォルトの名無しさん
2015/10/31(土) 15:29:13.90ID:eH4IcMDeAGC知ってるならAGCやれよω
0957デフォルトの名無しさん
2015/10/31(土) 16:49:57.27ID:1AeangT8AGCみたいなウザすぎるの使うくらいなら小さな音消えた方がマシ
0958デフォルトの名無しさん
2015/10/31(土) 17:18:58.34ID:HAtMuR9z単純に全体を下げるのか、指定したレンジに圧縮するのか、ピークを超えた付近のみカーブを付けて下げるのか。
リアルタイムでやっても処理は追いつくぞ。
0959デフォルトの名無しさん
2015/10/31(土) 17:32:41.07ID:jgYZGk3p0960デフォルトの名無しさん
2015/11/01(日) 04:35:27.28ID:fO9ox0F944100HzのWAVEを横軸1ピクセル1データで描画しようとすると、横の長さが1秒だけでも44100ピクセルになってしまいます
それを長さ100ピクセルで描画しようとしたとき、1ピクセルに441データずつ描画すると重なるため当然最大数値しか見えません
かといって441データおきに取得して描画すると欠落するデータが多すぎる気がします
一般的な波形を描画するソフトはその辺りどうやっているのでしょうか
0961デフォルトの名無しさん
2015/11/01(日) 10:07:01.23ID:KbBmWBMW0962デフォルトの名無しさん
2015/11/01(日) 10:55:21.63ID:kFpSN8VR>1ピクセルに441データずつ描画すると重なるため当然最大数値しか見えません
その場合は「最大値しか見えない」んじゃなくて1つのX位置に縦線が表示されるだろ
そうするか、最大値のみを表示するかしか方法ないんじゃねーのこればっかりは
0963デフォルトの名無しさん
2015/11/01(日) 12:48:35.67ID:YXd86LR5複数のソフトを使ってみれば分かる事だが、最大値の輪郭で塗りつぶし。
ちなみに拡大表示は、TWEの方式が見やすい。
0964デフォルトの名無しさん
2015/11/01(日) 16:40:45.57ID:c1VvKpwM波形に分布で階調を付ける方法(DPO)
圧縮するんでなく採取間隔をピクセル分に間引く方法(DSO)
ピクセル幅分の平均を取る方法(画像伸縮)
辺りが思いつく
DPO方式は見た目綺麗なのでお勧め
0965デフォルトの名無しさん
2015/11/02(月) 12:27:45.37ID:VpWN4MYL0966デフォルトの名無しさん
2015/11/02(月) 15:14:14.27ID:u1DSG0Dt0967デフォルトの名無しさん
2015/11/02(月) 18:39:07.12ID:dNpWsmPC一番簡単なのは最大値みたいですね
今回は最大値で実装しますが、他の方式も一通り調べて触れておきます
ありがとうございまました
0968デフォルトの名無しさん
2015/11/09(月) 21:59:14.51ID:xsh7xTs1http://aurorawave.atspace.tv/?sop:v/HIri1484iQ0&RDiEGniXc7Xtc http://i1.ytimg.com/vi/HIri1484iQ0/mqdefault.jpg #AuroraWaveTV
0969デフォルトの名無しさん
2015/11/09(月) 23:47:47.23ID:C/7qdMz/どっかのサイトで片方だけ残してもう片方は捨てるみたいな方法を見ました
これって一般的な方法なんですか?
足して平均したくなるのですが
0970デフォルトの名無しさん
2015/11/10(火) 00:41:57.11ID:CxvDmHLR左右の音量が同じもの(パンを中央にしているもの)
が消えるので、カラオケ用になる
例えば、ボーカルの音量が、左50・右50なら、
50-50=0 となり、ボーカルが消える
(ただし、片方だけにエコーがかかっていれば、
エコーは残る)
まあ、パンが中央寄りの、バスドラ・ベースも消えるけどw
Mixingするように、個々の楽器のパン・エコー想像するといい。
まあ、audacity をいじくってみる
0971デフォルトの名無しさん
2015/11/10(火) 01:08:55.25ID:zkRuj+Kg一般的じゃないな
足して平均(LRを1/2して足すとか)がごく普通のやり方だよ
>>970
統合するのに引き算するなんて「よくある」じゃねーよw
0972デフォルトの名無しさん
2015/11/10(火) 11:55:15.43ID:YT7kbsA+0973デフォルトの名無しさん
2015/11/10(火) 23:00:55.63ID:VkEP2MCC0974969
2015/11/11(水) 00:18:52.74ID:K9lyABtQありがとうございます
0975デフォルトの名無しさん
2015/11/11(水) 09:14:56.61ID:lk3rAxfM0976デフォルトの名無しさん
2015/11/11(水) 20:36:51.68ID:RY0eiki2音楽プログラミングじゃいかんの?音関係でもいいよ?
0977デフォルトの名無しさん
2015/11/11(水) 20:40:49.70ID:4OT5UzMf0978デフォルトの名無しさん
2015/11/11(水) 23:12:29.50ID:AWT2g3E4ここはひとつこのスレから自動ヒットソングメーカー、音色コード楽器楽曲DBぞ
http://tensorflow.org/
0979デフォルトの名無しさん
2015/11/11(水) 23:40:23.13ID:WDtG518P俺が思うにDeepDreamのアルゴリズムで
既存の曲から自動でチャー研MADを合成するのが良いと思う
0980デフォルトの名無しさん
2015/11/12(木) 00:51:23.17ID:ffXb8wC90981デフォルトの名無しさん
2015/11/12(木) 08:15:56.19ID:6glYnozdキチガイを引き寄せる何かがあるみたいだな
0982デフォルトの名無しさん
2015/11/12(木) 08:18:32.20ID:6glYnozd0983デフォルトの名無しさん
2015/11/13(金) 08:10:45.12ID:4OOsT4lgこれってただの打ち込みだろ
この板にはふさわしくない
SMF扱うならOK
0984デフォルトの名無しさん
2015/11/13(金) 22:00:59.45ID:YJHyXgNeVCO-VCF-VCAとADSRみたいな
まあ別に難しくないけど
0985デフォルトの名無しさん
2015/11/13(金) 22:12:12.53ID:YJHyXgNeまあタッチパネルで快適って無理なんだけどね
0986片山博文MZ ◆T6xkBnTXz7B0
2015/11/13(金) 22:24:57.36ID:0mCHO/39色々ありすぎて迷っちゃうよ
0987デフォルトの名無しさん
2015/11/14(土) 01:45:53.13ID:umA+wsSG扱うのっていわゆるメロディ等で構成された「音楽」じゃないからさ。
楽曲になっていない音も扱うスレッドだから「音楽」は不向き。
>音関係でもいいよ?
今のスレタイの英語を日本語に変えただけじゃねーかハゲ。
0988デフォルトの名無しさん
2015/11/14(土) 12:07:41.30ID:kYx4kaK60989片山博文MZ ◆T6xkBnTXz7B0
2015/11/14(土) 14:25:42.87ID:WVBz5XzJ0990片山博文MZ ◆T6xkBnTXz7B0
2015/11/15(日) 17:29:30.07ID:wup8XVMFよし、ここから始めよう!!!
0991デフォルトの名無しさん
2015/11/16(月) 13:54:00.78ID:Lv7TZ3Ekレス数が950を超えています。1000を超えると書き込みができなくなります。