##################################################
#Project Name    : gogaku_recorder
#File Name       : gogaku_rec_(version No.), gogaku_recorder_(version No.)
#Version         : 0.1
#Encoding        : python3.9(inclueding GRC3.8)
#Creation Date   : 2022.3.6
#Modification Date: None
#
#Copyright c 2021-2022 falconblog.org. All rights reserved.
#
##################################################

●動作環境
Windows10
USBチューナのドライバーzadigがインストール済み
動作確認チューナー：RTL-SDR.COM blog V3, HackRF one(firmware 2018.01)
モノラル受信です。おそらくワールドワイドで使えます。

●USBチューナードライバ－のインストール
USBチューナーはZadigを使いますので事前にインストールしてください。
exeファイルの動作に必要なドライバーソフトはzadigのみです。

Zadigの入手先→ https://zadig.akeo.ie/
インストール方法は→ https://falconblog.org/zadig-installation-method/

●ソフトウェアの構成とインストール
本ソフトウェアは、本体ソフト、チューナーソフト、予約録音ソフトの3分割構成となります。
入手後適当なフォルダにコピーしてzipを展開してください。
プログラムはすべて同一フォルダに入れてください。
・gogaku_rec_01：GUIプログラム本体
・gogaku_recorder_01.exe：AM放送の受信・予約録音プログラム
・jamradio_tuner01.exe：現在のAM放送の受信プログラム
・setting_gogaku.ini：gogaku_recの初期値,番組ファイル

●基本的な使い方
gogaku_rec_01.exeをダブルクリックしてソフトを起動します。

○AMラジオを聞く
ウィンドウのGUIから、周波数、使用チューナー(Device Arguments)を設定して、「AMラジオを聞く」するをクリックすると、
AMラジオチューナー(amradio_tuner_01.exe)が起動し、AM放送を聞くことが出来ます。
チューナーはスペクトラムアナライザを表示していますので、全AM放送の受信電界強度が確認できるようになっています。
ボリューム、周波数、RFゲインの調整をすることも出来ます。※RTL-SDR.COMのダイレクトサンプリングモードはRFゲインの調整ができません。
バリコン付きのAMアンテナを所有している方は、受信する放送局の電界強度が最大になるようにして調整してください。※電界強度が強すぎると音割れしますので適度に調整してください。
ウィンドウを閉じるとチューナープログラムが終了し、GUIの画面の操作が出来るようになります。

○語学放送ラジオを予約録音する
受信周波数をあわせて、受信できることを視聴してから、
ウィンドウのGUIから録音したい番組を選び、録音回数、使用チューナー(Device Arguments)を設定して、
予約するをクリックすると、コマンドプロンプトウィンドウに予約状況を表示して録音待ちになります。

GOGAKU Recorder Ver.0.1 Copyright 2022 falconblog.org. All rights reserved.
予約スケジュール：曜日=月～金, 開始時刻=06:00, 録音時間=15.0分
保存先フォルダ：.\record\

録音開始時刻になるとコマンドプロンプトウィンドウ上にチューナーの動作状態が表示されます。
録音が正常終了すると自動的にウィンドウが閉じ、プログラムが終了します。

gr-osmosdr 0.2.0.0 (0.2.0) gnuradio v3.8.2.0-57-gd71cd177
built-in source types: file rtl rtl_tcp uhd hackrf bladerf airspy airspyhf soapy redpitaya
Using device #0 Realtek RTL2838UHIDIR SN: 00000001
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Enabled direct sampling mode, input 2
gr::pagesize: no info; setting pagesize = 4096
Now Recording... Dulation Time = 60
Finish　to Recording.

録音したファイル名は周波数、日時、開始時刻が振られて保存されます。
（番組名）_（日時）_（開始時刻）.wav

