アカウント名:
パスワード:
手元に実行環境ないんで分かんないんだけど何がすごいの???
適当なコマンドの組み合わせで偶然音が奏でたの??それとも単に”bach.sed”に仕込んである音楽データを再生しているだけ???前者ならすごい話ですが!
何が話題に上がるのか意味わかりません!
いったいどうやってバイナリデータを出力してるんだろうとソースを見ましたが、' '(スペース、32)と、'~'(チルダ、127)の繰り返しの矩形波を生成してました。確かにこれなら、テキスト処理で生成可能ですね。これだと思いっきりオフセットが出まくりですが、まあ、普通のオーディオ出力ならDC除去用のコンデンサは入ってるだろうしまあ問題ないかな?
で、私の手元には音が聞けるLinux環境がないので、
$ echo | ./bach.sed | ffmpeg -f u8 -ar 44.1k -ac 1 -i - bach.mp3
でmp3に変換したところ、問題なく聞けました。プアなVM環境で実行したせいもありますが、生成にかかった時間は23分… こんなのオンザフライで再生したくないです…
野暮なツッコミですがチルダは126。
はい、書き込みボタン押した直後に「違う、127はDELだー」って気づきました。黙ってればバレないかと思ったんですが無理でしたか…って、それだけじゃアレなので、コード解説
譜面は「psvyBpqwACoqvAC…」という音階に対応するアルファベット列の形で、初期値として持たせています。音長データなし。そこから、
・音階文字ごとの /~ の連続回数(=周波数の逆数)のテーブルをもとに、音階データを回数データに置換(たとえば「p」は「207」に。これは9進数表記なので10進数で169。44100/169=261Hz)これにより、「psvy…」が「Z207Z 58Z 35Z 03Z…」になる。(Zは区切り文字。9進
sedの教材にはよいかもしれない。
8分音符しか再生できない中で,最後の2分音符の再生にチャレンジしてみましたが,8分音符×4個では,位相が連続せずに'プッ'音が挟まる。これ、大昔のPC-8801mkIIのCMD SINGに不満を訴えていた知人を思い出しました。最後の11025を最終音のy103(9)の倍数の11004に変えると音がつながった。そうすると前小説との切れ目もなくなるので,新たな音'F 02'(少しピッチ狂うが)とか作って置き換えたり,色々遊びました。別の曲を組み込むには,休符や温長の処理を組み込むには等もっと正規表現の勉強しなくては。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
どういうこと? (スコア:0)
手元に実行環境ないんで分かんないんだけど
何がすごいの???
適当なコマンドの組み合わせで偶然音が奏でたの??
それとも単に”bach.sed”に仕込んである音楽データを再生しているだけ???
前者ならすごい話ですが!
何が話題に上がるのか意味わかりません!
Re: (スコア:1)
// しばらく眺めて理解できたが、やっぱりアレゲとしかいいようがない
Re: (スコア:2)
いったいどうやってバイナリデータを出力してるんだろうとソースを見ましたが、
' '(スペース、32)と、'~'(チルダ、127)の繰り返しの矩形波を生成してました。
確かにこれなら、テキスト処理で生成可能ですね。
これだと思いっきりオフセットが出まくりですが、まあ、普通のオーディオ出力ならDC除去用のコンデンサは入ってるだろうしまあ問題ないかな?
で、私の手元には音が聞けるLinux環境がないので、
でmp3に変換したところ、問題なく聞けました。プアなVM環境で実行したせいもありますが、生成にかかった時間は23分… こんなのオンザフライで再生したくないです…
Re: (スコア:0)
野暮なツッコミですがチルダは126。
Re: (スコア:4, 参考になる)
はい、書き込みボタン押した直後に「違う、127はDELだー」って気づきました。
黙ってればバレないかと思ったんですが無理でしたか…
って、それだけじゃアレなので、コード解説
譜面は「psvyBpqwACoqvAC…」という音階に対応するアルファベット列の形で、初期値として持たせています。音長データなし。
そこから、
・音階文字ごとの /~ の連続回数(=周波数の逆数)のテーブルをもとに、音階データを回数データに置換(たとえば「p」は「207」に。これは9進数表記なので10進数で169。44100/169=261Hz)
これにより、「psvy…」が「Z207Z 58Z 35Z 03Z…」になる。(Zは区切り文字。9進
Re:どういうこと? (スコア:0)
sedの教材にはよいかもしれない。
8分音符しか再生できない中で,最後の2分音符の再生にチャレンジしてみましたが,8分音符×4個では,位相が連続せずに'プッ'音が挟まる。これ、大昔のPC-8801mkIIのCMD SINGに不満を訴えていた知人を思い出しました。最後の11025を最終音のy103(9)の倍数の11004に変えると音がつながった。そうすると前小説との切れ目もなくなるので,新たな音'F 02'(少しピッチ狂うが)とか作って置き換えたり,色々遊びました。別の曲を組み込むには,休符や温長の処理を組み込むには等もっと正規表現の勉強しなくては。