インターネットラジオ「らじるれ郎」開発記録 (22)

ううう「らじるれ郎」です
3
戸田プロダクション @TodaProduction

朝から TBASSRecorder を WASAPI 対応版に書き換える作業で大苦戦中。 pic.twitter.com/NjINHVeRF5

2021-12-24 15:48:38
拡大
戸田プロダクション @TodaProduction

これまで新らじるれ郎の簡易録音は Windows の「ステレオミキサー」を録る仕様だったが、ステレオミキサーが無効でも録音出来るよう、入力デバイスを WASAPI 経由で取得してすげ替える…という改造をしている (つもり)。苦労の末 なんとか WAV だけは録音出来たが、他のエンコードが全然上手くいかん。

2021-12-24 15:51:22
戸田プロダクション @TodaProduction

ううう、その後ようやく MP3, FLAC, OGG, OPUS, WMA エンコードにも成功し、WASAPI 経由で取得した録音デバイスの中から任意のデバイスの音を録れるところまで漕ぎ着けたが、ここで「想定外の問題」が発覚したため、やむなく断腸の思いで TBASSRecorder の WASAPI 対応を断念せざるを得なくなった。

2021-12-24 22:51:16
戸田プロダクション @TodaProduction

想定外の問題とは以下2点 1.録音レベルメータ値がどうしても取れない 2.起動時、及び毎回のチャンネル切替時、音が鳴り始めるまでに何故か異様に長い時間がかかるようになった エンコードに成功した時の喜びは「ぬか喜び」だった。すべての修正を元に戻してビルドし直した。む…無念だ (>_<;)。

2021-12-24 22:57:02
戸田プロダクション @TodaProduction

昨日 丸1日かけたのに想定外の問題発生で断念せざるを得なかった WASAPI 対応、悔しくて悔しくて今日もう一度最初から挑戦してみたが、やっぱり昨日と同じところでつまづいた (>_<;)。しかし、もう駄目だと痛感した時にある「とんち」が閃き、ななんと! WASAPI 無しで録音デバイス切替に成功した!

2021-12-25 23:43:18
戸田プロダクション @TodaProduction

ううう、本当にこれで良いのか? なんだか狐につままれたみたい? BASS_RecordInit に失敗しても、続けて BASS_RecordGetDeviceInfo すれば録音デバイスリストだけは手に入る。リスト列挙し、録りたいデバイス番号を選択し、その値を次回から BASS_RecordInit に渡せば WASAPI 無しで BASS が使える!

2021-12-25 23:50:39
戸田プロダクション @TodaProduction

少なくともうちの「ステレオミキサー」を無効にした環境で、初回エラー発生ののち、録音デバイスを選択してらじるれ郎を再起動させると、今度はエラー発生することなく普通に録音出来た! 面倒な WASAPI 対応一切無しに既存 BASS_RecordStart が動くとか信じられない! もっと落ち着いてテストしよう。

2021-12-25 23:57:22
戸田プロダクション @TodaProduction

ううう、朝イチからもう2時間近くテストしてるけど、どこにも悪いところは無さそうに思える (^_^;)。 pic.twitter.com/nJWeN1TEKE

2021-12-26 09:37:57
拡大
戸田プロダクション @TodaProduction

今月2回め、今年最後の西寒多神社周遊コース。お賽銭100円玉1枚投げて、神さまに今年の色々なお礼と来年のお願いごとをしてきた。しかし…さすがに今日は冷えたなー (>_<;)。 pic.twitter.com/xlyK4gXNTT

2021-12-26 13:18:16
拡大
戸田プロダクション @TodaProduction

ううう、西寒多神社までお参りして帰ってきたら嬉しいお知らせメールが届いていた。実はある方にテストをお願いしていたのだが、録音デバイスを BASS 単独で動的切替する方法がその方の環境でも正常に動作したとのこと。これでようやく一安心出来た。どうも大変有り難うございました! > ある方

2021-12-26 13:58:34
戸田プロダクション @TodaProduction

ステレオミキサー前提ソフトを作り、WASAPI 対応に挑戦し、WASAPI 対応に挫折し、改めて再度 WASAPI 対応に挑戦し、同じところでまた挫折し、そのあと閃いた「とんち」を試したらステレオミキサー無しでも動き始めた…自分でも何言ってるのか?よく判らないが(^_^;)、まぁ 結果オーライということで。

2021-12-26 14:04:01
戸田プロダクション @TodaProduction

BASSWASAPI24 が無くても録音デバイス切替が可能になった (つーか BASS24 はもともと単独で WASAPI 対応していた) ことが判明したので、今日はその前提で再度 TBASSRecorder のコードを綺麗に書き直した。いくつかのファンクションやプロシージャも外出しして公開、結構使い易いクラスになったと思う。 pic.twitter.com/Bk3jMisRca

2021-12-27 17:03:35
拡大
戸田プロダクション @TodaProduction

