Communitygithub.com

hyperframes-audio

オーディオエフェクトチェーン、ボイスオーバーカーブ、ダイナミクス処理、および自動化を定義するスキル。エフェクトは `data-fx-chain` 属性に保持され、プレビューとレンダリングは同じWeb Audioグラフを使用するため、調整は1回で済みます。

hyperframes-audio とは?

HyperFrames Audio スキルは、AIを活用したビデオ/オーディオ編集フレームワーク内でオーディオ処理を管理します。これは、エフェクトチェーン(data-fx-chain)、オートメーションエンベロープ(data-automation)、およびボイスオーバーカーブ(data-fx-carve)の3つの重要な属性をオーディオ/ビデオ要素に直接書き込むことで機能します。このスキルは、トラックゲイン、クロスフェード、エフェクトチェーン、ボイスオーバーカーブ、およびオートメーションを処理し、一方、ソーシングとタイミングは /hyperframes-core および /media-use スキルに任されています。このスキルの特徴は、ライブプレビューと最終レンダリングに単一のエフェクト実装が使用される点であり、これにより調整が1回で済み、スクラブ中に聞こえる内容が最終出力に正確に反映されます。ボイスオーバーカーブは、音楽ベッドのスペクトル全体をダッキングするのではなく、音声が実際に占める周波数帯域のみを減衰させることで、音声の明瞭性を維持しながら、全体の音楽性を保ちます。このスキルは、特定の症状(こもり、歯切れの悪さ、音割れなど)に対応するプリセットを提供し、診断と問題解決のためのベストプラクティスを概説しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jasonfast123/hyperframes-skills/tree/main/skills/hyperframes-audio

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

HyperFrames Audio

ミックスとは、プロセッサの積み重ねではなく、関係性の集合です。単独では正しく聞こえる2つのトラックでも、一緒にすると聞くに堪えないことがあります。その修正は、ほとんどの場合「音量を下げる」ことではなく、2つのトラックが何を奪い合っているかを見つけ、それを必要とする方に与えることです。ここにあるすべてのツールは、それらの関係性の1つを表現するために存在します。

エフェクトは要素上で data-fx-chain として保持され、プレビューとレンダリングは同じWeb Audioグラフを実行します。つまり、スタジオはライブコンテキストで、エンジンはそれがすでに駆動しているブラウザ内のオフラインコンテキストで動作します。各エフェクトの実装は1つであるため、スクラブ中に聞こえる内容が書き出される内容です。2度調整する必要はありません。

クリップのタイミングは /hyperframes-core に従います。オーディオ/ビデオのトリムとソース範囲は data-start、data-duration、data-media-start を使用し、クロスフェードは異なるトラックのクリップを重ねます。このスキルは、配置されたトラックのフェードイン/フェードアウト、クロスフェードエンベロープ、トラックゲイン/トラックボリューム、ボリュームとエフェクトのオートメーション、ダッキング/ボイスオーバーカーブ、およびエフェクトチェーンを担当します。/media-use は、ソーシング、生成、および前処理を担当します。

定数 data-playback-rate(0.1..5)は、一致するオーディオ/ビデオ要素が同じタイミング、ソースオフセット、およびレートを使用する場合、ピクチャーおよびピッチ保持サウンドに対してレンダリングセーフです。レートエンベロープがないため、ソース速度ランプはサポートされていません。派生した同期アセットを前処理してください。HyperFrames は自動的な波形同期やドリフト補正を提供しません。 コピー可能なカット/クロスフェード/リタイムのレシピについては、/hyperframes-core → references/creator-editing-recipes.md を参照してください。

すべてを保持する3つの属性は、すべてオーディオ/ビデオ要素自体にあります。

属性保持するもの
data-fx-chainエフェクト(シグナル順)
data-automationこのトラックのボリュームまたはそのエフェクトパラメータのエンベロープ
data-fx-carveカーブ自体の設定(再導出可能にするため)

出荷されているエフェクトファミリーは、ゲイン、EQ(ハイパス、ローパス、ピーキング、シェルフ)、コンプレッサー、リミッター、ゲート、サチュレート、ディレイ、リバーブ、コーラス、フェイザー、ビットクラッシュです。

各エフェクトの正確なJSON、およびレーンが満たす必要のあるルール:references/attributes.md。 すべてのエフェクトとそのパラメータ、範囲、単位:references/fx-registry.md。 聞こえないファイルの問題を解決する方法:references/diagnosis.md。 プリセット、名前付きジョブ、ワンノブプロファイル、および症状から修正へのテーブル:references/presets.md — チェーンを手動で構築する前にこれを読んでください。なぜなら、プリセットまたは名前付きジョブのいずれかが通常、すでに問題を特定しているからです。

