情報ラボ > データはすべて0と1
画像も音も、コンピュータの中では同じ0と1の並びです。その正体をのぞき、入れかえて確かめてみましょう。
画像でも音楽でも文書でも、どんなファイルでも構いません。パソコンの中では、すべてこの形で記録されています。
マイクの使用許可を求められたら「許可」を選んでください。音は録音も送信もされず、この画面の中だけで処理されます。
上の数字が、マイクがとらえた音を数値にしたものです。下の8桁が、その数値を2進数で表したものです。
しま模様を読み取ると、きれいな音になります。しまの細かさが音の高さ、 濃さが音の大きさにあたります。
選んだ画像
その画素の値を、読み取った順に並べたもの
音の1つ1つの数値を、画素の明るさ(0〜255)として左上から順に並べます。
音のデータを画像として表示したもの
コンピュータの中には、文字も、写真も、音楽も、動画も入っています。しかしコンピュータが実際に記録しているのは、0と1が並んだ列だけです。写真そのものが入っているわけでも、音そのものが入っているわけでもありません。
これはコンピュータの部品のしくみから来ています。電気が流れているか、流れていないか。電圧が高いか、低いか。この2つの状態なら、多少の雑音があっても確実に区別できます。3つ以上の状態を使い分けようとすると、判定を誤りやすくなります。だからコンピュータは、あらゆる情報をいったん0と1に置きかえてから扱います。
上の「ファイルの中身」で、どんなファイルでも読み込んでみてください。写真でも、音楽でも、レポートでも、画面に出てくるのは同じ0と1の列です。ファイルの種類による違いは、そこにありません。
違いを生んでいるのは、データそのものではなく解釈の仕方です。同じ0と1の列でも、「4バイトごとに赤・緑・青・透明度の値だ」と解釈すれば画像になり、「2バイトごとに空気の振動の強さだ」と解釈すれば音になります。
この教材の「画像を音で聴く」と「音を画像で見る」は、その解釈をわざと入れかえるものです。画像のデータを音として再生すれば、意味のある音楽にはならず、ノイズが聞こえます。しかしまったくのでたらめではありません。
空や壁のように色が一様な部分は、似た数値が続きます。数値の変化が小さいので、低くこもった音になります。逆に、模様が細かい部分や輪郭の部分では数値が激しく上下するので、高くざらついた音になります。画像の「見た目の複雑さ」が、そのまま音の「にぎやかさ」として聞こえるわけです。
また、多くの画像は上から下へ、左から右へと画素が並んでいます。そのため、横縞のある画像を再生すると、規則的な繰り返し音が聞こえることがあります。データの並び方が、そのまま音のリズムになるのです。
画像を1列の数値の並びにするには、2次元に並んだ画素をどの順で読むかを決める必要があります。標準は左上から右へ1行ずつ読み、行が終わったら1つ下の行の左端へ戻るという順序です。文章を読むのと同じ動きで、ラスタスキャン順といいます。
この順序は、画像ファイルの中でも、ディスプレイへの表示でも共通して使われています。上のツールでは、再生中に黄色い線が上から下へ進みますが、これが「いまどの行を読んでいるか」を示しています。
順序を変えると、同じ画像でもまったく違う音になります。上下に読む設定に切り替えると確かめられます。データそのものは同じでも、並べる順が変われば別のものになるということです。
画像を音にしたとき、何が音の高さを決めるのでしょうか。答えは明暗が入れかわる間隔です。
1秒間に7200画素を読む設定なら、36画素ごとに明暗がくり返す模様は、1秒間に200回の振動になります。つまり200ヘルツの音です。
しまが細かいほど、明暗の入れかわりが速くなり、音は高くなります。上のツールの「低い音」(36画素間隔=200Hz)と「高い音」(9画素間隔=800Hz)を聴き比べると、この関係がはっきり分かります。
写真のこまかい部分がザラついた高い音になるのも、同じ理由です。細部は画素ごとの明暗の変化が激しく、高い周波数の成分を多く含むためです。
一方、音の大きさを決めるのは明暗の差の大きさ、つまりコントラストです。
真っ白と真っ黒がくり返す模様は大きな音になり、うすい灰色どうしがくり返す模様は小さな音になります。しまの間隔が同じなら、音の高さは変わりません。変わるのは音量だけです。
波形でいえば、高さ(振幅)の違いにあたります。上のツールの「音が大きくなる」を選ぶと、しまの細かさはそのままに濃淡だけが強くなっていき、音の高さを保ったまま音量が上がっていくのが確かめられます。
逆に、音の数値を画素の明るさとして並べると、縞模様が現れます。音の波は上がって下がってをくり返すので、明るい・暗いが周期的に並ぶためです。高い音ほど周期が短く、細かい縞になります。静かな部分は数値が中央付近に集まるので、灰色の平らな面になります。
すべてが同じ0と1なら、コンピュータはどうやってファイルの種類を見分けているのでしょうか。手がかりの一つが、ファイルの先頭に置かれた目印です。これをマジックナンバー(シグネチャ)といいます。
| ファイルの種類 | 先頭のバイト(16進数) | 意味 |
|---|---|---|
| PNG画像 | 89 50 4E 47 | .PNG |
| JPEG画像 | FF D8 FF | JPEGの開始 |
| GIF画像 | 47 49 46 38 | GIF8 |
| PDF文書 | 25 50 44 46 | |
| ZIP書庫 | 50 4B 03 04 | PK.. |
| MP3音声 | 49 44 33 | ID3 |
「ファイルの中身」で画像を読み込むと、先頭にこの目印が出てきます。拡張子(.png や .jpg)を書きかえても中身の目印は変わらないので、多くのソフトは拡張子ではなくこの目印を見て種類を判断しています。
ひとつ注意があります。JPEGやPNG、MP3のようなファイルは圧縮されています。画素の値がそのまま並んでいるわけではなく、データを小さくするために変換された状態で記録されています。
そのため、圧縮されたファイルの中身を直接のぞいても、規則性はほとんど見えません。この教材の「画像を音で聴く」では、いったん画像を画面に描き直して圧縮されていない画素の値を取り出しているので、画像の内容が音の変化として聞こえます。
マイクを使う機能では、音声はこの画面の中だけで処理され、どこにも保存も送信もされません。