ユーザ用ツール

サイト用ツール


2024:07:21

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
2024:07:21 [2024/07/21 20:58] machiaworx2024:07:21 [2024/07/22 02:12] (現在) machiaworx
行 1: 行 1:
 ===== プログラム ===== ===== プログラム =====
   * ライブコーディングツールの進捗   * ライブコーディングツールの進捗
-  - サンプリング再生機能\\ 実装ずみ+  - サンプリング再生機能\\ 再生バッファに枠を確保ずみ、サンプリングデータを引っ張ってくる処理はまだ。
  
   * 二次機能   * 二次機能
行 20: 行 20:
  
 ---- ----
-  * オーディオとのバッファ遅延については短縮することができた。+  * オーディオとのMIDIの再生遅延による演奏乱れについては軽減することができた。
   * Play状態の間にバッファを噛ませることにして、一定秒数以上経過したら改めてバッファを進めるようにした。   * Play状態の間にバッファを噛ませることにして、一定秒数以上経過したら改めてバッファを進めるようにした。
-  * ただ、これだと発音自体は行っているけどシーケンス自体が進まない状態になってしまうので、ちょっと遅延やノイズが出るようになってしまった。もう仕方ないかな。 +  * これだと発音自体は行っているけどシーケンス自体が進まない状態になってしまうので、ちょっと遅延やノイズが出るようになってしまった。これ対応済み。 
-  * もう1個状態を入れてしまうとうのは手はある。 +  * 細かく指定を入れていくこでどうにかなっきた。 
-  * これ行うかどうかは正直どちでもいい気がしてる。あくまオーディオとサンプリング遅延を補正する手段なのでMIDIには関係ない。 +  * ただ、管理別にしてしまた弊害として、MIDIとオーディオで同期が取れななってきてしった。\\ 流石に、オーディオとMIDIでイクル半分フレーズがズレてきたのには笑ってしまった。 
-  * ・・・思ったけどMIDIの再生は関係なので、これおかしくね?って思った。拡張が必要+  * ということであまり意味がないのかもしれないけど、バッファ更新タイミングでオーディオとMIDIのシーケンス位置て同期を取ることにした。これで再生が大きくおかしくなるのは避けられる
  
 ---- ----
-  * 管理を別てしった弊害として、MIDIオーィオ同期取れなってきてしった。 +  * また、MIDIの1個目の譜面が再生されないバグがあった。\\ 最初はデータが間合っないとかかと思ったけど、タイミングの調整を導入たら明らかに間に合ている状態で再生されないめ、これはおかいと調査を開始。 
-  * 流石にディオとMIDIでサイクルの半分フレーズがズレたのには笑ってしまった。 +  * 原因はなんことはない「再生可否を確認するこなくータを再生する一択」の処理になっていたことが原因だった。\\ このため、停止を行っても少しバッファが進んいる状態でしかも1個目のデータ停止するのに鳴っている状態だった。 
-  * といことあまり意味いのかもしれないけど、バッファ更新タミングオーディオとMIDIのシーケンス位置つい同期を取ることにした。これで再生が大きくおかしなるのは避けられる。+  * 再生フラグをしっかり確認して鳴らすようにしたら回避可能にった。 
 +  * かり完成度が上がってきてる。なかなか楽い。 
 + 
 +---- 
 +  * 追加 
 +  * 上記の多重化のおかげで、別のタイミングで再生情報が初期化されるバグがあったので除去してた。多分1時間くらいかかった。 
 +  * デバッグは通常の処理に加えコールバック処理最初・最後にブレークポイントやprintfを引っ掛け、タイミングを確認する状態になっ。 
 +  * 今までで一番厄介なバグだった・・・そこまで蓄積がなければ泥沼にはまっはず 
 + 
 +---- 
 +  * ノイズを低減させるために以下の資料を読み込んでみよ 
 +  * https://postd.cc/four-common-mistakes-in-audio-development/ 
 +  * メインスレッド言語のコンパイル処理挟まってで、こはやべえなと思って、マルチスレッド構造にしてコンパイル処理を別スレッドに流すようにした。 
 +  * メインスレッドはGUIでファイル参照の心配はほぼないんだけど、コンパイルするときにファイル読んから行うようので、GUI側でメモリ確保が挟まってしまうこと考えると、マルチスレッドにしておいたほうが安全かなと思い始めた。 
 +  * デバッグが大いけど、基本的にはデータサーバ処理は別物にしているので、どうにかなと思いたい 
 +  * で、Releaseでデバッグしてみたところ、うまくスレッド周りが終了しないことが発覚。何かと思ったら最適化によって正常に動かなくなっていたという。 
 +  * https://ameblo.jp/super-hk/entry-12678708771.html 
 +  * 危なかった・・・(汗
2024/07/21.1721563088.txt.gz · 最終更新: 2024/07/21 20:58 by machiaworx