After Effectsで音に合わせて図形や文字を動かすには、アニメーションメニューの「キーフレーム補助」から「オーディオをキーフレームに変換」を実行し、できたスライダーの値をエクスプレッションで動かしたいプロパティにつなぎます。
変換すると「オーディオ振幅」というレイヤーができ、音の大きさがフレームごとのキーフレームとして入ります。
この記事は、Adobe公式ヘルプ「多彩なアニメーションツール」と「エクスプレッション言語」の記載(2026年10月18日確認)をもとにまとめたものです。
画面はAfter Effects 2026(26.5)の日本語版で撮影し、自作の練習用の音(0.5秒ごとの拍と無音の区間があり、左右で音量を変えたステレオ)で変換の結果を確かめています。
式の値は、画面に加えて、After Effectsのスクリプトでフレームごとに読み出して確かめました。
変換の手順
- 音声を入れたコンポジションを開く
- タイムラインパネルで、ワークエリア(変換したい範囲)を音の長さに合わせる
- コンポジションパネルかタイムラインパネルをクリックして、コンポジションを選んだ状態にする
- アニメーションメニューの「キーフレーム補助」から「オーディオをキーフレームに変換」を選ぶ

選ぶとすぐに変換が始まり、設定を聞く画面は出ませんでした。
Adobeのヘルプでは、この機能はワークエリアの中のオーディオの振幅を分析してキーフレームを作ると説明されています。
ワークエリアの外の音は変換されないため、曲の途中だけを使う場合は、先にワークエリアをその範囲に合わせます。
6秒の練習用のコンポジションでワークエリアを3秒から5秒に絞って変換すると、キーフレームは3秒から5秒までの61個だけになり、「オーディオ振幅」レイヤーの長さもその2秒になりました。
ワークエリアより前の時間では、スライダーの値は0ではなく、最初のキーフレームの値のままでした。
絞った範囲の外でも式は値を読むため、範囲の外で動かしたくない場合は、動かすレイヤーの長さもその範囲に合わせます。
After Effects 2026の日本語の文字列には、この機能のメッセージとして「ワークエリアにサウンドがありません。」と「アクティブなコンポジションがありません。」が入っています。
これらが出たときは、ワークエリアに音声のレイヤーが入っているか、コンポジションを選んだ状態で実行したかを確かめます。
なお、この機で音声のレイヤーが1つも無いコンポジションを開いたときは、メッセージは出ず、「オーディオをキーフレームに変換」が灰色になって選べませんでした。

メニューが灰色のときは、開いているコンポジションに音声のレイヤーがあるかを先に確かめます。
変換でできるもの
ヘルプでは、コンポジションの中のすべての音を表す「オーディオ振幅」というレイヤーができ、そこに3つのエクスプレッション制御エフェクトが付くと説明されています。
実際に変換すると、タイムラインの一番上に「オーディオ振幅」という名前のヌルオブジェクトができ、3つのスライダー制御が付いていました。
| エフェクト | 中身 |
|---|---|
| 左チャンネル | 左の音の大きさが「スライダー」のキーフレームとして入る |
| 右チャンネル | 右の音の大きさが「スライダー」のキーフレームとして入る |
| 両方のチャンネル | 左右の値の平均が「スライダー」のキーフレームとして入る |
ふつうは「両方のチャンネル」を使い、左右で別の動きをさせたいときだけ「左チャンネル」「右チャンネル」を使います。
当サイトのlinear・easeの記事では、After Effects 26.5で4秒・30fpsのコンポジションを変換し、3つのスライダーにそれぞれ121個(1フレームごと)のキーフレームが入ることを確かめています。
練習用の音で変換した結果
6秒・30fpsのコンポジションでは、3つのスライダーにそれぞれ181個のキーフレームが入りました。
練習用の音は、最初の2秒は左の音量を右の4倍にし、3秒から5秒は左右を入れ替えてあります。
最初の拍の頭のフレームでは、左チャンネルが33.03、右チャンネルが8.26、両方のチャンネルが20.64でした。
左右を入れ替えた区間では左右の値も入れ替わり、両方のチャンネルはどの拍でも左右の値の平均(20.64)になっていました。

無音の区間では、3つのスライダーとも0になりました。
スライダーをグラフエディターで見ると、拍の位置ごとに山ができているのが分かります。

スライダーの値の大きさは音によって変わるため、式の数値を決める前に、こうして大きい音のときの値を見ておきます。
音に合わせて動かす式
ヘルプでは、作られたキーフレームを使うには、エクスプレッションで音の振幅の変化をほかのレイヤーのプロパティにつなぐと説明されており、例としてスケールにつなぐ方法が挙げられています。
動かしたいレイヤーのプロパティを選び、アニメーションメニューの「エクスプレッションを追加」で式を書きます。
音が大きいほど拡大する
2Dレイヤーの「スケール」に書きます。
var a = thisComp.layer("オーディオ振幅").effect("両方のチャンネル")("スライダー");
var s = linear(a, 0, 20, 100, 130);
[s, s]linear は、ある範囲の値を別の範囲の値に置き換える関数です。
公式のリファレンスでは、t が tMin 以下なら value1、tMax 以上なら value2 を返し、その間は直線的に補間すると説明されています。
| スライダーの値 | スケール |
|---|---|
| 0 | 100% |
| 5 | 107.5% |
| 10 | 115% |
| 20以上 | 130% |
練習用の音で試すと、拍の頭のフレームでは「両方のチャンネル」が20.64なのでスケールは130%、次のフレーム(16.19)では124.29%、無音の区間では100%になりました。

