注目キーワード

【音MADを作ろう#1】テンポに合わせて映像を変化させるプログラム【Davinci Resolveで動画編集】

はじめに

For the article in English, please click here.

今回解説するのは、タイトルの通りです。百聞は一見に如かず、まずは、下の映像をご覧ください。

(使用曲「ルマ」については非商用目的に限り使用可である旨、確認済。

使用される際は権利者へご確認ください。)

正方形・円がリズムに合わせて変化しているのが分かるかと思います。

今回、曲のテンポが154なので、60/154秒を一周期として振動させています。

では、一体どうやってこのような映像を作るのか?

以下では、編集ソフト「Davinci Resolve」を用いた方法について解説します。

ちなみに、投稿者は「Davinci Resolve」を愛用しています
無料なのに高性能。皆さんも使ってみて~

本題

先ほどの映像、手作業で作ってもいいのですが、人間の手でやると、多少の誤差が出てしまうもの。

テンポが分かっているのなら、それを用いてプログラムしたほうが正確ですよね。

そこでカギになるのが、「エクスプレッション」。

簡単に言うと、プログラミング(Lua言語)を用いてやってほしい内容を指示すること。

まずは、「エクスプレッション」の使い方を見ていきましょう。

こんなの常識だよ、と思う方は次へ Let’s Go~!

「エクスプレッション」の使い方

まずは、「Fusion」を選択した後、「Transform」などのツールを配置して選択します。

その後、インスペクタの項目を右クリックすると「エクスプレッション」という文字が現れます。

これを選択すればOK。

エクスプレッションを選択して表示された枠内にプログラムを記述していきます。

プログラムの書き方