連携の仕組み

2つのオーサリングサーフェスがそれらの属性を書き込みます。2つのランタイムが同じビルダーを通じてそれらを読み取ります。この共有された中間層が、プレビューがレンダリングを予測する理由です。

flowchart TB
  voice["ボイストラック<br/>メディアファイル"]
  bed["音楽ベッド<br/>メディアファイル"]

  subgraph AUTHOR["オーサリング — 属性を書き込む唯一のもの"]
    panel["スタジオ<br/>ボイスオーバーカーブコントロール"]
    script["scripts/carve.mjs<br/>ペアを検出、デフォルトで動的"]
    analysis["core/audioCarve.ts<br/>carveProfile · analyseCarveBands<br/>analyseCarveDuck · analyseCarveDynamics"]
    panel --> analysis
    script --> analysis
  end

  voice --> analysis
  bed --> analysis

  subgraph ATTRS["ベッド要素に書き込まれる"]
    carveAttr["data-fx-carve<br/>source · strength · dynamic"]
    chainAttr["data-fx-chain<br/>peaking xN + gain, tagged fromCarve"]
    autoAttr["data-automation<br/>カーブされたパラメータごとに1レーン"]
  end

  analysis --> carveAttr
  analysis --> chainAttr
  analysis --> autoAttr

  subgraph SHARED["1つの実装、両方から読み取られる"]
    build["audioFxGraph.ts · buildFxChain"]
    sched["audioFxAutomation.ts · scheduleChainAutomation"]
  end

  chainAttr --> build
  autoAttr --> sched

  build --> preview["プレビュー<br/>ライブAudioContext<br/>attachElementFxChain"]
  sched --> preview
  build --> render["レンダリング<br/>ヘッドレスブラウザ内のOfflineAudioContext<br/>applyAudioFxChain"]
  sched --> render

  preview --> heard["スクラブ中に聞こえるもの"]
  render --> wav["処理されたWAV<br/>+ chainTailSecondsによりミックスがテールを通過させる"]
  wav --> mix["エンジン · audioMixer<br/>ボリュームレーンはここでPCMに焼き付けられ、グラフにはない"]
  mix --> out["レンダリングされたミックス"]

  edit["再生中に属性を編集"] -.->|MutationObserver| preview

カーブ自体の設定は再生時に読み取られることはありません。再生されるのは、カーブが生成したチェーンとレーンです。data-fx-carve は、既存のカーブの強度をフィルターから逆算する代わりに変更できるように存在します。

カーブされたベッド内部では、信号は最初にディップを通過し、次にレベルマッチ、そして自分で構築したものの順に通過します。これが、追加したリミッターが依然として最後の天井として機能する理由です。

flowchart LR
  src["デコードされたベッド"] --> p1["peaking<br/>400 Hz"]
  p1 --> p2["peaking<br/>1 kHz"]
  p2 --> p3["peaking<br/>1.6 kHz"]
  p3 --> g["gain<br/>レベルマッチ"]
  g --> hand["独自のエフェクト<br/>例:リミッター"]
  hand --> dest["トラックゲイン、その後出力"]

  l1["lane fx.n1.gain"] -.->|"その帯域における<br/>音声のレベルのエンベロープ"| p1
  l4["lane fx.n4.gain"] -.->|"ベッドが全体的に<br/>(ダックする量)"| g

静的カーブは、固定値を持ちレーンがまったくない同じグラフです。

まず、何が問題かを特定する

以下の表は「音がこもっている」というところから始まります。これは、誰かがすでに聞いてそう言ったことを前提としています。「これを修正して」とファイルを渡された場合、あなたにはそのような言葉はなく、聞くこともできないため、測定する必要があります。すべてを支配する1つのルールがあります。

単一の未知の音声の絶対スペクトルは診断できません。 フォルマントは±10 dB、基本周波数は85~255 Hz、文の終わりにかけて5~6 dB減衰します。これらのすべてが単独では欠陥として読み取られ、それらすべてが話者自身のものです。

したがって、比較してください。そして、同じファイル内の何かと比較してください。存在する場合はクリーンなオリジナル、そうでない場合はポーズ(沈黙のギャップ)— ギャップで聞こえるものはすべて付加的なものであり、ギャップのスペクトルは音声ではなくチャンネルのものです。公開されている平均スペクトルや合成された制御音声と比較することは機能しません。2人の話者はほとんどの欠陥よりも大きな違いがあり、このガイダンスの背後にある評価では、両方の誤った答えがまさにそれから生じました。