録音ファイルははカレントのrecordフォルダ（初期値）に保存されます。
保存先はsettings_am.iniで任意設定でき、以下の".\record\"の値を書き換えることで任意のフォルダに記録できます。
フォルダ名、フォルダパスともに日本語の２バイト文字は指定できません。(gnuradio側の制約）
google driveなど２バイトフォルダ名が入る場合は、プログラム本体をgoogle drive上に置いて実行することで対処できます。

（注意・制約事項）
・予約実行後は予約プログラムの終了待ちとなるため、ウィンドウ上で予約解除は出来ません。
　予約解除はコマンドプロンプトよりCtrl+Cを入力し、プログラムを強制終了してください。
・予約待機中にUSBチューナ－を脱着すると正常に動作し無いことがあります。
　脱着した場合は、ソフトを再起動して、再度予約してください。

○起動時の初期値変更について
起動時の周波数、録音開始時刻、録音時間は、settings_am.iniの書き換えにより変更出来ます。
お住まいの地域に合わせて初期値を変更してください。
[SECTION1]　→ SECTION1のみ反映されます
data1  =  828　→受信周波数 XXXXの形式で入力、頭の0（ゼロ）は省略可能です
data4  =  .\record\ →　録音ファイル保存先の設定、２バイト文字の設定不可、最後の"\"をつけ忘れない

※data4値の記述例
--デフォルト
data4  =  .\record\
--onedriveに保存する場合
data4  =  C:\Users\(user名）\OneDrive\record\
user名に２バイト文字は設定できません
--google driveに保存する場合（フォルダパスに２バイト文字を含む場合）
data4  =  .\record\ のままで、プログラム本体をG:\マイドライブ\ 下において実行する

○番組設定について
番組はiniファイルに記載します。10番組まで登録出来ます。記載様式は以下のとおりです。
[CH1]
#月～金 午前6:00～6:15 再放送：月～金 午後6:45～7:00／午後9:00～9:15　→コメント行です
channel = 中学生の基礎英語レベル１　：GUIに表示される番組名です。
stime = 06:00　：録音開始時間です XX:YYで入力し最初の0は省略できません。
dulation = 15　：録音時間です　分(min)で設定します。
file_name = KISO_1 ：保存するファイル名の先頭文字です。漢字等の２バイトコード、特殊文字は使えません
week_table = 1　：曜日の予約テーブルです。以下予約テーブルより適切なものを選択してください。
back_color = background-color: #f3cac9　：番組名の背景色です。HTML,CSSの16進数カラーコードを設定します。

曜日予約テーブルの説明
# week tableの説明
# 1: 月－金　５回録音
# 2: 月－水　３回録音
# 3: 月火　２回録音
# 4: 木金　２回録音
# 5: 土日　２回録音
# 6: 土
# 7: 日

○AM放送チューナー jamradio_tuner_01.pyの使い方
AM放送を聞くプログラムです。録音はサポートしていません。
このpyファイルを動かすにはGNUradioがインストールされている必要があります。
プログラムはコマンドラインより以下の操作で実行できます。

$ python jamradio_tuner_01 <FREQ> <device arg.>

オプションの説明
- FREQ: 周波数をMHzで指定します。（例：80.0)
- device arg.: 受信に使うSDRを指定します。rtl-sdrが１台だけならrtl=0と入力します。

プログラムの終了はコマンドラインでCtrl+Cを入力するか、ウィンドウを閉じてください。

●gogaku放送予約録音ソフト gogaku_recorder_01.pyの使い方
AM放送受信に加え、予約録音をするプログラムです。音声はWAV形式での録音となります。
pythonのscheduleモジュールとGNURadioのAM受信モジュールで構成されていますので、
このpyファイルを動かすにはPCにGNUradioとscheduleモジュールがインストールされている必要があります。
コマンドラインより以下の形式で実行できます。

$ python gogaku_recorder_04.py <FREQ> <XX:YY> <week:No.> <Dulation:min> <times> <device arg.> <file_name>

オプションの説明
実行ファイル名移行のオプションは正しく入力してください。
プログラムでは引数の数をチェックしているだけですので、間違って入れると録音開始時にエラーとなります。

- FREQ: 周波数をHzで指定します。（例：1008)
- XX:YY : 時刻を09:23の24時間形式で設定します。先頭の0は省略できません。
- Dulation:min : 録音する時間を分で指定します。（例：16)
- times : 予約の繰り返し回数を設定します(例：5)
- device arg.: 受信に使うSDRを指定します。
- fike_name : 保存時のファイル名接頭文字を指定します
※RTL-SDR.COMの場合、ダイレクトサンプリングモード（Qインプット）で動かすことになり、"rtl=0,direct_samp=2"と入力します。

予約がすべて実行されるとプログラムは終了します。
中止をしたい場合はコマンドウィンドウでCtrl+Cを入力してください。

●ソースファイルについて
本プログラムはGPLv3です。権利等表記についてはソースファイル内を参照してください。
ソースファイルはGNURadio3.8上で動作することを確認しています。
pyファイル単体ではGNURadioのライブラリが呼び出せる環境でないと動作しません。
exeファイルはGNURadioがなくても動くようになっています。

●ご要望等
ご要望等は以下HPのお問い合わせよりお知らせいただければ幸いです。
HomePage: https://falconblog.org

Copyright c 2021-2022 falconblog.org. All rights reserved.
