CRIWARE for C#
Search Results for

    Show / Hide Table of Contents

    サンプルプロジェクト

    本SDKではsamplesディレクトリ以下にいくつかのサンプルプロジェクトを同梱しています。
    CRI ADX LE for C# をご利用の場合はGithubリポジトリ内のサンプルをご参照ください。 ここでは、各プロジェクトについて説明します。

    また、本SDKに同梱しているサンプルプロジェクトで利用しているデータの元プロジェクトは次のページからダウンロード可能です。

    • https://www.criware.jp/adx2/demo/download_j.php

    SampleExtension

    対応ランタイム netstandard2.1~/Unity2021~

    本SDKのサンプルでは、各プロジェクトで共通して利用するコードをSampleExtensionとしてまとめています。
    以下の機能は将来的にプラグイン機能の一部として組み込まれる可能性がありますが、現在はサンプルコードとして提供しております。

    • スレッド移譲を伴うコールバックの購読
      • RegisterListener拡張メソッド
    • フィルターコールバックの補助
      • WithCopiedPcm拡張メソッド

    いずれも、SampleExtension内のコードを参照したうえでCriWare名前空間をusing宣言に追加することで利用可能です。

    ConsoleSampleApp

    単純なコンソールアプリケーションのサンプルです。
    最低限のADXライブラリのセットアップとキュー再生を行います。

    対応フレームワーク net8.0
    動作確認済みプラットフォーム Windows/macOS/Linux

    実行方法

    CLIでの実行

    samples/ConsoleSampleAppディレクトリで次のコマンドにより実行できます。

    dotnet run
    

    VisualStudioでの実行

    dotnet 8 のプロジェクトに対応したVisual Studioでsamples/sample.slnを開いてください。
    ConsoleSampleAppをスタートアッププロジェクトとして実行可能です。

    サンプル内容

    ADXを利用して音声を再生するための最低限の処理を行うサンプルです。
    Program.cs内で順に以下の処理を行っています。

    1. エラーコールバックの登録
    2. ADXライブラリの初期化
    3. CriAtomDbasの作成
    4. ボイスプールの作成
    5. ACFの登録
    6. ACBのロード
    7. CriAtomEXPlayerの作成
    8. キューを指定して再生

    プログラムを実行すると効果音を再生し、次のログが出力されます。

    Allocate
    FromVirtualToNormal
    FromNormalToVirtual
    Remove
    

    WpfSampleApp

    ADXを利用したWPFアプリケーションのサンプルです。
    任意のACBファイルをロードし、その内容を表示/再生します。

    WPF

    対応フレームワーク net6.0-windows
    動作確認済みプラットフォーム Windows

    実行方法

    dotnet 6 のプロジェクトに対応したVisual Studioでsamples/sample.slnを開いてください。
    WpfSampleAppをスタートアッププロジェクトとして実行可能です。

    サンプル内容

    ACBファイルをロードし、CriAtomExAcbクラスからキュー情報を取得します。
    また、ACFのロード時にはCriAtomExAcfクラスのAPIを利用してACF内の設定情報を取得/表示します。
    [Load File]ボタンでダイアログを開いて任意のACBまたはACFを選択してください。

    ウィンドウ中央のキュー一覧からキューを選択時した際には、そのメタデータ表示とキュー再生を行います。

    GodotSampleApp

    Godot Engine上でCRI ADXを利用するサンプルです。
    単純な再生制御と、いくつかのADX機能を利用した再生を行います。

    Godot

    対応フレームワーク not7.0 net8.0(iOS)
    対応エンジンバージョン Godot Engine-.NET 4.2~
    動作確認済みプラットフォーム Windows/macOS/Android/iOS

    実行方法

    プロジェクトをGodotエンジンで開いて実行してください。

    • samples/GodotSampleApp/project.godot

    Godotでの一部プラットフォーム向けビルドでは、SynchronizationContextが駆動しない場合があることを確認しております。
    このため、SampleExtensionsに含まれるRegisterListenerなどは正常に動作しません。 本サンプルでは、代替手段としてGodot.Callable.CallDeferredを利用した波形表示を行っています。

    • https://docs.godotengine.org/ja/4.x/classes/class_callable.html

    CRIWARE向けリソースのエクスポート/ロード

    Godotエンジンは独自形式ファイルを直接ビルド成果物に含める仕組みを提供していません。
    本サンプルではCRIWARE向けのデータをGodotエンジン独自形式でパッキングされたデータとしてビルド成果物に含めた上で、
    ファイルIOの差し替えによってリソースのロードを行っています。

    独自形式ファイルのエクスポート

    Godotエンジンのデフォルトの挙動では、エンジンが認識する拡張子のファイルのみリソースとしてビルド成果物に含まれます。
    ただし、エクスポート設定でリソース以外のファイルをビルド成果物内にパッキングするよう指定可能です。
    本サンプルでは、エクスポート設定のリソースタブで「リソース以外のファイル/フォルダーをエクスポートするためにフィルター」に対して次のように設定済みです。

    • *.acf, *.acb, *.awb

    ファイルIOの差し替え

    Godot独自形式でパッキングされたデータをロードするには、Godot.FileAccessクラスを利用する必要があります。
    本サンプルでは、CRIWARE内部のファイルIOをGodot向けに差し替えることで、通常通りACF/ACB/AWBのロードを可能にしています。
    詳細はCriFsGodotFileAccess.csの内容もご参照ください。

    サンプル内容

    Basec Controlsタブ

    リストから選択したキューの再生/停止/ポーズが可能です。

    ADX Functionsタブ

    ADXが持つ機能のうち、AISAC/ブロック再生/REACT(ダッキング)を利用した再生の例です。

    • https://game.criware.jp/manual/native/adx2/latest/criatom_tools_atomcraft_aisac.html
    • https://game.criware.jp/manual/native/adx2/latest/criatom_tools_atomcraft_sequence_block.html
    • https://game.criware.jp/manual/native/adx2/latest/criatom_tools_atomcraft_react.html

    UnitySampleApp

    Unity上でADXの機能を利用するサンプルです。
    3Dポジショニングを利用したキュー再生を行います。

    Unity

    対応エンジンバージョン Unity 2021~
    動作確認済みプラットフォーム Windows/macOS/Android/iOS/Web

    実行方法

    プロジェクトをUnityで開いてください。

    • samples/UnitySampleApp 次のシーンを開いて実行してください。
    • Assets/SampleScene.unity

    サンプル内容

    Unity上での3Dポジショニングを利用した音声再生を行います。
    このとき、3Dポジショニングによって内部のサウンドレンダラの各チャンネル出力レベルを表示します。

    独自データのロード

    Unityにおいて独自形式のファイルを取り扱う方法はいくつか挙げられます。
    本サンプルでは2通りの方法でロードを行っています。
    詳細はSampleAudioPlayer.csもご確認ください。

    1. TextAssetとしてのロード 任意のファイルの拡張子を.byteとすることでTextAssetとしてプロジェクトにインポートできます。
    • https://docs.unity3d.com/ja/2020.3/ScriptReference/TextAsset.html TextAssetはオリジナルのバイト列をそのまま含むアセットであるため、その内容をオンメモリデータとしてロード可能です。
    1. StreamingAssetsからのロード 名前をStreaingAssetsとしたフォルダに含まれるファイルは変換など行わずにアプリケーションに含まれます。
    • https://docs.unity3d.com/ja/2018.4/Manual/StreamingAssets.html StreaingAssets内のファイルはランタイムでパスを指定してロードできます。
      ただし、Androidデバイスでは一部仕様が異なる点にご注意ください。

    3Dポジショニング

    3Dポジショニングを行うためにはCriAtomEx3dSourceに対して位置/回転を指定する必要があります。
    ただし、引数としてはCriAtomEx.Vectorを取るためUnityEngine.Vector3等の各エンジン実装の座標は直接指定できません。
    本サンプルではCriAtomEx3dSourceやCriAtomEx3dListenerが実装するIPositionableに対して拡張メソッドを用意することで、
    Vector3やTransformから位置/回転を指定しています。
    詳細はCriAtomUnityExtension.csもご参照ください。

    バスフィルターコールバックの利用

    BusFilterCallbackByNameを利用して各チャンネルのレベル表示を行っています。
    CRIWAREのコールバックをトリガーとしてゲームエンジンやUIフレームワークのAPIを呼び出す場合、スレッドの移譲を行う必要があります。
    本サンプルでは、SampleExtensionsに含まれるRegisterListener拡張メソッドを利用してスレッドを跨いだ購読を行っています。

    スレッドを跨いだ購読では遅延して実際のコールバックが呼び出されるのに対して、フィルターコールバックの引数に与えられるPCMデータは遅延して参照した際に有効なことを保証できません。
    そこで、本サンプルではSampleExtensionsに含まれるWithCopiedPcm拡張メソッドを利用して別スレッドから参照可能なコピーを作っています。

    disposable = CriAtomExAsr.BusFilterCallbackByName["MasterOut"].Post.WithCopiedPcm().RegisterListener(data => {
    	// ~ 中略 ~
    });
    

    詳細はSampleChannelsView.csも併せてご確認ください。

    BlazorSampleApp

    ADX/ファイルマジックPROを利用したBlazor WebAssemblyアプリケーションのサンプルです。

    Blazor

    対応フレームワーク net8.0-browser

    実行方法

    CLIでの実行

    samples/BlazorSampleAppディレクトリで次のコマンドにより実行できます。

    dotnet run
    

    VisualStudioでの実行

    dotnet 8 のプロジェクトに対応したVisual Studioでsamples/sample.slnを開いてください。
    BlazorSampleAppをスタートアッププロジェクトとして実行可能です。

    サンプル内容

    それぞれのタブでCRI ADXとCRI FileSystemの機能の利用例を示すサンプルです。

    CRI ADX

    ADXが持つ機能のうち、AISAC/カテゴリを利用した例です。

    • https://game.criware.jp/manual/native/adx2/latest/criatom_tools_atomcraft_aisac.html
    • https://game.criware.jp/manual/native/adx2/latest/criatom_tools_atomcraft_category.html

    CRI FileSystem

    パッキングされたCPKファイルの内容を表示する例です。

    In this article
    Back to top Generated by DocFX