オリジナルも使用可能な無音もない場合、静的な音色の欠陥は本当に未確定です。そのように述べ、適合する読み取り値を提供し、1つを選んでチェーンを構築しないでください。

コマンド、トラップ、および実証済みのレシピ:references/diagnosis.md。誰も説明していないファイルを診断する前に読んでください。

症状から始める

帯域と種類がわかったら、オーディオの問題に名前を付けます。ほとんどの悪いオーディオは、これらのうちの1つか2つであり、それぞれに出荷済みの回答があります。

このように聞こえるこれを試す
ハムやドスンという低音が下にあるrumble-cut、または80 Hzでのhighpass
こもっている、胸声に聞こえるTame Boominess ジョブ (200 Hz)
こもっている、段ボールの後ろから聞こえるReduce Mud ジョブ (250 Hz)
言葉が聞き取りにくいAdd Clarity ジョブ (3 kHz)、またはベッドをカーブする
耳障りで疲れるSoften Harshness ジョブ (3.2 kHz)
単語によって音量が大きく異なるEvenness コンプレッサー、または Even Out Levels
文と文の間に部屋の音があるroom-gate
声と音楽がぶつかっているVoiceover carve — どちらかにEQをかけるのではない
ドライで、どこにも録音されていないroom-tight または room-natural
ただ「アマチュアっぽい」voice-clean(上記の4つを順に適用したもの)

完全なカタログ、各プリセットの内容、帯域の語彙、および意図的にカバーされていないもの(デエッシング、ノイズ除去、トーンマッチ):references/presets.md。

追加する前に減算し、フィルタリングした後にレベル調整し、レベル調整の後に関係性、キャラクターと天井を最後に。各ステップは、次のステップが聞くものを変更します。ハイパスの前に設定されたコンプレッサーは、ランブルを追いかけることに時間を費やします。

名前ではなく、問題でファミリーを選ぶ

フィルター (highpass、lowpass、peaking、lowshelf、highshelf) は、トラックが占有を許可される周波数を決定します。これは、2つのソースが衝突する場合の最初のツールです。衝突は帯域で発生するためです。ベッドと音声の両方が1~3 kHzを必要とし、それをベッドから奪うことは、ミックス全体の音量を下げるよりもはるかにベッドへの影響が少ないです。音声のハイパスは、ランブルに対する標準的な修正です。ローパスは、意図的に音を暗くしたりこもらせたりします。

ダイナミクス (gain、compressor、limiter、gate) は、トラックのレベルが時間とともにどのように動作するかを決定します。コンプレッションは、ラウドとクワイエットの間の距離を狭め、クワイエットな部分が上がってこられるようにします。リミッターは天井です。何も整形せず、何も通過させないことを保証します。ゲートは、しきい値以下のものを除去します。これにより、フレーズ間の部屋の音を無音にします。gain は単純なレベルステージであり、トラックが邪魔にならないように移動する必要がある場合にオートメーションレーンが乗るものです。

非線形 (saturate、bitcrush) は波形の形状を変更し、そこになかった高調波を追加します。トラックにキャラクターやザラツキが必要な場合に使用します。補正のためではありません。そして、それが生成的であることを忘れないでください。つまり、薄いソースをより密度の高いものにしますが、クリーンにはしません。

時間 (delay、reverb、chorus、phaser) は、トラックを空間に配置したり、幅を与えたりします。これらはミックスを最も簡単に台無しにするものです。テールやデチューンされたコピーは、音声が必要とする同じ空間を占有するからです。何か他のものの背後に配置されるべきものに使用し、ウェット量を単独で正しく聞こえる量よりも低く保ちます。

チェーンはシリアルです。各エフェクトは、その前のエフェクトが生成したものを処理します。したがって、修正フィルタリングは早い段階で、キャラクターは中間で、リミッターは最後に配置し、実際に天井として機能できるようにします。

ボイスオーバーカーブ

それが解決する問題。 音声の下にある音楽ベッドは、音声を聞き取りにくくします。反射的にはベッド全体をダッキングしますが、これは機能するものの、ベッドの存在感すべてを犠牲にします。つまり、ボイスオーバー全体で音楽が弱々しくなります。しかし、音声はスペクトル全体を必要とするわけではありません。音声が実際に占有するいくつかの帯域だけが必要です。カーブはそれらの帯域だけを取り除き、ベッドは低域と高域を保持するため、音声が明瞭でありながら、音楽は音楽として機能し続けます。

エフェクトではなく、関係性です。 設定は処理されるトラックであるベッドに存在し、リッスンする音声に名前を付けます。これはサイドチェインコンプレッサーとまったく同じです。音量が小さくなるトラックを選択し、何がそれを小さくするかを選択します。音声トラックにカーブを決して配置しないでください。 自分自身に対してカーブされた音声は、微妙なミックス選択ではなく、バグです。

