この記事の情報リスト
何らかのプロジェクトでやり取りを行う際に、実にさまざまなフォーマットでデータのやり取りを行うことがあるかと思います。
過去仕事をしている上で筆者が一番困ったのがフロッピーディスクのMIDIファイル救出。
そうです、もはや救出という名に相応しいですよね。
OMFファイルに関して言えば現在はAAF主流となっていますが、まだまだ現場では使われることがたまにある方式になります。
今回はデータフォーマットOMFを取り扱う方法。
実はこれ、やっかいなのがMacの方はLogicなどで読み込みは可能とされているのですが、実際はファイルが開けないケースがほとんどだったり、公式に対応しているというわけではないようです。

この記事を担当:こうたろう
1986年生まれ
音大卒業後日本、スウェーデン、ドイツにて音楽活動
ドイツで「ピアノとコントラバスのためのソナタ」をリリースし、ステファン・デザイアーからマルチマイクREC技術を学び帰国
金田式DC録音のスタジオにて音響学を学ぶ
独立後芸術工房Pinocoaを結成しアルゼンチンタンゴ音楽を専門にプロデュース
その後写真・映像スタジオで音響担当を経験し、写真を学ぶ
現在はヒーリングサウンド専門の音楽ブランド[Curanz Sounds]を立ち上げ、ピアニスト, 音響エンジニア, マルチメディアクリエーターとして活動中
当サイトでは音響エンジニアとしての経験、写真スタジオで学んだ経験を活かし、制作機材の解説や紹介をしています。
♪この記事には広告リンクを含みます♪
WAVEファイルの抽出
主な目的はオーディオデータの抽出ではないでしょうか?
OMFファイルで格納できるオーディオ形式は大きく分けて3種類になります。
✅ 対応フォーマットと特徴
フォーマット | チャンク識別子 | 拡張子 | 備考 |
---|---|---|---|
WAV | RIFF | .wav | RIFF構造(リトルエンディアン) |
AIFF | FORM | .aiff | IFF構造(ビッグエンディアン) |
SD2 | Sd2f | .sd2 | 古いPro Tools形式、構造不明瞭 |
Pythonで抽出コードを作成する際は、それぞれチャンク識別子を指定して、抽出しなければ取り出せません。
プロジェクトリーダーが制作したOMFデータで中のフォーマットが不明な場合は3種類すべて書き込んでOKです。
また、プログラム自体は、Pythonの標準ライブラリで抽出可能ですので、特別新しいライブラリーを入れる必要はありません。
Mac 抽出サンプルコード
#!/usr/bin/env python3
"""
OMFファイル内に埋め込まれた音声(WAV, AIFF, SD2)をすべて抽出するスクリプト
"""
import os
def extract_audio_chunks(omf_path, output_dir):
os.makedirs(output_dir, exist_ok=True)
with open(omf_path, "rb") as f:
data = f.read()
patterns = {
b"RIFF": ("wav", "little"),
b"FORM": ("aiff", "big"),
b"Sd2f": ("sd2", None) # SD2はサイズの取得が特殊、暫定対応
}
count = 0
for pattern, (ext, endian) in patterns.items():
print(f"\n🔍 チャンク検索: {pattern.decode()}")
start = 0
while True:
start = data.find(pattern, start)
if start == -1:
break
# SD2は長さ情報がないことが多いため暫定:300KBで仮カット
if pattern == b"Sd2f":
end = start + 300 * 1024
audio_data = data[start:end]
else:
# 長さ情報はチャンクの4バイト後
size_bytes = data[start + 4:start + 8]
if len(size_bytes) < 4:
break
size = int.from_bytes(size_bytes, byteorder=endian)
end = start + 8 + size
if end > len(data) or size < 44:
print(f"⚠️ 無効または破損した{ext.upper()}チャンクをスキップ(size={size})")
start += 4
continue
audio_data = data[start:end]
filename = f"extracted_{count}.{ext}"
out_path = os.path.join(output_dir, filename)
with open(out_path, "wb") as out_file:
out_file.write(audio_data)
print(f"✅ {filename} を保存しました({end - start}バイト)")
count += 1
start = end
if count == 0:
print("❌ いずれの音声フォーマットも検出できませんでした。")
else:
print(f"\n🎉 抽出完了:{count}個のファイルを保存しました。")
# 実行対象パスの指定(パスはユーザー環境に応じて変更)
if __name__ == "__main__":
omf_path = "OMFがあるパス名.omf"
output_dir = "ファイルを書き出したい場所のパス"
if not os.path.isfile(omf_path):
print(f"❌ OMFファイルが見つかりません:{omf_path}")
else:
print(f"🔎 読み込みファイル:{omf_path}")
print(f"💾 書き出し先フォルダ:{output_dir}")
extract_audio_chunks(omf_path, output_dir)
Windowsでの抽出サンプルコード
✅ Windows対応ポイント
要点 | 対応内容 |
---|---|
パス表記 | \ ではなく**raw文字列(r"...") **を使用 |
日本語パス対応 | UTF-8エンコーディングで読み込み |
拡張子の付与、改行コードなど | 全プラットフォーム共通 |
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
OMFファイルから埋め込み音声(WAV, AIFF, SD2)を抽出するWindows対応スクリプト
"""
import os
def extract_audio_chunks(omf_path, output_dir):
os.makedirs(output_dir, exist_ok=True)
with open(omf_path, "rb") as f:
data = f.read()
patterns = {
b"RIFF": ("wav", "little"),
b"FORM": ("aiff", "big"),
b"Sd2f": ("sd2", None) # SD2は構造が特殊、サイズは仮設定
}
count = 0
for pattern, (ext, endian) in patterns.items():
print(f"\n🔍 チャンク検索: {pattern.decode()}")
start = 0
while True:
start = data.find(pattern, start)
if start == -1:
break
if pattern == b"Sd2f":
end = start + 300 * 1024 # 仮に300KBで切る
audio_data = data[start:end]
else:
size_bytes = data[start + 4:start + 8]
if len(size_bytes) < 4:
break
size = int.from_bytes(size_bytes, byteorder=endian)
end = start + 8 + size
if end > len(data) or size < 44:
print(f"⚠️ 無効な{ext.upper()}チャンクをスキップ(size={size})")
start += 4
continue
audio_data = data[start:end]
filename = f"extracted_{count}.{ext}"
out_path = os.path.join(output_dir, filename)
with open(out_path, "wb") as out_file:
out_file.write(audio_data)
print(f"✅ 保存: {filename}({end - start}バイト)")
count += 1
start = end
if count == 0:
print("❌ 有効な音声チャンクは見つかりませんでした。")
else:
print(f"\n🎉 抽出完了:{count}個のファイルを保存しました。")
if __name__ == "__main__":
# Windows用のパス指定(raw文字列で記述)
omf_path = r"C:\Users\YourUsername\Downloads\AUDIO_REEL_OMF.omf"
output_dir = r"C:\Users\YourUsername\Downloads\OMF_OUTPUT"
if not os.path.isfile(omf_path):
print(f"❌ OMFファイルが見つかりません:{omf_path}")
else:
print(f"🔎 読み込みファイル:{omf_path}")
print(f"💾 書き出し先フォルダ:{output_dir}")
extract_audio_chunks(omf_path, output_dir)
OMFで読み込めるソフトウェア一覧
ソフトウェア名 | 読み込み(Import) | 書き出し(Export) | 備考 |
---|---|---|---|
Pro Tools | ◯ | ◯ | OMF/AAFともに業界標準。完全対応。 |
Logic Pro | ◯ | × | OMFの読み込みのみ対応。AAF不可。 |
Final Cut Pro | × | × | OMF非対応。FCPXMLによる中継が必要。 |
DaVinci Resolve | ◯(Studio版) | △(FCPXML or AAF) | OMF読み込みはStudio版限定。 |
Adobe Premiere Pro | ◯ | ◯ | OMF書き出しに対応。AAF推奨。 |
Avid Media Composer | ◯ | ◯ | OMFは元祖。高度なAAF連携が主流。 |
Reaper | ◯ | × | 無料でOMF読み込み可。書き出しは非対応。 |
Cubase / Nuendo | × | × | OMF非対応。AAFを使う必要あり。 |
Studio One | × | × | OMF/AAFともに非対応。 |
AATranslator(Windows) | ◯ | ◯ | 変換専用ツール。OMF ⇄ AAF ⇄ FCPXML変換が可能。 |
OMFファイルとは何か?
OMF(Open Media Framework)ファイルとは、音声編集や映像編集において、複数のソフトウェア間で編集データと素材ファイルをやり取りするための「中間ファイル形式」です。
※ポストプロダクション(編集・ミックス)のために開発された業務用の中間データ形式
🔍 正式名称と概要
- 正式名称:Open Media Framework Interchange(OMFI)
- 開発元:Avid Technology社(1990年代)
- 拡張子:通常
.omf
- 目的:異なるソフト間で、タイムライン情報・オーディオ素材・クリップ構成を共有する
📦 OMFファイルに含まれるもの
含まれる情報 | 内容の例 |
---|---|
音声素材 | WAV、AIFF、SD2などの形式(埋め込み or 参照) |
トラック情報 | 何本のトラックで構成されているか |
タイムコード | 開始時刻、素材の配置タイミング |
フェード、ボリューム | クロスフェード、パンニング、音量カーブ情報など |
参照パス(場合による) | 音声ファイルの外部リンク情報(Referenced形式) |
🔄 OMFファイルの2つの種類
タイプ | 説明 |
---|---|
Embedded型 | 音声ファイルそのものがOMF内部に埋め込まれている(ポータブルで便利) |
Referenced型 | 外部のWAVやAIFFを参照するだけ(ファイル移動時にリンク切れの恐れあり) |
🎬 なぜOMFが重要なのか?
OMFは、ポストプロダクション(収録後の編集工程)において、音声と映像を別ソフトウェアで編集するプロ現場のニーズに応えるために生まれました。
例:
- 映像編集:Adobe Premiere、Final Cut Pro
- 音声編集:Pro Tools、Reaper、Logic Pro
映像編集ソフトで組んだタイムラインを、音声専門のソフトにそのまま引き渡して仕上げる(ミキシング・ノイズ除去など)ために不可欠です。
AAFとの違い(後継フォーマット)
項目 | OMF | AAF(Advanced Authoring Format) |
---|---|---|
開発時期 | 1990年代前半 | 2000年代以降 |
拡張性 | 制限あり | メタデータ・映像・エフェクトなども保持可能 |
互換性 | 古いシステムでは安定 | 新しいソフトウェアで標準化が進行中 |
現在の主流性 | 一部現場で現役 | 映像音声の複合ポスト制作ではAAFが主流 |
📜 OMFの歴史:映像と音のプロの現場をつなぐための発明
🏭 開発者
- Avid Technology(アビッド・テクノロジー)
- 米国のポストプロダクション機器・ソフトの専門企業
- 1987年設立
🕰 誕生時期
- 1991年頃
- 業界初の「ノンリニア編集ソフト」Avid Media Composer の流通とともに登場
- 映像・音声をテープレスで編集できるようになり、ソフト間連携のための共通交換フォーマットが必要となった
🎯 開発目的
- 映像編集ソフトと音声編集ソフト間で、「タイムラインと素材を忠実に受け渡すための中間形式」を確立する
- 映像業界と音響業界の共通言語として生まれました。
🌐 OMFとポストプロダクションの実際の使われ方
例:テレビ番組の編集ワークフロー
- Premiereで映像編集(仮ミックス含む)
- OMFファイルを書き出してPro Toolsに渡す
- Pro Toolsで音響効果やノイズ除去、本格的なミックスを行う
- 最終的に映像と音声を再統合(マスタリング)