自作のFMラジオ予約録音ソフトに「見えるラジオ」機能を追加する

Radio

以前製作したFMラジオ予約録音ソフトのユーザーインタフェースを変更して、「見えるラジオ(=現在の番組名や出演者の文字表示)」機能を追加しました。

他に使いにくいなと思った部分を変更していくと、別物レベルに変わってしまいました。

※ラジオ予約録音ソフトのダウンロードはこちらから

(ご注意)本ソフトは随時更新しており、最新バージョンのみの配信としています。改修項目の詳細はソフト内の来歴(txtファイル)を参照してください。また本ソフトの利用には市販USB無線チューナー(RTL2832が実装されたもの)が必要ですので、別途お買い求めください。

画面仕様(GUI)の刷新

受信周波数を指示する方式から、チャンネル名をボタンクリックする方式にユーザーインタフェースを刷新しました。また同時に各種機能の増強や不備を修正しました。

  • 受信放送局の表示:iniファイルにチャンネルの情報を記載することで、放送局をGUIボタンで選択できるようにしました。背景色もiniファイルで選択できるようにし、従来放送(90MHzまで)とワイドFM放送(90MHz以上)を見分けられるようにしました。
  • 予約曜日をラジオボタン化:曜日設定ラジオボタンにしました。これにより設定作業がより簡素化しました。初期値は日曜日です。
  • 「聴く」「予約」の配置の見直し:よく押し間違えましたので、番組表追加に伴い間隔を開けました。これにより誤入力が激減しました。
  • 現在の番組表表示を追加:2016年で終了した見えるラジオという現在の放送内容を表示する機能をネット受信にて番組表を表示する形で再現してみました。番組名と出演者がすぐ分かるようになるので結構快適です。

番組表の表示機能を追加

インターネットよりradiko_v3 APIをxml形式で受信し、GUIに現在の番組を表示できるようにしました。表示内容は番組名と出演者のみです。

番組表受信に使うradikoのAPIバージョンはv3です。受信チャンネル名は都道府県ごとに分けて配信される仕様であるため、iniファイルで設定します。

radikoから受信するxmlファイルの番号部分(JP13.xmlの13)は、お住まいの都道府県により番号が異なる仕様です。都道府県番号は、都道府県の番号は総務省のHPより参照できますので、適宜設定してください。

# radiko 受信ファイル tokyo:13 osaka:27 
data5 = http://radiko.jp/v3/program/now/JP27.xml →大阪はJP27
# data5 = http://radiko.jp/v3/program/now/JP13.xml →大阪はJP27

本プログラムはアナログ放送の受信ソフトのため、インターネットが繋がっていない場合を考慮する必要があります。そのため、この番組表を受信にxmlファイルの解析と抽出をする独自関数を作成し、ネット番組表欄に「受信出来ません」と表示します。

radikoの配信仕様に変更が生じた場合は、正しく表示できなくなると思われますので適宜修正する予定です。

ごく稀ですがファイルが中途で途切れると解析でエラーとなりプログラムが異常終了することがあります。作者の環境ではデバッグ環境でしか発生しないため、とりあえず様子見します。

iniファイル仕様の変更

GUI仕様の改修により、iniファイルの様式を変えました。

SECTION1は初期値の基本設定を記載します。iniファイルの初期値を変更することにより、GUIで表示される初期値を任意の値に変更でき、設定操作を減らすことが出来ます。

[SECTION1]
# 録音開始時刻 初期値
data2  =  00:30
# 録音時間 初期値
data3  =  25
# 録音保存先(パス)
data4  =  .\record\
# radiko 受信ファイル tokyo:13 osaka:27 
data5 = http://radiko.jp/v3/program/now/JP27.xml
# data5 = http://radiko.jp/v3/program/now/JP13.xml

放送局のチャンネル設定は[CH1]~[CH10]に記述します。受信局の放送局名と周波数は総務省のFM局・ワイドFM局一覧を参照して記入すると容易です。チャンネルは10局すべて設定してください。10局に満たない場合は、[CH11]に記載するダミー設定を記載してください。

radikoの番組表IDは、xmlの内容を読まないとわかリませんので、今回のリリースでは近畿と東京のみ準備しました。

関東にお住まいの方は「settings_kanto_fm.ini」を「settings_fm.ini」にリネームするだけで使えると思います。その他の地域は、ご要望があれば作りたいと思いますので、お問い合わせ欄からお知らせください。

またradikoに加盟していない放送局は、番組表の配信がありません。その場合は番組表は表示できませんのでchannel_idは適当な値を入れておく必要があります。

(2022.3.21追記)配信xmlファイルに存在しないchannel_idを設定した場合、プログラムが異常終了となるとご指摘がありました。channel_idが存在しない場合は「番組情報を取得できません」の表示をするように改修し、プログラムはリビジョンaに差し替えしました。

[CH1]
#FM大阪 コメントです
channel_id = FMO radikoのチャンネルid名 番組表の解析につかいます
channel = FM大阪 GUIに表示する放送局名です 
freq = 85.1 受信周波数です
file_name = FM_OSAKA 録音保存時のファイル接頭文字です
back_color = background-color: #f3cac9 放送局名の背景色です 16進コードです
・---・---・---・---・---・---・---・---・---
[CH10] CH10まで設定します
#KBS京都
channel_id = KBS
channel = KBS京都(ワイドFM)
freq = 94.9
file_name = KBS_KYOTO
back_color = background-color: #ffcf54
・---・---・---・---・---・---・---・---・---
[CH11]
#デバッグ
channel_id = ABC
channel = デバッグ
freq = 80.2
#dulation = 15
file_name = DEBUG
#week_table = 1
back_color = background-color: #f3cac9

iniファイルは今後も見直すと思います。

ファイル構成が若干変わります

iniファイルや番組表受信のモジュール追加により、ファイル構成が若干増えました。

プログラム実行の際は、以下画像のように1つのフォルダにまとめて保存してください。

既知の不備修正

  • 録音予約の中止に対応:ver.0.4以前は予約の中止にCtrl +Cを入力する必要がありましたが、キーボードから「q」を入力することで予約キャンセルできるようになりました。
  • (2022.3.21 追記)本プログラムを2つ同時起動すると、1つ目のプログラムのキーボード入力待ちとなって、2つ目の予約が設定時刻に録音動作開始をしない問題が発覚しました。暫定対策としてはVer.0.4時の仕様(録音終了まで待つ)に戻したリビジョン0.5aに差し替えしました。

今後の課題

以下は継続取組中です。

  • ラジオ録音ファイルのmp3化:mp3化はffmpegやvlcを使う予定ですが、変換ソフトをPCにインストールする必要があるため、変換する/しないの切替をつけル必要があり仕様を検討中です。
  • 予約キャンセルのGUI化:ver.0.5より、コマンドウインドウでの予約キャンセルはできるように出来たものの、プログラム構造の制約によりGUI画面も終了するので最初から設定やり直しになってしまいます。GUI画面だけで予約キャンセルも行えるようプログラムの構造を再検討中です。
  • FM放送のステレオ受信:GNURadioの制約によりFM放送なのにモノラル受信です。日本のFM放送は少々特殊らしく、独自ブロックを作る必要があります。
  • Androidアプリ化:現在の最終目標です。原理的には手に負える範囲ですが、まだ環境も構築できていません。

以上、ラジオ録音ソフトのアップデートの紹介記事でした。