表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
36/61

3.MP3の構造は思ってたより単純だった

MP3の構造はどうなってるのか検索したけど、よくわからなかった。細かいヘッダの中身の解説はまだ要らないんだけどな。

探し方が悪いのかなぁ?


ということでMP3からPCMに変換するサンプルのソースコードから追っていくことにした。現場主義ってやつ?


1.ヘッダを検索する

2.ID3v2があれば読み飛ばす

3.MPEGフレーム情報を読み込む

4.データを変換する

以後1-4を繰り返す

あれ?そんなシンプルな話なの?

ただしVBR(可変ビットレート)だともっと真面目に解析しないとダメっぽいので、非サポートと書いてある。


それぞれの処理が関数になってるから、それぞれをmicropythonのドライバ関数として登録して、全体の制御はpythonプログラムで書くことにした。

関数の挙動を調べながらだから、修正しやすさ優先。


プログラム作って動かしてみると、スピード(音程)が実行するたび変わる。

なにこれ?picoSDKの周期タイマーがマトモに動いてない?


再実行する度にスピードが上がっていくんで待ち時間を増やすと音質が落ちる。電源を入れ直して初回はちゃんと動く。


しばらく悩んで気が付いた。

micropythonの再起動では、picoSDKで登録したタイマーは削除されてないんだ。


一度実行すると正しい周期で再生するが、二度三度と動かすと、それだけ多重に呼び出されでスピードが上がる。ウエイト時間を増やしてバランスを取ると、データが歯抜けになるから音質が落ちるということか。


あれ?VT100もインターバルタイマを使ってるな。ひょっとするとカーソル表示が変になる原因はこれか?

vtterminal.cの改造も必要くさい

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