サウンドプログラミング6 [無断転載禁止]©2ch.net

1デフォルトの名無しさん2016/01/04(月) 16:42:19.79ID:tGIZuuwU
落ちていたので立てました。
テンプレ等はお願いします。

133デフォルトの名無しさん2017/05/03(水) 20:04:27.68ID:qGc238z1
>>129
一部だけ計算するという理解でOK
DFTもFFTも波形の周波数特性(振幅+位相)が得られる。

DFTフーリエ変換の定義式どうり計算するだけ

あとはサンプリング分解能(サンプリング周波数÷サンプリング数)を上手く選べば所望の値が精度よく得られる

1341252017/05/04(木) 14:56:15.76ID:FfjpCVh7
>>133
少しイメージできた、ありがとう。DFTを使って一部を抜き出すとしたら目標とする周波数の付近のみ
DFT結果に相当する波形を生成しそれらを合成するという手順でいいのかな?

ただしDFTだとどうであれある程度の時間分を計算をする必要がありますよね
原理的に周波数分解能と時間分解能の両立はできないと思っているのですが何か改善策はあるのでしょうか?
昔別件でFFTの使用を検討したことがありますが上記の課題を解決できずに棚上げになっています

135デフォルトの名無しさん2017/05/04(木) 15:19:20.97ID:pmL645Ea
>>134
>原理的に周波数分解能と時間分解能の両立はできない

そうだよ

136デフォルトの名無しさん2017/05/04(木) 20:05:30.63ID:N4OE9pV/
>>135
いやいや横割で何言ってんの?
どうせ不確定性定理のことを言ってると思うけど窓フーリエも何もやってない。周波数一点狙い縛りのときは格段に精度がよくなることを知らないな?

>>134
FFTと違ってのサンプル数2^n縛りみたいな制約が無いんだよね。だから周波数分解能の選択に自由度がある。

あとはDFTの計算さえ間違わなければ、所望の値が求まる。計算コストはNオーダー。

137デフォルトの名無しさん2017/05/04(木) 20:20:29.59ID:N4OE9pV/
例えば1000Hzの音を拾いたいとき、周波数分解能が19Hzだったりすると1000Hzが正確に拾えない。周波数特性をグラフにプロットすると、1000を中心にして根元周辺に連続的な山ができる。

周波数分解能が1000の約数だと、周波数特性グラフは根元の山はなく、一点だけのピークができる

1381252017/05/05(金) 00:28:15.86ID:ayKeenIH
自分の中での整理もかねて・・・また長くなってすみません
話の発端
ttp://uploader.purinka.work/src/1074.png
この中から必要な音だけを抽出したい
このサンプルは音声ですが必ずしも音声とは限らないです、楽器音の消去・修正なども考えています
オレンジ色の線が基準と思われる周波数を線引きした物です
音声の場合は倍音も必要なのでこの周波数で櫛歯状のフィルターを駆動すれば欲しい音だけ得られるのではないかと考えた
簡単に櫛歯状の通過特性を得られるFeedback型のCombFilterを組んで実験してみたのが>>129の時点
ただし強く掛けるとケロってしまい満足のいく品質には届かず
その原因を推測
1.通過する帯域が狭すぎる?
2.実際の周波数とフィルターを駆動している周波数にズレがある?
3.フォルマントを無視しているせい?

1 これを解決しようと思ったらDAWなどに付いてくる通過周波数と減衰量を自在に設定出来るEQ的な物を用意するしかない?(が、作り方が判らない)
2 この手の解析には通常FFTを用いるけど原理的に周波数、時間ともに少なからぬ誤差が発生する。解決法はない?
3 通過周波数を自在に設定出来るEQ的な物がないと検証すら出来ないのでとりあえず棚上げ。規則的なフィルタを使う限りは解決不可

もう少し細かく制御できそうなBPFでやってみたのが>>132。予想に反してイマイチでボツ
で、現状手詰まり中・・・BEFで間を抑制してみる?ただし帯域と抑制量を個別に制御できないと上手くいかなそうな気がするし作り方も判らない

>>136-137
DFTについて理解が乏しいので変なことを言っていたらすみません
処理する信号が1KHzでサンプル長に1msecかその倍数を選択して1KHzを目標にDFTする?と1KHzに相当する振幅と位相が高い選択度で得られるって話ですよね?
シグナルジェネレータで1秒の1KHzの信号を作ってそれに対して1KHzを目標として処理するならばそのようなことも可能だと思いますが
人工的に処理に都合の良い信号を作らないかぎりそのような状況はまず無いと思うのですが・・・
現実には関連する要素に少なからぬ誤差が含まれていると思われますし

139デフォルトの名無しさん2017/08/29(火) 22:25:30.02ID:gHVKpw9z
.NET Frameworkで使用可能なALAC形式を読み書きできるライブラリを
ご存知ないでしょうか?
16-32bit/44.1-384kHzに対応しているものが希望なのですが。

