logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class BatchMusicTrackImporter

    Builds UnityMusicTrackDefinition assets in batch from validated wizard input, with rollback on failure. Everything shared with the sound-effect importer (inference, duplicate detection, validation skeleton, batched creation with rollback, Addressables registration, external file import) lives in Serenity.Global.Infrastructure.Editor.Utils.BatchAudioAssetImportEngine`4; this class supplies only the music-specific parts via BatchMusicTrackImporter.ImportEngine — the advanced loop fields (tail-preserving loop, loop region as time codes or musical bars, tail fade-out) and their validation. The BatchMusicTrackImportWindow only collects input; all inference, validation, advanced settings serialization and asset creation live here so they can be unit tested without the window.

    Inheritance
    object
    BatchMusicTrackImporter
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    Namespace: Serenity.MusicPlayer.Installation.Settings.Editor.Builder
    Assembly: Serenity.UnityMusicPlayer.Infrastructure.Editor.dll
    Syntax
    public static class BatchMusicTrackImporter

    Fields

    AudioExtensions

    File extensions Unity can import as an UnityEngine.AudioClip for music tracks.

    Declaration
    public static readonly IReadOnlyList<string> AudioExtensions
    Field Value
    Type Description
    IReadOnlyList<string>

    Methods

    BuildAsset(Item)

    Materializes an BatchMusicTrackImporter.Item into a track definition, copying both the common metadata and the advanced loop fields. Exposed (not private) so tests can assert the field mapping directly.

    Declaration
    public static UnityMusicTrackDefinition BuildAsset(BatchMusicTrackImporter.Item item)
    Parameters
    Type Name Description
    BatchMusicTrackImporter.Item item
    Returns
    Type Description
    UnityMusicTrackDefinition

    BuildAssetPath(string, string)

    Declaration
    public static string BuildAssetPath(string folderPath, string assetName)
    Parameters
    Type Name Description
    string folderPath
    string assetName
    Returns
    Type Description
    string

    CollectExistingTrackIds()

    Returns the ids of every existing UnityMusicTrackDefinition in the project.

    Declaration
    public static HashSet<string> CollectExistingTrackIds()
    Returns
    Type Description
    HashSet<string>

    Create(Input)

    Declaration
    public static BatchMusicTrackImporter.Result Create(BatchMusicTrackImporter.Input input)
    Parameters
    Type Name Description
    BatchMusicTrackImporter.Input input
    Returns
    Type Description
    BatchMusicTrackImporter.Result

    FileNameSafe(string)

    Declaration
    public static string FileNameSafe(string name)
    Parameters
    Type Name Description
    string name
    Returns
    Type Description
    string

    FindDuplicateAssetNames(IEnumerable<Item>)

    Declaration
    public static List<string> FindDuplicateAssetNames(IEnumerable<BatchMusicTrackImporter.Item> items)
    Parameters
    Type Name Description
    IEnumerable<BatchMusicTrackImporter.Item> items
    Returns
    Type Description
    List<string>

    FindDuplicateIds(IEnumerable<Item>)

    Declaration
    public static List<string> FindDuplicateIds(IEnumerable<BatchMusicTrackImporter.Item> items)
    Parameters
    Type Name Description
    IEnumerable<BatchMusicTrackImporter.Item> items
    Returns
    Type Description
    List<string>

    ImportExternalAudioFile(string, string, out string)

    Copies a music file from anywhere on disk into destinationFolder, imports it, and returns the resulting UnityEngine.AudioClip. Files already inside the project are loaded in place. Returns null with error on failure.

    Declaration
    public static AudioClip ImportExternalAudioFile(string osPath, string destinationFolder, out string error)
    Parameters
    Type Name Description
    string osPath
    string destinationFolder
    string error
    Returns
    Type Description
    AudioClip

    IsAudioFile(string)

    Declaration
    public static bool IsAudioFile(string path)
    Parameters
    Type Name Description
    string path
    Returns
    Type Description
    bool

    ItemFromClip(AudioClip)

    Builds an item with inferred defaults for an already-imported project clip.

    Declaration
    public static BatchMusicTrackImporter.Item ItemFromClip(AudioClip clip)
    Parameters
    Type Name Description
    AudioClip clip
    Returns
    Type Description
    BatchMusicTrackImporter.Item

    SuggestAssetName(string)

    Declaration
    public static string SuggestAssetName(string fileNameOrPath)
    Parameters
    Type Name Description
    string fileNameOrPath
    Returns
    Type Description
    string

    SuggestId(string)

    Suggests a runtime id from a file name (lower-cased, underscored). e.g. "Main Theme.ogg" -> "main_theme".

    Declaration
    public static string SuggestId(string fileNameOrPath)
    Parameters
    Type Name Description
    string fileNameOrPath
    Returns
    Type Description
    string

    SuggestTitle(string)

    Suggests a human title from a file name, turning separators into spaces and title-casing words.

    Declaration
    public static string SuggestTitle(string fileNameOrPath)
    Parameters
    Type Name Description
    string fileNameOrPath
    Returns
    Type Description
    string

    ToProjectRelativePath(string)

    Declaration
    public static string ToProjectRelativePath(string osPath)
    Parameters
    Type Name Description
    string osPath
    Returns
    Type Description
    string

    Validate(Input)

    Declaration
    public static string Validate(BatchMusicTrackImporter.Input input)
    Parameters
    Type Name Description
    BatchMusicTrackImporter.Input input
    Returns
    Type Description
    string

    Validate(Input, HashSet<string>)

    Full validation including destination folder, per-item rules, in-batch duplicates and collision with existing track ids. existingTrackIds is injected for testability.

    Declaration
    public static string Validate(BatchMusicTrackImporter.Input input, HashSet<string> existingTrackIds)
    Parameters
    Type Name Description
    BatchMusicTrackImporter.Input input
    HashSet<string> existingTrackIds
    Returns
    Type Description
    string

    ValidateItem(Item)

    Validates a single included item: identity, clip, and (when used) the advanced loop region.

    Declaration
    public static string ValidateItem(BatchMusicTrackImporter.Item item)
    Parameters
    Type Name Description
    BatchMusicTrackImporter.Item item
    Returns
    Type Description
    string

    ValidateLoopRegion(Item)

    Validates the loop region for an item that uses it, in whichever authoring mode is active. Returns null when the region is usable.

    Declaration
    public static string ValidateLoopRegion(BatchMusicTrackImporter.Item item)
    Parameters
    Type Name Description
    BatchMusicTrackImporter.Item item
    Returns
    Type Description
    string
    In this article
    © 2026 Serenity. All Rights Reserved