TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
関数型プログラミング言語Haskell Part31
集合論に基づいた言語を作りたい
Objective-C [ObjC part:9];
UNIXプログラミング質問すれ Part10
Python の宿題ここで答えます Part 2
Google NaCl プログラミング 2mol
結局開発で最も大切なのはテーブルの正規化と制約
Google NaCl プログラミング 2mol
sizeof(char)が必ず1でも、省略すべきではない
くだすれPython(超初心者用) その44【Ruby禁止】

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


1 :2009/01/11 〜 最終レス :2016/06/10
音のプログラミング処理について語りましょう
各エフェクタの組み合わせとか、
プログラミング外の話題はDTM板の方がいいよ
サウンドプログラミング4
http://pc11.2ch.sc/test/read.cgi/tech/1185340076/
サウンドプログラミング3
http://pc11.2ch.sc/test/read.cgi/tech/1145573675/
サウンドプログラミング2
http://pc8.2ch.sc/test/read.cgi/tech/1091054082/
サウンドプログラミング
http://pc5.2ch.sc/tech/kako/996/996171508.html

2 :
用語を統一するために
リアルタイム
 バッチ処理の対語で、ゼロレイテンシの事ではない。 
 遅延はあっても途切れずに処理する事をいう
レイテンシ
 ADCからDACまでにかかる時間の事だったり
 DSPの掛け算なんかで命令から実際に答えが出るまでの命令サイクル数の事だったり
DSP
 デジタル・シグナル・プロセッサ の場合は信号処理用のMPUの事
 デジタル信号処理の事を言う場合もある

3 :
あげ

4 :
音でプログラミングなのかと思った

5 :
ディレイってどうやって作ればいいですか?

6 :
アフリカへ行き部族間対立を煽り負けた者たちを欧米へ拉致る

7 :
>>5
バッファ領域と、バッファの先頭をさすポインタを用意して、ポインタをぐるぐるまわして、読み出しと書き込みをする。

8 :
ディレイタイムとかミックス量とかそういうパラメタはどうするんですか

9 :
出力を一定時間遅延させて(ディレイタイム)一定量掛けて(ミックス量)加算すれば終わりなんじゃないの

10 :
ho

11 :
>>9
入力信号列をx[n]としたとき、y[n]をどう計算すればいいでしょうか?
512サンプル等ずつで計算するんでしょうか?

12 :
>>11
たとえば y[0...n] と、ポインタ p を用意するだろ?
バッファに詰めるのは、y[p] = x; p++; if(p>n)p=0; を動かし続けりゃいいだけ。
取り出すのは、pからディレイタイムに応じたぶんだけ前の部分。y[p-サンプル数]な。

13 :
インパルス応答との畳み込みとかいう事は考えなくていいということですか?
その演算が畳み込みになってるんですかね?

14 :
畳み込み演算を使ってディレイを実現するプログラムを書いてみなよ
そこから0との掛け算の部分を取りのぞいたら>9や>12と同じものが完成
ディレイは文字通りある時間後だけに応答するわけで、畳み込みする間でもない

15 :
>>8
おれはバッファをポインタでぐるぐる循環させて、
循環バッファか(考え方ではFIFOバッファ)
でバッファの長さがディレイタイム
バッファに残すレベルがディレイの音の大きさ
で、2週目以降バッファに書き込むとき前のも
一定割合でミックスしたらフィードバックディレイ
ってやってた

16 :
そういうDSPのソースコードあるとこないかな?

17 :
>>16
そういう?
ディレイだったら俺のだったらあげるけど。
理論書いてあるとこはあるけどね
ライブラリはどこでもありそうだけどね
おれは使わないからしらねけど

18 :
詳細にアルゴリズムを教わっても組めない人は、プログラミングに向かないと思う。
ま、組めない奴は
http://www.musicdsp.org/
でも行け。

19 :
今度はアセンブラのソースが無いとか言い出しそうな勢いだな。

20 :
>>17
amp = 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 参考にしてみます

21 :
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

22 :
ディレイって、単に音が遅れて聞こえるだけじゃなかったのか。

