アカウント名:
パスワード:
> ちなみに、AIFFとWAVではエンディアンも異なる。
ビッグエンディアンのほうが演算素子の回路構成やメモリへのデータ格納イメージが堂々と力強いので、堂々と力強い音楽に向いています。一方、リトルエンディアンは、繊細でこまやかな表現に優れています。
とすると、エンディアンを選択できるフォーマットが最強のように思えますが、選択機構のところがノイズ源になるので避けるべきというのが常識です。
しかし、エンディアンが音質に与える影響はないとは言えないんじゃないかな。どっちも再生できる機器の場合、どこかでスワップ処理してるのは確かなんだから、バッファのサイズによっては不具合が生じてもおかしくない。つまり、ソフトウェア的に同一ではない場合、片方だけバグがあるってことは有り得るんじゃないの。
あるいは、どっちかがヘッダの処理を間違えているとか、コンバーターの実装が狂っていて数十バイトの情報すら正確に写し取れないとか。無圧縮でも丸めちゃうとか。
おっしゃるとおり、エンディアンの変換には時間がかかりますし、バグがつきものです。たとえば、Z80の場合で、HLレジスタに16ビットデータが入っている場合、LD A,HLD H,LLD L,Aで16ビットデータの上位・下位8ビットが交換できます。
まず時間について考えてみましょう。それぞれ4クロックの時間がかかりますので、全体で12クロックです。クロック4MHzのZ80Aの場合、3マイクロ秒かかることになってしまいます。100,000Hzくらいの音を聞くことができる人にとっては、これは致命的なことです。現代的なCPUはクロックがGHz程度ですので、100,000,000Hzくらいの音を聞くことができる人にとって、やはりこれは致命的な問題です。
次に、バグの問題について考えてみます。データの上位・下位の交換には上記のように3行にもわたるプログラミングが必要です。さらに、データが32ビットの場合には6行、64ビットの場合には12行ものプログラミングが必要です。このように長いプログラムをまったくバグなしで行うのは、長いデスマを乗り越えてきて睡眠不足が極限まで積み重なったプログラマにとっては、過酷な要求です。なお、現代的なCPUはデータ交換命令を持っていて、従来では3行必要なプログラムを1行で表現できる可能性もありますが、CPUそのものにハードウェア的なバグがある可能性がありますので、使用を避けた方がいい場合も考えられます。ですので、バグの可能性はあると考えた方がよいでしょう。
つまり、結論として、エンディアンの変換による音質への影響はあると考えるべきです。
スワップそのものじゃなくて、バッファのとり方の問題ね。
仮に片側1サンプルのビット数が16だったとして、16ビットごとにスワップするならバグも遅延もないかもしれないけれど、多分そういう作りにはなってない。だって、圧縮音源も同様に再生できなきゃいけないから。生データ(不揮発)をデコーダに流してメモリに展開してから、そのバッファを音響ハードに食べさせるっていう処理をしているはず。で、デコーダがスワップしてれば遅延とかは生じないだろうけど、
be+無圧縮:生→バッファ→ハードbe+圧縮 :生→デコーダ→バッファ→ハードle+無圧縮:生→バッファ→スワップ→ハードle+圧縮 :生→デコーダ→バッファ→スワップ→ハード
で、スワップのところが混みすぎたらってこと。一見、le+無圧縮の実装がおかしいようにも見えるけど、多分、本当に問題なのはデコーダが可変長leで吐くかもしれないってところにあるんだと思う。
ないない。
be+無圧縮:生→デコーダ→バッファ→ハードbe+圧縮 :生→デコーダ→バッファ→ハードle+無圧縮:生→デコーダ→バッファ→ハードle+圧縮 :生→デコーダ→バッファ→ハード
何のためのデコーダなのよ、と。ビット数・チャンネル数・サンプリングレートの違う音声をソフトでミキシングするんなら、もう一段バッファかませて処理を行うことはあるかもしれませんが。エンディアンは後にとっとく意味がないです。
バカか! ソフトウェア制御でスワップなんて使っていたら、処理が遅くて間に合わないだろ。両方のI/Oポートを用意して、外のリレーで切り替えるんだよ。再生装置よりもリレーの制御で電力消耗するんだぜ。
先生!リレーを高速で切り替える音がミシンみたいに聞こえます!
最近あまりみかけないけど編み機(セーターやマフラーを)の動作音はミシン以上にノイジーです。
10 MOTOR ON:MOTOR OFF:GOTO 10
昔さ、PC-8801て8ビットパソコンがあって、ゲームが一杯出てたのよ。でさ、ビープ音でゲーム中のファンファーレとか頑張ってるんだ。ある日、PC-8801mkIIってのが発売されてさ、IOポート1ビットがサウンド用に割り当てられて、こっちのポート使うとちょっとだけ音質が改善したんだ。PC-8801持ってる連中は悔しくて、ゲームハックしてこのポート出力をビープにするパッチ書いたり、ハードパッチ充てて同じ音が出るようにしたんだ。俺はある日、あるゲームで書き換えるポートをテープコントロールのリレーにしてみたんだ・・・
ちゃんと鳴ったよ。ファンファーレが。すごく小さい音だけど。何かヤバい感じがして二度とやらなかったけどね。
CPUのSIMD命令か、SoCのオーディオ部分ですかね>スワップ処理VGAの漏れ電磁波でラジオを鳴らしたり [erikyyy.de]、テレビ放送波を流したり [bellard.org]できるので、影響があっても不思議では無い気はします。
もしくは、パススルーやハードウェアミキサ、ソフトウェアフィルタなどの処理経路の問題もありえるかな?
エンコード時にビット深度やサンプリング周波数の変化、または不可逆圧縮が起こってるオチもありえそう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
エンディアン (スコア:5, おもしろおかしい)
> ちなみに、AIFFとWAVではエンディアンも異なる。
ビッグエンディアンのほうが演算素子の回路構成やメモリへのデータ格納イメージが堂々と力強いので、堂々と力強い音楽に向いています。
一方、リトルエンディアンは、繊細でこまやかな表現に優れています。
とすると、エンディアンを選択できるフォーマットが最強のように思えますが、選択機構のところがノイズ源になるので避けるべきというのが常識です。
Re:エンディアン (スコア:0)
しかし、エンディアンが音質に与える影響はないとは言えないんじゃないかな。どっちも再生できる機器の場合、どこかでスワップ処理してるのは確かなんだから、バッファのサイズによっては不具合が生じてもおかしくない。つまり、ソフトウェア的に同一ではない場合、片方だけバグがあるってことは有り得るんじゃないの。
あるいは、どっちかがヘッダの処理を間違えているとか、コンバーターの実装が狂っていて数十バイトの情報すら正確に写し取れないとか。無圧縮でも丸めちゃうとか。
Re:エンディアン (スコア:5, おもしろおかしい)
おっしゃるとおり、エンディアンの変換には時間がかかりますし、バグがつきものです。
たとえば、Z80の場合で、HLレジスタに16ビットデータが入っている場合、
LD A,H
LD H,L
LD L,A
で16ビットデータの上位・下位8ビットが交換できます。
まず時間について考えてみましょう。それぞれ4クロックの時間がかかりますので、全体で12クロックです。
クロック4MHzのZ80Aの場合、3マイクロ秒かかることになってしまいます。
100,000Hzくらいの音を聞くことができる人にとっては、これは致命的なことです。
現代的なCPUはクロックがGHz程度ですので、100,000,000Hzくらいの音を聞くことができる人にとって、
やはりこれは致命的な問題です。
次に、バグの問題について考えてみます。データの上位・下位の交換には上記のように3行にもわたる
プログラミングが必要です。さらに、データが32ビットの場合には6行、64ビットの場合には12行もの
プログラミングが必要です。このように長いプログラムをまったくバグなしで行うのは、長いデスマを
乗り越えてきて睡眠不足が極限まで積み重なったプログラマにとっては、過酷な要求です。
なお、現代的なCPUはデータ交換命令を持っていて、従来では3行必要なプログラムを1行で表現
できる可能性もありますが、CPUそのものにハードウェア的なバグがある可能性がありますので、
使用を避けた方がいい場合も考えられます。
ですので、バグの可能性はあると考えた方がよいでしょう。
つまり、結論として、エンディアンの変換による音質への影響はあると考えるべきです。
Re: (スコア:0)
スワップそのものじゃなくて、バッファのとり方の問題ね。
仮に片側1サンプルのビット数が16だったとして、16ビットごとにスワップするならバグも遅延もないかもしれないけれど、多分そういう作りにはなってない。だって、圧縮音源も同様に再生できなきゃいけないから。生データ(不揮発)をデコーダに流してメモリに展開してから、そのバッファを音響ハードに食べさせるっていう処理をしているはず。で、デコーダがスワップしてれば遅延とかは生じないだろうけど、
で、スワップのところが混みすぎたらってこと。一見、le+無圧縮の実装がおかしいようにも見えるけど、多分、本当に問題なのはデコーダが可変長leで吐くかもしれないってところにあるんだと思う。
Re: (スコア:0)
ないない。
何のためのデコーダなのよ、と。
ビット数・チャンネル数・サンプリングレートの違う音声をソフトでミキシングするんなら、もう一段バッファかませて処理を行うことはあるかもしれませんが。
エンディアンは後にとっとく意味がないです。
Re:エンディアン (スコア:3, おもしろおかしい)
バカか! ソフトウェア制御でスワップなんて使っていたら、処理が遅くて間に合わないだろ。
両方のI/Oポートを用意して、外のリレーで切り替えるんだよ。再生装置よりもリレーの制御で電力消耗するんだぜ。
Re: (スコア:0)
先生!リレーを高速で切り替える音がミシンみたいに聞こえます!
Re:エンディアン (スコア:1)
最近あまりみかけないけど編み機(セーターやマフラーを)の動作音はミシン以上にノイジーです。
Re: (スコア:0)
10 MOTOR ON:MOTOR OFF:GOTO 10
継電器演奏 (スコア:1)
昔さ、PC-8801て8ビットパソコンがあって、ゲームが一杯出てたのよ。
でさ、ビープ音でゲーム中のファンファーレとか頑張ってるんだ。
ある日、PC-8801mkIIってのが発売されてさ、IOポート1ビットがサウンド用に割り当てられて、
こっちのポート使うとちょっとだけ音質が改善したんだ。
PC-8801持ってる連中は悔しくて、ゲームハックしてこのポート出力をビープにするパッチ書いたり、
ハードパッチ充てて同じ音が出るようにしたんだ。
俺はある日、あるゲームで書き換えるポートをテープコントロールのリレーにしてみたんだ・・・
ちゃんと鳴ったよ。ファンファーレが。すごく小さい音だけど。
何かヤバい感じがして二度とやらなかったけどね。
Re: (スコア:0)
CPUのSIMD命令か、SoCのオーディオ部分ですかね>スワップ処理
VGAの漏れ電磁波でラジオを鳴らしたり [erikyyy.de]、テレビ放送波を流したり [bellard.org]できるので、影響があっても不思議では無い気はします。
もしくは、パススルーやハードウェアミキサ、ソフトウェアフィルタなどの処理経路の問題もありえるかな?
エンコード時にビット深度やサンプリング周波数の変化、または不可逆圧縮が起こってるオチもありえそう。