ユーザ用ツール

サイト用ツール


2024:07:04

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
2024:07:04 [2024/07/04 23:20] machiaworx2024:07:04 [2024/07/05 06:41] (現在) machiaworx
行 7: 行 7:
   - 組込み関数の追加   - 組込み関数の追加
   - コンパイルしたデータとサウンドの譜面を紐づける実装   - コンパイルしたデータとサウンドの譜面を紐づける実装
-  - ADSR、フィルタの実装+  - ADSR、フィルタの実装、加えてエフェクトの実装
  
-  * 上記のうち、1.と2.については完了。1.は名前を入力すれば読み込めるようにしたのであとはGUIと処理を紐づければ対応かのう。2.については手こずったけどどうにかした。下記参照。+  * 上記のうち、1.と2.については完了。1.は名前を入力すれば読み込めるようにしたのであとはGUIと処理を紐づければ対応可能。2.については手こずったけどどうにかした。下記参照。
  
 ===== プログラム2 ===== ===== プログラム2 =====
行 15: 行 15:
   * いや何がって、以下の対応。   * いや何がって、以下の対応。
   - スクリプト言語で使うString型とC++のstring型が別物。内容に少し相違があるため違いを理解するのに時間がかかった。言語に紐づいているため、下手に除去もできないけど、かと言って普通のstring型と使い勝手が違うので、どうしても両方使う必要がでてきてしまった。   - スクリプト言語で使うString型とC++のstring型が別物。内容に少し相違があるため違いを理解するのに時間がかかった。言語に紐づいているため、下手に除去もできないけど、かと言って普通のstring型と使い勝手が違うので、どうしても両方使う必要がでてきてしまった。
-  - スクリプト言語のログ出力のタイミングがおかしく、Printf等の関数を実行しないとログ出力がされないという困った仕様。このため、「デバッガのフックが特定の処理実行していないとできない」という謎の挙動してくれやがった。なのでコンソール出力は見えないようにして裏で出力するようにした。処理としては重いんだけど、連続で実行するわけでもないので影響ないと思いたい。余裕があれば削除したい。別の方法でストリームを流す処理ができればいいんだが。 +  - スクリプト言語のログ出力のタイミングがおかしく、Printf等の関数を実行しないとログ出力がされないという困った仕様。このため、「デバッガのフックが特定の処理実行していないとできない」という謎の挙動してくれやがった。なのでコンソール出力は見えないようにして裏で出力するようにした。処理としてはデバイス取得も絡んで重いんだけど、連続で実行するわけでもないので影響ないと思ってる。余裕があれば削除したい。別の方法でストリームを流す処理ができればいいんだが。 
-  - これはどちらのstring型もそうなんだけど、clearやTrimを行っても即座にデータが消えるわけではない(ウィークポインタとかつかってんだろか)ので、staticでもたせてるstringクラスを呼び出そうとしてうまく更新がされないことが発覚したため、メモリ確保消去を自分で行うことにした。 +  - これはどちらのstring型もそうなんだけど、clearやTrimを行っても即座にデータが消えるわけではない(ウィークポインタとかつかってんだろか)ので、staticでもたせてるstringクラスを呼び出そうとしてうまく更新がされないことが発覚したため、メモリ確保消去を自分で行うことにした。ポインタだけ最初確保してnew/delete使う・できる限り全削除等、データが跡形も残らないようにして対応した。List<string>はclear()でうまく削除してくれたが、string単体だと削除してくれないケースもある模様なので前述のnew/deleteで対応した。stringの仕様よくわからん。
-  - そもそもの話として、文字列をうまく開放してくれないケースがあるみたいなので、ポインタだけ最初確保してnew/delete使う・できる限り全削除等、データが跡形も残らないようにして対応した。List<string>はclear()でうまく削除してくれたが、string単体だと削除してくれないケースもあるもよう。よくわからん。+
   - 間違えてスクリプトのソースコードをList<string>で何重にも読み込んでいた。おかげで処理が多重に実行されてログがおかしい出力されて、原因究明に時間を取られた。   - 間違えてスクリプトのソースコードをList<string>で何重にも読み込んでいた。おかげで処理が多重に実行されてログがおかしい出力されて、原因究明に時間を取られた。
  
   * ということで久々に原因が分かりづらいバグで仕事が終わったあとずっと対応してた。5-6時間くらいデバッグしたりサードのライブラリの中身をハックしたりstringの仕様について調べたりしてた。   * ということで久々に原因が分かりづらいバグで仕事が終わったあとずっと対応してた。5-6時間くらいデバッグしたりサードのライブラリの中身をハックしたりstringの仕様について調べたりしてた。
 +
 +===== プログラム3 =====
 +  * MiniScriptのC++版では、Restartという関数が使うことができない。
 +  * IFは用意してあるけど肝心の実装がなかった。ソースコードを読んで発覚した。
 +  * こちらで作ってPR上げようかと思うくらいだが、スタックを戻す方法を調べてからの方がよさそうだ。
 +  * どうもC#だとスタックの位置を別関数で戻す処理を入れてしまってるらしい。
 +  * ただC++ではスタックは配列にしているため、雑に配列の数値指定してあげて、みたいなのでもよさそうな気がしてる。
  
 ===== プログラム参考資料 ===== ===== プログラム参考資料 =====
行 29: 行 35:
   * https://code-database.com/knowledges/104   * https://code-database.com/knowledges/104
   * https://captain-cocco.com/cpp-stl-std-string-class/   * https://captain-cocco.com/cpp-stl-std-string-class/
 +  * https://marycore.jp/prog/cpp/concat-append-string/#%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E9%80%A3%E7%B5%90%E3%82%B3%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
 +  * https://www.wabiapp.com/WabiSampleSource/windows/stdout_change.html
 +  * https://jp-seemore.com/iot/26039/
 +  * https://cpprefjp.github.io/reference/ostream/flush.html
 +  * https://www.glfw.org/docs/3.3/window_guide.html
  
  
2024/07/04.1720102840.txt.gz · 最終更新: 2024/07/04 23:20 by machiaworx