Skip to content

Instantly share code, notes, and snippets.

@silenciocorner
silenciocorner / MarkerSpawner
Created April 9, 2021 12:42
MarkerSpawner of BeatSpawner.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class BeatSpawner : MonoBehaviour
{
private bool beatSpawnArmed = false;
[SerializeField]
private Track[] tracks;
private string lastMarkerName;
private void Start()
@silenciocorner
silenciocorner / OnDestroy
Created April 8, 2021 13:29
OnDestroy of MusicManager.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class MusicManager : MonoBehaviour
{
...
void OnDestroy()
{
musicPlayEvent.setUserData(IntPtr.Zero);
musicPlayEvent.stop(FMOD.Studio.STOP_MODE.IMMEDIATE);
musicPlayEvent.release();
timelineHandle.Free();
}
@silenciocorner
silenciocorner / MonoPInvokeCallback
Created April 8, 2021 13:28
Part of MusicManager.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class MusicManager : MonoBehaviour
{
...
[AOT.MonoPInvokeCallback(typeof(FMOD.Studio.EVENT_CALLBACK))]
static FMOD.RESULT BeatEventCallback(FMOD.Studio.EVENT_CALLBACK_TYPE type, FMOD.Studio.EventInstance instance, IntPtr parameterPtr)
{
IntPtr timelineInfoPtr;
FMOD.RESULT result = instance.getUserData(out timelineInfoPtr);
if (result != FMOD.RESULT.OK)
@silenciocorner
silenciocorner / BeatmapDescriptionCallbacks
Created April 8, 2021 13:26
BeatmapDescriptionCallbacks from MusicManager.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class MusicManager : MonoBehaviour
{
...
private void Start()
{
...
musicPlayEvent.getDescription(out descriptionCallback);
descriptionCallback.getLength(out int length);
timelineInfo.songLength = length;
@silenciocorner
silenciocorner / BeatmapEventCallbacks
Created April 8, 2021 13:24
BeatmapEventCallbacks from MusicManager.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class MusicManager : MonoBehaviour
{
...
private void Awake()
{
...
}
private void Start()
{
@silenciocorner
silenciocorner / BeatmapDatatypes2
Created April 8, 2021 13:23
BeatmapDatatypes add from MusicManager.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class MusicManager : MonoBehaviour
{
...
public TimelineInfo timelineInfo = null;
private GCHandle timelineHandle;
private FMOD.Studio.EVENT_CALLBACK beatCallback;
private FMOD.Studio.EventDescription descriptionCallback;
@silenciocorner
silenciocorner / BeatmapDatatypes
Created April 8, 2021 13:11
BeatmapDatatypes from MusicManager.cs script from Colin Vandervort article "FMOD Unity: Beat-Mapping"
public class MusicManager : MonoBehaviour
{
public static MusicManager me;
[SerializeField]
[EventRef]
private string music;
[StructLayout(LayoutKind.Sequential)]
public class TimelineInfo
@silenciocorner
silenciocorner / BeatmapFirstFramework
Created April 8, 2021 12:23
BeatmapFirstFramework from Colin Vandervort article "FMOD Unity: Beat-Mapping"
using UnityEngine;
using System;
using System.Runtime.InteropServices;
using FMODUnity;
public class MusicManager : MonoBehaviour
{
}
@silenciocorner
silenciocorner / Music.cs
Created April 8, 2021 11:09
Script Music.cs from Alessandro Fama article "Beat and Marker system with FMOD in Unity"
public class Music : MonoBehaviour
{
private FMOD.Studio.EventInstance instance;
private BeatSystem bS;
void Start()
{
bS = GetComponent<BeatSystem>();
}
@silenciocorner
silenciocorner / BeatSystem.cs
Created April 8, 2021 11:08
Script BeatSystem.cs from Alessandro Fama article "Beat and Marker system with FMOD in Unity"
using System;
using System.Runtime.InteropServices;
using UnityEngine;
class BeatSystem : MonoBehaviour
{
[StructLayout(LayoutKind.Sequential)]
class TimelineInfo
{
public int currentMusicBeat = 0;