2022年1月30日日曜日

彼こそが海賊 Take#2

コロナでウチにいるなら、何かをして遊ぼう。
というわけで、"He's a pirate"の自家製シンセサイザ音楽、新たに動画を作り直した。

前回の記事の音楽には、プチプチ音が入っていた。
多少気になったが、久しぶりに引っ張り出してきたコードだったので、そのまま動画を作った。

前回の動画作成後にソースコードを見直した。
休符の処理部分に日本語コメントで「工夫せよ。」と書いてあった。
10年前のコードだ。そんなこと言われてもどういう意味でそれを書いたのか憶えていない。

コード全体を見直して、だんだん思い出してきた。
MSXで言うところのエンベロープも実装している。エンベロープで音を止められるなら、休符もエンベロープを利用して実装すれば特別なものが減りシンプルになると考えていたのだ。
このアプリ、現在はPCで動かしているが、元は組み込みマイコンで利用できるように開発していた。
メモリも処理能力もギリギリで動作するようにしているので、PCのようなリッチな環境ではいちいち考えないような些細な事も気にしている。(動作時に除算をしないとか)

エンベロープの実装が、部分的で、一部中途半端になっていた。
特定の定数を代入するか、ゼロを代入(ゼロクリア)するかで、迷っていたようだ(多くのコンピュータでゼロクリアはわずかに軽い)。
そのせいで、休符部分でプチプチ音がなっていた。

その他エンベロープの立ち上がりも多少緩やかにした。
なんだかんだで色々直したが、小さいマイコンでも動くように、基本部分はなるべくいじっていない。

ほとんど変わっていないように聴こえるかもしれない。
ピエゾ素子のスピーカーではエッジの立った波形が強調され気味で、プチプチ音が目立つが、ダイナミックスピーカではあまり聞こえないかもしれないためだ。
遊びだから、無駄なこだわりもありだろう。

追記: YouTubeで前のものと、新しいものを聞き比べてもあまり違いを感じない。
ALSA(実際にはPulseAudioのALSA I/F)で直接演奏している時は、プチプチが聴こえるのに…。
考えてみたら動画を作るために、圧縮していた。
その時に高い周波数は捨てられているのかもしれない。

0 件のコメント:

コメントを投稿