140デフォルトの名無しさん2017/08/30(水) 15:58:33.02ID:k18dHHY7
githubにある ALAC.NET どうかなあ

141デフォルトの名無しさん2017/08/30(水) 20:38:17.85ID:lUUDwXpa
>>140
ありがとう。
デコードはできそうな気がするけど、エンコードはできないように見える。

142デフォルトの名無しさん2017/09/05(火) 21:23:31.36ID:bvinrZZw
>>140
残念ながら24bitまでで32bitには対応していませんでした。

143デフォルトの名無しさん2017/09/06(水) 19:57:18.50ID:R1m3VeE2
元はjavaみたいだな、javaも同じ仕様なんかな

144デフォルトの名無しさん2017/09/07(木) 21:00:07.22ID:UN1jZKf9
>>140
ALAC.NET自体は24bitまでしか対応していませんが、修正して32bit Integerに対応させる事ができそうです。
refalac.exeでエンコードした32/352.4をデコードしてバイナリ一致する事が確認できました。
ありがとうございました!

145デフォルトの名無しさん2018/01/06(土) 04:18:21.79ID:PT8U+FhC
音の加工についてプログラムの観点から理論で解説してある書籍かサイトないですか?
例えば、何をどうすればエコーがかかるとか、何をどうすればライブ会場みたいな響きになるとか。
PCMを加工する形で遊んでみたいのですが、とっかかりがなくて困っています。
プログラミングに関してはメジャーな言語を数種類自在に使える職業エンジニアなので大丈夫です。

//スマホのアプリで、普通の音楽をライブ会場風に加工して再生してくれるやつありましたよね。
//あれには大変驚いたとともに、知識があればこんなものが作れるのかと感動し、自分も何か作れないものかと思いました。

146デフォルトの名無しさん2018/01/06(土) 08:53:09.43ID:oCunP7AG
「サウンドエフェクト プログラミング」でググると、理論解説した書籍やプログラミング方法を解説したサイトが出てくる

147デフォルトの名無しさん2018/01/06(土) 11:48:42.37ID:HbY4/bGY
すべてサンプルコードつき
http://floor13●sakura●ne.jp/book03/book03.html
http://floor13●sakura●ne.jp/book06/book06.html
http://floor13●sakura●ne.jp/book07/book07.html

1481452018/01/06(土) 14:31:29.37ID:PT8U+FhC
>>146-147
ありがとうございます。
調べてみます。

149デフォルトの名無しさん2018/01/06(土) 17:52:06.99ID:nSHs9ovb
漏れは、YouTube みたいに、再生速度が速くなったり遅くなったりするのに、

音程が上下せず、一定にできる秘密を知りたい

150デフォルトの名無しさん2018/01/06(土) 19:26:02.15ID:pihwbQY3
このスレでそういうの書いて欲しい。

151デフォルトの名無しさん2018/01/06(土) 19:40:24.51ID:vOSbfzhE
秘密もクソもあるかい
CDだって早送りしてもピッチは変わらないだろ
アナログみたいに周波数を上げるのではなくて、データを適当に間引くだけだし

152デフォルトの名無しさん2018/01/12(金) 15:11:49.38ID:m9zGguBs
データ間引いて再生したらピッチ上がって聴こえるんじゃないの?

153デフォルトの名無しさん2018/01/12(金) 15:44:55.85ID:eulbZZ1c
聞こえませんよ

154デフォルトの名無しさん2018/01/12(金) 16:14:13.87ID:8pSCsnoo
データを間引くというのは、要するにサンプリングレートを落とす(ダウンサンプリング)ということですよね?

155デフォルトの名無しさん2018/01/12(金) 16:15:34.71ID:8pSCsnoo
あ、全然違いますね。
スイマセン、独り言でした。

156デフォルトの名無しさん2018/01/12(金) 16:50:12.64ID:PeQANayZ
1000Hzのサイン波を倍速再生する場合で考えると、
1秒間で1000個あるサイン波を(1周期で1個と数えたとして)
アナログの場合は、物理的な速度アップの操作(レコード盤なら回転を速めるとか)によって
0.5秒間で1000個分を再生する = 2000Hz

CDの早送りの場合は、1000個の内、例えば100番台(100~199),300番台,500番台,700番台,900番台を間引いて詰めるような感じ(飛び飛びで再生する)
0.5秒間で500個なので1000Hz、ピッチは変わらない
Youtubeなども同様。ピッチが変わらないようにやってるというよりは、CPU負荷軽減のために大雑把に処理してるだけ

157デフォルトの名無しさん2018/01/12(金) 23:21:24.63ID:8O0cBOUn
YouTubeもそうか?間引いているようには聞こえないけど

158デフォルトの名無しさん2018/01/13(土) 01:24:22.04ID:alKQWrZk
なるほど、間引く間隔が大きいんだね
1〜数サンプル単位で間引くイメージで考えてた
そんなに不連続ならクリックノイズ対策要りそう

159デフォルトの名無しさん2018/01/13(土) 15:34:24.07ID:CUARXt4D
間引くより平均の方がよくね?