ドキュメントには BASS_RecordInit(-1) の -1 は「デフォルトデバイスの初期化」とあるが、これはステレオミキサーが有効な前提での「デフォルト」であって、決して「現在の」デフォルトという意味ではなかった。現在の録音デバイスは BASS_RecordGetDeviceInfo の DEFAULT ではなく INIT で判断可能。 pic.twitter.com/8Ei40FUhLl

2021-12-27 17:08:47
拡大
戸田プロダクション @TodaProduction

TBASSRecorder 側を書き直したら、当然らじるれ郎側もそれに対応する部分を書き直さなきゃならない。手間がかかるが、クラス設計とアプリ実装をごっちゃにして同時進行させてるんだから仕方あるまい。おかげで環境設定画面で録音デバイスを変更したあと「中止」を押した時の戻し漏れバグが見つかった。 pic.twitter.com/HHb8BFbwny

2021-12-27 17:13:44
拡大
戸田プロダクション @TodaProduction

今頃になって MessageDlg の仕様確認にハマってる (^_^;)。 pic.twitter.com/WOYIh7UH8d

2021-12-28 13:17:14
拡大
戸田プロダクション @TodaProduction

もう20年以上も自作のダイアログボックスを使ってきたからな。こんなに組み合わせの種類が多いとは知らなかった。

2021-12-28 13:21:53
戸田プロダクション @TodaProduction

Delphi 10.4 の新機能 : Code Insight の再設計 blogs.embarcadero.com/ja/new-in-delp… ずいぶん前にこの記事初めて読んだ時にはあんまりピンと来なかったが、今年の夏からどっぷり本格的に Delphi 10.4.2 CE 版を使い始めて、改めて Code Insight の凄さに驚愕している。もうこれ無しじゃコード書けないほど w。

2021-12-29 12:39:17
戸田プロダクション @TodaProduction

ただ、ほんの少しだけ不満もあって、コード書いてる途中でエラーインサイトで波線表示されると途端に「;」と「:」の見分けがつかなくなっちゃう。あと文字列書く時例えば「(’’)」まで書いたあとのカーソル位置が何か変でしっくりこなかったりする。「(文字列’’)」とか書いちゃうと大変 (^_^;)。

2021-12-29 12:46:33
戸田プロダクション @TodaProduction

録音時に切り替えるアイコンを作り変えた。左が (旧) アイコンで右が (新) アイコン。(新) は余りにも真っ赤っかでどうか?とも思うが、アイコン化されて小さくなると (旧) よりは少しだけ綺麗に見える (つーか、(旧) が汚く見えすぎるわけだが…(^_^;))。 pic.twitter.com/CUWMnoC5Zr

2021-12-29 15:57:29
拡大
戸田プロダクション @TodaProduction

最後の追い込み。 環境設定「録音1・2」に関連するコードを徹底的に整理整頓して書き直した。タブオーダー順番調整、オプション展開の順番調整、電源オフ時、オン時、録音中時の Enabled 指定を厳格化、録音中の視認性向上?等々。録音中にデバイス切替を無効にする考慮が漏れていたので修正済み。 pic.twitter.com/RsDIOiZPBU

2021-12-31 01:24:51
拡大
戸田プロダクション @TodaProduction

「録音中もミュートを押せるようにして欲しい」とご要望を受けたので、迷いながらも一応実装してみた。環境設定に「録音中の音量変更を許可する」を追加。チェックするとミュートとボリューム変更が可能になる。デザイン重視で?音量変更スライドバーは経過時間表示窓にマウスオーバーしたら表示切替。 pic.twitter.com/1bw1V8CaWn

2021-12-31 14:37:05
戸田プロダクション @TodaProduction

しかしなぁ…。「録音中にミュートを押せる」ってことは「ミュート中でも録音ボタンを押せる」ってことだよなぁ? そういう危険な?操作を許して良いのか? まだちょっと決心がつかない。あとミュートかつ録音中のアイコンは一体何色に変更したら良いのか?等々。ご意見頂戴出来れば幸いです > 某氏。

2021-12-31 14:43:50
戸田プロダクション @TodaProduction

あれこれ考えて新たに「録音中かつミュート中」アイコンを追加した。通常、ラジオパネル表示中なら別に必要無いアイコンかも知れないが、らじるれ郎を最小化してタスクトレイに入れた時はやはりこのアイコンが無いと見分けがつかない。 pic.twitter.com/hSCngfZWAt

2021-12-31 16:54:31
拡大
戸田プロダクション @TodaProduction

年の暮れに「録音中にミュート」が可能になるよう実装したが、その後あれこれ考え逆パターン「ミュート中に録音開始」はあえて出来ないようガードをかけた。上から順に 1.再生中 2.録音中 3.録音中かつミュート中 (録音「停止」ボタン押下可) 4.ミュート中 (録音「開始」ボタン押下不可) pic.twitter.com/CDKFSxXQRl

2022-01-02 22:00:42
拡大