1つの音声だけでなく、すべての音声。 sources はリストです。なぜなら、ベッドは通常、シーケンス全体(ナレーター、インタビューの回答、2人目のプレゼンター)の下で実行されるからです。これらは、何かが測定される前にベッド自身のクロックに合計されます(mixCarveSources)。したがって、1つの分析がそれらすべてをカバーします。帯域はそこにあるすべての音声から得られ、エンベロープはそれらのいずれかが発生している場所で上昇します。ベッドが再生されている間に決して再生されない音声は除外されます。それらはベッドをマスクできません。

1つのノブ。 strength は 0..1 で、すべてを導き出します。カットの深さ、帯域数、幅、明瞭性と生の音声エネルギーのどちらを優先するか、レベルがどれだけ下がってもよいか、音声の下をどれだけ狙うか。これら6つは、実際のミックスでは常に一緒に動きます。穏やかなカーブは、浅いカット、少ない帯域、わずかなダッキングです。ハードなカーブは、より深く、より多くの帯域で、より多くのダッキングを行います。そのため、これらは carveProfile に一度だけ書き込まれる1つの関係性です。デフォルトは 0.25 です。これは3つの帯域で6 dBのディップ、6 dBのレベル余裕があり、穴のように聞こえることなく聞こえます。0.5 ではディップは10 dBに達し、カーブが音声のためのスペースではなく、エフェクトとして聞こえ始めるしきい値です。それ以上は、ラウドなベッドの下で静かな音声を聞かせるための意図的な領域です。0 はスペクトルのみです。1つの帯域で、レベルマッチはまったくありません。

デフォルトでカーブ。 ナレーションの下で再生されるベッドはカーブを必要とします。時間があればの仕上げステップではありません。両方のトラックを配置し、以下のコマンドを実行し、聞いてください。音楽がナレーションの下に座る必要がない場合(ミュージックビデオ、タイトルカード、トラックに合わせたモンタージュカット)のみスキップしてください。

常に音声に従います。 静的モードはありません。固定の深さは、すべてのポーズ中にベッドを薄くし、両方を聞いた後はそれを望む理由はありません。すべての値は、音声自体のレベルのエンベロープになります。無音はベッドをそのままにし、ラウドな部分はカーブを最大深度に押し上げます。これらは通常のオートメーションとして書き込まれるため、レーンがタイムラインに表示され、後で編集できます。

レベルマッチングはその一部です。 スペクトルカービングは、単に音声よりもラウドなベッドを修正できません。そのため、カーブはベッドが音声よりどれだけ上にあるかも測定し、gain ステージを書き込みます。静的カーブの場合は1つの値に保持され、動的カーブの場合はエンベロープによって駆動されます。そのエンベロープは意図的にゆっくりと解放されます。単語が終わった瞬間に全音量に戻る音楽は、機械がやっているように聞こえます。

実行方法。 スタジオでは、カーブはトラックのエフェクトラックの上部にある1つのモジュールです。音声、強度、動的、およびそれが生成した分析が1つのカードに表示されます。これは、別のトラックが音声である可能性がある場合に常に存在し、正確に1つの候補が上にあるベッドは、デフォルトで動的に、デフォルトの強度でカーブされます。それがナレーションの下のベッドに必要なものであり、モジュールはそれを変更またはオフにする場所です。複数の候補がある場合、推測するのではなく、ピッカーが待機状態になります。ヘッドレスモード(コンポジションを編集するのではなくオーサリングする場合のパス)は次のとおりです。

node <SKILL_DIR>/scripts/carve.mjs --comp index.html

これがコマンド全体です。それは見つけます…

[翻訳のため省略]

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

embedded-captions

>

faceless-explainer

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

figma

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

general-video

>

hyperframes

>

hyperframes-animation

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition

hyperframes-cli

>

hyperframes-core

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class=

hyperframes-creative

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

hyperframes-keyframes

>

hyperframes-registry

Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

jasonfast123/hyperframes-skills

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

media-use

Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.

motion-graphics

>

music-to-video

Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.

pr-to-video

Turn a GitHub pull request (a PR URL, owner/repo#N, or

remotion-to-hyperframes

Port an existing Remotion (React) composition

slideshow

>

talking-head-recut

Package an existing talking-head / interview / podcast video with timed, designed GRAPHIC OVERLAY cards — kinetic titles, lower-thirds, data callouts, quotes, side panels, picture-in-picture — synced to the transcript, on a 16:9 / 9:16 / 4:5 canvas of your choice; the clip plays untouched underneath. Trigger on

関連スキル