6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IntroLoopで簡単にイントロ付きループBGMを作る

Last updated at Posted at 2019-11-28

前提

この記事は、Unity アセット冬のアドベントカレンダー 2019 のために書かれた記事です。

Unityアセット冬のアドベントカレンダー 2019 Winter! – Unity公式 Asset Portal

この記事では、簡単にイントロ付きループBGMが作れるアセットIntroLoopをご紹介したいと思います。

↓Youtubeの解説動画
Youtubeの解説動画

IntroLoopとは?

UnityのデフォルトのAudio Sourceでは、BGMのループはBGMの最初と最後をループすることしかできません。
IntroLoop1.png
しかしBGMによっては、まずイントロ部分を流しその後のループ部分をループしたいという、イントロ付きループをしたい場合があります。

IntroLoopでは、下図のようにIntro BoundaryとLooping Boundaryを設定することで自由にループ部分を指定することできます。
IntroLoop2.png

このアセットを使う利点を細かく挙げると、

  • イントロ付きループをするために、オーディオファイルをカットしたりする必要はない
  • イントロ付きループをするためのプログラムを書く必要はない。(再生処理などのコントロールはプログラムで実行します)
  • ループ地点の数値指定なので、ループの設定がとても楽
  • オーディオファイルのメモリリリースを適切に行なってくれるのでモバイルでも安心
  • ポーズ、リジューム、フェードイン、フェードアウト、クロスフェードなど多様なコントロールができる
  • オーディオごとにボリューム、ピッチの設定、ループ形式(イントロループ、ループ、ループなし)の設定が可能
  • AudioMixerGroupとの連携も普通にできる
  • フルソースコード、Package Manager対応、コーディングも良い

などがあります。

使い方

使い方はとても簡単です。大体4つの工程に分かれます。

  1. オーディオファイルを用意する
  2. オーディオファイルのループポイントを調べる
  3. IntroloopAudioアセットファイルを作成する
  4. IntroloopPlayerシングルトンを使ってIntroloopAudioを再生する

1. オーディオファイルを用意する

イントロ付きループを行うオーディオファイルを用意します(wav/ogg/mp3など)。
用意したオーディオファイルをUnityにインポートして、AudioClipアセットファイルとしておきます。

2. オーディオファイルのループポイントを調べる

イントロ付きループの2つのループポイント(Intro BoundaryとLooping Boundary)の位置をミリ秒単位で調べます。
IntroLoop2.png

ループポイントのを調べるためには、Audacityなどのオーディオ編集ソフトを利用します。(私はAdobeのAuditionを使っています。こちらも便利です。)今回はIntroLoopの紹介で、オーディオ編集ソフトを用いたループポイントの調べ方は記事の範囲を逸脱しますので省略します。

Audacity ® | Free, open source, cross-platform audio software for multi-track recording and editing.

なお、オーディオ編集ソフトでループポイントを調べるのがベストな方法ですが、
Unity内でループポイントを微調整していくだけでもループポイントを設定できると思います(時間がかかるかもしれません)。

3. IntroloopAudioアセットファイルを作成する

1.で用意したAudioClipアセットファイルを右クリックして出てくるメニューから、Create > Introloop > IntroloopAudioでIntroloopAudioアセットファイルを作成します(下図の1.)。

作成したIntroloopAudioアセットファイルを選択して、設定を行います(下図の2.)。

introloop-asset.png

Audio Clipには対象のオーディオファイルのAudioClipアセットファイルを指定します。

Volume、Pictchを設定します。オーディオファイルの音が大きすぎたり、小さすぎたりする場合にここで調整できます。

LoopモードはIntroloop/Loop/Non Loopingから選べます。イントロ付きループをしたい場合はIntroLoopを選びます。Loopの場合はオーディオファイルの最初と最後をループします。Non Loopingの場合はループしません。IntroLoopでは、これらのモードを同じIntroloopPlayerシングルトンで操作できます。

さらに、モードがIntoroloopの場合は、上で説明した2つのループポイント(Intro BoundaryとLooping Bundary)を設定して、イントロ付きループの境界を指定します。
introloop-audio-set.png

4. IntroloopPlayerシングルトンを使ってIntroloopAudioを再生する

以下のようなコードを書いて3.で用意したIntroloopAudioをコントロールします。
コントロール内容は(再生する/ポーズする/再開する/シークする/停止する)などです。

MyTest.cs
using System;
using System.Collections;
using UnityEngine;
using E7.Introloop;

public class MyTest : MonoBehaviour
{
    public IntroloopAudio introloopAudio;
    
    // 再生する
    public void Play()
    {
        // Introloopならイントロ付きループで、
        // Loopならループで、
        // Non loopingならループなしで再生されます。
        IntroloopPlayer.Instance.Play(introloopAudio);
        
        // フェードインしながら再生もできる
        // IntroloopPlayer.Instance.Play(introloopAudio, fadetime);
    }
    
    // ポーズする
    public void Pause()
    {
        IntroloopPlayer.Instance.Pause();
        
        // フェードアウトしながらポーズもできる
        // IntroloopPlayer.Instance.Pause(fadetime);
    }

    // 再開する
    public void Resume()
    {
        IntroloopPlayer.Instance.Resume();
        
        // フェードインしながら再開もできる
        // IntroloopPlayer.Instance.Resume(fadetime);
    }

    // 指定した時間にシークする
    public void Seek(float elapsedTime)
    {
        IntroloopPlayer.Instance.Seek(elapsedTime);
    }

    // 停止する
    public void Stop()
    {
        IntroloopPlayer.Instance.Stop();
        
        // フェードアウトしながら停止もできる
        // IntroloopPlayer.Instance.Stop(fadetime);
    }
}

上記コードのように、IntroloopAudioの(再生する/ポーズする/再開する/シークする/停止する)はIntroloopPlayerを使って行われます。
IntroloopPlayerはシングルトンとして実装されています。シングルトンについては以下を参照してください。

[Unity]シングルトンを使ってみよう - Qiita

その他、IntroloopPlayerにはAudioMixerの設定項目があります。
ここにAudioMixerを指定することで、AudioMixerの機能を利用できます。
Untitled-2.png

デモでIntroLoopの挙動を確認

デモプログラムはここで確認できます。購入前に確認してみましょう。

Demo | Introloop

サポートは日本語で大丈夫のようです

作者様はタイの方のようですが、Forumを見たところ日本語でのサポート可能なようです。日本人でも安心してアセットを利用できます。

Introloop - Easily play looping music with intro section - Unity Forum

リンク

関連するリンクのまとめです。

Introloop(AssetStoreへのリンク)

Introloop(ホームページ)

Introloop(フォーラム(日本語可能))

最後に

とても便利なので、Unityでお手軽にイントロ付きループをしたい人は是非IntroLoopを使いましょう!

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?