見出し画像

キーイング 音のプログラム作成挑戦記(KCSとRTTY)

 初級者がプログラムの作成に挑戦する記事の第三段の第二回です。前回に続き今回ものプログラムです。
 今回は、0と1からなるデジタルデータを二つの(スペースとマーク)に変換するプログラムを作成しました。プログラムには、前処理としてテキストをデジタルデータに変換する機能も実装されています。

プログラムの目的

 今回のプログラムを作った理由は、ピロピロと音を鳴らしながらコンピュータを動かしたくなったからです。動かす内容としては、以下の二つを考えていました。

・パスワードの入力
課題
 SNS等にログインする際に、パスワードを手で入力するのが面倒くさい
解決策 
 予めマイコン等にパスワードを記憶させる。パスワード入力時には、マイコンからパスワードを音で流すと共に、その音をPCで拾って文字に変換、入力する。かっこいい!

・シリアル通信
課題
 シングルボードコンピュータ等にシリアル接続する際に、有線ケーブルの取り回しが面倒くさい
解決策
 シリアル通信の内容を音に変換/逆変換して、音で通信する。素敵!

 残念なことに、両方の案ともに致命的な問題があることに気付きました。そのため、途中で制作意欲が殺がれてしまいましたが、それまでの作業結果を捨てるのも惜しく、ひとまずは完成させることにしました。
 ちなみに、致命的な問題とは、音でパスワードが駄々漏れというセキュリティの問題と、半二重伝送を実装する能力が(私には)ないという技術的な問題です。

プログラムの機能

 今回のプログラムは、大きく分けて二つの処理からなります。一つは、文字を符号化(デジタル化)する処理であり、もう一つは、デジタルデータを音に変換する処理です。

符号化の処理
 本プログラムでは、符号化に際して、テレタイプの文字体系を使用しています。具体的には、使用可能な文字体系は、英数字を5ビットで符号化するITA-2と、英数字と仮名文字を6ビットで符号化する加入電信です。

音変換の処理
 本プログラムでは、デジタル変調の一種であるFSKを使用しています。変調とは、元の信号をより高い周波数の信号へと変換する処理のことです。本プログラムでは、デジタルデータのビットストリームを方形波の信号として捉え、それを音に変調します。

 以上の処理を組み合わせることで、本プログラムは、無線テレタイプ(RTTY)のための信号(AFSK)と、カンザスシティースタンダード(KCS)の信号(符号化処理なし)とを生成することができます。
 なお、信号の逆変換については、前回と同じく改良Goertzelによる復調(と後処理の復号化)を行っています。

苦労したところ

電電公社の加入電信
 一般に、無線テレタイプ(RTTY)では、英数字しか使うことができません。これは、文字コードにITA-2が用いられているからです。
 それならば、仮名文字も使える文字コードを用いれば無駄に独自性がだせるのではないかと、スケベ心を抱きました。
 そこで、仮名が使える文字コードを調べました。仮名文字コードには、電電公社の加入電信と国鉄の印刷電信との二つがありました。
 国鉄の印刷電信は内部向けであり知名度が低いので、加入電信を使うことにしました。しかし、加入電信にしても、公開された情報がほとんどなく、情報を集めるのが大変でした。

まとめ

反省その1
 今回の題材は、ソフトウェア向けではく、ハードウェア向けだったのかもしれません。信号処理のような題材は、ICやディスクリート部品などを駆使してこそ面白い記事になるのでしょう。PCを使って力技で実装したのでは興醒めもいいところです。ヘリで山に登るが如しです。

反省その2
 また、音を題材にしたプログラミングは、noteとの相性がよくないのかもしれません。
 なぜなら、一つの題材に対して記事が二つ(作成記事と音声記事)に分かれてしまうからです。音声も、動画のように記事内に埋め込みをできればよかったのですが!

 今回は、色々と反省すべきことが多かったです。
 ただ、出来上がったピロピロ音は、何だか近未来な感じがして、とても良いです。あとは、紙テープ鑽孔機があれば言うことないです(あの騒音の塊を部屋に置く気にはなれませんが...そもそも100Vで動いたっけ?)

今後の予定

 音のプログラムはもう飽きました
 なので、次回は、画像のプログラムを作りたいと思います。
 もしくは、「プログラムの目的」のところで書いたパスワードを自動入力するためのプログラムか、無線でシリアル接続するプログラムを作るかもしれません。

古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。