23 :
アナログディレイみたいにハイ落ちを再現したりするとめんどうだけどね

24 :
マイクインやステレオインからリアルタイムに波形を取得する関数ってあるんですか?

25 :
>>22
そうだけど、それを現在のに加算すると
効果が得られる。
時差あるから周波数特性がギザギザになる。
>>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

26 :
うーむなんかこのスレ新しくなるたびに同じこと繰り返してるよな。
どっかに過去ログまとめたほうがいいかね。

27 :
>>26
うん

28 :
プログラムの勉強をするなら動画圧縮か音声圧縮がいいということでサウンドプログラミングを始めたんですが
全く音の知識は無いんですが、周波数を変更する場合の存在しない中間サンプリング点を打つ場合
直線上に打つのは酷いってのはわかるんですが、補間で曲線上に打っても同じぐらい酷いと思うんですが
これはどうやって打てばいいんですか?

29 :
>直線上に打つのは酷いってのはわかるんですが
ひどくない
たとえばフーリエ変換して周波数成分を欲しい領域に移動して
逆フーリエ変換すれば得られる等

30 :
過去スレでよくフーリエ変換って出てくるので知ってはいるんですが
あれって一定の範囲内ってのがいいかげんで、
しかも途切れが含まれなかったり単音じゃないと酷いと思うんですが
ほんとにこれが主流なんですか?数学と無理やり抱き合わせるんじゃなくて
音専用の予測アルゴリズムとかはないんでしょうか?

31 :
>>28
中間点をとるっていうのは
__ ̄ ̄__ ̄ ̄

___― ̄ ̄ ̄―___― ̄ ̄ ̄
みたいになるっていう意味でしょうか?

32 :
バイリニア補完とかバイキュービック補完とかガウス補完とかシンク補完とかの話?
リアルタイム性の必要な処理なら、足して2で割るのもよく使われるよ。

33 :
>>31
そうです。
>>32
いやニュートンとかスプラインのことをいったんですが、どのみち音に特化してなければ同じですが。
足して2で割るって酷くないですか?間が飛びぬけて山谷になってるかもしれないのに
それって意外な事実ですよね。実際変換ソフトなら全部似たり寄ったりだと思って使ってました

34 :
>>33
あなたがするべき事は実際に大量のデータで統計を取る事だな
音情報である以前にスピーカーを振動させるための電圧である事も考慮しつつ

35 :
>>34
なんか英文を直訳したような文章だな

36 :
>プログラムの勉強をするなら動画圧縮か音声圧縮がいいということで
これの根拠が分からない。ファイル圧縮ならまだ一般的な感じもするが。

37 :
シャノンからやり直せ。

38 :
>>33
サンプリング定理

39 :
>>33
速度を気にしないなら、周波数領域に変換してから間を埋めろ。

40 :
いっつも思うけど、周波数領域に
変換すると、時間分解能みたいのが
ゆるくなるから音質悪くなる希ガス

41 :
>>40
DCT自体は可逆だぜ。
速度やらサイズやらのために細かい部分を捨てることが多いだけで。

42 :
>>41
可逆なのは無限に加算したときだけじゃないの
普通は切り捨てるからそこで音質落ちるんだよ
程度問題だけど人間の耳で分からないレベルで
気にならなければOKでしょ

43 :
音にDCTしてもなぁ…

44 :
>>42
扱うのはデジタルデータなんだから無限に加算する必要なんざねーよ。

45 :
てことは、かなり細かく分割して周波数領域に
変換するってこと?

46 :
ウェーブレットでやれ。

47 :
WDM Kernel StreamingをASIOでラッパーするドライバを作ってみた
AsioKs
http://fanzo.real-sound.net/iCubicProject/

48 :


49 :
DNAはやくリリースされないかな

50 :
DirectNoteAccess?

51 :
ディレイとエコーの違いが分からない orz
ディレイは少し前の入力値を、現入力値に加算
エコーは少し前の出力値を、現入力値に加算
という理解で合ってるのかな・・・

52 :
エコー=リバーブ?