式の20は、音の大きさの上限の目安です。
スライダーの値の大きさは音によって違うため、「両方のチャンネル」のスライダーを開いて、大きい音のときの値を見てから合わせます。
上限が小さすぎると、中くらいの音でも130%で止まってしまい、大小の差が出ません。
linear の詳しい使い方は、linear・easeで値を変換するエクスプレッションで説明しています。
大きな音のときだけ光らせる
「不透明度」に書くと、スライダーの値が15を超えたフレームだけ100%、それ以外は0%になります。
var a = thisComp.layer("オーディオ振幅").effect("両方のチャンネル")("スライダー");
a > 15 ? 100 : 015は、反応させたい音のときのスライダーの値を見て決めます。
練習用の音では、拍の頭とその次のフレーム(値が20.64と16.19)だけが100%になり、ほかのフレームは0%でした。
動きがせわしないときは滑らかにする
キーフレームは1フレームごとに入るため、そのままつなぐと細かく震えるような動きになることがあります。
その場合は、スライダーの値に smooth を付けて、前後の値をならします。
var a = thisComp.layer("オーディオ振幅").effect("両方のチャンネル")("スライダー").smooth(0.2, 5);
var s = linear(a, 0, 20, 100, 130);
[s, s]公式のリファレンスでは、smooth(width, samples) は、width 秒の範囲の値を samples 個に分けて平均し、短い時間の大きな変化を小さくすると説明されています。
samples を大きくすると滑らかになりますが処理は遅くなり、平均に現在の時間の値を含めるため、samples は奇数にするのが一般的とされています。
width を大きくするほど動きは滑らかになりますが、音への反応は鈍くなります。
練習用の音で smooth(0.2, 5) を付けると、0.5秒の拍の頭の値は20.64から7.07に下がりました。
山が低くなるため、smooth を付けたら linear の上限(式の20)も、ならした後の値に合わせて小さくします。
また、平均には後ろの時間の値も入るため、拍の約0.1秒前から値が上がり始めました。
式で使う名前は日本語版と英語版で違う
上の式の「オーディオ振幅」「両方のチャンネル」「スライダー」は、日本語版のAfter Effectsでの名前です。
公式のリファレンスでは、effect(name) の name には、初期設定の名前か、自分で付けた名前を指定すると説明されています。
名前を手で打たずに、エクスプレッションのピックウイップで「両方のチャンネル」の「スライダー」を指すと、使っている環境の名前で式が入ります。
英語版で作られた見本の式を貼り付けて動かないときは、レイヤー名とエフェクト名が自分の環境の名前と合っているかを確かめてください。
特定の音だけに反応させる
ヘルプの説明どおり、「オーディオ振幅」はコンポジションの中のすべての音を表します。
BGMとナレーションが同じコンポジションにあると、両方の音が合わさった値になります。
BGMだけに反応させたい場合は、BGMだけを入れたコンポジションを別に作ってそこで変換し、本番のコンポジションからそのレイヤーを参照します。
var a = comp("BGMだけ").layer("オーディオ振幅").effect("両方のチャンネル")("スライダー");
var s = linear(a, 0, 20, 100, 130);
[s, s]公式のリファレンスでは、comp(name) は名前を指定して別のコンポジションを取得すると説明されています。
参照する側とされる側で、時間の位置(BGMの始まり)がそろっているかを確かめてください。
オーディオをオフにしたレイヤーは含まれない
タイムラインでオーディオのスイッチ(スピーカーのアイコン)をオフにしたレイヤーの音は、変換の結果に含まれませんでした。
練習では、2秒から3秒だけ鳴る音声のレイヤーのオーディオをオフにして変換すると、その区間の値は0のままでした。
同じレイヤーのオーディオをオンにして変換し直すと、2秒から3秒にも値が入りました。
同じコンポジションの中で一部の音だけを外したい場合は、変換する前にその音声のレイヤーのオーディオをオフにする方法も使えます。
変換した後の注意点
- 変換の結果はキーフレームとして書き込まれるため、後で音声を差し替えたり位置をずらしたりしたときは、変換し直す
- 変換し直す前に、古い「オーディオ振幅」レイヤーの扱い(消すか残すか)を決め、式が参照するレイヤー名とそろえる
- 「オーディオ振幅」レイヤーは値を入れておくためのもので、名前を変えると式の参照も直す必要がある
- 長い曲を変換するとキーフレームの数が多くなるため、使う範囲だけをワークエリアにする
実際に変換し直すと、古いレイヤーは残ったまま、同じ「オーディオ振幅」という名前の新しいレイヤーが一番上に足されました。
名前でレイヤーを指す式は、同じ名前のレイヤーが2つあると上にあるほうを読むため、この状態では新しいレイヤーの値が使われました。
同じ名前が並ぶと取り違えやすいので、古いレイヤーが要らなければ消し、残すなら名前を変えておきます。
確かめていないこと
変換の手順と結果、スケールの式、オーディオをオフにしたレイヤーの扱い、変換し直したときのレイヤーは、After Effects 2026(26.5)の日本語版と自作の練習用の音で確かめました。
光らせる式と smooth を付けた式の値は、スクリプトでフレームごとに読み出して確かめたもので、画面での再生は確かめていません。
macOS版と英語版での名前、ピックウイップで式を入れたときの書き方、comp で別のコンポジションを参照する式、「ワークエリアにサウンドがありません。」が出る条件、実際の曲での値の大きさは試していません。
参照したページは、Adobe:多彩なアニメーションツールとAdobe:エクスプレッション言語です。
