a1a_gen(A1A generator)についてのメモ。
31-Jan-2026に文字の出現率を変化させたことで1分間あたりの文字数がどれくらいになるかベンチマークを取ったものの、結果が出るまでに随分待たされるのでa1a_genの高速化を試みています。そりゃまあ、その都度波形を生成していますし、1サンプル毎にfputc()を呼んでいては遅くて当然。
トーン生成部分はGPIOを操作するケースも想定し、outfunc(bool on, int64_t usec)で呼び出すような作りにしています。on, usecの組み合わせは数パターンしかないので生成したトーンをキャッシュしておき、これをfwrite()で書くような作りにすれば多少は速くなりそうです。実際、実行時間を1/4程度まで短縮でき、生成結果も改造前と相違ありません。そのうちmasterブランチにマージしておきましょう。
♪
モールス符号を鳴らすプログラムって簡単でしょ?そう思っていた時期がありました。
でも実際に書いてみると、文字間の処理がかなり厄介に思えます。あのコード、結構面倒臭いことをやっているという自覚はあって…もう少し書きようがあるんじゃないですか?と聞かれてしまうと返す言葉もありません。
どれくらい面倒臭いかというと、解説のための文章を書こうとして途中で挫折するくらいのレベルです(今回の表題はその名残です)。複数の空白を一つにまとめていたり、<>で括られている部分は文字間を1点とする処理(BT等への対応で使います)はともかく、先に文字間ないし単語間の空白を作ってから文字を組み立てるのはどうしてそういうコードを書いた、自分?と困惑しています。
なんとなくですが、次に来る文字を予測できない以上、前にある文字を利用して空白の長さを決めるとか、そんなことを考えていたような気がします。56.0kg(23:20)













