Mercurial > hg > apm2s
diff app_wrapper/app_main.h @ 0:4606bd505630 tip
first import
author | Fiore Martin <f.martin@qmul.ac.uk> |
---|---|
date | Sat, 13 Jun 2015 15:08:10 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app_wrapper/app_main.h Sat Jun 13 15:08:10 2015 +0100 @@ -0,0 +1,147 @@ +#ifndef _IPLUGAPP_APP_MAIN_H_ +#define _IPLUGAPP_APP_MAIN_H_ + +#include "IPlugOSDetect.h" + +/* + + Standalone osx/win app wrapper for iPlug, using SWELL + Oli Larkin 2012 + + Notes: + + App settings are stored in a .ini file. The location is as follows: + + Windows7: C:\Users\USERNAME\AppData\Local\AccessiblePeakMeter\settings.ini + Windows XP/Vista: C:\Documents and Settings\USERNAME\Local Settings\Application Data\AccessiblePeakMeter\settings.ini + OSX: /Users/USERNAME/Library/Application\ Support/AccessiblePeakMeter/settings.ini + +*/ + +#ifdef OS_WIN + #include <windows.h> + #include <commctrl.h> + + #define DEFAULT_INPUT_DEV "Default Device" + #define DEFAULT_OUTPUT_DEV "Default Device" + + #define DAC_DS 0 + #define DAC_ASIO 1 +#else if defined OS_OSX + #include "swell.h" + #define SLEEP( milliseconds ) usleep( (unsigned long) (milliseconds * 1000.0) ) + + #define DEFAULT_INPUT_DEV "Built-in Input" + #define DEFAULT_OUTPUT_DEV "Built-in Output" + + #define DAC_COREAUDIO 0 +// #define DAC_JACK 1 +#endif + +#include "wdltypes.h" +#include "RtAudio.h" +#include "RtMidi.h" +#include <string> +#include <vector> + +#include "../AccessiblePeakMeter.h" // change this to match your iplug plugin .h file + +typedef unsigned short UInt16; + +struct AppState +{ + // on osx core audio 0 or jack 1 + // on windows DS 0 or ASIO 1 + UInt16 mAudioDriverType; + + // strings + char mAudioInDev[100]; + char mAudioOutDev[100]; + char mAudioSR[100]; + char mAudioIOVS[100]; + char mAudioSigVS[100]; + + UInt16 mAudioInChanL; + UInt16 mAudioInChanR; + UInt16 mAudioOutChanL; + UInt16 mAudioOutChanR; + UInt16 mAudioInIsMono; + + // strings containing the names of the midi devices + char mMidiInDev[100]; + char mMidiOutDev[100]; + + UInt16 mMidiInChan; + UInt16 mMidiOutChan; + + AppState(): + mAudioDriverType(0), // DS / CoreAudio by default + mAudioInChanL(1), + mAudioInChanR(2), + mAudioOutChanL(1), + mAudioOutChanR(2), + mMidiInChan(0), + mMidiOutChan(0) + { + strcpy(mAudioInDev, DEFAULT_INPUT_DEV); + strcpy(mAudioOutDev, DEFAULT_OUTPUT_DEV); + strcpy(mAudioSR, "44100"); + strcpy(mAudioIOVS, "512"); + strcpy(mAudioSigVS, "32"); + + strcpy(mMidiInDev, "off"); + strcpy(mMidiOutDev, "off"); + } +}; + +extern WDL_DLGRET MainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +extern WDL_DLGRET PreferencesDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +extern HINSTANCE gHINST; +extern HWND gHWND; +extern UINT gScrollMessage; +extern IPlug* gPluginInstance; // The iplug plugin instance + +extern std::string GetAudioDeviceName(int idx); +extern int GetAudioDeviceID(char* deviceNameToTest); + +extern void ProbeAudioIO(); +extern bool InitialiseAudio(unsigned int inId, + unsigned int outId, + unsigned int sr, + unsigned int iovs, + unsigned int chnls, + unsigned int inChanL, + unsigned int outChanL + ); + +extern bool AudioSettingsInStateAreEqual(AppState* os, AppState* ns); +extern bool MIDISettingsInStateAreEqual(AppState* os, AppState* ns); + +extern bool TryToChangeAudioDriverType(); +extern bool TryToChangeAudio(); +extern bool ChooseMidiInput(const char* pPortName); +extern bool ChooseMidiOutput(const char* pPortName); + +extern bool AttachGUI(); + +extern RtAudio* gDAC; +extern RtMidiIn *gMidiIn; +extern RtMidiOut *gMidiOut; + +extern AppState *gState; +extern AppState *gTempState; // The state is copied here when the pref dialog is opened, and restored if cancel is pressed +extern AppState *gActiveState; // When the audio driver is started the current state is copied here so that if OK is pressed after APPLY nothing is changed + +extern unsigned int gSigVS; +extern unsigned int gBufIndex; // index for signal vector, loops from 0 to gSigVS + +extern char *gINIPath; // path of ini file +extern void UpdateINI(); + +extern std::vector<unsigned int> gAudioInputDevs; +extern std::vector<unsigned int> gAudioOutputDevs; +extern std::vector<std::string> gMIDIInputDevNames; +extern std::vector<std::string> gMIDIOutputDevNames; + +#endif //_IPLUGAPP_APP_MAIN_H_ +