160デフォルトの名無しさん2018/01/18(木) 22:31:15.67ID:79DIpC1c
https://github.com/yeisapporo/rx62n-pwm-music-player
嗤え、自分はこの程度が限界だ
FM音源なんてさっぱりだよ

161デフォルトの名無しさん2018/01/19(金) 12:37:05.16ID:xkA2S8go
えらい古いの持ってきたな
なんでいまさら?

162デフォルトの名無しさん2018/01/21(日) 15:49:26.17ID:CmxK2CBl
>>149
https://blogs.msdn.microsoft.com/windows_multimedia_jp/2009/03/03/1063/

これとは別にピッチ変更してからサンプリングレート変換してタイムストレッチの実現とかをしたことがあったな、
重すぎでプレーヤに乗っけられんかったが

163デフォルトの名無しさん2018/01/22(月) 14:40:50.33ID:MclXUrRv
データを1/2に間引いたのなら周波数はあがるだろう、早送りが高い音になるのと同じように
データを間引いても周波数が変わらないようにするには、どうすればいいかな?

164デフォルトの名無しさん2018/01/22(月) 16:14:39.45ID:kpT2paXp
>>163
数100msec単位で再生して間引いてクロスフェード

165デフォルトの名無しさん2018/01/25(木) 11:10:34.40ID:zPND7U3x

166デフォルトの名無しさん2018/01/28(日) 16:16:58.69ID:cgdhBoSx
16bitモノラルのPCMを8bitにするには、
配列に入っている各データを右へ8bitシフトさせればいいんですよね?
言語はJavaです。
byte[] b = new byte[raw.length]; // rawはshort型の配列でPCMのデータが入っている
for(int i=0;i<raw.length;i++){
  b[i] = (byte)(raw[i] >>> 8);
}
上手く再生されなくて問題の切り分けをしたいので
まずここだけ合ってるか教えてください。

167デフォルトの名無しさん2018/01/28(日) 17:22:59.74ID:Zu0i2wvf
>>>論理シフト
>>算術シフト
あってそうだけど
念のため
(byte)(0x0ff & (raw[i] >>> 8));

1681662018/01/28(日) 18:34:05.34ID:cgdhBoSx
>>167
ありがとうございます。
念のために上位の8bitを0で埋めるんですね。
頑張ります。

169デフォルトの名無しさん2018/01/28(日) 18:42:17.08ID:uuTAMxHG
>上手く再生されなくて問題の切り分けをしたいので

小出しはよくない

170デフォルトの名無しさん2018/01/28(日) 21:36:22.98ID:bYI12Lat
右へ8bitシフトって/256で良いんじゃないのか?

171デフォルトの名無しさん2018/01/29(月) 04:44:46.37ID:7znYjzbE
問題はそこじゃないとおも

172デフォルトの名無しさん2018/01/29(月) 19:32:12.54ID:SlQpy0Cj
javaは知らないけど、奇麗な割算なら、コンパイラーが勝手(最適化適応時)にシフトに変換するんでは?
人間が分かりにくいように書く必要はない。

173デフォルトの名無しさん2018/01/30(火) 13:33:57.21ID:3LqhIh8a
分かった、負の数をシフトしたことによって、頭が0で埋められて違う値になった。

174デフォルトの名無しさん2018/01/30(火) 18:15:31.85ID:zy+7iaPq
ushortじゃないのか

175デフォルトの名無しさん2018/01/31(水) 19:40:34.67ID:gdwfqjyj
16bitモノラルのPCMを8bitにする場合、
お前らならどんなコード書くんだ?

176デフォルトの名無しさん2018/01/31(水) 20:18:03.93ID:nO9Gksn3
Cでバイナリごりごり

177デフォルトの名無しさん2018/02/16(金) 06:41:48.64ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

178デフォルトの名無しさん2018/02/20(火) 21:36:32.32ID:4B02mjKW
確か8bitフォーマットはunsigned扱いだよ
だから (raw>>8)+128
音に限らずよくトラブルになるやつ

179デフォルトの名無しさん2018/05/12(土) 11:03:12.89ID:pDgCeBjY
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/

180デフォルトの名無しさん2018/05/23(水) 20:33:47.20ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

6D9QH

181デフォルトの名無しさん2018/05/24(木) 01:23:59.85ID:fftgGS82
空中元素固定装置

182デフォルトの名無しさん2018/05/24(木) 23:41:53.62ID:xmDpqFfV
すみません教えてください
マイコンなどのPWMで、ピーとかポーとかは鳴らせるのですが、
ピンとかポンのように弾む感じの音を作ることはできるのでしょうか?
マイコン以外に何か回路が必要ですか?
波形としては時間が経つにつれて振幅が減衰すると言えばいいでしょうか・・・

183デフォルトの名無しさん2018/05/25(金) 00:02:36.15ID:Wenrq1RR
短時間のクロックを立ち上げてフィルタに入れればプッとかポッて音にできるよ

新着レスの表示
レスを投稿する