原則として、以下のようなルールがあります。

  • プログラムは「:」で始める
  • 改行時は「;」を用いる
  • 「return」を用いて返り値を取得
  • また、以下の変数はよく使うので覚えておきましょう。

    そのクリップにおける時間(単位は「フレーム」)time
    1秒当たりのフレーム数comp:GetPrefs().Comp.FrameFormat.Rate

    いくつか例を見ていきましょう。

    【例1】
    :return 0

    常に0を返します。

    これに関しては、ぶっちゃけエクスプレッションを使う意味があまりないです(笑)

    【例2】
    :second=time/comp:GetPrefs().Comp.FrameFormat.Rate;
    return second;

    「second」という変数を宣言し、その値を出力しています。ご覧の通り、time[フレーム]をcomp:GetPrefs().Comp.FrameFormat.Rate[フレーム/秒]で割ることで、そのクリップにおける時間[秒]を定義しています。

    例えば3秒経過していたら3が出力されるし、10秒経過していたら10が出力されます

    (現在の経過時間[秒]をテキストとして出力している)

    【例3】
    :max_time=10;
    second=time/comp:GetPrefs().Comp.FrameFormat.Rate;
    return max_time-floor(second);

    先ほどの応用で、カウントダウンを行います。

    floorは、小数点以下を切り捨てる関数。例えば、floor(2.5)=2です。

    「テキスト」に「エクスプレッション」を適用して上のように記述すると、下のようになります。

    max_timeの値は好きなように変えてね!

    テンポに合わせて映像を変化させる方法

    さて、以上のプログラムを用いて、テンポに合わせて映像を変化させる方法を考えてみましょう。

    想定される状況は以下の2種類あるかと思います。

  • テンポに合わせて1(true)か0(false)かで変化する
  • テンポに合わせてなめらかに振動する
  • それぞれについて考えていきます。

    まず、前者ですが、例えばif文を用いて次のように表せます。

    :tempo=154;
    second=time/comp:GetPrefs().Comp.FrameFormat.Rate;
    if second%(120/tempo)<=60/tempo then;
    return 1;
    else return 0 end;

    映像にするとこんな感じですね。

    音MADでよく見る、一定時間周期で左右反転するプログラムです。

    ちなみに、一定時間周期で左右反転させるには、「Transform」の「反転」についてエクスプレッションを適用し、上のプログラムを書けばOK。

    テンポは自由に変えてね!

    後者の「テンポに合わせてなめらかに振動する」ですが、具体的にどのように動かしたいのかによって用いる関数が異なります。例えば、曲線的に動かしたいならサインコサイン(三角関数)を使えばよいですし、直線的に動かしたいならそのような数式を使えばよいですね。必要に応じて絶対値も使いましょう。

    下にサンプルを置いておきます。

    :tempo=154;
    difference=0.2;
    second=time/comp:GetPrefs().Comp.FrameFormat.Rate;
    return 1+difference*abs(sin(second*tempo*pi/60+pi/2));

    これを「Trasition」の「Size」について適用すると、次のようになります。

    直線的に変化するのならまだしも、曲線的に変化する映像を手作業で作るのは骨が折れるので、「エクスプレッション」を積極的に活用しましょう!

    オリジナルの数式を作って君も音MAD職人になろう!

    以下はAIによる翻訳&要約です。内容の一部に誤りが含まれる場合があります。

    The contents below are generated by AI, but some parts of it might be wrong or inaccurate.

    Master the Art of Adjusting Videos with Expressions

    In this guide, we will explore the process of adjusting videos using expressions. A hands-on approach can introduce slight errors, making a programmed solution more accurate and reliable.

    The key tool in this process is “Davinci Resolve,” a powerful editing software that I personally recommend. Despite being free, it offers top-notch performance. So, why not give it a try?

    To begin, let’s understand the concept of expressions. Simply put, expressions involve instructing the software through programming (using the Lua language) to achieve the desired effects.

    To demonstrate the process, we will use the example of a video with square and circular elements that change rhythmically. We will control these changes based on the tempo of the accompanying music.

    The first step is to select “Fusion” and place tools such as “Transform” where needed. By right-clicking on the inspector panel, you will find the option to use expressions. This selection will allow you to write the programming code in the designated box.

    Expressions in DaVinci Resolve adhere to specific rules. Programs should start with a “:” and use “;” for line breaks. The “return” keyword is used to obtain output values.

    For ease of use, familiarize yourself with commonly used variables like time and comp:GetPrefs().Comp.FrameFormat.Rate, representing the current time in frames and the frames per second, respectively.

    Let’s overview a few examples:

    1. The following expression always returns 0:
      :return 0

      Though not very practical, it demonstrates the use of expressions.

    2. This expression defines the variable “second” as the time in seconds:
      :second = time / comp:GetPrefs().Comp.FrameFormat.Rate
      return second

      Here, the time in seconds is displayed. If 3 seconds have elapsed, the output will be 3; for 10 seconds, the output will be 10.

    3. The following expression counts down from a specified maximum time:
      :max_time = 10
      second = time / comp:GetPrefs().Comp.FrameFormat.Rate
      return max_time - floor(second)

      This expression produces a visual countdown, with the “max_time” variable allowing for customization.

    Based on these examples, you can adjust videos with expressions in various ways. By using conditional logic like if statements or mathematical functions like sin and cos, you can create seamless and dynamic transformations.

    For instance, if you want to alternate between two states based on the tempo, you can use the following expression:
    :tempo = 154
    second = time / comp:GetPrefs().Comp.FrameFormat.Rate
    if second % (120 / tempo) <= 60 / tempo then
    return 1
    else
    return 0
    end

    This expression simulates the left-right flipping effect seen in many audio MAD videos.

    Alternatively, you can create smooth oscillating movements using expressions like:
    :tempo = 154
    difference = 0.2
    second = time / comp:GetPrefs().Comp.FrameFormat.Rate
    return 1 + difference * abs(sin(second * tempo * pi / 60 + pi / 2))

    The resulting video will exhibit smooth, curved movements that can enhance the visual experience.

    By mastering expressions and their application to video adjustments, you can elevate your editing skills to new heights. Remember to experiment and create your own unique formulas to become a masterful audio MAD creator.

    Feel free to ask for further guidance or clarification, and enjoy the process of exploring the limitless possibilities of expressions in video editing!

    (そんなこと言ってへんで(ささやき))

    最新情報をチェックしよう!