53 :
エコーはこだまだろ
やほーーー、yahoo...

54 :
ディレイもエコーも同じだよ

55 :
俺も>>54と同じ意見。 ディレイ=エコー=やまびこ、で、リバーブが風呂場で音が響く感じ。

56 :
俺の認識では、エコー=風呂場の響き だな。 

57 :
>>56
じゃあ、リバーブはどう認識してるの?w

58 :
エコー
* (ギリシア*kh*)ギリシア神話のニンフ。ヘラの怒りを買って他人のことばを繰り返すことしかできなくなる。ナルキッソスを恋したがその愛を告げられず、苦悩の果てに声だけ残り、こだまになったという。
* (英echo)
1 こだま。やまびこ。
2 残響。
国語大辞典では、↑だそうだよ。
>>56の風呂場でヤッホーと叫ぶと、2、3秒してからヤッホーが戻ってくるのか?w

59 :
リバーブと風呂場は残響というか壁の反響音だよな

60 :
だから、教会やコンクリートの部屋や洞窟の複雑な反射音を小さな機械で再現しようとしたのがリバーブなんだよ、ばか。

61 :
ディレイは純粋に遅らせるだけ ドライとの合成は別問題
リバーブは残響
リバーブの実装方法の中にはディレイを用いるものもある

62 :
だから、ディレイ=エコー=やまびこのプログラムは簡単だと思う。
パラメーターは、原音にたいし、何秒後に何回返すか、音質をどう変化させていくか、音量をどう変化させていくか、
ぐらいしかないと思う。
リバーブは、原音にたいし、0.01秒後ぐらいから反射が始まって、全体的にワオ〜ンという音を作らなければならないから難しいと思う。俺は全然わからないw

63 :
仮にリバーブが出来たとしても、リバーブをかけた時に、聞く人が心地よくなければダメだからむずかしい。
リバーブの製品でも「これ風呂場リバーブじゃん」ってバカにされるからね。

64 :
スプリングエコーって言うのあるじゃん。
あれは山びこじゃなくて、風呂系の響きだよな。

65 :
風呂場で聞けばいいじゃないのもう

66 :
おまいらちょっとはググったらいんでないか
エコーはフィードバックディレイだ
リバーブはディレイタイム(レベルも?)のばらばらな
無数のディレイを加算して再現したりしなかったり
いろんな方法があるみたい
>>64
スプリングリバーブは、昔アナログのころ
バネのある空間に音を飛ばして戻ってきた
音をリバーブとして(ry

67 :
バネのある空間って何だ

68 :
http://gomente.blog.so-net.ne.jp/2007-10-08

69 :
等ラウドネス曲線を扱ったプログラミングがしたいのですが、
調べた限りグラフばかりで、グラフから読み取るのは精度的にも問題ありそうなので、
周波数毎のゲインの数値データが欲しかったりします。
1) Web等で数値データとして配布されていますか?
2) もしなければ下記の仕様書の購入を検討するのですが、
そもそも仕様書自体には数値データは含まれているのでしょうか?
ISO226:2003 http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=34222

70 :
>>69
でかい本屋で立ち読みできるからいってみたら?

71 :
>>71
なるほど、その手が。
ありがとうございます。早速行ってみます。

72 :
あげ

73 :
>>72
そんなさがってた?

74 :
うん、もう海底まじかだったよ

75 :
>>6
それはドゥレイだろ!

76 :
>>75
超遅レス乙

77 :
再生速度の変更ってどうやればいいですか?

2 3 4 5ってデータがあったら
2 2 3 3 4 4 5 5にしたらいいんですか?これで再生速度50%?

78 :
>>77
やってみるといいよ

79 :
>>77
こんなん
23456789   ←6〜9をフェードアウト
   23456789←2〜5をフェードイン

80 :
波形はそのままでサンプリングレートを下げるだけ

81 :
それだと音程も下がるよね

82 :
補完すればいいんじゃね

83 :
>>77
ttp://toragi.cqpub.co.jp/Portals/0/backnumber/2009/01/p202.pdf

