cmake windows

This commit is contained in:
antpoms 2025-06-11 16:50:48 +02:00
parent f698a38c7e
commit 2ace28d941
387 changed files with 96179 additions and 1 deletions

View file

@ -0,0 +1,163 @@
/*==============================================================================
Event 3D Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how to position events in 3D for spatialization.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
const int SCREEN_WIDTH = NUM_COLUMNS;
const int SCREEN_HEIGHT = 16;
int currentScreenPosition = -1;
char screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
void initializeScreenBuffer();
void updateScreenPosition(const FMOD_VECTOR& worldPosition);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* vehiclesBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Vehicles.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &vehiclesBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Vehicles/Ride-on Mower", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
ERRCHECK( eventInstance->setParameterByName("RPM", 650.0f) );
ERRCHECK( eventInstance->start() );
// Position the listener at the origin
FMOD_3D_ATTRIBUTES attributes = { { 0 } };
attributes.forward.z = 1.0f;
attributes.up.y = 1.0f;
ERRCHECK( system->setListenerAttributes(0, &attributes) );
// Position the event 2 units in front of the listener
attributes.position.z = 2.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
initializeScreenBuffer();
do
{
Common_Update();
if (Common_BtnDown(BTN_LEFT))
{
attributes.position.x -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
if (Common_BtnDown(BTN_RIGHT))
{
attributes.position.x += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
if (Common_BtnDown(BTN_UP))
{
attributes.position.z += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
if (Common_BtnDown(BTN_DOWN))
{
attributes.position.z -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&attributes) );
}
ERRCHECK( system->update() );
updateScreenPosition(attributes.position);
Common_Draw("==================================================");
Common_Draw("Event 3D Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw(screenBuffer);
Common_Draw("Use the arrow keys (%s, %s, %s, %s) to control the event position",
Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT), Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}
void initializeScreenBuffer()
{
memset(screenBuffer, ' ', sizeof(screenBuffer));
int idx = SCREEN_WIDTH;
for (int i = 0; i < SCREEN_HEIGHT; ++i)
{
screenBuffer[idx] = '\n';
idx += SCREEN_WIDTH + 1;
}
screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT] = '\0';
}
int getCharacterIndex(const FMOD_VECTOR& position)
{
int row = static_cast<int>(-position.z + (SCREEN_HEIGHT / 2));
int col = static_cast<int>(position.x + (SCREEN_WIDTH / 2));
if (0 < row && row < SCREEN_HEIGHT && 0 < col && col < SCREEN_WIDTH)
{
return (row * (SCREEN_WIDTH + 1)) + col;
}
return -1;
}
void updateScreenPosition(const FMOD_VECTOR& eventPosition)
{
if (currentScreenPosition != -1)
{
screenBuffer[currentScreenPosition] = ' ';
currentScreenPosition = -1;
}
FMOD_VECTOR origin = {0};
int idx = getCharacterIndex(origin);
screenBuffer[idx] = '^';
idx = getCharacterIndex(eventPosition);
if (idx != -1)
{
screenBuffer[idx] = 'o';
currentScreenPosition = idx;
}
}

View file

@ -0,0 +1,241 @@
/*==============================================================================
Event 3D Multi-Listener Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how use listener weighting to crossfade listeners
in and out.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
const int SCREEN_WIDTH = NUM_COLUMNS;
const int SCREEN_HEIGHT = 10;
char backBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
char screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
void initializeScreenBuffer();
void updateScreenPosition(const FMOD_VECTOR& worldPosition, float listenerDist, float weight1, float weight2);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* vehiclesBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Vehicles.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &vehiclesBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Vehicles/Ride-on Mower", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
ERRCHECK( eventInstance->setParameterByName("RPM", 650.0f) );
ERRCHECK( eventInstance->start() );
// Position two listeners
ERRCHECK( system->setNumListeners(2) );
int activeListener = 0;
float listenerDist = 8.0f;
float listenerWeight[2] = { 1.0f, 0.0f };
FMOD_3D_ATTRIBUTES listenerAttributes[2] = {};
listenerAttributes[0].forward.z = 1.0f;
listenerAttributes[0].up.y = 1.0f;
listenerAttributes[0].position.x = -listenerDist;
listenerAttributes[1].forward.z = 1.0f;
listenerAttributes[1].up.y = 1.0f;
listenerAttributes[1].position.x = listenerDist;
ERRCHECK( system->setListenerAttributes(0, &listenerAttributes[0]) );
ERRCHECK( system->setListenerWeight(0, listenerWeight[0]) );
ERRCHECK( system->setListenerAttributes(1, &listenerAttributes[1]) );
ERRCHECK( system->setListenerWeight(1, listenerWeight[1]) );
// Position the event 2 units in front of the listener
FMOD_3D_ATTRIBUTES carAttributes = {};
carAttributes.forward.z = 1.0f;
carAttributes.up.y = 1.0f;
carAttributes.position.x = 0.0f;
carAttributes.position.z = 2.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
initializeScreenBuffer();
do
{
Common_Update();
if (Common_BtnPress(BTN_LEFT))
{
carAttributes.position.x -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_RIGHT))
{
carAttributes.position.x += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_UP))
{
carAttributes.position.z += 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_DOWN))
{
carAttributes.position.z -= 1.0f;
ERRCHECK( eventInstance->set3DAttributes(&carAttributes) );
}
if (Common_BtnPress(BTN_ACTION1))
{
activeListener++;
if (activeListener > 2)
activeListener = 0;
}
if (Common_BtnPress(BTN_ACTION2))
{
activeListener--;
if (activeListener < 0)
activeListener = 2;
}
if (Common_BtnPress(BTN_ACTION3))
{
listenerDist -= 1.0f;
if (listenerDist < 0.0f)
listenerDist = 0.0f;
}
if (Common_BtnPress(BTN_ACTION4))
{
listenerDist += 1.0f;
if (listenerDist < 0.0f)
listenerDist = 0.0f;
}
for (int i=0; i<2; ++i)
{
float target = (activeListener == i || activeListener == 2); // 0 = left, 1 = right, 2 = both
float dist = (target - listenerWeight[i]);
float step = 50.0f / 1000.0f; // very rough estimate of 50ms per update, not properly timed
if (dist >= -step && dist <= step)
listenerWeight[i] = target;
else if (dist > 0.0f)
listenerWeight[i] += step;
else
listenerWeight[i] += -step;
}
listenerAttributes[0].position.x = -listenerDist;
listenerAttributes[1].position.x = listenerDist;
ERRCHECK( system->setListenerAttributes(0, &listenerAttributes[0]) );
ERRCHECK( system->setListenerAttributes(1, &listenerAttributes[1]) );
ERRCHECK( system->setListenerWeight(0, listenerWeight[0]) );
ERRCHECK( system->setListenerWeight(1, listenerWeight[1]) );
ERRCHECK( system->update() );
updateScreenPosition(carAttributes.position, listenerDist, listenerWeight[0], listenerWeight[1]);
Common_Draw("==================================================");
Common_Draw("Event 3D Multi-Listener Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw(screenBuffer);
Common_Draw("Left listener: %d%%", (int)(listenerWeight[0] * 100));
Common_Draw("Right listener: %d%%", (int)(listenerWeight[1] * 100));
Common_Draw("Use the arrow keys (%s, %s, %s, %s) to control the event position",
Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT), Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
Common_Draw("Use %s and %s to toggle left/right/both listeners", Common_BtnStr(BTN_ACTION1), Common_BtnStr(BTN_ACTION2));
Common_Draw("Use %s and %s to move listeners closer or further apart", Common_BtnStr(BTN_ACTION3), Common_BtnStr(BTN_ACTION4));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}
void initializeScreenBuffer()
{
memset(backBuffer, ' ', sizeof(backBuffer));
int idx = SCREEN_WIDTH;
for (int i = 0; i < SCREEN_HEIGHT; ++i)
{
backBuffer[idx] = '\n';
idx += SCREEN_WIDTH + 1;
}
backBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT] = '\0';
memcpy(screenBuffer, backBuffer, sizeof(screenBuffer));
}
void setCharacterIndex(const FMOD_VECTOR& position, char ch)
{
int row = static_cast<int>(-position.z + (SCREEN_HEIGHT / 2));
int col = static_cast<int>(position.x + (SCREEN_WIDTH / 2));
if (0 < row && row < SCREEN_HEIGHT && 0 < col && col < SCREEN_WIDTH)
{
screenBuffer[row * (SCREEN_WIDTH + 1) + col] = ch;
}
}
char symbolForWeight(float weight)
{
if (weight >= 0.95f)
return 'X';
else if (weight >= 0.05f)
return 'x';
else
return '.';
}
void updateScreenPosition(const FMOD_VECTOR& worldPosition, float listenerDist, float weight1, float weight2)
{
memcpy(screenBuffer, backBuffer, sizeof(screenBuffer));
FMOD_VECTOR pos = {0};
setCharacterIndex(pos, '^');
pos.x = -listenerDist;
setCharacterIndex(pos, symbolForWeight(weight1));
pos.x = listenerDist;
setCharacterIndex(pos, symbolForWeight(weight2));
setCharacterIndex(worldPosition, 'o');
}

View file

@ -0,0 +1,234 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#include "common.h"
#include "fmod_errors.h"
/* Cross platform OS Functions internal to the FMOD library, exposed for the example framework. */
#ifdef __cplusplus
extern "C" {
#endif
typedef struct FMOD_OS_FILE FMOD_OS_FILE;
typedef struct FMOD_OS_CRITICALSECTION FMOD_OS_CRITICALSECTION;
FMOD_RESULT F_API FMOD_OS_Time_GetUs(unsigned int *us);
FMOD_RESULT F_API FMOD_OS_Debug_Output(const char *format, ...);
FMOD_RESULT F_API FMOD_OS_File_Open(const char *name, int mode, unsigned int *filesize, FMOD_OS_FILE **handle);
FMOD_RESULT F_API FMOD_OS_File_Close(FMOD_OS_FILE *handle);
FMOD_RESULT F_API FMOD_OS_File_Read(FMOD_OS_FILE *handle, void *buf, unsigned int count, unsigned int *read);
FMOD_RESULT F_API FMOD_OS_File_Write(FMOD_OS_FILE *handle, const void *buffer, unsigned int bytesToWrite, bool flush);
FMOD_RESULT F_API FMOD_OS_File_Seek(FMOD_OS_FILE *handle, unsigned int offset);
FMOD_RESULT F_API FMOD_OS_Time_Sleep(unsigned int ms);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Create(FMOD_OS_CRITICALSECTION **crit, bool memorycrit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Free(FMOD_OS_CRITICALSECTION *crit, bool memorycrit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Enter(FMOD_OS_CRITICALSECTION *crit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_Leave(FMOD_OS_CRITICALSECTION *crit);
FMOD_RESULT F_API FMOD_OS_CriticalSection_TryEnter(FMOD_OS_CRITICALSECTION *crit, bool *entered);
FMOD_RESULT F_API FMOD_OS_CriticalSection_IsLocked(FMOD_OS_CRITICALSECTION *crit, bool *locked);
FMOD_RESULT F_API FMOD_OS_Thread_Create(const char *name, void (*callback)(void *param), void *param, FMOD_THREAD_AFFINITY affinity, FMOD_THREAD_PRIORITY priority, FMOD_THREAD_STACK_SIZE stacksize, void **handle);
FMOD_RESULT F_API FMOD_OS_Thread_Destroy(void *handle);
#ifdef __cplusplus
}
#endif
void (*Common_Private_Error)(FMOD_RESULT, const char *, int);
void ERRCHECK_fn(FMOD_RESULT result, const char *file, int line)
{
if (result != FMOD_OK)
{
if (Common_Private_Error)
{
Common_Private_Error(result, file, line);
}
Common_Fatal("%s(%d): FMOD error %d - %s", file, line, result, FMOD_ErrorString(result));
}
}
void Common_Format(char *buffer, int bufferSize, const char *formatString...)
{
va_list args;
va_start(args, formatString);
Common_vsnprintf(buffer, bufferSize, formatString, args);
va_end(args);
buffer[bufferSize-1] = '\0';
}
void Common_Fatal(const char *format, ...)
{
char error[1024];
va_list args;
va_start(args, format);
Common_vsnprintf(error, 1024, format, args);
va_end(args);
error[1023] = '\0';
do
{
Common_Draw("A fatal error has occurred...");
Common_Draw("");
Common_Draw("%s", error);
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Update();
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
Common_Exit(0);
}
void Common_Draw(const char *format, ...)
{
char string[1024];
char *stringPtr = string;
va_list args;
va_start(args, format);
Common_vsnprintf(string, 1024, format, args);
va_end(args);
string[1023] = '\0';
unsigned int length = (unsigned int)strlen(string);
do
{
bool consumeNewLine = false;
unsigned int copyLength = length;
// Search for new line characters
char *newLinePtr = strchr(stringPtr, '\n');
if (newLinePtr)
{
consumeNewLine = true;
copyLength = (unsigned int)(newLinePtr - stringPtr);
}
if (copyLength > NUM_COLUMNS)
{
// Hard wrap by default
copyLength = NUM_COLUMNS;
// Loop for a soft wrap
for (int i = NUM_COLUMNS - 1; i >= 0; i--)
{
if (stringPtr[i] == ' ')
{
copyLength = i + 1;
break;
}
}
}
// Null terminate the sub string temporarily by swapping out a char
char tempChar = stringPtr[copyLength];
stringPtr[copyLength] = 0;
Common_DrawText(stringPtr);
stringPtr[copyLength] = tempChar;
copyLength += (consumeNewLine ? 1 : 0);
length -= copyLength;
stringPtr += copyLength;
} while (length > 0);
}
void Common_Time_GetUs(unsigned int *us)
{
FMOD_OS_Time_GetUs(us);
}
void Common_Log(const char *format, ...)
{
char string[1024];
va_list args;
va_start(args, format);
Common_vsnprintf(string, 1024, format, args);
va_end(args);
string[1023] = '\0';
FMOD_OS_Debug_Output(string);
}
void Common_LoadFileMemory(const char *name, void **buff, int *length)
{
FMOD_OS_FILE *file = NULL;
unsigned int len, bytesread;
FMOD_OS_File_Open(name, 0, &len, &file);
void *mem = malloc(len);
FMOD_OS_File_Read(file, mem, len, &bytesread);
FMOD_OS_File_Close(file);
*buff = mem;
*length = bytesread;
}
void Common_UnloadFileMemory(void *buff)
{
free(buff);
}
void Common_Sleep(unsigned int ms)
{
FMOD_OS_Time_Sleep(ms);
}
void Common_File_Open(const char *name, int mode, unsigned int *filesize, void **handle)
{
FMOD_OS_File_Open(name, mode, filesize, (FMOD_OS_FILE **)handle);
}
void Common_File_Close(void *handle)
{
FMOD_OS_File_Close((FMOD_OS_FILE *)handle);
}
void Common_File_Read(void *handle, void *buf, unsigned int length, unsigned int *read)
{
FMOD_OS_File_Read((FMOD_OS_FILE *)handle, buf, length, read);
}
void Common_File_Write(void *handle, void *buf, unsigned int length)
{
FMOD_OS_File_Write((FMOD_OS_FILE *)handle, buf, length, true);
}
void Common_File_Seek(void *handle, unsigned int offset)
{
FMOD_OS_File_Seek((FMOD_OS_FILE *)handle, offset);
}
void Common_Mutex_Create(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Create((FMOD_OS_CRITICALSECTION **)&mutex->crit, false);
}
void Common_Mutex_Destroy(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Free((FMOD_OS_CRITICALSECTION *)mutex->crit, false);
}
void Common_Mutex_Enter(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Enter((FMOD_OS_CRITICALSECTION *)mutex->crit);
}
void Common_Mutex_Leave(Common_Mutex *mutex)
{
FMOD_OS_CriticalSection_Leave((FMOD_OS_CRITICALSECTION *)mutex->crit);
}
void Common_Thread_Create(void (*callback)(void *param), void *param, void **handle)
{
FMOD_OS_Thread_Create("FMOD Example Thread", callback, param, FMOD_THREAD_AFFINITY_GROUP_A, FMOD_THREAD_PRIORITY_MEDIUM, (16 * 1024), handle);
}
void Common_Thread_Destroy(void *handle)
{
FMOD_OS_Thread_Destroy(handle);
}

View file

@ -0,0 +1,93 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#ifndef FMOD_EXAMPLES_COMMON_H
#define FMOD_EXAMPLES_COMMON_H
#include "common_platform.h"
#include "fmod.h"
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <assert.h>
#define NUM_COLUMNS 50
#define NUM_ROWS 25
#ifndef Common_Sin
#define Common_Sin sin
#endif
#ifndef Common_snprintf
#define Common_snprintf snprintf
#endif
#ifndef Common_vsnprintf
#define Common_vsnprintf vsnprintf
#endif
enum Common_Button
{
BTN_ACTION1,
BTN_ACTION2,
BTN_ACTION3,
BTN_ACTION4,
BTN_LEFT,
BTN_RIGHT,
BTN_UP,
BTN_DOWN,
BTN_MORE,
BTN_QUIT
};
typedef struct
{
void *crit;
} Common_Mutex;
/* Cross platform functions (common) */
void Common_Format(char *buffer, int bufferSize, const char *formatString...);
void Common_Fatal(const char *format, ...);
void Common_Draw(const char *format, ...);
void Common_Time_GetUs(unsigned int *us);
void Common_Log(const char *format, ...);
void Common_LoadFileMemory(const char *name, void **buff, int *length);
void Common_UnloadFileMemory(void *buff);
void Common_Sleep(unsigned int ms);
void Common_File_Open(const char *name, int mode, unsigned int *filesize, void **handle); // mode : 0 = read, 1 = write.
void Common_File_Close(void *handle);
void Common_File_Read(void *handle, void *buf, unsigned int length, unsigned int *read);
void Common_File_Write(void *handle, void *buf, unsigned int length);
void Common_File_Seek(void *handle, unsigned int offset);
void Common_Mutex_Create(Common_Mutex *mutex);
void Common_Mutex_Destroy(Common_Mutex *mutex);
void Common_Mutex_Enter(Common_Mutex *mutex);
void Common_Mutex_Leave(Common_Mutex *mutex);
void Common_Thread_Create(void (*callback)(void *param), void *param, void **handle);
void Common_Thread_Destroy(void *handle);
void ERRCHECK_fn(FMOD_RESULT result, const char *file, int line);
#define ERRCHECK(_result) ERRCHECK_fn(_result, __FILE__, __LINE__)
#define Common_Max(_a, _b) ((_a) > (_b) ? (_a) : (_b))
#define Common_Min(_a, _b) ((_a) < (_b) ? (_a) : (_b))
#define Common_Clamp(_min, _val, _max) ((_val) < (_min) ? (_min) : ((_val) > (_max) ? (_max) : (_val)))
/* Functions with platform specific implementation (common_platform) */
void Common_Init(void **extraDriverData);
void Common_Close();
void Common_Update();
void Common_Exit(int returnCode);
void Common_DrawText(const char *text);
bool Common_BtnPress(Common_Button btn);
bool Common_BtnDown(Common_Button btn);
const char *Common_BtnStr(Common_Button btn);
const char *Common_MediaPath(const char *fileName);
const char *Common_WritePath(const char *fileName);
#endif

View file

@ -0,0 +1,306 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#define WIN32_LEAN_AND_MEAN
#include "common.h"
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <Objbase.h>
#include <vector>
static HWND gWindow = nullptr;
static int gScreenWidth = 0;
static int gScreenHeight = 0;
static unsigned int gPressedButtons = 0;
static unsigned int gDownButtons = 0;
static unsigned int gLastDownButtons = 0;
static char gWriteBuffer[(NUM_COLUMNS+1) * NUM_ROWS] = {0};
static char gDisplayBuffer[(NUM_COLUMNS+1) * NUM_ROWS] = {0};
static unsigned int gYPos = 0;
static bool gQuit = false;
static std::vector<char *> gPathList;
bool Common_Private_Test;
int Common_Private_Argc;
char** Common_Private_Argv;
void (*Common_Private_Update)(unsigned int*);
void (*Common_Private_Print)(const char*);
void (*Common_Private_Close)();
void Common_Init(void** /*extraDriverData*/)
{
CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
}
void Common_Close()
{
CoUninitialize();
for (std::vector<char *>::iterator item = gPathList.begin(); item != gPathList.end(); ++item)
{
free(*item);
}
if (Common_Private_Close)
{
Common_Private_Close();
}
}
static unsigned int translateButton(unsigned int button)
{
switch (button)
{
case '1': return (1 << BTN_ACTION1);
case '2': return (1 << BTN_ACTION2);
case '3': return (1 << BTN_ACTION3);
case '4': return (1 << BTN_ACTION4);
case VK_LEFT: return (1 << BTN_LEFT);
case VK_RIGHT: return (1 << BTN_RIGHT);
case VK_UP: return (1 << BTN_UP);
case VK_DOWN: return (1 << BTN_DOWN);
case VK_SPACE: return (1 << BTN_MORE);
case VK_ESCAPE: return (1 << BTN_QUIT);
default: return 0;
}
}
void Common_Update()
{
MSG msg = { };
while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
gPressedButtons = (gLastDownButtons ^ gDownButtons) & gDownButtons;
gPressedButtons |= (gQuit ? (1 << BTN_QUIT) : 0);
gLastDownButtons = gDownButtons;
memcpy(gDisplayBuffer, gWriteBuffer, sizeof(gWriteBuffer));
InvalidateRect(gWindow, nullptr, FALSE);
gYPos = 0;
memset(gWriteBuffer, ' ', sizeof(gWriteBuffer));
for (int i = 0; i < NUM_ROWS; i++)
{
gWriteBuffer[(i * (NUM_COLUMNS + 1)) + NUM_COLUMNS] = '\n';
}
if (Common_Private_Update)
{
Common_Private_Update(&gPressedButtons);
}
}
void Common_Exit(int returnCode)
{
exit(returnCode);
}
void Common_DrawText(const char *text)
{
if (gYPos < NUM_ROWS)
{
char tempBuffer[NUM_COLUMNS + 1];
Common_Format(tempBuffer, sizeof(tempBuffer), "%s", text);
memcpy(&gWriteBuffer[gYPos * (NUM_COLUMNS + 1)], tempBuffer, strlen(tempBuffer));
gYPos++;
}
}
bool Common_BtnPress(Common_Button btn)
{
return ((gPressedButtons & (1 << btn)) != 0);
}
bool Common_BtnDown(Common_Button btn)
{
return ((gDownButtons & (1 << btn)) != 0);
}
const char *Common_BtnStr(Common_Button btn)
{
switch (btn)
{
case BTN_ACTION1: return "1";
case BTN_ACTION2: return "2";
case BTN_ACTION3: return "3";
case BTN_ACTION4: return "4";
case BTN_LEFT: return "Left";
case BTN_RIGHT: return "Right";
case BTN_UP: return "Up";
case BTN_DOWN: return "Down";
case BTN_MORE: return "Space";
case BTN_QUIT: return "Escape";
default: return "Unknown";
}
}
const char *Common_MediaPath(const char *fileName)
{
char *filePath = (char *)calloc(256, sizeof(char));
static const char* pathPrefix = nullptr;
if (!pathPrefix)
{
const char *emptyPrefix = "";
const char *mediaPrefix = "../media/";
FILE *file = fopen(fileName, "r");
if (file)
{
fclose(file);
pathPrefix = emptyPrefix;
}
else
{
pathPrefix = mediaPrefix;
}
}
strcat(filePath, pathPrefix);
strcat(filePath, fileName);
gPathList.push_back(filePath);
return filePath;
}
const char *Common_WritePath(const char *fileName)
{
return Common_MediaPath(fileName);
}
void Common_TTY(const char *format, ...)
{
char string[1024] = {0};
va_list args;
va_start(args, format);
Common_vsnprintf(string, 1023, format, args);
va_end(args);
if (Common_Private_Print)
{
(*Common_Private_Print)(string);
}
else
{
OutputDebugStringA(string);
}
}
HFONT CreateDisplayFont()
{
return CreateFontA(22, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH, 0);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_PAINT)
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HDC hdcBack = CreateCompatibleDC(hdc);
HBITMAP hbmBack = CreateCompatibleBitmap(hdc, gScreenWidth, gScreenHeight);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcBack, hbmBack);
HFONT hfnt = CreateDisplayFont();
HFONT hfntOld = (HFONT)SelectObject(hdcBack, hfnt);
SetBkColor(hdcBack, RGB(0x0, 0x0, 0x0));
SetTextColor(hdcBack, RGB(0xFF, 0xFF, 0xFF));
DrawTextA(hdcBack, gDisplayBuffer, -1, &ps.rcPaint, 0);
BitBlt(hdc, 0, 0, gScreenWidth, gScreenHeight, hdcBack, 0, 0, SRCCOPY);
SelectObject(hdcBack, hfntOld);
DeleteObject(hfnt);
SelectObject(hdcBack, hbmOld);
DeleteObject(hbmBack);
DeleteDC(hdcBack);
EndPaint(hWnd, &ps);
}
else if (message == WM_DESTROY)
{
gQuit = true;
}
else if (message == WM_GETMINMAXINFO)
{
if (gScreenWidth == 0)
{
HDC hdc = GetDC(hWnd);
HFONT hfnt = CreateDisplayFont();
HFONT hfntOld = (HFONT)SelectObject(hdc, hfnt);
TEXTMETRICA metrics = { };
GetTextMetricsA(hdc, &metrics);
SelectObject(hdc, hfntOld);
DeleteObject(hfnt);
ReleaseDC(hWnd, hdc);
RECT rec = { };
rec.right = metrics.tmAveCharWidth * NUM_COLUMNS;
rec.bottom = metrics.tmHeight * NUM_ROWS;
BOOL success = AdjustWindowRect(&rec, WS_CAPTION | WS_SYSMENU, FALSE);
assert(success);
gScreenWidth = rec.right - rec.left;
gScreenHeight = rec.bottom - rec.top;
}
LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;
lpMMI->ptMinTrackSize.x = gScreenWidth;
lpMMI->ptMinTrackSize.y = gScreenHeight;
lpMMI->ptMaxTrackSize = lpMMI->ptMinTrackSize;
}
else if (message == WM_KEYDOWN)
{
gDownButtons |= translateButton((unsigned int)wParam);
}
else if (message == WM_KEYUP)
{
gDownButtons &= ~translateButton((unsigned int)wParam);
}
else
{
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, PSTR /*pCmdLine*/, int nCmdShow)
{
const char CLASS_NAME[] = "FMOD Example Window Class";
Common_Private_Argc = __argc;
Common_Private_Argv = __argv;
WNDCLASSA wc = { };
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszClassName = CLASS_NAME;
ATOM atom = RegisterClassA(&wc);
assert(atom);
gWindow = CreateWindowA(CLASS_NAME, "FMOD Example", WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, nullptr, hInstance, nullptr);
assert(gWindow);
ShowWindow(gWindow, nCmdShow);
return FMOD_Main();
}

View file

@ -0,0 +1,16 @@
/*==============================================================================
FMOD Example Framework
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
==============================================================================*/
#include <windows.h>
int FMOD_Main();
#define COMMON_PLATFORM_SUPPORTS_FOPEN
#define Common_snprintf _snprintf
#define Common_vsnprintf _vsnprintf
void Common_TTY(const char *format, ...);

View file

@ -0,0 +1,97 @@
/*==============================================================================
Event Parameter Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how to control event playback using game parameters.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &sfxBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Character/Player Footsteps", &eventDescription) );
// Find the parameter once and then set by handle
// Or we can just find by name every time but by handle is more efficient if we are setting lots of parameters
FMOD_STUDIO_PARAMETER_DESCRIPTION paramDesc;
ERRCHECK( eventDescription->getParameterDescriptionByName("Surface", &paramDesc) );
FMOD_STUDIO_PARAMETER_ID surfaceID = paramDesc.id;
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
// Make the event audible to start with
float surfaceParameterValue = 1.0f;
ERRCHECK( eventInstance->setParameterByID(surfaceID, surfaceParameterValue) );
do
{
Common_Update();
if (Common_BtnPress(BTN_MORE))
{
ERRCHECK( eventInstance->start() );
}
if (Common_BtnPress(BTN_ACTION1))
{
surfaceParameterValue = Common_Max(paramDesc.minimum, surfaceParameterValue - 1.0f);
ERRCHECK( eventInstance->setParameterByID(surfaceID, surfaceParameterValue) );
}
if (Common_BtnPress(BTN_ACTION2))
{
surfaceParameterValue = Common_Min(surfaceParameterValue + 1.0f, paramDesc.maximum);
ERRCHECK( eventInstance->setParameterByID(surfaceID, surfaceParameterValue) );
}
ERRCHECK( system->update() );
float userValue = 0.0f;
float finalValue = 0.0f;
ERRCHECK( eventInstance->getParameterByID(surfaceID, &userValue, &finalValue) );
Common_Draw("==================================================");
Common_Draw("Event Parameter Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Surface Parameter = (user: %1.1f, final: %1.1f)", userValue, finalValue);
Common_Draw("");
Common_Draw("Surface Parameter:");
Common_Draw("Press %s to play event", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to decrease value", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to increase value", Common_BtnStr(BTN_ACTION2));
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}

View file

@ -0,0 +1,427 @@
/*==============================================================================
Load Banks Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates loading banks via file, memory, and user callbacks.
The banks that are loaded are:
* SFX.bank (file)
* Music.bank (memory)
* Vehicles.bank (memory-point)
* VO.bank (custom)
The loading and unloading is asynchronous, and we displays the current
state of each bank as loading is occuring.
### See Also ###
* Studio::System::loadBankFile
* Studio::System::loadBankMemory
* Studio::System::loadBankCustom
* Studio::Bank::loadSampleData
* Studio::Bank::getLoadingState
* Studio::Bank::getSampleLoadingState
* Studio::Bank::getUserData
* Studio::Bank::setUserData
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
#include <stdio.h>
//
// Some platforms don't support cross platform fopen. Or you can disable this
// to see how the sample deals with bank load failures.
//
#ifdef COMMON_PLATFORM_SUPPORTS_FOPEN
#define ENABLE_FILE_OPEN
#endif
//
// Load method as enum for our sample code
//
enum LoadBankMethod
{
LoadBank_File,
LoadBank_Memory,
LoadBank_MemoryPoint,
LoadBank_Custom
};
static const char* BANK_LOAD_METHOD_NAMES[] =
{
"File",
"Memory",
"Memory-Point",
"Custom"
};
//
// Sanity check for loading files
//
#ifdef ENABLE_FILE_OPEN
static const size_t MAX_FILE_LENGTH = 2*1024*1024*1024ULL;
#endif
//
// Custom callbacks that just wrap fopen
//
FMOD_RESULT F_CALL customFileOpen(const char *name, unsigned int *filesize, void **handle, void *userdata)
{
#ifdef ENABLE_FILE_OPEN
// We pass the filename into our callbacks via userdata in the custom info struct
const char* filename = (const char*)userdata;
FILE* file = fopen(filename, "rb");
if (!file)
{
return FMOD_ERR_FILE_NOTFOUND;
}
fseek(file, 0, SEEK_END);
size_t length = ftell(file);
fseek(file, 0, SEEK_SET);
if (length >= MAX_FILE_LENGTH)
{
fclose(file);
return FMOD_ERR_FILE_BAD;
}
*filesize = (unsigned int)length;
*handle = file;
return FMOD_OK;
#else
return FMOD_ERR_FILE_NOTFOUND;
#endif
}
FMOD_RESULT F_CALL customFileClose(void *handle, void *userdata)
{
#ifdef ENABLE_FILE_OPEN
FILE* file = (FILE*)handle;
fclose(file);
#endif
return FMOD_OK;
}
FMOD_RESULT F_CALL customFileRead(void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata)
{
*bytesread = 0;
#ifdef ENABLE_FILE_OPEN
FILE* file = (FILE*)handle;
size_t read = fread(buffer, 1, sizebytes, file);
*bytesread = (unsigned int)read;
// If the request is larger than the bytes left in the file, then we must return EOF
if (read < sizebytes)
{
return FMOD_ERR_FILE_EOF;
}
#endif
return FMOD_OK;
}
FMOD_RESULT F_CALL customFileSeek(void *handle, unsigned int pos, void *userdata)
{
#ifdef ENABLE_FILE_OPEN
FILE* file = (FILE*)handle;
fseek(file, pos, SEEK_SET);
#endif
return FMOD_OK;
}
//
// Helper function that loads a file into aligned memory buffer
//
FMOD_RESULT loadFile(const char* filename, char** memoryBase, char** memoryPtr, int* memoryLength)
{
// If we don't support fopen then just return a single invalid byte for our file
size_t length = 1;
#ifdef ENABLE_FILE_OPEN
FILE* file = fopen(filename, "rb");
if (!file)
{
return FMOD_ERR_FILE_NOTFOUND;
}
fseek(file, 0, SEEK_END);
length = ftell(file);
fseek(file, 0, SEEK_SET);
if (length >= MAX_FILE_LENGTH)
{
fclose(file);
return FMOD_ERR_FILE_BAD;
}
#endif
// Load into a pointer aligned to FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT
char* membase = reinterpret_cast<char*>(malloc(length + FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT));
char* memptr = (char*)(((size_t)membase + (FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT-1)) & ~(FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT-1));
#ifdef ENABLE_FILE_OPEN
size_t bytesRead = fread(memptr, 1, length, file);
fclose(file);
if (bytesRead != length)
{
free(membase);
return FMOD_ERR_FILE_BAD;
}
#endif
*memoryBase = membase;
*memoryPtr = memptr;
*memoryLength = (int)length;
return FMOD_OK;
}
//
// Helper function that loads a bank in using the given method
//
FMOD_RESULT loadBank(FMOD::Studio::System* system, LoadBankMethod method, const char* filename, FMOD::Studio::Bank** bank)
{
if (method == LoadBank_File)
{
return system->loadBankFile(filename, FMOD_STUDIO_LOAD_BANK_NONBLOCKING, bank);
}
else if (method == LoadBank_Memory || method == LoadBank_MemoryPoint)
{
char* memoryBase;
char* memoryPtr;
int memoryLength;
FMOD_RESULT result = loadFile(filename, &memoryBase, &memoryPtr, &memoryLength);
if (result != FMOD_OK)
{
return result;
}
FMOD_STUDIO_LOAD_MEMORY_MODE memoryMode = (method == LoadBank_MemoryPoint ? FMOD_STUDIO_LOAD_MEMORY_POINT : FMOD_STUDIO_LOAD_MEMORY);
result = system->loadBankMemory(memoryPtr, memoryLength, memoryMode, FMOD_STUDIO_LOAD_BANK_NONBLOCKING, bank);
if (result != FMOD_OK)
{
free(memoryBase);
return result;
}
if (method == LoadBank_MemoryPoint)
{
// Keep memory around until bank unload completes
result = (*bank)->setUserData(memoryBase);
}
else
{
// Don't need memory any more
free(memoryBase);
}
return result;
}
else
{
// Set up custom callback
FMOD_STUDIO_BANK_INFO info;
memset(&info, 0, sizeof(info));
info.size = sizeof(info);
info.opencallback = customFileOpen;
info.closecallback = customFileClose;
info.readcallback = customFileRead;
info.seekcallback = customFileSeek;
info.userdata = (void*)filename;
return system->loadBankCustom(&info, FMOD_STUDIO_LOAD_BANK_NONBLOCKING, bank);
}
}
//
// Helper function to return state as a string
//
const char* getLoadingStateString(FMOD_STUDIO_LOADING_STATE state, FMOD_RESULT loadResult)
{
switch (state)
{
case FMOD_STUDIO_LOADING_STATE_UNLOADING:
return "unloading ";
case FMOD_STUDIO_LOADING_STATE_UNLOADED:
return "unloaded ";
case FMOD_STUDIO_LOADING_STATE_LOADING:
return "loading ";
case FMOD_STUDIO_LOADING_STATE_LOADED:
return "loaded ";
case FMOD_STUDIO_LOADING_STATE_ERROR:
// Show some common errors
if (loadResult == FMOD_ERR_NOTREADY)
{
return "error (rdy)";
}
else if (loadResult == FMOD_ERR_FILE_BAD)
{
return "error (bad)";
}
else if (loadResult == FMOD_ERR_FILE_NOTFOUND)
{
return "error (mis)";
}
else
{
return "error ";
}
default:
return "???";
};
}
//
// Helper function to return handle validity as a string.
// Just because the bank handle is valid doesn't mean the bank load
// has completed successfully!
//
const char* getHandleStateString(FMOD::Studio::Bank* bank)
{
if (bank == NULL)
{
return "null ";
}
else if (!bank->isValid())
{
return "invalid";
}
else
{
return "valid ";
}
}
//
// Callback to free memory-point allocation when it is safe to do so
//
FMOD_RESULT F_CALL studioCallback(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE type, void *commanddata, void *userdata)
{
if (type == FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD)
{
// For memory-point, it is now safe to free our memory
FMOD::Studio::Bank* bank = (FMOD::Studio::Bank*)commanddata;
void* memory;
ERRCHECK(bank->getUserData(&memory));
if (memory)
{
free(memory);
}
}
return FMOD_OK;
}
//
// Main example code
//
int FMOD_Main()
{
void *extraDriverData = 0;
Common_Init(&extraDriverData);
FMOD::Studio::System* system;
ERRCHECK( FMOD::Studio::System::create(&system) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
ERRCHECK( system->setCallback(studioCallback, FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD) );
static const int BANK_COUNT = 4;
static const char* BANK_NAMES[] =
{
"SFX.bank",
"Music.bank",
"Vehicles.bank",
"VO.bank",
};
FMOD::Studio::Bank* banks[BANK_COUNT] = {0};
bool wantBankLoaded[BANK_COUNT] = {0};
bool wantSampleLoad = true;
do
{
Common_Update();
for (int i=0; i<BANK_COUNT; ++i)
{
if (Common_BtnPress((Common_Button)(BTN_ACTION1 + i)))
{
// Toggle bank load, or bank unload
if (!wantBankLoaded[i])
{
ERRCHECK(loadBank(system, (LoadBankMethod)i, Common_MediaPath(BANK_NAMES[i]), &banks[i]));
wantBankLoaded[i] = true;
}
else
{
ERRCHECK(banks[i]->unload());
wantBankLoaded[i] = false;
}
}
}
if (Common_BtnPress(BTN_MORE))
{
wantSampleLoad = !wantSampleLoad;
}
// Load bank sample data automatically if that mode is enabled
// Also query current status for text display
FMOD_RESULT loadStateResult[BANK_COUNT] = { FMOD_OK, FMOD_OK, FMOD_OK, FMOD_OK, };
FMOD_RESULT sampleStateResult[BANK_COUNT] = { FMOD_OK, FMOD_OK, FMOD_OK, FMOD_OK, };
FMOD_STUDIO_LOADING_STATE bankLoadState[BANK_COUNT] = { FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED };
FMOD_STUDIO_LOADING_STATE sampleLoadState[BANK_COUNT] = { FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED, FMOD_STUDIO_LOADING_STATE_UNLOADED };
for (int i=0; i<BANK_COUNT; ++i)
{
if (banks[i] && banks[i]->isValid())
{
loadStateResult[i] = banks[i]->getLoadingState(&bankLoadState[i]);
}
if (bankLoadState[i] == FMOD_STUDIO_LOADING_STATE_LOADED)
{
sampleStateResult[i] = banks[i]->getSampleLoadingState(&sampleLoadState[i]);
if (wantSampleLoad && sampleLoadState[i] == FMOD_STUDIO_LOADING_STATE_UNLOADED)
{
ERRCHECK(banks[i]->loadSampleData());
}
else if (!wantSampleLoad && (sampleLoadState[i] == FMOD_STUDIO_LOADING_STATE_LOADING || sampleLoadState[i] == FMOD_STUDIO_LOADING_STATE_LOADED))
{
ERRCHECK(banks[i]->unloadSampleData());
}
}
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Bank Load Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("Name Handle Bank-State Sample-State");
for (int i=0; i<BANK_COUNT; ++i)
{
char namePad[64] = {0};
int bankNameLen = strlen(BANK_NAMES[i]);
memset(namePad, ' ', 15);
strncpy(namePad, BANK_NAMES[i], bankNameLen);
Common_Draw("%s %s %s %s",
namePad,
getHandleStateString(banks[i]),
getLoadingStateString(bankLoadState[i], loadStateResult[i]),
getLoadingStateString(sampleLoadState[i], sampleStateResult[i]));
}
Common_Draw("");
Common_Draw("Press %s to load bank 1 via %s",Common_BtnStr(BTN_ACTION1), BANK_LOAD_METHOD_NAMES[0]);
Common_Draw("Press %s to load bank 2 via %s",Common_BtnStr(BTN_ACTION2), BANK_LOAD_METHOD_NAMES[1]);
Common_Draw("Press %s to load bank 3 via %s",Common_BtnStr(BTN_ACTION3), BANK_LOAD_METHOD_NAMES[2]);
Common_Draw("Press %s to load bank 4 via %s",Common_BtnStr(BTN_ACTION4), BANK_LOAD_METHOD_NAMES[3]);
Common_Draw("Press %s to toggle sample data", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->unloadAll() );
ERRCHECK( system->flushCommands() );
ERRCHECK( system->release() );
Common_Close();
return 0;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,175 @@
/*==============================================================================
Music Callback Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates beat and named marker callbacks when playing music.
### See Also ###
* Studio::EventInstance::setCallback
* FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER
* FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
#include <vector>
#include <string>
static const int MAX_ENTRIES = 6;
struct CallbackInfo
{
Common_Mutex mMutex;
std::vector<std::string> mEntries;
};
FMOD_RESULT F_CALL markerCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* musicBank = NULL;
FMOD_RESULT result = system->loadBankFile(Common_MediaPath("Music.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &musicBank);
if (result != FMOD_OK)
{
// Music bank is not exported by default, you will have to export from the tool first
Common_Fatal("Please export music.bank from the Studio tool to run this example");
}
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Music/Level 01", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
CallbackInfo info;
Common_Mutex_Create(&info.mMutex);
ERRCHECK( eventInstance->setUserData(&info) );
ERRCHECK( eventInstance->setCallback(markerCallback,
FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER | FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT |
FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED | FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED) );
ERRCHECK( eventInstance->start() );
FMOD_STUDIO_PARAMETER_DESCRIPTION parameterDescription;
ERRCHECK( eventDescription->getParameterDescriptionByName("Progression", &parameterDescription) );
FMOD_STUDIO_PARAMETER_ID progressionID = parameterDescription.id;
float progression = 0.0f;
ERRCHECK(eventInstance->setParameterByID(progressionID, progression));
do
{
Common_Update();
if (Common_BtnPress(BTN_MORE))
{
progression = (progression == 0.0f ? 1.0f : 0.0f);
ERRCHECK(eventInstance->setParameterByID(progressionID, progression));
}
ERRCHECK( system->update() );
int position;
ERRCHECK( eventInstance->getTimelinePosition(&position) );
Common_Draw("==================================================");
Common_Draw("Music Callback Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Timeline = %d", position);
Common_Draw("");
// Obtain lock and look at our strings
Common_Mutex_Enter(&info.mMutex);
for (size_t i=0; i<info.mEntries.size(); ++i)
{
Common_Draw(" %s\n", info.mEntries[i].c_str());
}
Common_Mutex_Leave(&info.mMutex);
Common_Draw("");
Common_Draw("Press %s to toggle progression (currently %g)", Common_BtnStr(BTN_MORE), progression);
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Mutex_Destroy(&info.mMutex);
Common_Close();
return 0;
}
// Obtain a lock and add a string entry to our list
void markerAddString(CallbackInfo* info, const char* format, ...)
{
char buf[256];
va_list args;
va_start(args, format);
Common_vsnprintf(buf, 256, format, args);
va_end(args);
buf[255] = '\0';
Common_Mutex_Enter(&info->mMutex);
if (info->mEntries.size() >= MAX_ENTRIES)
{
info->mEntries.erase(info->mEntries.begin());
}
info->mEntries.push_back(std::string(buf));
Common_Mutex_Leave(&info->mMutex);
}
// Callback from Studio - Remember these callbacks will occur in the Studio update thread, NOT the game thread.
FMOD_RESULT F_CALL markerCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters)
{
CallbackInfo* callbackInfo;
ERRCHECK(((FMOD::Studio::EventInstance*)event)->getUserData((void**)&callbackInfo));
if (type == FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER)
{
FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES* props = (FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES*)parameters;
markerAddString(callbackInfo, "Named marker '%s'", props->name);
}
else if (type == FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT)
{
FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES* props = (FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES*)parameters;
markerAddString(callbackInfo, "beat %d, bar %d (tempo %.1f %d:%d)", props->beat, props->bar, props->tempo, props->timesignatureupper, props->timesignaturelower);
}
if (type == FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED || type == FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED)
{
FMOD::Sound* sound = (FMOD::Sound*)parameters;
char name[256];
ERRCHECK(sound->getName(name, 256));
unsigned int len;
ERRCHECK(sound->getLength(&len, FMOD_TIMEUNIT_MS));
markerAddString(callbackInfo, "Sound '%s' (length %.3f) %s",
name, (float)len/1000.0f,
type == FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED ? "Started" : "Stopped");
}
return FMOD_OK;
}

View file

@ -0,0 +1,189 @@
/*==============================================================================
Object Panning Example
Copyright (c), Firelight Technologies Pty, Ltd 2015-2025.
This example demonstrates the FMOD object panner. The usage is completely
transparent to the API, the only difference is how the event is authored in the
FMOD Studio tool.
To hear the difference between object panning and normal panning this example
has two events (one configured with the normal panner, and one with the object
panner). As they move around the listener you may toggle between panning method
and two different sounds.
Object panning requires compatible hardware such as a Dolby Atmos amplifier or
a Playstation VR headset. For cases when the necessary hardware is not available
FMOD will fallback to standard 3D panning.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
#include <math.h>
int FMOD_Main()
{
bool isOnGround = false;
bool useListenerAttenuationPosition = false;
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System *system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
// Attempt to initialize with a compatible object panning output
FMOD_RESULT result = coreSystem->setOutput(FMOD_OUTPUTTYPE_AUDIO3D);
if (result != FMOD_OK)
{
result = coreSystem->setOutput(FMOD_OUTPUTTYPE_WINSONIC);
if (result == FMOD_OK)
{
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_7POINT1POINT4, 0) );
}
else
{
result = coreSystem->setOutput(FMOD_OUTPUTTYPE_PHASE);
if (result == FMOD_OK)
{
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_7POINT1POINT4, 0) );
}
}
}
int numDrivers = 0;
ERRCHECK( coreSystem->getNumDrivers(&numDrivers) );
if (numDrivers == 0)
{
ERRCHECK( coreSystem->setDSPBufferSize(512, 4) );
ERRCHECK( coreSystem->setOutput(FMOD_OUTPUTTYPE_AUTODETECT) );
}
// Due to a bug in WinSonic on Windows, FMOD initialization may fail on some machines.
// If you get the error "FMOD error 51 - Error initializing output device", try using
// a different output type such as FMOD_OUTPUTTYPE_AUTODETECT
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
// Load everything needed for playback
FMOD::Studio::Bank *masterBank = NULL;
FMOD::Studio::Bank *musicBank = NULL;
FMOD::Studio::Bank *stringsBank = NULL;
FMOD::Studio::EventDescription *spatializerDescription = NULL;
FMOD::Studio::EventInstance *spatializerInstance = NULL;
float spatializer;
float radioFrequency;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
ERRCHECK( system->loadBankFile(Common_MediaPath("Music.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &musicBank) );
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
ERRCHECK( system->getEvent("event:/Music/Radio Station", &spatializerDescription) );
ERRCHECK( spatializerDescription->createInstance(&spatializerInstance) );
ERRCHECK( spatializerInstance->start() );
do
{
Common_Update();
ERRCHECK(spatializerInstance->getParameterByName("Freq", NULL, &radioFrequency));
ERRCHECK(spatializerInstance->getParameterByName("Spatializer", NULL, &spatializer));
if (Common_BtnPress(BTN_ACTION1))
{
if (radioFrequency == 3.00f)
{
ERRCHECK(spatializerInstance->setParameterByName("Freq", 0.00f));
}
else
{
ERRCHECK(spatializerInstance->setParameterByName("Freq", (radioFrequency + 1.50f)));
}
}
if (Common_BtnPress(BTN_ACTION2))
{
if (spatializer == 1.00)
{
ERRCHECK(spatializerInstance->setParameterByName("Spatializer", 0.00f));
}
else
{
ERRCHECK(spatializerInstance->setParameterByName("Spatializer", 1.00f));
}
}
if (Common_BtnPress(BTN_ACTION3))
{
isOnGround = !isOnGround;
}
if (Common_BtnPress(BTN_ACTION4))
{
useListenerAttenuationPosition = !useListenerAttenuationPosition;
}
FMOD_3D_ATTRIBUTES vec = { };
vec.forward.z = 1.0f;
vec.up.y = 1.0f;
static float t = 0;
vec.position.x = sinf(t) * 3.0f; /* Rotate sound in a circle */
vec.position.z = cosf(t) * 3.0f; /* Rotate sound in a circle */
t += 0.03f;
if (isOnGround)
{
vec.position.y = 0; /* At ground level */
}
else
{
vec.position.y = 5.0f; /* Up high */
}
ERRCHECK( spatializerInstance->set3DAttributes(&vec) );
FMOD_3D_ATTRIBUTES listener_vec = { };
listener_vec.forward.z = 1.0f;
listener_vec.up.y = 1.0f;
FMOD_VECTOR listener_attenuationPos = vec.position;
listener_attenuationPos.z -= -10.0f;
ERRCHECK( system->setListenerAttributes(0, &listener_vec, useListenerAttenuationPosition ? &listener_attenuationPos : nullptr) );
ERRCHECK( system->update() );
const char *radioString = (radioFrequency == 0.00f) ? "Rock" : (radioFrequency == 1.50f) ? "Lo-fi" : "Hip hop";
const char *spatialString = (spatializer == 0.00f) ? "Standard 3D Spatializer" : "Object Spatializer";
Common_Draw("==================================================");
Common_Draw("Object Panning Example.");
Common_Draw("Copyright (c) Firelight Technologies 2015-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Playing %s with the %s.", radioString, spatialString);
Common_Draw("Radio is %s.", isOnGround ? "on the ground" : "up in the air");
Common_Draw("");
Common_Draw("Press %s to switch stations.", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to switch spatializer.", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to elevate the event instance.", Common_BtnStr(BTN_ACTION3));
Common_Draw("Press %s to %s use of attenuation position.", Common_BtnStr(BTN_ACTION4), useListenerAttenuationPosition ? "disable" : "enable");
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( stringsBank->unload() );
ERRCHECK( musicBank->unload() );
ERRCHECK( system->release() );
Common_Close();
return 0;
}

View file

@ -0,0 +1,177 @@
/*==============================================================================
Programmer Sound Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates how to implement the programmer sound callback to
play an event that has a programmer specified sound.
### See Also ###
Studio::EventInstance::setCallback
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
struct ProgrammerSoundContext
{
const char* dialogueString;
};
FMOD_RESULT F_CALL programmerSoundCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters);
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &sfxBank) );
// Available banks
unsigned int bankIndex = 0;
static const char* const banks[] = { "Dialogue_EN.bank", "Dialogue_JP.bank", "Dialogue_CN.bank" };
FMOD::Studio::Bank* localizedBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath(banks[bankIndex]), FMOD_STUDIO_LOAD_BANK_NORMAL, &localizedBank) );
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent("event:/Character/Dialogue", &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
// Dialogue keys available
// These keys are shared amongst all audio tables
unsigned int dialogueIndex = 0;
static const char* const dialogue[] = {"welcome", "main menu", "goodbye"};
ProgrammerSoundContext programmerSoundContext;
programmerSoundContext.dialogueString = dialogue[dialogueIndex];
ERRCHECK( eventInstance->setUserData(&programmerSoundContext) );
ERRCHECK( eventInstance->setCallback(programmerSoundCallback, FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND | FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND) );
do
{
Common_Update();
if (Common_BtnPress(BTN_ACTION1))
{
ERRCHECK( localizedBank->unload() );
bankIndex = (bankIndex < 2) ? bankIndex + 1 : 0;
ERRCHECK( system->loadBankFile(Common_MediaPath(banks[bankIndex]), FMOD_STUDIO_LOAD_BANK_NORMAL, &localizedBank) );
}
if (Common_BtnPress(BTN_ACTION2))
{
dialogueIndex = (dialogueIndex < 2) ? dialogueIndex + 1 : 0;
programmerSoundContext.dialogueString = dialogue[dialogueIndex];
}
if (Common_BtnPress(BTN_MORE))
{
ERRCHECK( eventInstance->start() );
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Programmer Sound Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Press %s to change language", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to change dialogue", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to play the event", Common_BtnStr(BTN_MORE));
Common_Draw("");
Common_Draw("Language:");
Common_Draw(" %s English", bankIndex == 0 ? ">" : " ");
Common_Draw(" %s Japanese", bankIndex == 1 ? ">" : " ");
Common_Draw(" %s Chinese", bankIndex == 2 ? ">" : " ");
Common_Draw("");
Common_Draw("Dialogue:");
Common_Draw(" %s Welcome to the FMOD Studio tutorial", dialogueIndex == 0 ? ">" : " ");
Common_Draw(" %s This is the main menu", dialogueIndex == 1 ? ">" : " ");
Common_Draw(" %s Goodbye", dialogueIndex == 2 ? ">" : " ");
Common_Draw("");
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( system->release() );
Common_Close();
return 0;
}
#define CHECK_RESULT(op) \
{ \
FMOD_RESULT res = (op); \
if (res != FMOD_OK) \
{ \
return res; \
} \
}
FMOD_RESULT F_CALL programmerSoundCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE* event, void *parameters)
{
FMOD::Studio::EventInstance* eventInstance = (FMOD::Studio::EventInstance*)event;
if (type == FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND)
{
FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES* props = (FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES*)parameters;
// Get our context from the event instance user data
ProgrammerSoundContext* context = NULL;
CHECK_RESULT( eventInstance->getUserData((void**)&context) );
FMOD::Studio::System* studioSystem = NULL;
CHECK_RESULT( eventInstance->getSystem(&studioSystem) );
// Find the audio file in the audio table with the key
FMOD_STUDIO_SOUND_INFO info;
CHECK_RESULT( studioSystem->getSoundInfo(context->dialogueString, &info) );
FMOD::System* coreSystem = NULL;
CHECK_RESULT( studioSystem->getCoreSystem(&coreSystem) );
FMOD::Sound* sound = NULL;
CHECK_RESULT( coreSystem->createSound(info.name_or_data, FMOD_LOOP_NORMAL | FMOD_CREATECOMPRESSEDSAMPLE | FMOD_NONBLOCKING | info.mode, &info.exinfo, &sound) );
// Pass the sound to FMOD
props->sound = (FMOD_SOUND*)sound;
props->subsoundIndex = info.subsoundindex;
}
else if (type == FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND)
{
FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES* props = (FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES*)parameters;
// Obtain the sound
FMOD::Sound* sound = (FMOD::Sound*)props->sound;
// Release the sound
CHECK_RESULT( sound->release() );
}
return FMOD_OK;
}

View file

@ -0,0 +1,373 @@
/*==============================================================================
API Recording Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example shows recording and playback functionality, allowing the user to
trigger some sounds and then play back what they have recorded. The provided
functionality is intended to assist in debugging.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
const int SCREEN_WIDTH = NUM_COLUMNS;
const int SCREEN_HEIGHT = 10;
int currentScreenPosition = -1;
char screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT + 1] = {0};
void initializeScreenBuffer();
void updateScreenPosition(const FMOD_VECTOR& worldPosition);
static const char* RECORD_FILENAME = "playback.cmd.txt";
enum State
{
State_Selection,
State_Record,
State_Playback,
State_Quit
};
State executeSelection(FMOD::Studio::System* system);
State executeRecord(FMOD::Studio::System* system);
State executePlayback(FMOD::Studio::System* system);
int FMOD_Main()
{
void *extraDriverData = 0;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
State state = State_Selection;
while (state != State_Quit)
{
switch (state)
{
case State_Selection:
state = executeSelection(system);
break;
case State_Record:
state = executeRecord(system);
break;
case State_Playback:
state = executePlayback(system);
break;
case State_Quit:
break;
};
};
ERRCHECK( system->release() );
Common_Close();
return 0;
}
// Show the main selection menu
State executeSelection(FMOD::Studio::System* system)
{
for (;;)
{
Common_Update();
if (Common_BtnPress(BTN_ACTION1))
{
return State_Record;
}
if (Common_BtnPress(BTN_ACTION2))
{
return State_Playback;
}
if (Common_BtnPress(BTN_QUIT))
{
return State_Quit;
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Recording and playback example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Waiting to start recording");
Common_Draw("");
Common_Draw("Press %s to start recording", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to play back recording", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Draw("");
Common_Sleep(50);
}
}
// Start recording, load banks and then let the user trigger some sounds
State executeRecord(FMOD::Studio::System* system)
{
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &stringsBank) );
FMOD::Studio::Bank* vehiclesBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Vehicles.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &vehiclesBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NONBLOCKING, &sfxBank) );
// Wait for banks to load
ERRCHECK( system->flushCommands() );
// Start recording commands - it will also record which banks we have already loaded by now
ERRCHECK( system->startCommandCapture(Common_WritePath(RECORD_FILENAME), FMOD_STUDIO_COMMANDCAPTURE_NORMAL) );
FMOD_GUID explosionID = {0};
ERRCHECK( system->lookupID("event:/Weapons/Explosion", &explosionID) );
FMOD::Studio::EventDescription* engineDescription = NULL;
ERRCHECK( system->getEvent("event:/Vehicles/Ride-on Mower", &engineDescription) );
FMOD::Studio::EventInstance* engineInstance = NULL;
ERRCHECK( engineDescription->createInstance(&engineInstance) );
ERRCHECK( engineInstance->setParameterByName("RPM", 650.0f) );
ERRCHECK( engineInstance->start() );
// Position the listener at the origin
FMOD_3D_ATTRIBUTES attributes = { { 0 } };
attributes.forward.z = 1.0f;
attributes.up.y = 1.0f;
ERRCHECK( system->setListenerAttributes(0, &attributes) );
// Position the event 2 units in front of the listener
attributes.position.z = 2.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
initializeScreenBuffer();
bool wantQuit = false;
for (;;)
{
Common_Update();
if (Common_BtnPress(BTN_MORE))
{
break;
}
if (Common_BtnPress(BTN_QUIT))
{
wantQuit = true;
break;
}
if (Common_BtnPress(BTN_ACTION1))
{
// One-shot event
FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEventByID(&explosionID, &eventDescription) );
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );
for (int i=0; i<10; ++i)
{
ERRCHECK( eventInstance->setVolume(i / 10.0f) );
}
ERRCHECK( eventInstance->start() );
// Release will clean up the instance when it completes
ERRCHECK( eventInstance->release() );
}
if (Common_BtnPress(BTN_LEFT))
{
attributes.position.x -= 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_RIGHT))
{
attributes.position.x += 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_UP))
{
attributes.position.z += 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_DOWN))
{
attributes.position.z -= 1.0f;
ERRCHECK( engineInstance->set3DAttributes(&attributes) );
}
if (Common_BtnPress(BTN_MORE))
{
break;
}
if (Common_BtnPress(BTN_QUIT))
{
wantQuit = true;
break;
}
ERRCHECK(system->update());
updateScreenPosition(attributes.position);
Common_Draw("==================================================");
Common_Draw("Recording and playback example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Recording!");
Common_Draw("");
Common_Draw(screenBuffer);
Common_Draw("");
Common_Draw("Press %s to finish recording", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to play a one-shot", Common_BtnStr(BTN_ACTION1));
Common_Draw("Use the arrow keys (%s, %s, %s, %s) to control the engine position",
Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT), Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
}
// Unload all the banks
ERRCHECK( masterBank->unload() );
ERRCHECK( stringsBank->unload() );
ERRCHECK( vehiclesBank->unload() );
ERRCHECK( sfxBank->unload() );
// Finish recording
ERRCHECK( system->flushCommands() );
ERRCHECK( system->stopCommandCapture() );
return (wantQuit ? State_Quit : State_Selection);
}
// Play back a previously recorded file
State executePlayback(FMOD::Studio::System* system)
{
FMOD::Studio::CommandReplay* replay;
ERRCHECK( system->loadCommandReplay(Common_WritePath(RECORD_FILENAME), FMOD_STUDIO_COMMANDREPLAY_NORMAL, &replay));
int commandCount;
ERRCHECK(replay->getCommandCount(&commandCount));
float totalTime;
ERRCHECK(replay->getLength(&totalTime));
ERRCHECK(replay->start());
ERRCHECK(system->update());
for (;;)
{
Common_Update();
if (Common_BtnPress(BTN_QUIT))
{
break;
}
if (Common_BtnPress(BTN_MORE))
{
bool paused;
ERRCHECK(replay->getPaused(&paused));
ERRCHECK(replay->setPaused(!paused));
}
FMOD_STUDIO_PLAYBACK_STATE state;
ERRCHECK(replay->getPlaybackState(&state));
if (state == FMOD_STUDIO_PLAYBACK_STOPPED)
{
break;
}
int currentIndex;
float currentTime;
ERRCHECK(replay->getCurrentCommand(&currentIndex, &currentTime));
ERRCHECK(system->update());
Common_Draw("==================================================");
Common_Draw("Recording and playback example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Playing back commands:");
Common_Draw("Command = %d / %d\n", currentIndex, commandCount);
Common_Draw("Time = %.3f / %.3f\n", currentTime, totalTime);
Common_Draw("");
Common_Draw("Press %s to pause/unpause recording", Common_BtnStr(BTN_MORE));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
}
ERRCHECK( replay->release() );
ERRCHECK( system->unloadAll() );
return State_Selection;
}
void initializeScreenBuffer()
{
memset(screenBuffer, ' ', sizeof(screenBuffer));
int idx = SCREEN_WIDTH;
for (int i = 0; i < SCREEN_HEIGHT; ++i)
{
screenBuffer[idx] = '\n';
idx += SCREEN_WIDTH + 1;
}
screenBuffer[(SCREEN_WIDTH + 1) * SCREEN_HEIGHT] = '\0';
}
int getCharacterIndex(const FMOD_VECTOR& position)
{
int row = static_cast<int>(-position.z + (SCREEN_HEIGHT / 2));
int col = static_cast<int>(position.x + (SCREEN_WIDTH / 2));
if (0 < row && row < SCREEN_HEIGHT && 0 < col && col < SCREEN_WIDTH)
{
return (row * (SCREEN_WIDTH + 1)) + col;
}
return -1;
}
void updateScreenPosition(const FMOD_VECTOR& eventPosition)
{
if (currentScreenPosition != -1)
{
screenBuffer[currentScreenPosition] = ' ';
currentScreenPosition = -1;
}
FMOD_VECTOR origin = {0};
int idx = getCharacterIndex(origin);
screenBuffer[idx] = '^';
idx = getCharacterIndex(eventPosition);
if (idx != -1)
{
screenBuffer[idx] = 'o';
currentScreenPosition = idx;
}
}

View file

@ -0,0 +1,126 @@
/*==============================================================================
Simple Event Example
Copyright (c), Firelight Technologies Pty, Ltd 2012-2025.
This example demonstrates the various ways of playing an event.
#### Explosion Event ####
This event is played as a one-shot and released immediately after it has been
created.
#### Looping Ambience Event ####
A single instance is started or stopped based on user input.
#### Cancel Event ####
This instance is started and if already playing, restarted.
For information on using FMOD example code in your own programs, visit
https://www.fmod.com/legal
==============================================================================*/
#include "fmod_studio.hpp"
#include "fmod.hpp"
#include "common.h"
int FMOD_Main()
{
void *extraDriverData = NULL;
Common_Init(&extraDriverData);
FMOD::Studio::System* system = NULL;
ERRCHECK( FMOD::Studio::System::create(&system) );
// The example Studio project is authored for 5.1 sound, so set up the system output mode to match
FMOD::System* coreSystem = NULL;
ERRCHECK( system->getCoreSystem(&coreSystem) );
ERRCHECK( coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0) );
ERRCHECK( system->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData) );
FMOD::Studio::Bank* masterBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank) );
FMOD::Studio::Bank* stringsBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("Master.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank) );
FMOD::Studio::Bank* sfxBank = NULL;
ERRCHECK( system->loadBankFile(Common_MediaPath("SFX.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &sfxBank) );
// Get the Looping Ambience event
FMOD::Studio::EventDescription* loopingAmbienceDescription = NULL;
ERRCHECK( system->getEvent("event:/Ambience/Country", &loopingAmbienceDescription) );
FMOD::Studio::EventInstance* loopingAmbienceInstance = NULL;
ERRCHECK( loopingAmbienceDescription->createInstance(&loopingAmbienceInstance) );
// Get the 4 Second Surge event
FMOD::Studio::EventDescription* cancelDescription = NULL;
ERRCHECK( system->getEvent("event:/UI/Cancel", &cancelDescription) );
FMOD::Studio::EventInstance* cancelInstance = NULL;
ERRCHECK( cancelDescription->createInstance(&cancelInstance) );
// Get the Single Explosion event
FMOD::Studio::EventDescription* explosionDescription = NULL;
ERRCHECK( system->getEvent("event:/Weapons/Explosion", &explosionDescription) );
// Start loading explosion sample data and keep it in memory
ERRCHECK( explosionDescription->loadSampleData() );
do
{
Common_Update();
if (Common_BtnPress(BTN_ACTION1))
{
// One-shot event
FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( explosionDescription->createInstance(&eventInstance) );
ERRCHECK( eventInstance->start() );
// Release will clean up the instance when it completes
ERRCHECK( eventInstance->release() );
}
if (Common_BtnPress(BTN_ACTION2))
{
ERRCHECK( loopingAmbienceInstance->start() );
}
if (Common_BtnPress(BTN_ACTION3))
{
ERRCHECK( loopingAmbienceInstance->stop(FMOD_STUDIO_STOP_IMMEDIATE) );
}
if (Common_BtnPress(BTN_ACTION4))
{
// Calling start on an instance will cause it to restart if it's already playing
ERRCHECK( cancelInstance->start() );
}
ERRCHECK( system->update() );
Common_Draw("==================================================");
Common_Draw("Simple Event Example.");
Common_Draw("Copyright (c) Firelight Technologies 2012-2025.");
Common_Draw("==================================================");
Common_Draw("");
Common_Draw("Press %s to fire and forget the explosion", Common_BtnStr(BTN_ACTION1));
Common_Draw("Press %s to start the looping ambience", Common_BtnStr(BTN_ACTION2));
Common_Draw("Press %s to stop the looping ambience", Common_BtnStr(BTN_ACTION3));
Common_Draw("Press %s to start/restart the cancel sound", Common_BtnStr(BTN_ACTION4));
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
Common_Sleep(50);
} while (!Common_BtnPress(BTN_QUIT));
ERRCHECK( sfxBank->unload() );
ERRCHECK( stringsBank->unload() );
ERRCHECK( masterBank->unload() );
ERRCHECK( system->release() );
Common_Close();
return 0;
}

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{73693ACD-D6D7-4784-A76D-DA990895F0FF}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d_multi.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\event_parameter.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,198 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 15
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "3d.vcxproj", "{73693ACD-D6D7-4784-A76D-DA990895F0FF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d_multi", "3d_multi.vcxproj", "{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "event_parameter", "event_parameter.vcxproj", "{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "load_banks", "load_banks.vcxproj", "{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "music_callbacks", "music_callbacks.vcxproj", "{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectpan", "objectpan.vcxproj", "{45CC7BC5-F619-4460-931E-7CCDB0FFF609}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "programmer_sound", "programmer_sound.vcxproj", "{E59D3927-5537-471A-AEE6-4D13D3057E67}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recording_playback", "recording_playback.vcxproj", "{B7D13C73-23F1-41F9-ADA9-626994A99F3E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple_event", "simple_event.vcxproj", "{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|ARM64 = Debug|ARM64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|Win32.ActiveCfg = Debug|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|Win32.Build.0 = Debug|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|Win32.Deploy.0 = Debug|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|x64.ActiveCfg = Debug|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|x64.Build.0 = Debug|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|x64.Deploy.0 = Debug|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|ARM64.Build.0 = Debug|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Debug|ARM64.Deploy.0 = Debug|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|Win32.ActiveCfg = Release|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|Win32.Build.0 = Release|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|Win32.Deploy.0 = Release|Win32
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|x64.ActiveCfg = Release|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|x64.Build.0 = Release|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|x64.Deploy.0 = Release|x64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|ARM64.ActiveCfg = Release|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|ARM64.Build.0 = Release|ARM64
{73693ACD-D6D7-4784-A76D-DA990895F0FF}.Release|ARM64.Deploy.0 = Release|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|Win32.ActiveCfg = Debug|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|Win32.Build.0 = Debug|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|Win32.Deploy.0 = Debug|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|x64.ActiveCfg = Debug|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|x64.Build.0 = Debug|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|x64.Deploy.0 = Debug|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|ARM64.Build.0 = Debug|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Debug|ARM64.Deploy.0 = Debug|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|Win32.ActiveCfg = Release|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|Win32.Build.0 = Release|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|Win32.Deploy.0 = Release|Win32
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|x64.ActiveCfg = Release|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|x64.Build.0 = Release|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|x64.Deploy.0 = Release|x64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|ARM64.ActiveCfg = Release|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|ARM64.Build.0 = Release|ARM64
{9E00A588-7ADB-4C29-90D6-DF44E3D6D711}.Release|ARM64.Deploy.0 = Release|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|Win32.ActiveCfg = Debug|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|Win32.Build.0 = Debug|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|Win32.Deploy.0 = Debug|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|x64.ActiveCfg = Debug|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|x64.Build.0 = Debug|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|x64.Deploy.0 = Debug|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|ARM64.Build.0 = Debug|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Debug|ARM64.Deploy.0 = Debug|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|Win32.ActiveCfg = Release|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|Win32.Build.0 = Release|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|Win32.Deploy.0 = Release|Win32
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|x64.ActiveCfg = Release|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|x64.Build.0 = Release|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|x64.Deploy.0 = Release|x64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|ARM64.ActiveCfg = Release|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|ARM64.Build.0 = Release|ARM64
{C98B1BB0-A6B0-4CD8-BFE5-B7E34D79FB48}.Release|ARM64.Deploy.0 = Release|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|Win32.ActiveCfg = Debug|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|Win32.Build.0 = Debug|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|Win32.Deploy.0 = Debug|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|x64.ActiveCfg = Debug|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|x64.Build.0 = Debug|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|x64.Deploy.0 = Debug|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|ARM64.Build.0 = Debug|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Debug|ARM64.Deploy.0 = Debug|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|Win32.ActiveCfg = Release|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|Win32.Build.0 = Release|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|Win32.Deploy.0 = Release|Win32
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|x64.ActiveCfg = Release|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|x64.Build.0 = Release|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|x64.Deploy.0 = Release|x64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|ARM64.ActiveCfg = Release|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|ARM64.Build.0 = Release|ARM64
{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}.Release|ARM64.Deploy.0 = Release|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|Win32.ActiveCfg = Debug|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|Win32.Build.0 = Debug|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|Win32.Deploy.0 = Debug|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|x64.ActiveCfg = Debug|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|x64.Build.0 = Debug|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|x64.Deploy.0 = Debug|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|ARM64.ActiveCfg = Debug|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|ARM64.Build.0 = Debug|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Debug|ARM64.Deploy.0 = Debug|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|Win32.ActiveCfg = Release|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|Win32.Build.0 = Release|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|Win32.Deploy.0 = Release|Win32
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|x64.ActiveCfg = Release|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|x64.Build.0 = Release|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|x64.Deploy.0 = Release|x64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|ARM64.ActiveCfg = Release|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|ARM64.Build.0 = Release|ARM64
{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}.Release|ARM64.Deploy.0 = Release|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|Win32.ActiveCfg = Debug|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|Win32.Build.0 = Debug|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|Win32.Deploy.0 = Debug|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|x64.ActiveCfg = Debug|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|x64.Build.0 = Debug|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|x64.Deploy.0 = Debug|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|ARM64.ActiveCfg = Debug|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|ARM64.Build.0 = Debug|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Debug|ARM64.Deploy.0 = Debug|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|Win32.ActiveCfg = Release|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|Win32.Build.0 = Release|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|Win32.Deploy.0 = Release|Win32
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|x64.ActiveCfg = Release|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|x64.Build.0 = Release|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|x64.Deploy.0 = Release|x64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|ARM64.ActiveCfg = Release|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|ARM64.Build.0 = Release|ARM64
{45CC7BC5-F619-4460-931E-7CCDB0FFF609}.Release|ARM64.Deploy.0 = Release|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|Win32.ActiveCfg = Debug|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|Win32.Build.0 = Debug|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|Win32.Deploy.0 = Debug|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|x64.ActiveCfg = Debug|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|x64.Build.0 = Debug|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|x64.Deploy.0 = Debug|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|ARM64.Build.0 = Debug|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Debug|ARM64.Deploy.0 = Debug|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|Win32.ActiveCfg = Release|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|Win32.Build.0 = Release|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|Win32.Deploy.0 = Release|Win32
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|x64.ActiveCfg = Release|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|x64.Build.0 = Release|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|x64.Deploy.0 = Release|x64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|ARM64.ActiveCfg = Release|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|ARM64.Build.0 = Release|ARM64
{E59D3927-5537-471A-AEE6-4D13D3057E67}.Release|ARM64.Deploy.0 = Release|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|Win32.ActiveCfg = Debug|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|Win32.Build.0 = Debug|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|Win32.Deploy.0 = Debug|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|x64.ActiveCfg = Debug|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|x64.Build.0 = Debug|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|x64.Deploy.0 = Debug|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|ARM64.Build.0 = Debug|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Debug|ARM64.Deploy.0 = Debug|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|Win32.ActiveCfg = Release|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|Win32.Build.0 = Release|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|Win32.Deploy.0 = Release|Win32
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|x64.ActiveCfg = Release|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|x64.Build.0 = Release|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|x64.Deploy.0 = Release|x64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|ARM64.ActiveCfg = Release|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|ARM64.Build.0 = Release|ARM64
{B7D13C73-23F1-41F9-ADA9-626994A99F3E}.Release|ARM64.Deploy.0 = Release|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|Win32.ActiveCfg = Debug|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|Win32.Build.0 = Debug|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|Win32.Deploy.0 = Debug|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|x64.ActiveCfg = Debug|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|x64.Build.0 = Debug|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|x64.Deploy.0 = Debug|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|ARM64.Build.0 = Debug|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|Win32.ActiveCfg = Release|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|Win32.Build.0 = Release|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|Win32.Deploy.0 = Release|Win32
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|x64.ActiveCfg = Release|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|x64.Build.0 = Release|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|x64.Deploy.0 = Release|x64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|ARM64.ActiveCfg = Release|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|ARM64.Build.0 = Release|ARM64
{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}.Release|ARM64.Deploy.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A478832E-3ABF-468B-B7A8-8A59B2C67FD0}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\load_banks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{645E3EB4-0891-40BB-ABFD-A9CD6A6F5C79}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\music_callbacks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{45CC7BC5-F619-4460-931E-7CCDB0FFF609}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\objectpan.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E59D3927-5537-471A-AEE6-4D13D3057E67}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\programmer_sound.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B7D13C73-23F1-41F9-ADA9-626994A99F3E}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\recording_playback.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{30D2465D-18DD-465B-B49E-7EBFA21E4A6A}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\simple_event.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7DF05649-1998-4E76-8C22-9CCE1A5D6353}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\3d_multi.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{632C755A-6FB4-47A7-A755-AF75940D83AE}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\event_parameter.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,198 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio Version 16
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "3d.vcxproj", "{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d_multi", "3d_multi.vcxproj", "{7DF05649-1998-4E76-8C22-9CCE1A5D6353}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "event_parameter", "event_parameter.vcxproj", "{632C755A-6FB4-47A7-A755-AF75940D83AE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "load_banks", "load_banks.vcxproj", "{3328A7D5-F136-4678-993F-9F243D27FBEA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "music_callbacks", "music_callbacks.vcxproj", "{2C1EA18D-07AA-43E3-B4FB-600F556D9840}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectpan", "objectpan.vcxproj", "{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "programmer_sound", "programmer_sound.vcxproj", "{3807BE27-3975-4BD7-9D53-F96202BDAC3B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recording_playback", "recording_playback.vcxproj", "{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple_event", "simple_event.vcxproj", "{49C1282C-9CE5-4980-9590-8678615DB435}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|ARM64 = Debug|ARM64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|Win32.ActiveCfg = Debug|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|Win32.Build.0 = Debug|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|Win32.Deploy.0 = Debug|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|x64.ActiveCfg = Debug|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|x64.Build.0 = Debug|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|x64.Deploy.0 = Debug|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|ARM64.Build.0 = Debug|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|Win32.ActiveCfg = Release|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|Win32.Build.0 = Release|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|Win32.Deploy.0 = Release|Win32
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|x64.ActiveCfg = Release|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|x64.Build.0 = Release|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|x64.Deploy.0 = Release|x64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|ARM64.ActiveCfg = Release|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|ARM64.Build.0 = Release|ARM64
{B1A8FDAD-3AEE-4D74-AC3E-9B0B366A9D8A}.Release|ARM64.Deploy.0 = Release|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|Win32.ActiveCfg = Debug|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|Win32.Build.0 = Debug|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|Win32.Deploy.0 = Debug|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|x64.ActiveCfg = Debug|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|x64.Build.0 = Debug|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|x64.Deploy.0 = Debug|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|ARM64.ActiveCfg = Debug|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|ARM64.Build.0 = Debug|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Debug|ARM64.Deploy.0 = Debug|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|Win32.ActiveCfg = Release|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|Win32.Build.0 = Release|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|Win32.Deploy.0 = Release|Win32
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|x64.ActiveCfg = Release|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|x64.Build.0 = Release|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|x64.Deploy.0 = Release|x64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|ARM64.ActiveCfg = Release|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|ARM64.Build.0 = Release|ARM64
{7DF05649-1998-4E76-8C22-9CCE1A5D6353}.Release|ARM64.Deploy.0 = Release|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|Win32.ActiveCfg = Debug|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|Win32.Build.0 = Debug|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|Win32.Deploy.0 = Debug|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|x64.ActiveCfg = Debug|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|x64.Build.0 = Debug|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|x64.Deploy.0 = Debug|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|ARM64.ActiveCfg = Debug|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|ARM64.Build.0 = Debug|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Debug|ARM64.Deploy.0 = Debug|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|Win32.ActiveCfg = Release|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|Win32.Build.0 = Release|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|Win32.Deploy.0 = Release|Win32
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|x64.ActiveCfg = Release|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|x64.Build.0 = Release|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|x64.Deploy.0 = Release|x64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|ARM64.ActiveCfg = Release|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|ARM64.Build.0 = Release|ARM64
{632C755A-6FB4-47A7-A755-AF75940D83AE}.Release|ARM64.Deploy.0 = Release|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|Win32.ActiveCfg = Debug|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|Win32.Build.0 = Debug|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|Win32.Deploy.0 = Debug|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|x64.ActiveCfg = Debug|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|x64.Build.0 = Debug|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|x64.Deploy.0 = Debug|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|ARM64.ActiveCfg = Debug|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|ARM64.Build.0 = Debug|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Debug|ARM64.Deploy.0 = Debug|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|Win32.ActiveCfg = Release|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|Win32.Build.0 = Release|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|Win32.Deploy.0 = Release|Win32
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|x64.ActiveCfg = Release|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|x64.Build.0 = Release|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|x64.Deploy.0 = Release|x64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|ARM64.ActiveCfg = Release|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|ARM64.Build.0 = Release|ARM64
{3328A7D5-F136-4678-993F-9F243D27FBEA}.Release|ARM64.Deploy.0 = Release|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|Win32.ActiveCfg = Debug|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|Win32.Build.0 = Debug|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|Win32.Deploy.0 = Debug|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|x64.ActiveCfg = Debug|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|x64.Build.0 = Debug|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|x64.Deploy.0 = Debug|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|ARM64.ActiveCfg = Debug|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|ARM64.Build.0 = Debug|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Debug|ARM64.Deploy.0 = Debug|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|Win32.ActiveCfg = Release|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|Win32.Build.0 = Release|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|Win32.Deploy.0 = Release|Win32
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|x64.ActiveCfg = Release|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|x64.Build.0 = Release|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|x64.Deploy.0 = Release|x64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|ARM64.ActiveCfg = Release|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|ARM64.Build.0 = Release|ARM64
{2C1EA18D-07AA-43E3-B4FB-600F556D9840}.Release|ARM64.Deploy.0 = Release|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|Win32.ActiveCfg = Debug|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|Win32.Build.0 = Debug|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|Win32.Deploy.0 = Debug|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|x64.ActiveCfg = Debug|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|x64.Build.0 = Debug|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|x64.Deploy.0 = Debug|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|ARM64.Build.0 = Debug|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|Win32.ActiveCfg = Release|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|Win32.Build.0 = Release|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|Win32.Deploy.0 = Release|Win32
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|x64.ActiveCfg = Release|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|x64.Build.0 = Release|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|x64.Deploy.0 = Release|x64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|ARM64.ActiveCfg = Release|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|ARM64.Build.0 = Release|ARM64
{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}.Release|ARM64.Deploy.0 = Release|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|Win32.ActiveCfg = Debug|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|Win32.Build.0 = Debug|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|Win32.Deploy.0 = Debug|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|x64.ActiveCfg = Debug|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|x64.Build.0 = Debug|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|x64.Deploy.0 = Debug|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|ARM64.ActiveCfg = Debug|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|ARM64.Build.0 = Debug|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Debug|ARM64.Deploy.0 = Debug|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|Win32.ActiveCfg = Release|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|Win32.Build.0 = Release|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|Win32.Deploy.0 = Release|Win32
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|x64.ActiveCfg = Release|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|x64.Build.0 = Release|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|x64.Deploy.0 = Release|x64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|ARM64.ActiveCfg = Release|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|ARM64.Build.0 = Release|ARM64
{3807BE27-3975-4BD7-9D53-F96202BDAC3B}.Release|ARM64.Deploy.0 = Release|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|Win32.ActiveCfg = Debug|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|Win32.Build.0 = Debug|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|Win32.Deploy.0 = Debug|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|x64.ActiveCfg = Debug|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|x64.Build.0 = Debug|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|x64.Deploy.0 = Debug|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|ARM64.Build.0 = Debug|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Debug|ARM64.Deploy.0 = Debug|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|Win32.ActiveCfg = Release|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|Win32.Build.0 = Release|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|Win32.Deploy.0 = Release|Win32
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|x64.ActiveCfg = Release|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|x64.Build.0 = Release|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|x64.Deploy.0 = Release|x64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|ARM64.ActiveCfg = Release|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|ARM64.Build.0 = Release|ARM64
{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}.Release|ARM64.Deploy.0 = Release|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|Win32.ActiveCfg = Debug|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|Win32.Build.0 = Debug|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|Win32.Deploy.0 = Debug|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|x64.ActiveCfg = Debug|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|x64.Build.0 = Debug|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|x64.Deploy.0 = Debug|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|ARM64.ActiveCfg = Debug|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|ARM64.Build.0 = Debug|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Debug|ARM64.Deploy.0 = Debug|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|Win32.ActiveCfg = Release|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|Win32.Build.0 = Release|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|Win32.Deploy.0 = Release|Win32
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|x64.ActiveCfg = Release|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|x64.Build.0 = Release|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|x64.Deploy.0 = Release|x64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|ARM64.ActiveCfg = Release|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|ARM64.Build.0 = Release|ARM64
{49C1282C-9CE5-4980-9590-8678615DB435}.Release|ARM64.Deploy.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3328A7D5-F136-4678-993F-9F243D27FBEA}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\load_banks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2C1EA18D-07AA-43E3-B4FB-600F556D9840}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\music_callbacks.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B9638A3B-7FEB-4135-B9E3-F8307A2DDA3A}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\objectpan.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3807BE27-3975-4BD7-9D53-F96202BDAC3B}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\programmer_sound.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F22CECE3-5792-4AD7-BE01-46BF9CD4E195}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\recording_playback.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<Arch>x86</Arch>
<Arch Condition="'$(Platform)'=='x64'">x64</Arch>
<Arch Condition="'$(Platform)'=='ARM64'">ARM64</Arch>
<Suffix Condition="'$(Configuration)'=='Debug'">L</Suffix>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{49C1282C-9CE5-4980-9590-8678615DB435}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries Condition="'$(Configuration)'=='Debug'">true</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<OutDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)_builds\$(ProjectName)\$(Configuration)\$(Platform)\Intermediate\</IntDir>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)$(Suffix)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>..\..\..\core\inc;..\..\..\studio\inc</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\core\lib\$(Arch);..\..\..\studio\lib\$(Arch)</AdditionalLibraryDirectories>
<AdditionalDependencies>fmod$(Suffix)_vc.lib;fmodstudio$(Suffix)_vc.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>if not exist ..\bin mkdir ..\bin
copy /Y "$(TargetPath)" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" ..\bin
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" ..\bin
copy /Y "..\..\..\core\lib\$(Arch)\fmod$(Suffix).dll" "$(OutDir)"
copy /Y "..\..\..\studio\lib\$(Arch)\fmodstudio$(Suffix).dll" "$(OutDir)"
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\common.h" />
<ClCompile Include="..\common.cpp" />
<ClInclude Include="..\common_platform.h" />
<ClCompile Include="..\common_platform.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\simple_event.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\common.cpp">
<Filter>common</Filter>
</ClCompile>
<ClCompile Include="..\common_platform.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="common">
<UniqueIdentifier>{937abb1b-0123-4875-9828-07ed9f9813e3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\common_platform.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="..\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
</Project>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,249 @@
/* ======================================================================================== */
/* FMOD Studio API - C header file. */
/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2025. */
/* */
/* Use this header in conjunction with fmod_studio_common.h (which contains all the */
/* constants / callbacks) to develop using the C language. */
/* */
/* For more detail visit: */
/* https://fmod.com/docs/2.03/api/studio-api.html */
/* ======================================================================================== */
#ifndef FMOD_STUDIO_H
#define FMOD_STUDIO_H
#include "fmod_studio_common.h"
#ifdef __cplusplus
extern "C"
{
#endif
/*
Global
*/
FMOD_RESULT F_API FMOD_Studio_ParseID(const char *idstring, FMOD_GUID *id);
FMOD_RESULT F_API FMOD_Studio_System_Create(FMOD_STUDIO_SYSTEM **system, unsigned int headerversion);
/*
System
*/
FMOD_BOOL F_API FMOD_Studio_System_IsValid(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_SetAdvancedSettings(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_ADVANCEDSETTINGS *settings);
FMOD_RESULT F_API FMOD_Studio_System_GetAdvancedSettings(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_ADVANCEDSETTINGS *settings);
FMOD_RESULT F_API FMOD_Studio_System_Initialize(FMOD_STUDIO_SYSTEM *system, int maxchannels, FMOD_STUDIO_INITFLAGS studioflags, FMOD_INITFLAGS flags, void *extradriverdata);
FMOD_RESULT F_API FMOD_Studio_System_Release(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_Update(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_GetCoreSystem(FMOD_STUDIO_SYSTEM *system, FMOD_SYSTEM **coresystem);
FMOD_RESULT F_API FMOD_Studio_System_GetEvent(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_EVENTDESCRIPTION **event);
FMOD_RESULT F_API FMOD_Studio_System_GetBus(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_BUS **bus);
FMOD_RESULT F_API FMOD_Studio_System_GetVCA(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_VCA **vca);
FMOD_RESULT F_API FMOD_Studio_System_GetBank(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_BANK **bank);
FMOD_RESULT F_API FMOD_Studio_System_GetEventByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_EVENTDESCRIPTION **event);
FMOD_RESULT F_API FMOD_Studio_System_GetBusByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_BUS **bus);
FMOD_RESULT F_API FMOD_Studio_System_GetVCAByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_VCA **vca);
FMOD_RESULT F_API FMOD_Studio_System_GetBankByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_BANK **bank);
FMOD_RESULT F_API FMOD_Studio_System_GetSoundInfo(FMOD_STUDIO_SYSTEM *system, const char *key, FMOD_STUDIO_SOUND_INFO *info);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionByName(FMOD_STUDIO_SYSTEM *system, const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterLabelByName(FMOD_STUDIO_SYSTEM *system, const char *name, int labelindex, char *label, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterLabelByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue);
FMOD_RESULT F_API FMOD_Studio_System_SetParameterByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, float value, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_System_SetParameterByIDWithLabel(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, const char *label, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_System_SetParametersByIDs(FMOD_STUDIO_SYSTEM *system, const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterByName(FMOD_STUDIO_SYSTEM *system, const char *name, float *value, float *finalvalue);
FMOD_RESULT F_API FMOD_Studio_System_SetParameterByName(FMOD_STUDIO_SYSTEM *system, const char *name, float value, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_System_SetParameterByNameWithLabel(FMOD_STUDIO_SYSTEM *system, const char *name, const char *label, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_System_LookupID(FMOD_STUDIO_SYSTEM *system, const char *path, FMOD_GUID *id);
FMOD_RESULT F_API FMOD_Studio_System_LookupPath(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, char *path, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_System_GetNumListeners(FMOD_STUDIO_SYSTEM *system, int *numlisteners);
FMOD_RESULT F_API FMOD_Studio_System_SetNumListeners(FMOD_STUDIO_SYSTEM *system, int numlisteners);
FMOD_RESULT F_API FMOD_Studio_System_GetListenerAttributes(FMOD_STUDIO_SYSTEM *system, int index, FMOD_3D_ATTRIBUTES *attributes, FMOD_VECTOR *attenuationposition);
FMOD_RESULT F_API FMOD_Studio_System_SetListenerAttributes(FMOD_STUDIO_SYSTEM *system, int index, const FMOD_3D_ATTRIBUTES *attributes, const FMOD_VECTOR *attenuationposition);
FMOD_RESULT F_API FMOD_Studio_System_GetListenerWeight(FMOD_STUDIO_SYSTEM *system, int index, float *weight);
FMOD_RESULT F_API FMOD_Studio_System_SetListenerWeight(FMOD_STUDIO_SYSTEM *system, int index, float weight);
FMOD_RESULT F_API FMOD_Studio_System_LoadBankFile(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank);
FMOD_RESULT F_API FMOD_Studio_System_LoadBankMemory(FMOD_STUDIO_SYSTEM *system, const char *buffer, int length, FMOD_STUDIO_LOAD_MEMORY_MODE mode, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank);
FMOD_RESULT F_API FMOD_Studio_System_LoadBankCustom(FMOD_STUDIO_SYSTEM *system, const FMOD_STUDIO_BANK_INFO *info, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank);
FMOD_RESULT F_API FMOD_Studio_System_RegisterPlugin(FMOD_STUDIO_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description);
FMOD_RESULT F_API FMOD_Studio_System_UnregisterPlugin(FMOD_STUDIO_SYSTEM *system, const char *name);
FMOD_RESULT F_API FMOD_Studio_System_UnloadAll(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_FlushCommands(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_FlushSampleLoading(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_StartCommandCapture(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_COMMANDCAPTURE_FLAGS flags);
FMOD_RESULT F_API FMOD_Studio_System_StopCommandCapture(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_LoadCommandReplay(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_COMMANDREPLAY_FLAGS flags, FMOD_STUDIO_COMMANDREPLAY **replay);
FMOD_RESULT F_API FMOD_Studio_System_GetBankCount(FMOD_STUDIO_SYSTEM *system, int *count);
FMOD_RESULT F_API FMOD_Studio_System_GetBankList(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_BANK **array, int capacity, int *count);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionCount(FMOD_STUDIO_SYSTEM *system, int *count);
FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionList(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_DESCRIPTION *array, int capacity, int *count);
FMOD_RESULT F_API FMOD_Studio_System_GetCPUUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_CPU_USAGE *usage, FMOD_CPU_USAGE *usage_core);
FMOD_RESULT F_API FMOD_Studio_System_GetBufferUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_BUFFER_USAGE *usage);
FMOD_RESULT F_API FMOD_Studio_System_ResetBufferUsage(FMOD_STUDIO_SYSTEM *system);
FMOD_RESULT F_API FMOD_Studio_System_SetCallback(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK callback, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE callbackmask);
FMOD_RESULT F_API FMOD_Studio_System_SetUserData(FMOD_STUDIO_SYSTEM *system, void *userdata);
FMOD_RESULT F_API FMOD_Studio_System_GetUserData(FMOD_STUDIO_SYSTEM *system, void **userdata);
FMOD_RESULT F_API FMOD_Studio_System_GetMemoryUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_MEMORY_USAGE *memoryusage);
/*
EventDescription
*/
FMOD_BOOL F_API FMOD_Studio_EventDescription_IsValid(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_GUID *id);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetPath(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, char *path, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionByName(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionByID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterLabelByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, int labelindex, char *label, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterLabelByName(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, int labelindex, char *label, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterLabelByID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserPropertyCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserPropertyByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, FMOD_STUDIO_USER_PROPERTY *property);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserProperty(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, FMOD_STUDIO_USER_PROPERTY *property);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetLength(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *length);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetMinMaxDistance(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, float *min, float *max);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetSoundSize(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, float *size);
FMOD_RESULT F_API FMOD_Studio_EventDescription_IsSnapshot(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *snapshot);
FMOD_RESULT F_API FMOD_Studio_EventDescription_IsOneshot(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *oneshot);
FMOD_RESULT F_API FMOD_Studio_EventDescription_IsStream(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *isStream);
FMOD_RESULT F_API FMOD_Studio_EventDescription_Is3D(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *is3D);
FMOD_RESULT F_API FMOD_Studio_EventDescription_IsDopplerEnabled(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *doppler);
FMOD_RESULT F_API FMOD_Studio_EventDescription_HasSustainPoint(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *sustainPoint);
FMOD_RESULT F_API FMOD_Studio_EventDescription_CreateInstance(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **instance);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetInstanceCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetInstanceList(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **array, int capacity, int *count);
FMOD_RESULT F_API FMOD_Studio_EventDescription_LoadSampleData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription);
FMOD_RESULT F_API FMOD_Studio_EventDescription_UnloadSampleData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetSampleLoadingState(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_LOADING_STATE *state);
FMOD_RESULT F_API FMOD_Studio_EventDescription_ReleaseAllInstances(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription);
FMOD_RESULT F_API FMOD_Studio_EventDescription_SetCallback(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask);
FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, void **userdata);
FMOD_RESULT F_API FMOD_Studio_EventDescription_SetUserData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, void *userdata);
/*
EventInstance
*/
FMOD_BOOL F_API FMOD_Studio_EventInstance_IsValid(FMOD_STUDIO_EVENTINSTANCE *eventinstance);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetDescription(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENTDESCRIPTION **description);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetSystem(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_SYSTEM **system);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetVolume(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *volume, float *finalvolume);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetVolume(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float volume);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetPitch(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *pitch, float *finalpitch);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetPitch(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float pitch);
FMOD_RESULT F_API FMOD_Studio_EventInstance_Get3DAttributes(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_3D_ATTRIBUTES *attributes);
FMOD_RESULT F_API FMOD_Studio_EventInstance_Set3DAttributes(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_3D_ATTRIBUTES *attributes);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetListenerMask(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int *mask);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetListenerMask(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int mask);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetProperty(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_PROPERTY index, float *value);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetProperty(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_PROPERTY index, float value);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetReverbLevel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int index, float *level);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetReverbLevel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int index, float level);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetPaused(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL *paused);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetPaused(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL paused);
FMOD_RESULT F_API FMOD_Studio_EventInstance_Start(FMOD_STUDIO_EVENTINSTANCE *eventinstance);
FMOD_RESULT F_API FMOD_Studio_EventInstance_Stop(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_STOP_MODE mode);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetTimelinePosition(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int *position);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetTimelinePosition(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int position);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetPlaybackState(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PLAYBACK_STATE *state);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetChannelGroup(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_CHANNELGROUP **group);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetMinMaxDistance(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *min, float *max);
FMOD_RESULT F_API FMOD_Studio_EventInstance_Release(FMOD_STUDIO_EVENTINSTANCE *eventinstance);
FMOD_RESULT F_API FMOD_Studio_EventInstance_IsVirtual(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL *virtualstate);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetParameterByName(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, float *value, float *finalvalue);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByName(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, float value, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByNameWithLabel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, const char *label, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetParameterByID(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByID(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, float value, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByIDWithLabel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, const char *label, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParametersByIDs(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, FMOD_BOOL ignoreseekspeed);
FMOD_RESULT F_API FMOD_Studio_EventInstance_KeyOff(FMOD_STUDIO_EVENTINSTANCE *eventinstance);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetCallback(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetUserData(FMOD_STUDIO_EVENTINSTANCE *eventinstance, void **userdata);
FMOD_RESULT F_API FMOD_Studio_EventInstance_SetUserData(FMOD_STUDIO_EVENTINSTANCE *eventinstance, void *userdata);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetCPUUsage(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int *exclusive, unsigned int *inclusive);
FMOD_RESULT F_API FMOD_Studio_EventInstance_GetMemoryUsage(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_MEMORY_USAGE *memoryusage);
/*
Bus
*/
FMOD_BOOL F_API FMOD_Studio_Bus_IsValid(FMOD_STUDIO_BUS *bus);
FMOD_RESULT F_API FMOD_Studio_Bus_GetID(FMOD_STUDIO_BUS *bus, FMOD_GUID *id);
FMOD_RESULT F_API FMOD_Studio_Bus_GetPath(FMOD_STUDIO_BUS *bus, char *path, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_Bus_GetVolume(FMOD_STUDIO_BUS *bus, float *volume, float *finalvolume);
FMOD_RESULT F_API FMOD_Studio_Bus_SetVolume(FMOD_STUDIO_BUS *bus, float volume);
FMOD_RESULT F_API FMOD_Studio_Bus_GetPaused(FMOD_STUDIO_BUS *bus, FMOD_BOOL *paused);
FMOD_RESULT F_API FMOD_Studio_Bus_SetPaused(FMOD_STUDIO_BUS *bus, FMOD_BOOL paused);
FMOD_RESULT F_API FMOD_Studio_Bus_GetMute(FMOD_STUDIO_BUS *bus, FMOD_BOOL *mute);
FMOD_RESULT F_API FMOD_Studio_Bus_SetMute(FMOD_STUDIO_BUS *bus, FMOD_BOOL mute);
FMOD_RESULT F_API FMOD_Studio_Bus_StopAllEvents(FMOD_STUDIO_BUS *bus, FMOD_STUDIO_STOP_MODE mode);
FMOD_RESULT F_API FMOD_Studio_Bus_GetPortIndex(FMOD_STUDIO_BUS *bus, FMOD_PORT_INDEX *index);
FMOD_RESULT F_API FMOD_Studio_Bus_SetPortIndex(FMOD_STUDIO_BUS *bus, FMOD_PORT_INDEX index);
FMOD_RESULT F_API FMOD_Studio_Bus_LockChannelGroup(FMOD_STUDIO_BUS *bus);
FMOD_RESULT F_API FMOD_Studio_Bus_UnlockChannelGroup(FMOD_STUDIO_BUS *bus);
FMOD_RESULT F_API FMOD_Studio_Bus_GetChannelGroup(FMOD_STUDIO_BUS *bus, FMOD_CHANNELGROUP **group);
FMOD_RESULT F_API FMOD_Studio_Bus_GetCPUUsage(FMOD_STUDIO_BUS *bus, unsigned int *exclusive, unsigned int *inclusive);
FMOD_RESULT F_API FMOD_Studio_Bus_GetMemoryUsage(FMOD_STUDIO_BUS *bus, FMOD_STUDIO_MEMORY_USAGE *memoryusage);
/*
VCA
*/
FMOD_BOOL F_API FMOD_Studio_VCA_IsValid(FMOD_STUDIO_VCA *vca);
FMOD_RESULT F_API FMOD_Studio_VCA_GetID(FMOD_STUDIO_VCA *vca, FMOD_GUID *id);
FMOD_RESULT F_API FMOD_Studio_VCA_GetPath(FMOD_STUDIO_VCA *vca, char *path, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_VCA_GetVolume(FMOD_STUDIO_VCA *vca, float *volume, float *finalvolume);
FMOD_RESULT F_API FMOD_Studio_VCA_SetVolume(FMOD_STUDIO_VCA *vca, float volume);
/*
Bank
*/
FMOD_BOOL F_API FMOD_Studio_Bank_IsValid(FMOD_STUDIO_BANK *bank);
FMOD_RESULT F_API FMOD_Studio_Bank_GetID(FMOD_STUDIO_BANK *bank, FMOD_GUID *id);
FMOD_RESULT F_API FMOD_Studio_Bank_GetPath(FMOD_STUDIO_BANK *bank, char *path, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_Bank_Unload(FMOD_STUDIO_BANK *bank);
FMOD_RESULT F_API FMOD_Studio_Bank_LoadSampleData(FMOD_STUDIO_BANK *bank);
FMOD_RESULT F_API FMOD_Studio_Bank_UnloadSampleData(FMOD_STUDIO_BANK *bank);
FMOD_RESULT F_API FMOD_Studio_Bank_GetLoadingState(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_LOADING_STATE *state);
FMOD_RESULT F_API FMOD_Studio_Bank_GetSampleLoadingState(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_LOADING_STATE *state);
FMOD_RESULT F_API FMOD_Studio_Bank_GetStringCount(FMOD_STUDIO_BANK *bank, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetStringInfo(FMOD_STUDIO_BANK *bank, int index, FMOD_GUID *id, char *path, int size, int *retrieved);
FMOD_RESULT F_API FMOD_Studio_Bank_GetEventCount(FMOD_STUDIO_BANK *bank, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetEventList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_EVENTDESCRIPTION **array, int capacity, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetBusCount(FMOD_STUDIO_BANK *bank, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetBusList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_BUS **array, int capacity, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetVCACount(FMOD_STUDIO_BANK *bank, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetVCAList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_VCA **array, int capacity, int *count);
FMOD_RESULT F_API FMOD_Studio_Bank_GetUserData(FMOD_STUDIO_BANK *bank, void **userdata);
FMOD_RESULT F_API FMOD_Studio_Bank_SetUserData(FMOD_STUDIO_BANK *bank, void *userdata);
/*
Command playback information
*/
FMOD_BOOL F_API FMOD_Studio_CommandReplay_IsValid(FMOD_STUDIO_COMMANDREPLAY *replay);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetSystem(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_SYSTEM **system);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetLength(FMOD_STUDIO_COMMANDREPLAY *replay, float *length);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandCount(FMOD_STUDIO_COMMANDREPLAY *replay, int *count);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandInfo(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, FMOD_STUDIO_COMMAND_INFO *info);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandString(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, char *buffer, int length);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandAtTime(FMOD_STUDIO_COMMANDREPLAY *replay, float time, int *commandindex);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetBankPath(FMOD_STUDIO_COMMANDREPLAY *replay, const char *bankPath);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_Start(FMOD_STUDIO_COMMANDREPLAY *replay);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_Stop(FMOD_STUDIO_COMMANDREPLAY *replay);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SeekToTime(FMOD_STUDIO_COMMANDREPLAY *replay, float time);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SeekToCommand(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetPaused(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_BOOL *paused);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetPaused(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_BOOL paused);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetPlaybackState(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_PLAYBACK_STATE *state);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCurrentCommand(FMOD_STUDIO_COMMANDREPLAY *replay, int *commandindex, float *currenttime);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_Release(FMOD_STUDIO_COMMANDREPLAY *replay);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetFrameCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK callback);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetLoadBankCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK callback);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetCreateInstanceCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK callback);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetUserData(FMOD_STUDIO_COMMANDREPLAY *replay, void **userdata);
FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetUserData(FMOD_STUDIO_COMMANDREPLAY *replay, void *userdata);
#ifdef __cplusplus
}
#endif
#endif /* FMOD_STUDIO_H */

View file

@ -0,0 +1,403 @@
/* ======================================================================================== */
/* FMOD Studio API - C++ header file. */
/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2025. */
/* */
/* Use this header in conjunction with fmod_studio_common.h (which contains all the */
/* constants / callbacks) to develop using the C++ language. */
/* */
/* For more detail visit: */
/* https://fmod.com/docs/2.03/api/studio-api.html */
/* ======================================================================================== */
#ifndef FMOD_STUDIO_HPP
#define FMOD_STUDIO_HPP
#include "fmod_studio_common.h"
#include "fmod_studio.h"
#include "fmod.hpp"
namespace FMOD
{
namespace Studio
{
typedef FMOD_GUID ID; // Deprecated. Please use FMOD_GUID type.
class System;
class EventDescription;
class EventInstance;
class Bus;
class VCA;
class Bank;
class CommandReplay;
inline FMOD_RESULT parseID(const char *idstring, FMOD_GUID *id) { return FMOD_Studio_ParseID(idstring, id); }
class System
{
private:
// Constructor made private so user cannot statically instance a System class. System::create must be used.
System();
System(const System &);
public:
static FMOD_RESULT F_API create(System **system, unsigned int headerversion = FMOD_VERSION);
FMOD_RESULT F_API setAdvancedSettings(FMOD_STUDIO_ADVANCEDSETTINGS *settings);
FMOD_RESULT F_API getAdvancedSettings(FMOD_STUDIO_ADVANCEDSETTINGS *settings);
FMOD_RESULT F_API initialize(int maxchannels, FMOD_STUDIO_INITFLAGS studioflags, FMOD_INITFLAGS flags, void *extradriverdata);
FMOD_RESULT F_API release();
// Handle validity
bool F_API isValid() const;
// Update processing
FMOD_RESULT F_API update();
FMOD_RESULT F_API flushCommands();
FMOD_RESULT F_API flushSampleLoading();
// Low-level API access
FMOD_RESULT F_API getCoreSystem(FMOD::System **system) const;
// Asset retrieval
FMOD_RESULT F_API getEvent(const char *path, EventDescription **event) const;
FMOD_RESULT F_API getBus(const char *path, Bus **bus) const;
FMOD_RESULT F_API getVCA(const char *path, VCA **vca) const;
FMOD_RESULT F_API getBank(const char *path, Bank **bank) const;
FMOD_RESULT F_API getEventByID(const FMOD_GUID *id, EventDescription **event) const;
FMOD_RESULT F_API getBusByID(const FMOD_GUID *id, Bus **bus) const;
FMOD_RESULT F_API getVCAByID(const FMOD_GUID *id, VCA **vca) const;
FMOD_RESULT F_API getBankByID(const FMOD_GUID *id, Bank **bank) const;
FMOD_RESULT F_API getSoundInfo(const char *key, FMOD_STUDIO_SOUND_INFO *info) const;
FMOD_RESULT F_API getParameterDescriptionByName(const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
FMOD_RESULT F_API getParameterDescriptionByID(FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
FMOD_RESULT F_API getParameterLabelByName(const char *name, int labelindex, char *label, int size, int *retrieved) const;
FMOD_RESULT F_API getParameterLabelByID(FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved) const;
// Global parameter control
FMOD_RESULT F_API getParameterByID(FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue = 0) const;
FMOD_RESULT F_API setParameterByID(FMOD_STUDIO_PARAMETER_ID id, float value, bool ignoreseekspeed = false);
FMOD_RESULT F_API setParameterByIDWithLabel(FMOD_STUDIO_PARAMETER_ID id, const char *label, bool ignoreseekspeed = false);
FMOD_RESULT F_API setParametersByIDs(const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, bool ignoreseekspeed = false);
FMOD_RESULT F_API getParameterByName(const char *name, float *value, float *finalvalue = 0) const;
FMOD_RESULT F_API setParameterByName(const char *name, float value, bool ignoreseekspeed = false);
FMOD_RESULT F_API setParameterByNameWithLabel(const char *name, const char *label, bool ignoreseekspeed = false);
// Path lookup
FMOD_RESULT F_API lookupID(const char *path, FMOD_GUID *id) const;
FMOD_RESULT F_API lookupPath(const FMOD_GUID *id, char *path, int size, int *retrieved) const;
// Listener control
FMOD_RESULT F_API getNumListeners(int *numlisteners);
FMOD_RESULT F_API setNumListeners(int numlisteners);
FMOD_RESULT F_API getListenerAttributes(int listener, FMOD_3D_ATTRIBUTES *attributes, FMOD_VECTOR *attenuationposition = 0) const;
FMOD_RESULT F_API setListenerAttributes(int listener, const FMOD_3D_ATTRIBUTES *attributes, const FMOD_VECTOR *attenuationposition = 0);
FMOD_RESULT F_API getListenerWeight(int listener, float *weight);
FMOD_RESULT F_API setListenerWeight(int listener, float weight);
// Bank control
FMOD_RESULT F_API loadBankFile(const char *filename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank);
FMOD_RESULT F_API loadBankMemory(const char *buffer, int length, FMOD_STUDIO_LOAD_MEMORY_MODE mode, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank);
FMOD_RESULT F_API loadBankCustom(const FMOD_STUDIO_BANK_INFO *info, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank);
FMOD_RESULT F_API unloadAll();
// General functionality
FMOD_RESULT F_API getBufferUsage(FMOD_STUDIO_BUFFER_USAGE *usage) const;
FMOD_RESULT F_API resetBufferUsage();
FMOD_RESULT F_API registerPlugin(const FMOD_DSP_DESCRIPTION *description);
FMOD_RESULT F_API unregisterPlugin(const char *name);
// Enumeration
FMOD_RESULT F_API getBankCount(int *count) const;
FMOD_RESULT F_API getBankList(Bank **array, int capacity, int *count) const;
FMOD_RESULT F_API getParameterDescriptionCount(int *count) const;
FMOD_RESULT F_API getParameterDescriptionList(FMOD_STUDIO_PARAMETER_DESCRIPTION *array, int capacity, int *count) const;
// Command capture and replay
FMOD_RESULT F_API startCommandCapture(const char *filename, FMOD_STUDIO_COMMANDCAPTURE_FLAGS flags);
FMOD_RESULT F_API stopCommandCapture();
FMOD_RESULT F_API loadCommandReplay(const char *filename, FMOD_STUDIO_COMMANDREPLAY_FLAGS flags, CommandReplay **replay);
// Callbacks
FMOD_RESULT F_API setCallback(FMOD_STUDIO_SYSTEM_CALLBACK callback, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE callbackmask = FMOD_STUDIO_SYSTEM_CALLBACK_ALL);
FMOD_RESULT F_API getUserData(void **userdata) const;
FMOD_RESULT F_API setUserData(void *userdata);
// Monitoring
FMOD_RESULT F_API getCPUUsage(FMOD_STUDIO_CPU_USAGE *usage, FMOD_CPU_USAGE *usage_core) const;
FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const;
};
class EventDescription
{
private:
// Constructor made private so user cannot statically instance the class.
EventDescription();
EventDescription(const EventDescription &);
public:
// Handle validity
bool F_API isValid() const;
// Property access
FMOD_RESULT F_API getID(FMOD_GUID *id) const;
FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
FMOD_RESULT F_API getParameterDescriptionCount(int *count) const;
FMOD_RESULT F_API getParameterDescriptionByIndex(int index, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
FMOD_RESULT F_API getParameterDescriptionByName(const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
FMOD_RESULT F_API getParameterDescriptionByID(FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
FMOD_RESULT F_API getParameterLabelByIndex(int index, int labelindex, char *label, int size, int *retrieved) const;
FMOD_RESULT F_API getParameterLabelByName(const char *name, int labelindex, char *label, int size, int *retrieved) const;
FMOD_RESULT F_API getParameterLabelByID(FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved) const;
FMOD_RESULT F_API getUserPropertyCount(int *count) const;
FMOD_RESULT F_API getUserPropertyByIndex(int index, FMOD_STUDIO_USER_PROPERTY *property) const;
FMOD_RESULT F_API getUserProperty(const char *name, FMOD_STUDIO_USER_PROPERTY *property) const;
FMOD_RESULT F_API getLength(int *length) const;
FMOD_RESULT F_API getMinMaxDistance(float *min, float *max) const;
FMOD_RESULT F_API getSoundSize(float *size) const;
FMOD_RESULT F_API isSnapshot(bool *snapshot) const;
FMOD_RESULT F_API isOneshot(bool *oneshot) const;
FMOD_RESULT F_API isStream(bool *isStream) const;
FMOD_RESULT F_API is3D(bool *is3d) const;
FMOD_RESULT F_API isDopplerEnabled(bool *doppler) const;
FMOD_RESULT F_API hasSustainPoint(bool *sustainPoint) const;
// Playback control
FMOD_RESULT F_API createInstance(EventInstance **instance) const;
FMOD_RESULT F_API getInstanceCount(int *count) const;
FMOD_RESULT F_API getInstanceList(EventInstance **array, int capacity, int *count) const;
// Sample data loading control
FMOD_RESULT F_API loadSampleData();
FMOD_RESULT F_API unloadSampleData();
FMOD_RESULT F_API getSampleLoadingState(FMOD_STUDIO_LOADING_STATE *state) const;
// Convenience functions
FMOD_RESULT F_API releaseAllInstances();
// Callbacks
FMOD_RESULT F_API setCallback(FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask = FMOD_STUDIO_EVENT_CALLBACK_ALL);
FMOD_RESULT F_API getUserData(void **userdata) const;
FMOD_RESULT F_API setUserData(void *userdata);
};
class EventInstance
{
private:
// Constructor made private so user cannot statically instance the class.
EventInstance();
EventInstance(const EventInstance &);
public:
// Handle validity
bool F_API isValid() const;
// Property access
FMOD_RESULT F_API getDescription(EventDescription **description) const;
FMOD_RESULT F_API getSystem(System **system) const;
// Playback control
FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const;
FMOD_RESULT F_API setVolume(float volume);
FMOD_RESULT F_API getPitch(float *pitch, float *finalpitch = 0) const;
FMOD_RESULT F_API setPitch(float pitch);
FMOD_RESULT F_API get3DAttributes(FMOD_3D_ATTRIBUTES *attributes) const;
FMOD_RESULT F_API set3DAttributes(const FMOD_3D_ATTRIBUTES *attributes);
FMOD_RESULT F_API getListenerMask(unsigned int *mask) const;
FMOD_RESULT F_API setListenerMask(unsigned int mask);
FMOD_RESULT F_API getProperty(FMOD_STUDIO_EVENT_PROPERTY index, float *value) const;
FMOD_RESULT F_API setProperty(FMOD_STUDIO_EVENT_PROPERTY index, float value);
FMOD_RESULT F_API getReverbLevel(int index, float *level) const;
FMOD_RESULT F_API setReverbLevel(int index, float level);
FMOD_RESULT F_API getPaused(bool *paused) const;
FMOD_RESULT F_API setPaused(bool paused);
FMOD_RESULT F_API start();
FMOD_RESULT F_API stop(FMOD_STUDIO_STOP_MODE mode);
FMOD_RESULT F_API getTimelinePosition(int *position) const;
FMOD_RESULT F_API setTimelinePosition(int position);
FMOD_RESULT F_API getPlaybackState(FMOD_STUDIO_PLAYBACK_STATE *state) const;
FMOD_RESULT F_API getChannelGroup(ChannelGroup **group) const;
FMOD_RESULT F_API getMinMaxDistance(float *min, float *max) const;
FMOD_RESULT F_API release();
FMOD_RESULT F_API isVirtual(bool *virtualstate) const;
FMOD_RESULT F_API getParameterByID(FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue = 0) const;
FMOD_RESULT F_API setParameterByID(FMOD_STUDIO_PARAMETER_ID id, float value, bool ignoreseekspeed = false);
FMOD_RESULT F_API setParameterByIDWithLabel(FMOD_STUDIO_PARAMETER_ID id, const char* label, bool ignoreseekspeed = false);
FMOD_RESULT F_API setParametersByIDs(const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, bool ignoreseekspeed = false);
FMOD_RESULT F_API getParameterByName(const char *name, float *value, float *finalvalue = 0) const;
FMOD_RESULT F_API setParameterByName(const char *name, float value, bool ignoreseekspeed = false);
FMOD_RESULT F_API setParameterByNameWithLabel(const char *name, const char* label, bool ignoreseekspeed = false);
FMOD_RESULT F_API keyOff();
// Monitoring
FMOD_RESULT F_API getCPUUsage(unsigned int *exclusive, unsigned int *inclusive) const;
FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const;
// Callbacks
FMOD_RESULT F_API setCallback(FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask = FMOD_STUDIO_EVENT_CALLBACK_ALL);
FMOD_RESULT F_API getUserData(void **userdata) const;
FMOD_RESULT F_API setUserData(void *userdata);
};
class Bus
{
private:
// Constructor made private so user cannot statically instance the class.
Bus();
Bus(const Bus &);
public:
// Handle validity
bool F_API isValid() const;
// Property access
FMOD_RESULT F_API getID(FMOD_GUID *id) const;
FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
// Playback control
FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const;
FMOD_RESULT F_API setVolume(float volume);
FMOD_RESULT F_API getPaused(bool *paused) const;
FMOD_RESULT F_API setPaused(bool paused);
FMOD_RESULT F_API getMute(bool *mute) const;
FMOD_RESULT F_API setMute(bool mute);
FMOD_RESULT F_API stopAllEvents(FMOD_STUDIO_STOP_MODE mode);
// Output port
FMOD_RESULT F_API getPortIndex(FMOD_PORT_INDEX *index) const;
FMOD_RESULT F_API setPortIndex(FMOD_PORT_INDEX index);
// Low-level API access
FMOD_RESULT F_API lockChannelGroup();
FMOD_RESULT F_API unlockChannelGroup();
FMOD_RESULT F_API getChannelGroup(FMOD::ChannelGroup **group) const;
// Monitoring
FMOD_RESULT F_API getCPUUsage(unsigned int *exclusive, unsigned int *inclusive) const;
FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const;
};
class VCA
{
private:
// Constructor made private so user cannot statically instance the class.
VCA();
VCA(const VCA &);
public:
// Handle validity
bool F_API isValid() const;
// Property access
FMOD_RESULT F_API getID(FMOD_GUID *id) const;
FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
// Playback control
FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const;
FMOD_RESULT F_API setVolume(float volume);
};
class Bank
{
private:
// Constructor made private so user cannot statically instance the class.
Bank();
Bank(const Bank &);
public:
// Handle validity
bool F_API isValid() const;
// Property access
FMOD_RESULT F_API getID(FMOD_GUID *id) const;
FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
// Loading control
FMOD_RESULT F_API unload();
FMOD_RESULT F_API loadSampleData();
FMOD_RESULT F_API unloadSampleData();
FMOD_RESULT F_API getLoadingState(FMOD_STUDIO_LOADING_STATE *state) const;
FMOD_RESULT F_API getSampleLoadingState(FMOD_STUDIO_LOADING_STATE *state) const;
// Enumeration
FMOD_RESULT F_API getStringCount(int *count) const;
FMOD_RESULT F_API getStringInfo(int index, FMOD_GUID *id, char *path, int size, int *retrieved) const;
FMOD_RESULT F_API getEventCount(int *count) const;
FMOD_RESULT F_API getEventList(EventDescription **array, int capacity, int *count) const;
FMOD_RESULT F_API getBusCount(int *count) const;
FMOD_RESULT F_API getBusList(Bus **array, int capacity, int *count) const;
FMOD_RESULT F_API getVCACount(int *count) const;
FMOD_RESULT F_API getVCAList(VCA **array, int capacity, int *count) const;
FMOD_RESULT F_API getUserData(void **userdata) const;
FMOD_RESULT F_API setUserData(void *userdata);
};
class CommandReplay
{
private:
// Constructor made private so user cannot statically instance the class.
CommandReplay();
CommandReplay(const CommandReplay &);
public:
// Handle validity
bool F_API isValid() const;
// Information query
FMOD_RESULT F_API getSystem(System **system) const;
FMOD_RESULT F_API getLength(float *length) const;
FMOD_RESULT F_API getCommandCount(int *count) const;
FMOD_RESULT F_API getCommandInfo(int commandindex, FMOD_STUDIO_COMMAND_INFO *info) const;
FMOD_RESULT F_API getCommandString(int commandindex, char *buffer, int length) const;
FMOD_RESULT F_API getCommandAtTime(float time, int *commandindex) const;
// Playback
FMOD_RESULT F_API setBankPath(const char *bankPath);
FMOD_RESULT F_API start();
FMOD_RESULT F_API stop();
FMOD_RESULT F_API seekToTime(float time);
FMOD_RESULT F_API seekToCommand(int commandindex);
FMOD_RESULT F_API getPaused(bool *paused) const;
FMOD_RESULT F_API setPaused(bool paused);
FMOD_RESULT F_API getPlaybackState(FMOD_STUDIO_PLAYBACK_STATE *state) const;
FMOD_RESULT F_API getCurrentCommand(int *commandindex, float *currenttime) const;
// Release
FMOD_RESULT F_API release();
// Callbacks
FMOD_RESULT F_API setFrameCallback(FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK callback);
FMOD_RESULT F_API setLoadBankCallback(FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK callback);
FMOD_RESULT F_API setCreateInstanceCallback(FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK callback);
FMOD_RESULT F_API getUserData(void **userdata) const;
FMOD_RESULT F_API setUserData(void *userdata);
};
} // namespace Studio
} // namespace FMOD
#endif //FMOD_STUDIO_HPP

View file

@ -0,0 +1,336 @@
/* ======================================================================================== */
/* FMOD Studio API - Common C/C++ header file. */
/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2025. */
/* */
/* This header defines common enumerations, structs and callbacks that are shared between */
/* the C and C++ interfaces. */
/* */
/* For more detail visit: */
/* https://fmod.com/docs/2.03/api/studio-api.html */
/* ======================================================================================== */
#ifndef FMOD_STUDIO_COMMON_H
#define FMOD_STUDIO_COMMON_H
#include "fmod.h"
/*
FMOD Studio types.
*/
typedef struct FMOD_STUDIO_SYSTEM FMOD_STUDIO_SYSTEM;
typedef struct FMOD_STUDIO_EVENTDESCRIPTION FMOD_STUDIO_EVENTDESCRIPTION;
typedef struct FMOD_STUDIO_EVENTINSTANCE FMOD_STUDIO_EVENTINSTANCE;
typedef struct FMOD_STUDIO_BUS FMOD_STUDIO_BUS;
typedef struct FMOD_STUDIO_VCA FMOD_STUDIO_VCA;
typedef struct FMOD_STUDIO_BANK FMOD_STUDIO_BANK;
typedef struct FMOD_STUDIO_COMMANDREPLAY FMOD_STUDIO_COMMANDREPLAY;
/*
FMOD Studio constants
*/
#define FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT 32
typedef unsigned int FMOD_STUDIO_INITFLAGS;
#define FMOD_STUDIO_INIT_NORMAL 0x00000000
#define FMOD_STUDIO_INIT_LIVEUPDATE 0x00000001
#define FMOD_STUDIO_INIT_ALLOW_MISSING_PLUGINS 0x00000002
#define FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE 0x00000004
#define FMOD_STUDIO_INIT_DEFERRED_CALLBACKS 0x00000008
#define FMOD_STUDIO_INIT_LOAD_FROM_UPDATE 0x00000010
#define FMOD_STUDIO_INIT_MEMORY_TRACKING 0x00000020
typedef unsigned int FMOD_STUDIO_PARAMETER_FLAGS;
#define FMOD_STUDIO_PARAMETER_READONLY 0x00000001
#define FMOD_STUDIO_PARAMETER_AUTOMATIC 0x00000002
#define FMOD_STUDIO_PARAMETER_GLOBAL 0x00000004
#define FMOD_STUDIO_PARAMETER_DISCRETE 0x00000008
#define FMOD_STUDIO_PARAMETER_LABELED 0x00000010
typedef unsigned int FMOD_STUDIO_SYSTEM_CALLBACK_TYPE;
#define FMOD_STUDIO_SYSTEM_CALLBACK_PREUPDATE 0x00000001
#define FMOD_STUDIO_SYSTEM_CALLBACK_POSTUPDATE 0x00000002
#define FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD 0x00000004
#define FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_CONNECTED 0x00000008
#define FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_DISCONNECTED 0x00000010
#define FMOD_STUDIO_SYSTEM_CALLBACK_ALL 0xFFFFFFFF
typedef unsigned int FMOD_STUDIO_EVENT_CALLBACK_TYPE;
#define FMOD_STUDIO_EVENT_CALLBACK_CREATED 0x00000001
#define FMOD_STUDIO_EVENT_CALLBACK_DESTROYED 0x00000002
#define FMOD_STUDIO_EVENT_CALLBACK_STARTING 0x00000004
#define FMOD_STUDIO_EVENT_CALLBACK_STARTED 0x00000008
#define FMOD_STUDIO_EVENT_CALLBACK_RESTARTED 0x00000010
#define FMOD_STUDIO_EVENT_CALLBACK_STOPPED 0x00000020
#define FMOD_STUDIO_EVENT_CALLBACK_START_FAILED 0x00000040
#define FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND 0x00000080
#define FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND 0x00000100
#define FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_CREATED 0x00000200
#define FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_DESTROYED 0x00000400
#define FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER 0x00000800
#define FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT 0x00001000
#define FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED 0x00002000
#define FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED 0x00004000
#define FMOD_STUDIO_EVENT_CALLBACK_REAL_TO_VIRTUAL 0x00008000
#define FMOD_STUDIO_EVENT_CALLBACK_VIRTUAL_TO_REAL 0x00010000
#define FMOD_STUDIO_EVENT_CALLBACK_START_EVENT_COMMAND 0x00020000
#define FMOD_STUDIO_EVENT_CALLBACK_NESTED_TIMELINE_BEAT 0x00040000
#define FMOD_STUDIO_EVENT_CALLBACK_ALL 0xFFFFFFFF
typedef unsigned int FMOD_STUDIO_LOAD_BANK_FLAGS;
#define FMOD_STUDIO_LOAD_BANK_NORMAL 0x00000000
#define FMOD_STUDIO_LOAD_BANK_NONBLOCKING 0x00000001
#define FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLES 0x00000002
#define FMOD_STUDIO_LOAD_BANK_UNENCRYPTED 0x00000004
typedef unsigned int FMOD_STUDIO_COMMANDCAPTURE_FLAGS;
#define FMOD_STUDIO_COMMANDCAPTURE_NORMAL 0x00000000
#define FMOD_STUDIO_COMMANDCAPTURE_FILEFLUSH 0x00000001
#define FMOD_STUDIO_COMMANDCAPTURE_SKIP_INITIAL_STATE 0x00000002
typedef unsigned int FMOD_STUDIO_COMMANDREPLAY_FLAGS;
#define FMOD_STUDIO_COMMANDREPLAY_NORMAL 0x00000000
#define FMOD_STUDIO_COMMANDREPLAY_SKIP_CLEANUP 0x00000001
#define FMOD_STUDIO_COMMANDREPLAY_FAST_FORWARD 0x00000002
#define FMOD_STUDIO_COMMANDREPLAY_SKIP_BANK_LOAD 0x00000004
typedef enum FMOD_STUDIO_LOADING_STATE
{
FMOD_STUDIO_LOADING_STATE_UNLOADING,
FMOD_STUDIO_LOADING_STATE_UNLOADED,
FMOD_STUDIO_LOADING_STATE_LOADING,
FMOD_STUDIO_LOADING_STATE_LOADED,
FMOD_STUDIO_LOADING_STATE_ERROR,
FMOD_STUDIO_LOADING_STATE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_LOADING_STATE;
typedef enum FMOD_STUDIO_LOAD_MEMORY_MODE
{
FMOD_STUDIO_LOAD_MEMORY,
FMOD_STUDIO_LOAD_MEMORY_POINT,
FMOD_STUDIO_LOAD_MEMORY_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_LOAD_MEMORY_MODE;
typedef enum FMOD_STUDIO_PARAMETER_TYPE
{
FMOD_STUDIO_PARAMETER_GAME_CONTROLLED,
FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE,
FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_CONE_ANGLE,
FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_ORIENTATION,
FMOD_STUDIO_PARAMETER_AUTOMATIC_DIRECTION,
FMOD_STUDIO_PARAMETER_AUTOMATIC_ELEVATION,
FMOD_STUDIO_PARAMETER_AUTOMATIC_LISTENER_ORIENTATION,
FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED,
FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED_ABSOLUTE,
FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED,
FMOD_STUDIO_PARAMETER_MAX,
FMOD_STUDIO_PARAMETER_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_PARAMETER_TYPE;
typedef enum FMOD_STUDIO_USER_PROPERTY_TYPE
{
FMOD_STUDIO_USER_PROPERTY_TYPE_INTEGER,
FMOD_STUDIO_USER_PROPERTY_TYPE_BOOLEAN,
FMOD_STUDIO_USER_PROPERTY_TYPE_FLOAT,
FMOD_STUDIO_USER_PROPERTY_TYPE_STRING,
FMOD_STUDIO_USER_PROPERTY_TYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_USER_PROPERTY_TYPE;
typedef enum FMOD_STUDIO_EVENT_PROPERTY
{
FMOD_STUDIO_EVENT_PROPERTY_CHANNELPRIORITY,
FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_DELAY,
FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_LOOKAHEAD,
FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE,
FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE,
FMOD_STUDIO_EVENT_PROPERTY_COOLDOWN,
FMOD_STUDIO_EVENT_PROPERTY_MAX,
FMOD_STUDIO_EVENT_PROPERTY_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_EVENT_PROPERTY;
typedef enum FMOD_STUDIO_PLAYBACK_STATE
{
FMOD_STUDIO_PLAYBACK_PLAYING,
FMOD_STUDIO_PLAYBACK_SUSTAINING,
FMOD_STUDIO_PLAYBACK_STOPPED,
FMOD_STUDIO_PLAYBACK_STARTING,
FMOD_STUDIO_PLAYBACK_STOPPING,
FMOD_STUDIO_PLAYBACK_FORCEINT = 65536
} FMOD_STUDIO_PLAYBACK_STATE;
typedef enum FMOD_STUDIO_STOP_MODE
{
FMOD_STUDIO_STOP_ALLOWFADEOUT,
FMOD_STUDIO_STOP_IMMEDIATE,
FMOD_STUDIO_STOP_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_STOP_MODE;
typedef enum FMOD_STUDIO_INSTANCETYPE
{
FMOD_STUDIO_INSTANCETYPE_NONE,
FMOD_STUDIO_INSTANCETYPE_SYSTEM,
FMOD_STUDIO_INSTANCETYPE_EVENTDESCRIPTION,
FMOD_STUDIO_INSTANCETYPE_EVENTINSTANCE,
FMOD_STUDIO_INSTANCETYPE_PARAMETERINSTANCE,
FMOD_STUDIO_INSTANCETYPE_BUS,
FMOD_STUDIO_INSTANCETYPE_VCA,
FMOD_STUDIO_INSTANCETYPE_BANK,
FMOD_STUDIO_INSTANCETYPE_COMMANDREPLAY,
FMOD_STUDIO_INSTANCETYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */
} FMOD_STUDIO_INSTANCETYPE;
/*
FMOD Studio structures
*/
typedef struct FMOD_STUDIO_BANK_INFO
{
int size;
void *userdata;
int userdatalength;
FMOD_FILE_OPEN_CALLBACK opencallback;
FMOD_FILE_CLOSE_CALLBACK closecallback;
FMOD_FILE_READ_CALLBACK readcallback;
FMOD_FILE_SEEK_CALLBACK seekcallback;
} FMOD_STUDIO_BANK_INFO;
typedef struct FMOD_STUDIO_PARAMETER_ID
{
unsigned int data1;
unsigned int data2;
} FMOD_STUDIO_PARAMETER_ID;
typedef struct FMOD_STUDIO_PARAMETER_DESCRIPTION
{
const char *name;
FMOD_STUDIO_PARAMETER_ID id;
float minimum;
float maximum;
float defaultvalue;
FMOD_STUDIO_PARAMETER_TYPE type;
FMOD_STUDIO_PARAMETER_FLAGS flags;
FMOD_GUID guid;
} FMOD_STUDIO_PARAMETER_DESCRIPTION;
typedef struct FMOD_STUDIO_USER_PROPERTY
{
const char *name;
FMOD_STUDIO_USER_PROPERTY_TYPE type;
union
{
int intvalue;
FMOD_BOOL boolvalue;
float floatvalue;
const char *stringvalue;
};
} FMOD_STUDIO_USER_PROPERTY;
typedef struct FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES
{
const char *name;
FMOD_SOUND *sound;
int subsoundIndex;
} FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES;
typedef struct FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES
{
const char *name;
FMOD_DSP *dsp;
} FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES;
typedef struct FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES
{
const char *name;
int position;
} FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES;
typedef struct FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES
{
int bar;
int beat;
int position;
float tempo;
int timesignatureupper;
int timesignaturelower;
} FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES;
typedef struct FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES
{
FMOD_GUID eventid;
FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES properties;
} FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES;
typedef struct FMOD_STUDIO_ADVANCEDSETTINGS
{
int cbsize;
unsigned int commandqueuesize;
unsigned int handleinitialsize;
int studioupdateperiod;
int idlesampledatapoolsize;
unsigned int streamingscheduledelay;
const char* encryptionkey;
} FMOD_STUDIO_ADVANCEDSETTINGS;
typedef struct FMOD_STUDIO_CPU_USAGE
{
float update;
} FMOD_STUDIO_CPU_USAGE;
typedef struct FMOD_STUDIO_BUFFER_INFO
{
int currentusage;
int peakusage;
int capacity;
int stallcount;
float stalltime;
} FMOD_STUDIO_BUFFER_INFO;
typedef struct FMOD_STUDIO_BUFFER_USAGE
{
FMOD_STUDIO_BUFFER_INFO studiocommandqueue;
FMOD_STUDIO_BUFFER_INFO studiohandle;
} FMOD_STUDIO_BUFFER_USAGE;
typedef struct FMOD_STUDIO_SOUND_INFO
{
const char *name_or_data;
FMOD_MODE mode;
FMOD_CREATESOUNDEXINFO exinfo;
int subsoundindex;
} FMOD_STUDIO_SOUND_INFO;
typedef struct FMOD_STUDIO_COMMAND_INFO
{
const char *commandname;
int parentcommandindex;
int framenumber;
float frametime;
FMOD_STUDIO_INSTANCETYPE instancetype;
FMOD_STUDIO_INSTANCETYPE outputtype;
unsigned int instancehandle;
unsigned int outputhandle;
} FMOD_STUDIO_COMMAND_INFO;
typedef struct FMOD_STUDIO_MEMORY_USAGE
{
int exclusive;
int inclusive;
int sampledata;
} FMOD_STUDIO_MEMORY_USAGE;
/*
FMOD Studio callbacks.
*/
typedef FMOD_RESULT (F_CALL *FMOD_STUDIO_SYSTEM_CALLBACK) (FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE type, void *commanddata, void *userdata);
typedef FMOD_RESULT (F_CALL *FMOD_STUDIO_EVENT_CALLBACK) (FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE *event, void *parameters);
typedef FMOD_RESULT (F_CALL *FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, float currenttime, void *userdata);
typedef FMOD_RESULT (F_CALL *FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, const FMOD_GUID *bankguid, const char *bankfilename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank, void *userdata);
typedef FMOD_RESULT (F_CALL *FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **instance, void *userdata);
#endif // FMOD_STUDIO_COMMON_H