Discrete Floaoutがどのようなフォーマットであるか詳しく紹介していきます。仕様は最新ではなく、こちらに従っています。
Discrete Floaoutとは
Floaoutフォーマットの種類の一つです。
特徴
大きな特徴として、イマーシブサウンドの実現にBubble Field
を用いる離散型であることです。
連続型にないメリット
- 作成者の意図するパラメータを楽に設定できる
- 多くの計算を必要としない
デメリット
- ファイルサイズの増大
- パラメータを位置サンプルごとに設定しなければならない
仕様
Bubbleフォーマット、Floaoutフォーマットの順に説明していきます。
音の波形データとイマーシブサウンドなどの音源に関する情報を含んだBubbleというフォーマットが複数集まり、曲として完成したものがFloaoutというフォーマットになります。
Bubble
下記の図のように、Bubbleは主にメタデータ、各Bubble Block
の1つの楽器や音源のみの波形データとBubble Field
の情報で成り立っています。
Bubble ID
Bubble ID
は、リミックスやDJをする際の著作権問題を解決します。ここに書かれているデータは単なる16バイトの数値なのですが、この数値は私が管理するサーバーの情報とリンクしています。そのサーバーには、元のアーティストが指定したリミックスやDJに対する使用条件の情報があり、それに応じてリミックスやDJをする方々が使用料等を支払う仕組みになっています。"0"の場合は、リンクされていないことを意味します。
Length・Width・Height
これらのデータは、Bubble Field
の長さ、幅、高さの情報です。大きさは2^nで表され、これらのデータはnの部分になります。
Red・Green・Blue
これらのデータは、Bubble Field
の要素の大きさも加え、RGBAの色にして、音を可視化させるときに使用します。
Blocks
Blocks
は、含まれているBubble Block
数を表しています。Bubble Block
は、Waveform Data
とBubble Field
から成り立ちます。
Name
Bubbleの名前です。どのような音であるかわかりやすくするために使用します。
Overall
Overall
は、Bubble Field
の概要です。一目見てBubble Field
のどの部分にどのくらい音が鳴っているかわかるようにします。
Waveform Data
Waveform Data
は、音の波形データです。この波形データのビット深度は、音の音量等を操作するため、32-bit floatまたは64-bit floatのみに対応しています。
Bubble Field
Bubble Field
は、指定されたLength・Width・Height
で3次元空間を分割し、分割された要素ごとにおける波形データの音量情報です。3次元空間の最外殻のみではなく、内側にも要素が存在する、他のフォーマットにはない特有の情報です。
上記の図の例では、Lengthが1、Widthが1、Heightが1のBubble Field
です。それぞれの要素は1バイトの0~255の数値になっており、要素の値が255である場合は、その位置にあるスピーカーに、波形データを最大音量で鳴らします。
Floaout
下記の図のように、Floaoutは主にメタデータと含まれているBubbleのメタデータ、各Floaout Block
に含まれるBubble Block
の情報で成り立っています。このフォーマット特有の情報について説明します。
Song ID
Song ID
は、私が管理するサーバーの情報とリンクし、作品のタイトルやアーティスト名から歌詞や画像までの様々な曲情報を得ることができます。ファイル自体にそのような情報が含まれていないため、ミュージックビデオや曲の時間と連動した歌詞など、順次情報を追加や変更が可能です。"0"の場合は、リンクされていないことを意味します。
Bubbles
Bubbles
は、Floaoutに含まれるBubble数を表しています。
Blocks
Blocks
は、含まれているFloaout Block
数を表しています。Floaout Block
は、複数のBubble Block
とCRC-32C
から成り立ちます。
Title・Artist
これらのデータは、作品のタイトルとアーティスト名です。
CRC-32C
CRC-32C
は、誤り検出符号の一種です。データの範囲は、以前のCRC-32C
から直前までです。(はじめを除く)