84 :
すみません質問ですが、Mpeg-4の規格のドキュメントってどこかにないでしょうか。
mp4の音と映像を分離したいと思っているのですが。

85 :
ttp://www.apple.com/jp/quicktime/technologies/mpeg4/

86 :
mp4のdemuxくらいなら俺だったらmp4boxのソースを参照しちゃうな
ライセンスはLGPLになるが

87 :
>>83
おー、それ買ってみた
今度よもと

88 :
ImageMagickの音版みたいなツール群ってありませんか?

89 :
具体的に、何ができることを期待している?

90 :
>>89
ノーマライズしたり無音部分を取り除いたり
簡単な帯域通過フィルタができたりするコマンドラインツールです

91 :
>>90
つ sox

92 :
>>91
まさにこんなやつです!
さんくす

93 :
winXP, VC++2005 でサウンド入出力プログラムを作っています.
SDK,低レベル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
アルゴリズムによる遅延を解消したいです.
よろしくお願いします.

94 :
>>93
遅延云々以前に入力と出力を同期させてないように見える
バッファ単位の入力完了イベントでたった今読み取ったバッファを
出力にまわす、という処理をしなくてはならないのに、
入力と出力を同時に走らせてタイミングは運にまかせてるから
録音よりも再生が先行してたまたまバッファまるまる1周分の遅れ
が生じているのでは
waveXXXは使ったことないので推測でしかないが

95 :
InバッファとOutバッファを共有したいのは分かるが
別々に用意してコピーする方がいいかもしらん

96 :
別に分けた所で割り込み間隔が短いと負荷時にあっさり逆転する。
まー、デバイスによるのかもしんないけど、
waveIn/waveOut系は互いに同期取ってるわけでも無いし保証も無かったと思うから
一番短い理論上可能な「1バッファ分のレイテンシ」すら難しいと思うよ。

97 :
>>93
頭が悪すぎてハナシにならない。

98 :
コテハンでいきなり罵倒か。NG対象にしてくれといわんばかりだな

99 :
基地外参上ってアピールしてるんだろ

100 :
>>94
私自信 wave*** を使い始めたばかりなので
(それが免罪符だとは考えていませんが)
よく分かりません.検討致します.
>>95
ありがとうございます.
それは何故でしょうか?
>>96
「1バッファ分」が理想的ですが,
用意したバッファ分のレイテンシとなる事が避けられたら満足です.
>>97
解決策が分かるのですね.
お暇な時にアドバイスをお願いします.



100〜のスレッドの続きを読む
【Alloy】形式言語による仕様記述【VDM】
オブジェクト指向ってクソかよPart5
【QBASIC互換!?】FreeBasic【GPL】
【入門】Common Lisp その11【質問よろず】
Visual Studio 2012 Part8
Visual Studio 2008 Part 22
(´・ω・`)人間はプログラムやがな
ドルオタワイ、1からプログラミングを学びたい
Visual Studio 2019 Part3
ゲームプログラムなら俺に聞け33
--------------------
【所沢市内のみ】パチ屋を語ろう。【2軒目】
自分が結婚できたのは奇跡だと思う気団
☆砂岩魂☆サガン鳥栖 第435幕
井上尚弥はなぜ亀田興毅を超えられなかったの
【テレビ】 映画上映中にスマホを使う若者が多すぎ! 羽鳥慎一が激怒 「2時間我慢できないなら映画館に行くな」
好きな人と何したい?何してほしい?Part80
中国地方水泳スレッド
ミュライユ 総合
Kiss×sis キスシス
在りし日の引き込み線、専用線、
東京ヴェルディ実況 vs岐阜
【V系】今年の出来事【2010】
【バーチャル】hololiveアンチスレ#3095【youtuber】
初心者登山相談所77
中国語っぽい日本語で雑談するスレ
【金曜ナイトドラマ】 スミカスミレ 【桐谷美玲】Part8
ホンダの新型フィット、来年2月発売へ 148万円から [851834166]
てすと
【太鼓腹】デブだけどロード乗り 寿司51貫【太脚】
【藤田和日郎】双亡亭壊すべし★8【サンデー】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