Merge branch 'canvasredesign' into cairocanvas
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 22 Jun 2014 13:34:39 +0000 (09:34 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 22 Jun 2014 13:34:39 +0000 (09:34 -0400)
17 files changed:
libs/ardouralsautil/ardouralsautil/devicelist.h
libs/ardouralsautil/devicelist.cc
libs/backends/MSVCbackends/dummy_audiobackend.vcproj [new file with mode: 0644]
libs/backends/MSVCbackends/jack_audiobackend.vcproj [new file with mode: 0644]
libs/backends/MSVCbackends/jack_backend.vcproj [deleted file]
libs/backends/MSVCbackends/waves_audiobackend.vcproj [new file with mode: 0644]
libs/backends/MSVCbackends/waves_backend.vcproj [deleted file]
libs/backends/alsa/alsa_audiobackend.cc
libs/backends/alsa/alsa_audiobackend.h
libs/backends/alsa/alsa_midi.cc [new file with mode: 0644]
libs/backends/alsa/alsa_midi.h [new file with mode: 0644]
libs/backends/alsa/alsa_rawmidi.cc
libs/backends/alsa/alsa_rawmidi.h
libs/backends/alsa/alsa_sequencer.cc [new file with mode: 0644]
libs/backends/alsa/alsa_sequencer.h [new file with mode: 0644]
libs/backends/alsa/select_sleep.h [new file with mode: 0644]
libs/backends/alsa/wscript

index ee56cadcde41051340e6c835b90d38563f0fa607..2f8c2c4e902a1b7d1e5471c38ed92a032a9c477b 100644 (file)
@@ -26,6 +26,7 @@ namespace ARDOUR {
 
        void get_alsa_audio_device_names (std::map<std::string, std::string>& devices);
        void get_alsa_rawmidi_device_names (std::map<std::string, std::string>& devices);
+       void get_alsa_sequencer_names (std::map<std::string, std::string>& devices);
        int card_to_num(const char* device_name);
 
 }
index 31957a80cf9a24cceae60523505feb81d77f5647..b20df100dbd49aa37d08a9f60828805e8082b647 100644 (file)
@@ -170,6 +170,58 @@ ARDOUR::get_alsa_rawmidi_device_names (std::map<std::string, std::string>& devic
        }
 }
 
+void
+ARDOUR::get_alsa_sequencer_names (std::map<std::string, std::string>& devices)
+{
+       snd_seq_t *seq= NULL;
+       snd_seq_client_info_t *cinfo;
+       snd_seq_port_info_t *pinfo;
+
+       snd_seq_client_info_alloca (&cinfo);
+       snd_seq_port_info_alloca (&pinfo);
+
+       if (snd_seq_open (&seq, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
+               return;
+       }
+
+       snd_seq_client_info_set_client(cinfo, -1);
+       while (snd_seq_query_next_client (seq, cinfo) >= 0) {
+               int client = snd_seq_client_info_get_client (cinfo);
+               if (client == SND_SEQ_CLIENT_SYSTEM) {
+                       continue;
+               }
+               if (!strcmp (snd_seq_client_info_get_name(cinfo), "Midi Through")) {
+                       continue;
+               }
+               snd_seq_port_info_set_client (pinfo, client);
+               snd_seq_port_info_set_port (pinfo, -1);
+
+               while (snd_seq_query_next_port (seq, pinfo) >= 0) {
+                       int caps = snd_seq_port_info_get_capability(pinfo);
+                       if (0 == (caps & (SND_SEQ_PORT_CAP_READ | SND_SEQ_PORT_CAP_WRITE))) {
+                               continue;
+                       }
+                       if (caps & SND_SEQ_PORT_CAP_NO_EXPORT) {
+                               continue;
+                       }
+                       std::string card_name;
+                       card_name = snd_seq_port_info_get_name (pinfo);
+
+                       card_name += " (";
+                       if (caps & SND_SEQ_PORT_CAP_READ) card_name += "I";
+                       if (caps & SND_SEQ_PORT_CAP_WRITE) card_name += "O";
+                       card_name += ")";
+
+                       std::string devname;
+                       devname = PBD::to_string(snd_seq_port_info_get_client (pinfo), std::dec);
+                       devname += ":";
+                       devname += PBD::to_string(snd_seq_port_info_get_port (pinfo), std::dec);
+                       devices.insert (std::make_pair (card_name, devname));
+               }
+       }
+       snd_seq_close (seq);
+}
+
 int
 ARDOUR::card_to_num(const char* device_name)
 {
diff --git a/libs/backends/MSVCbackends/dummy_audiobackend.vcproj b/libs/backends/MSVCbackends/dummy_audiobackend.vcproj
new file mode 100644 (file)
index 0000000..95e26c2
--- /dev/null
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="8.00"
+       Name="dummy_audiobackend"
+       ProjectGUID="{A72277FF-4C0C-4851-9751-2F524507A052}"
+       RootNamespace="dummy_audiobackend"
+       >
+       <Platforms>
+               <Platform
+                       Name="Win32"
+               />
+       </Platforms>
+       <ToolFiles>
+       </ToolFiles>
+       <Configurations>
+               <Configuration
+                       Name="Debug 32|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="..;..\dummy;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;&quot;$(GenericIncludeFolder)\boost&quot;;..\.."
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;BUILDING_DUMMY_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;_DEBUG;DEBUG=&quot;Debug&quot;;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_dummy\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               MinimalRebuild="true"
+                               RuntimeLibrary="3"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0D.lib $(DllPrefix)giomm32-2.4-0D.lib boost-regex32D.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0D.lib $(DllPrefix)gobject32-2.0-0D.lib $(DllPrefix)gmodule32-2.0-0D.lib $(DllPrefix)glib32-2.0-0D.lib $(DllPrefix)gio32-2.0-0D.lib $(DllPrefix)sigc++32-2.0D.lib $(DllPrefix)timecode32D.lib $(DllPrefix)ardour32D.lib $(DllPrefix)pbd32D.lib intlD.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib"
+                               OutputFile="$(OutDir)\$(ProjectName)D.dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;msvcrt.lib;dsound.lib"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release 32|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       WholeProgramOptimization="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="2"
+                               InlineFunctionExpansion="1"
+                               AdditionalIncludeDirectories="..;..\dummy;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;&quot;$(GenericIncludeFolder)\boost&quot;;..\.."
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_DUMMY_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;NDEBUG;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_dummy\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               StringPooling="false"
+                               RuntimeLibrary="2"
+                               EnableEnhancedInstructionSet="1"
+                               WarningLevel="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0.lib $(DllPrefix)giomm32-2.4-0.lib boost-regex32.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0.lib $(DllPrefix)gobject32-2.0-0.lib $(DllPrefix)gmodule32-2.0-0.lib $(DllPrefix)glib32-2.0-0.lib $(DllPrefix)gio32-2.0-0.lib $(DllPrefix)sigc++32-2.0.lib $(DllPrefix)timecode32.lib $(DllPrefix)ardour32.lib $(DllPrefix)pbd32.lib intl.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib"
+                               OutputFile="$(OutDir)\$(ProjectName).dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
+                               GenerateDebugInformation="false"
+                               SubSystem="2"
+                               OptimizeReferences="1"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release 32 with Debugging Capability|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       WholeProgramOptimization="0"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="..;..\dummy;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;&quot;$(GenericIncludeFolder)\boost&quot;;..\.."
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_DUMMY_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_dummy\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               StringPooling="false"
+                               RuntimeLibrary="2"
+                               EnableEnhancedInstructionSet="1"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0RDC.lib $(DllPrefix)giomm32-2.4-0RDC.lib boost-regex32RDC.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0RDC.lib $(DllPrefix)gobject32-2.0-0RDC.lib $(DllPrefix)gmodule32-2.0-0RDC.lib $(DllPrefix)glib32-2.0-0RDC.lib $(DllPrefix)gio32-2.0-0RDC.lib $(DllPrefix)sigc++32-2.0RDC.lib $(DllPrefix)timecode32RDC.lib $(DllPrefix)ardour32RDC.lib $(DllPrefix)pbd32RDC.lib intlRDC.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib"
+                               OutputFile="$(OutDir)\$(ProjectName)RDC.dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="Source Files"
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                       >
+                       <File
+                               RelativePath="..\dummy\dummy_audiobackend.cc"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Header Files"
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+                       >
+                       <File
+                               RelativePath="..\dummy\dummy_audiobackend.h"
+                               >
+                       </File>
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
diff --git a/libs/backends/MSVCbackends/jack_audiobackend.vcproj b/libs/backends/MSVCbackends/jack_audiobackend.vcproj
new file mode 100644 (file)
index 0000000..5d4cac0
--- /dev/null
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="8.00"
+       Name="jack_audiobackend"
+       ProjectGUID="{4A58CE49-541E-43D9-92CD-7E85EA7C96AF}"
+       RootNamespace="jack_audiobackend"
+       >
+       <Platforms>
+               <Platform
+                       Name="Win32"
+               />
+       </Platforms>
+       <ToolFiles>
+       </ToolFiles>
+       <Configurations>
+               <Configuration
+                       Name="Debug 32|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="..;..\..\ardour;..\..\pbd;..\..\fst;&quot;$(GenericIncludeFolder)\ardourext&quot;;..\..\surfaces\control_protocol;..\..\evoral;..\..\libltc;..\..\timecode;..\..\rubberband;&quot;..\..\vamp-sdk&quot;;&quot;..\..\midi++2&quot;;..\..\taglib;..\..\taglib\taglib;..\..\taglib\taglib\toolkit;..\..\audiographer;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3JackPortaudio\include"
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;BUILDING_JACK_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_DEBUG;DEBUG=&quot;Debug&quot;;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_jack\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_PORTAUDIO=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               MinimalRebuild="true"
+                               RuntimeLibrary="3"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="libjackD.lib $(DllPrefix)glibmm32-2.4-0D.lib $(DllPrefix)giomm32-2.4-0D.lib jack_portaudio_x86D.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0D.lib $(DllPrefix)gobject32-2.0-0D.lib $(DllPrefix)gmodule32-2.0-0D.lib $(DllPrefix)glib32-2.0-0D.lib $(DllPrefix)gio32-2.0-0D.lib $(DllPrefix)sigc++32-2.0D.lib $(DllPrefix)timecode32D.lib $(DllPrefix)pbd32D.lib intlD.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
+                               OutputFile="$(OutDir)\$(ProjectName)D.dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;msvcrt.lib;dsound.lib"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release 32|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       WholeProgramOptimization="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="2"
+                               InlineFunctionExpansion="1"
+                               AdditionalIncludeDirectories="..;..\..\ardour;..\..\pbd;..\..\fst;&quot;$(GenericIncludeFolder)\ardourext&quot;;..\..\surfaces\control_protocol;..\..\evoral;..\..\libltc;..\..\timecode;..\..\rubberband;&quot;..\..\vamp-sdk&quot;;&quot;..\..\midi++2&quot;;..\..\taglib;..\..\taglib\taglib;..\..\taglib\taglib\toolkit;..\..\audiographer;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3JackPortaudio\include"
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_JACK_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;NDEBUG;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_jack\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_PORTAUDIO=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               StringPooling="false"
+                               RuntimeLibrary="2"
+                               EnableEnhancedInstructionSet="1"
+                               WarningLevel="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="libjack.lib $(DllPrefix)glibmm32-2.4-0.lib $(DllPrefix)giomm32-2.4-0.lib jack_portaudio_x86.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0.lib $(DllPrefix)gobject32-2.0-0.lib $(DllPrefix)gmodule32-2.0-0.lib $(DllPrefix)glib32-2.0-0.lib $(DllPrefix)gio32-2.0-0.lib $(DllPrefix)sigc++32-2.0.lib $(DllPrefix)timecode32.lib $(DllPrefix)pbd32.lib intl.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
+                               OutputFile="$(OutDir)\$(ProjectName).dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
+                               SubSystem="2"
+                               OptimizeReferences="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release 32 with Debugging Capability|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       WholeProgramOptimization="0"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="..;..\..\ardour;..\..\pbd;..\..\fst;&quot;$(GenericIncludeFolder)\ardourext&quot;;..\..\surfaces\control_protocol;..\..\evoral;..\..\libltc;..\..\timecode;..\..\rubberband;&quot;..\..\vamp-sdk&quot;;&quot;..\..\midi++2&quot;;..\..\taglib;..\..\taglib\taglib;..\..\taglib\taglib\toolkit;..\..\audiographer;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3JackPortaudio\include"
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_JACK_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_jack\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_PORTAUDIO=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               StringPooling="false"
+                               RuntimeLibrary="2"
+                               EnableEnhancedInstructionSet="1"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="libjack.lib $(DllPrefix)glibmm32-2.4-0RDC.lib $(DllPrefix)giomm32-2.4-0RDC.lib jack_portaudio_x86RDC.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0RDC.lib $(DllPrefix)gobject32-2.0-0RDC.lib $(DllPrefix)gmodule32-2.0-0RDC.lib $(DllPrefix)glib32-2.0-0RDC.lib $(DllPrefix)gio32-2.0-0RDC.lib $(DllPrefix)sigc++32-2.0RDC.lib $(DllPrefix)timecode32RDC.lib $(DllPrefix)pbd32RDC.lib intlRDC.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
+                               OutputFile="$(OutDir)\$(ProjectName)RDC.dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="Source Files"
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                       >
+                       <File
+                               RelativePath="..\jack\jack_api.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_audiobackend.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_connection.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_portengine.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_session.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_utils.cc"
+                               >
+                       </File>
+               </Filter>
+               <Filter
+                       Name="Header Files"
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+                       >
+                       <File
+                               RelativePath="..\jack\jack_audiobackend.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_connection.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\jack\jack_utils.h"
+                               >
+                       </File>
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
diff --git a/libs/backends/MSVCbackends/jack_backend.vcproj b/libs/backends/MSVCbackends/jack_backend.vcproj
deleted file mode 100644 (file)
index 35443b2..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-       ProjectType="Visual C++"
-       Version="8.00"
-       Name="jack_backend"
-       ProjectGUID="{4A58CE49-541E-43D9-92CD-7E85EA7C96AF}"
-       RootNamespace="jack_backend"
-       >
-       <Platforms>
-               <Platform
-                       Name="Win32"
-               />
-       </Platforms>
-       <ToolFiles>
-       </ToolFiles>
-       <Configurations>
-               <Configuration
-                       Name="Debug 32|Win32"
-                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
-                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
-                       ConfigurationType="2"
-                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
-                       CharacterSet="2"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="..;..\..\ardour;..\..\pbd;..\..\fst;&quot;$(GenericIncludeFolder)\ardourext&quot;;..\..\surfaces\control_protocol;..\..\evoral;..\..\libltc;..\..\timecode;..\..\rubberband;&quot;..\..\vamp-sdk&quot;;&quot;..\..\midi++2&quot;;..\..\taglib;..\..\taglib\taglib;..\..\taglib\taglib\toolkit;..\..\audiographer;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3JackPortaudio\include"
-                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;BUILDING_JACK_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_DEBUG;DEBUG=&quot;Debug&quot;;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_jack\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_PORTAUDIO=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
-                               MinimalRebuild="true"
-                               RuntimeLibrary="3"
-                               WarningLevel="3"
-                               DebugInformationFormat="3"
-                               CompileAs="2"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="libjackD.lib $(DllPrefix)glibmm32-2.4-0D.lib $(DllPrefix)giomm32-2.4-0D.lib jack_portaudio_x86D.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0D.lib $(DllPrefix)gobject32-2.0-0D.lib $(DllPrefix)gmodule32-2.0-0D.lib $(DllPrefix)glib32-2.0-0D.lib $(DllPrefix)gio32-2.0-0D.lib $(DllPrefix)sigc++32-2.0D.lib $(DllPrefix)timecode32D.lib $(DllPrefix)pbd32D.lib intlD.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
-                               OutputFile="$(OutDir)\$(ProjectName)D.dll"
-                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
-                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;msvcrt.lib;dsound.lib"
-                               GenerateDebugInformation="true"
-                               SubSystem="2"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                               UseFAT32Workaround="true"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCWebDeploymentTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Release 32|Win32"
-                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
-                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
-                       ConfigurationType="2"
-                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
-                       CharacterSet="2"
-                       WholeProgramOptimization="1"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
-                               Optimization="2"
-                               InlineFunctionExpansion="1"
-                               AdditionalIncludeDirectories="..;..\..\ardour;..\..\pbd;..\..\fst;&quot;$(GenericIncludeFolder)\ardourext&quot;;..\..\surfaces\control_protocol;..\..\evoral;..\..\libltc;..\..\timecode;..\..\rubberband;&quot;..\..\vamp-sdk&quot;;&quot;..\..\midi++2&quot;;..\..\taglib;..\..\taglib\taglib;..\..\taglib\taglib\toolkit;..\..\audiographer;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3JackPortaudio\include"
-                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_JACK_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;NDEBUG;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_jack\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_PORTAUDIO=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
-                               StringPooling="false"
-                               RuntimeLibrary="2"
-                               EnableEnhancedInstructionSet="1"
-                               WarningLevel="3"
-                               CompileAs="2"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="libjack.lib $(DllPrefix)glibmm32-2.4-0.lib $(DllPrefix)giomm32-2.4-0.lib jack_portaudio_x86.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0.lib $(DllPrefix)gobject32-2.0-0.lib $(DllPrefix)gmodule32-2.0-0.lib $(DllPrefix)glib32-2.0-0.lib $(DllPrefix)gio32-2.0-0.lib $(DllPrefix)sigc++32-2.0.lib $(DllPrefix)timecode32.lib $(DllPrefix)pbd32.lib intl.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
-                               OutputFile="$(OutDir)\$(ProjectName).dll"
-                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
-                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
-                               SubSystem="2"
-                               OptimizeReferences="2"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                               UseFAT32Workaround="true"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCWebDeploymentTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Release 32 with Debugging Capability|Win32"
-                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
-                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
-                       ConfigurationType="2"
-                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
-                       CharacterSet="2"
-                       WholeProgramOptimization="0"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="..;..\..\ardour;..\..\pbd;..\..\fst;&quot;$(GenericIncludeFolder)\ardourext&quot;;..\..\surfaces\control_protocol;..\..\evoral;..\..\libltc;..\..\timecode;..\..\rubberband;&quot;..\..\vamp-sdk&quot;;&quot;..\..\midi++2&quot;;..\..\taglib;..\..\taglib\taglib;..\..\taglib\taglib\toolkit;..\..\audiographer;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3JackPortaudio\include"
-                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_JACK_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_jack\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_PORTAUDIO=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
-                               StringPooling="false"
-                               RuntimeLibrary="2"
-                               EnableEnhancedInstructionSet="1"
-                               WarningLevel="3"
-                               DebugInformationFormat="3"
-                               CompileAs="2"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="libjack.lib $(DllPrefix)glibmm32-2.4-0RDC.lib $(DllPrefix)giomm32-2.4-0RDC.lib jack_portaudio_x86RDC.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0RDC.lib $(DllPrefix)gobject32-2.0-0RDC.lib $(DllPrefix)gmodule32-2.0-0RDC.lib $(DllPrefix)glib32-2.0-0RDC.lib $(DllPrefix)gio32-2.0-0RDC.lib $(DllPrefix)sigc++32-2.0RDC.lib $(DllPrefix)timecode32RDC.lib $(DllPrefix)pbd32RDC.lib intlRDC.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
-                               OutputFile="$(OutDir)\$(ProjectName)RDC.dll"
-                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
-                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
-                               GenerateDebugInformation="true"
-                               SubSystem="2"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                               UseFAT32Workaround="true"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCWebDeploymentTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
-                       />
-               </Configuration>
-       </Configurations>
-       <References>
-       </References>
-       <Files>
-               <Filter
-                       Name="Source Files"
-                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-                       >
-                       <File
-                               RelativePath="..\jack\jack_api.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_audiobackend.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_connection.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_portengine.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_session.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_utils.cc"
-                               >
-                       </File>
-               </Filter>
-               <Filter
-                       Name="Header Files"
-                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
-                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-                       >
-                       <File
-                               RelativePath="..\jack\jack_audiobackend.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_connection.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\jack\jack_utils.h"
-                               >
-                       </File>
-               </Filter>
-       </Files>
-       <Globals>
-       </Globals>
-</VisualStudioProject>
diff --git a/libs/backends/MSVCbackends/waves_audiobackend.vcproj b/libs/backends/MSVCbackends/waves_audiobackend.vcproj
new file mode 100644 (file)
index 0000000..617422a
--- /dev/null
@@ -0,0 +1,524 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+       ProjectType="Visual C++"
+       Version="8.00"
+       Name="waves_audiobackend"
+       ProjectGUID="{D7B1537C-C244-4D86-BBBF-74A1801AB984}"
+       RootNamespace="waves_audiobackend"
+       >
+       <Platforms>
+               <Platform
+                       Name="Win32"
+               />
+       </Platforms>
+       <ToolFiles>
+       </ToolFiles>
+       <Configurations>
+               <Configuration
+                       Name="Debug 32|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="..;..\wavesaudio;..\wavesaudio\wavesapi;..\wavesaudio\wavesapi\wavespublicapi;..\wavesaudio\wavesapi\devicemanager;..\wavesaudio\wavesapi\refmanager;..\wavesaudio\wavesapi\threads;..\wavesaudio\wavesapi\miscutils;..\wavesaudio\portmidi\src\pm_common;..\wavesaudio\portmidi;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3WavesPortaudio\include;..\..\..\..\support\MB3WavesPortaudio\src\hostapi\asio\ASIOSDK\common;..\.."
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;BUILDING_WAVES_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;_DEBUG;DEBUG=&quot;Debug&quot;;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_waves\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               MinimalRebuild="true"
+                               RuntimeLibrary="3"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0D.lib $(DllPrefix)giomm32-2.4-0D.lib waves_portaudio_x86D.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0D.lib $(DllPrefix)gobject32-2.0-0D.lib $(DllPrefix)gmodule32-2.0-0D.lib $(DllPrefix)glib32-2.0-0D.lib $(DllPrefix)gio32-2.0-0D.lib $(DllPrefix)sigc++32-2.0D.lib $(DllPrefix)timecode32D.lib $(DllPrefix)ardour32D.lib $(DllPrefix)pbd32D.lib intlD.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
+                               OutputFile="$(OutDir)\$(ProjectName)D.dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;msvcrt.lib;dsound.lib"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release 32|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       WholeProgramOptimization="1"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="2"
+                               InlineFunctionExpansion="1"
+                               AdditionalIncludeDirectories="..;..\wavesaudio;..\wavesaudio\wavesapi;..\wavesaudio\wavesapi\wavespublicapi;..\wavesaudio\wavesapi\devicemanager;..\wavesaudio\wavesapi\refmanager;..\wavesaudio\wavesapi\threads;..\wavesaudio\wavesapi\miscutils;..\wavesaudio\portmidi\src\pm_common;..\wavesaudio\portmidi;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3WavesPortaudio\include;..\..\..\..\support\MB3WavesPortaudio\src\hostapi\asio\ASIOSDK\common;..\.."
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_WAVES_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;NDEBUG;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_waves\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               StringPooling="false"
+                               RuntimeLibrary="2"
+                               EnableEnhancedInstructionSet="1"
+                               WarningLevel="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0.lib $(DllPrefix)giomm32-2.4-0.lib waves_portaudio_x86.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0.lib $(DllPrefix)gobject32-2.0-0.lib $(DllPrefix)gmodule32-2.0-0.lib $(DllPrefix)glib32-2.0-0.lib $(DllPrefix)gio32-2.0-0.lib $(DllPrefix)sigc++32-2.0.lib $(DllPrefix)timecode32.lib $(DllPrefix)ardour32.lib $(DllPrefix)pbd32.lib intl.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
+                               OutputFile="$(OutDir)\$(ProjectName).dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
+                               SubSystem="2"
+                               OptimizeReferences="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+               <Configuration
+                       Name="Release 32 with Debugging Capability|Win32"
+                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
+                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
+                       ConfigurationType="2"
+                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
+                       CharacterSet="2"
+                       WholeProgramOptimization="0"
+                       >
+                       <Tool
+                               Name="VCPreBuildEventTool"
+                       />
+                       <Tool
+                               Name="VCCustomBuildTool"
+                       />
+                       <Tool
+                               Name="VCXMLDataGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCWebServiceProxyGeneratorTool"
+                       />
+                       <Tool
+                               Name="VCMIDLTool"
+                       />
+                       <Tool
+                               Name="VCCLCompilerTool"
+                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
+                               Optimization="0"
+                               AdditionalIncludeDirectories="..;..\wavesaudio;..\wavesaudio\wavesapi;..\wavesaudio\wavesapi\wavespublicapi;..\wavesaudio\wavesapi\devicemanager;..\wavesaudio\wavesapi\refmanager;..\wavesaudio\wavesapi\threads;..\wavesaudio\wavesapi\miscutils;..\wavesaudio\portmidi\src\pm_common;..\wavesaudio\portmidi;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3WavesPortaudio\include;..\..\..\..\support\MB3WavesPortaudio\src\hostapi\asio\ASIOSDK\common;..\.."
+                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_WAVES_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_waves\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
+                               StringPooling="false"
+                               RuntimeLibrary="2"
+                               EnableEnhancedInstructionSet="1"
+                               WarningLevel="3"
+                               DebugInformationFormat="3"
+                               CompileAs="2"
+                       />
+                       <Tool
+                               Name="VCManagedResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCResourceCompilerTool"
+                       />
+                       <Tool
+                               Name="VCPreLinkEventTool"
+                       />
+                       <Tool
+                               Name="VCLinkerTool"
+                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0RDC.lib $(DllPrefix)giomm32-2.4-0RDC.lib waves_portaudio_x86RDC.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0RDC.lib $(DllPrefix)gobject32-2.0-0RDC.lib $(DllPrefix)gmodule32-2.0-0RDC.lib $(DllPrefix)glib32-2.0-0RDC.lib $(DllPrefix)gio32-2.0-0RDC.lib $(DllPrefix)sigc++32-2.0RDC.lib $(DllPrefix)timecode32RDC.lib $(DllPrefix)ardour32RDC.lib $(DllPrefix)pbd32RDC.lib intlRDC.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
+                               OutputFile="$(OutDir)\$(ProjectName)RDC.dll"
+                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
+                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
+                               GenerateDebugInformation="true"
+                               SubSystem="2"
+                       />
+                       <Tool
+                               Name="VCALinkTool"
+                       />
+                       <Tool
+                               Name="VCManifestTool"
+                               UseFAT32Workaround="true"
+                       />
+                       <Tool
+                               Name="VCXDCMakeTool"
+                       />
+                       <Tool
+                               Name="VCBscMakeTool"
+                       />
+                       <Tool
+                               Name="VCFxCopTool"
+                       />
+                       <Tool
+                               Name="VCAppVerifierTool"
+                       />
+                       <Tool
+                               Name="VCWebDeploymentTool"
+                       />
+                       <Tool
+                               Name="VCPostBuildEventTool"
+                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
+                       />
+               </Configuration>
+       </Configurations>
+       <References>
+       </References>
+       <Files>
+               <Filter
+                       Name="Source Files"
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                       >
+                       <File
+                               RelativePath="..\wavesaudio\waves_audiobackend.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_audiobackend.latency.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_audiobackend.midi.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_audiobackend.port_engine.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_audioport.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_dataport.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_buffer.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_device.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_device_manager.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_event.cc"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midiport.cc"
+                               >
+                       </File>
+                       <Filter
+                               Name="wavesapi"
+                               >
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\UMicroseconds.cpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRAudioDeviceManager.cpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRNativeAudio.cpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRPortAudioDeviceManager.cpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\refmanager\WCRefManager.cpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\threads\WCThreadSafe.cpp"
+                                       >
+                               </File>
+                       </Filter>
+                       <Filter
+                               Name="portmidi"
+                               >
+                               <File
+                                       RelativePath="..\wavesaudio\portmidi\src\pm_common\pmutil.c"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\portmidi\src\pm_win\pmwin.c"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\portmidi\src\pm_win\pmwinmm.c"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\portmidi\src\pm_common\portmidi.c"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\portmidi\src\porttime\ptwinmm.c"
+                                       >
+                               </File>
+                       </Filter>
+               </Filter>
+               <Filter
+                       Name="Header Files"
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+                       >
+                       <File
+                               RelativePath="..\wavesaudio\portmidi\src\pm_common\pminternal.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\portmidi\pmutil.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\portmidi\src\pm_win\pmwinmm.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\portmidi\portmidi.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\portmidi\porttime.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_audiobackend.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_audioport.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_dataport.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_buffer.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_device.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_device_manager.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midi_event.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\waves_midiport.h"
+                               >
+                       </File>
+                       <File
+                               RelativePath="..\wavesaudio\wavesapi\wavespublicapi\wstdint.h"
+                               >
+                       </File>
+                       <Filter
+                               Name="wavesapi"
+                               >
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\akupara\threading\atomic_ops.hpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\akupara\threading\atomic_ops_gcc_x86.hpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\akupara\basics.hpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\akupara\compiletime_functions.hpp"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\MinMaxUtilities.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\pthread_utils.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\safe_delete.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\UMicroseconds.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\WCFixedString.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WCFourCC.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRAudioDeviceManager.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRNativeAudio.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRPortAudioDeviceManager.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\refmanager\WCRefManager.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\threads\WCThreadSafe.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WTByteOrder.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\wavespublicapi\WTErr.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUComPtr.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUDefines.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\miscutils\WUErrors.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUMathConsts.h"
+                                       >
+                               </File>
+                               <File
+                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUTypes.h"
+                                       >
+                               </File>
+                       </Filter>
+               </Filter>
+       </Files>
+       <Globals>
+       </Globals>
+</VisualStudioProject>
diff --git a/libs/backends/MSVCbackends/waves_backend.vcproj b/libs/backends/MSVCbackends/waves_backend.vcproj
deleted file mode 100644 (file)
index fcee18b..0000000
+++ /dev/null
@@ -1,524 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-       ProjectType="Visual C++"
-       Version="8.00"
-       Name="waves_backend"
-       ProjectGUID="{D7B1537C-C244-4D86-BBBF-74A1801AB984}"
-       RootNamespace="waves_backend"
-       >
-       <Platforms>
-               <Platform
-                       Name="Win32"
-               />
-       </Platforms>
-       <ToolFiles>
-       </ToolFiles>
-       <Configurations>
-               <Configuration
-                       Name="Debug 32|Win32"
-                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
-                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
-                       ConfigurationType="2"
-                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
-                       CharacterSet="2"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="..;..\wavesaudio;..\wavesaudio\wavesapi;..\wavesaudio\wavesapi\wavespublicapi;..\wavesaudio\wavesapi\devicemanager;..\wavesaudio\wavesapi\refmanager;..\wavesaudio\wavesapi\threads;..\wavesaudio\wavesapi\miscutils;..\wavesaudio\portmidi\src\pm_common;..\wavesaudio\portmidi;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3WavesPortaudio\include;..\..\..\..\support\MB3WavesPortaudio\src\hostapi\asio\ASIOSDK\common;..\.."
-                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;BUILDING_WAVES_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;_DEBUG;DEBUG=&quot;Debug&quot;;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_waves\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
-                               MinimalRebuild="true"
-                               RuntimeLibrary="3"
-                               WarningLevel="3"
-                               DebugInformationFormat="3"
-                               CompileAs="2"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0D.lib $(DllPrefix)giomm32-2.4-0D.lib waves_portaudio_x86D.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0D.lib $(DllPrefix)gobject32-2.0-0D.lib $(DllPrefix)gmodule32-2.0-0D.lib $(DllPrefix)glib32-2.0-0D.lib $(DllPrefix)gio32-2.0-0D.lib $(DllPrefix)sigc++32-2.0D.lib $(DllPrefix)timecode32D.lib $(DllPrefix)ardour32D.lib $(DllPrefix)pbd32D.lib intlD.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
-                               OutputFile="$(OutDir)\$(ProjectName)D.dll"
-                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
-                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;msvcrt.lib;dsound.lib"
-                               GenerateDebugInformation="true"
-                               SubSystem="2"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                               UseFAT32Workaround="true"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCWebDeploymentTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Debug32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Release 32|Win32"
-                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
-                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
-                       ConfigurationType="2"
-                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
-                       CharacterSet="2"
-                       WholeProgramOptimization="1"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
-                               Optimization="2"
-                               InlineFunctionExpansion="1"
-                               AdditionalIncludeDirectories="..;..\wavesaudio;..\wavesaudio\wavesapi;..\wavesaudio\wavesapi\wavespublicapi;..\wavesaudio\wavesapi\devicemanager;..\wavesaudio\wavesapi\refmanager;..\wavesaudio\wavesapi\threads;..\wavesaudio\wavesapi\miscutils;..\wavesaudio\portmidi\src\pm_common;..\wavesaudio\portmidi;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3WavesPortaudio\include;..\..\..\..\support\MB3WavesPortaudio\src\hostapi\asio\ASIOSDK\common;..\.."
-                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_WAVES_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;NDEBUG;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_waves\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
-                               StringPooling="false"
-                               RuntimeLibrary="2"
-                               EnableEnhancedInstructionSet="1"
-                               WarningLevel="3"
-                               CompileAs="2"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0.lib $(DllPrefix)giomm32-2.4-0.lib waves_portaudio_x86.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0.lib $(DllPrefix)gobject32-2.0-0.lib $(DllPrefix)gmodule32-2.0-0.lib $(DllPrefix)glib32-2.0-0.lib $(DllPrefix)gio32-2.0-0.lib $(DllPrefix)sigc++32-2.0.lib $(DllPrefix)timecode32.lib $(DllPrefix)ardour32.lib $(DllPrefix)pbd32.lib intl.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
-                               OutputFile="$(OutDir)\$(ProjectName).dll"
-                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
-                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
-                               SubSystem="2"
-                               OptimizeReferences="2"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                               UseFAT32Workaround="true"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCWebDeploymentTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TargetFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
-                       />
-               </Configuration>
-               <Configuration
-                       Name="Release 32 with Debugging Capability|Win32"
-                       OutputDirectory="$(ProjectDir)\$(ConfigurationName)\bin"
-                       IntermediateDirectory="$(ProjectDir)\$(ConfigurationName)\obj\$(ProjectName)"
-                       ConfigurationType="2"
-                       InheritedPropertySheets="..\..\..\MSVCMixbus3\MSVCMixbus3.vsprops"
-                       CharacterSet="2"
-                       WholeProgramOptimization="0"
-                       >
-                       <Tool
-                               Name="VCPreBuildEventTool"
-                       />
-                       <Tool
-                               Name="VCCustomBuildTool"
-                       />
-                       <Tool
-                               Name="VCXMLDataGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"
-                       />
-                       <Tool
-                               Name="VCMIDLTool"
-                       />
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               AdditionalOptions="/FI$(TargetSxsFolder)\targetsxs.h"
-                               Optimization="0"
-                               AdditionalIncludeDirectories="..;..\wavesaudio;..\wavesaudio\wavesapi;..\wavesaudio\wavesapi\wavespublicapi;..\wavesaudio\wavesapi\devicemanager;..\wavesaudio\wavesapi\refmanager;..\wavesaudio\wavesapi\threads;..\wavesaudio\wavesapi\miscutils;..\wavesaudio\portmidi\src\pm_common;..\wavesaudio\portmidi;..\..\ardour;..\..\pbd;..\..\timecode;..\..\evoral;&quot;..\..\midi++2&quot;;&quot;$(GenericIncludeFolder)\ardourext&quot;;&quot;$(GenericLibraryFolder)\glib-2.0\include&quot;;&quot;$(GenericIncludeFolder)\libsndfile&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0&quot;;&quot;$(GenericIncludeFolder)\cairo&quot;;&quot;$(GenericIncludeFolder)\freetype2&quot;;&quot;$(GenericIncludeFolder)\pango-1.0&quot;;&quot;$(GenericIncludeFolder)\gtk-2.0\gdk&quot;;&quot;$(GenericIncludeFolder)\atk-2.0&quot;;&quot;$(GenericIncludeFolder)\lrdf&quot;;&quot;$(GenericIncludeFolder)\raptor&quot;;..\..\..\..\support\MB3WavesPortaudio\include;..\..\..\..\support\MB3WavesPortaudio\src\hostapi\asio\ASIOSDK\common;..\.."
-                               PreprocessorDefinitions="PLATFORM_WINDOWS;COMPILER_MSVC;_SECURE_SCL=0;BUILDING_WAVES_BACKEND;ARDOURBACKEND_DLL_EXPORTS;RUBBERBAND_IS_IN_WIN_STATIC_LIB;NOMINMAX;NO_POSIX_MEMALIGN;INCLUDE_ARDOUR_MISCELLANEOUS=1;BOOST_REGEX_DYN_LINK;BOOST_REGEX_NO_LIB;BOOST_CHRONO_NO_LIB;BOOST_SYSTEM_NO_LIB;BOOST_THREAD_NO_LIB;BOOST_DATE_TIME_NO_LIB;GNU_WIN32;WIN32;_WIN32;_WINDOWS;ARCH_X86;USE_XMMINTRIN;BUILD_SSE_OPTIMIZATIONS;ENABLE_NLS;PROGRAM_NAME=&quot;\&quot;Mixbus\&quot;&quot;;PACKAGE=&quot;\&quot;libardour_waves\&quot;&quot;;_REENTRANT;_USE_MATH_DEFINES;_LARGEFILE_SOURCE;_LARGEFILE64_SOURCE;LIBC_DISABLE_DEPRECATED;BOOST_SYSTEM_NO_DEPRECATED;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;INTERNAL_SHARED_LIBS=1;JACK_SESSION=1;HAVE_GLIB=1;HAVE_GTHREAD=1;HAVE_SNDFILE=1;HAVE_GIOMM=1;HAVE_CURL=1;HAVE_LO=1;HAVE_MODE_T=1;PHONE_HOME=1;FREESOUND=1;WINDOWS_KEY=\&quot;Mod4&gt;&lt;Super\&quot;;IS_OSX=0;HAVE_XML=1;HAVE_UUID=1;HAVE_LIBS_PBD=1;HAVE_JACK=1;HAVE_LIBS_MIDIPP2=1;HAVE_LIBS_EVORAL=1;HAVE_FFTW3=1;HAVE_FFTW3F=1;HAVE_AUBIO=1;HAVE_LIBS_VAMP_SDK=1;HAVE_LIBS_VAMP_PLUGINS=1;HAVE_LIBS_TAGLIB=1;HAVE_LIBS_LIBLTC=1;HAVE_LIBS_RUBBERBAND=1;HAVE_CONTROL_PROTOCOL=1;HAVE_FRONTIER=1;HAVE_GENERIC_MIDI=1;HAVE_MACKIE=1;HAVE_OSC=1;HAVE_TRANZPORT=1;HAVE_WIIMOTE=1;HAVE_LIBS_SURFACES=1;HAVE_2IN2OUT=1;HAVE_1IN2OUT=1;HAVE_VBAP=1;HAVE_LIBS_PANNERS=1;HAVE_LIBS_TIMECODE=1;HAVE_LRDF=1;HAVE_SAMPLERATE=1;HAVE_SERD=1;HAVE_SORD=1;HAVE_SRATOM=1;HAVE_LILV=1;HAVE_NEW_LILV=1;HAVE_OGG=1;HAVE_FLAC=1;HAVE_RUBBERBAND=1;USE_RUBBERBAND=1;HAVE_JACK_SESSION=1;HAVE_UNISTD=1;HAVE_JACK_ON_INFO_SHUTDOWN=1;HAVE_JACK_VIDEO_SUPPORT=1;HAVE_BOOST_SCOPED_PTR_HPP=1;HAVE_BOOST_PTR_CONTAINER_PTR_LIST_HPP=1;HAVE_LIBS_ARDOUR=1;HAVE_GTKMM=1;HAVE_GTK=1;HAVE_LIBS_GTKMM2EXT=1;HAVE_LIBS_CLEARLOOKS_NEWER=1;HAVE_BOOST_FORMAT_HPP=1;HAVE_LIBS_AUDIOGRAPHER=1;HAVE_GNOMECANVAS=0;HAVE_GNOMECANVASMM=0;HAVE_X11=0;HAVE_FONTCONFIG=1;HAVE_BOOST_SHARED_PTR_HPP=1;HAVE_BOOST_WEAK_PTR_HPP=1;HAVE_GTK2_ARDOUR=1;HAVE_EXPORT=1;HAVE_MIDI_MAPS=1;HAVE_MCP=1;HAVE_PATCHFILES=1;HAVE_TOOLS_SANITY_CHECK=1;SMF_VERSION=\&quot;1.2\&quot;;CURRENT_SESSION_FILE_VERSION=3001"
-                               StringPooling="false"
-                               RuntimeLibrary="2"
-                               EnableEnhancedInstructionSet="1"
-                               WarningLevel="3"
-                               DebugInformationFormat="3"
-                               CompileAs="2"
-                       />
-                       <Tool
-                               Name="VCManagedResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                       />
-                       <Tool
-                               Name="VCPreLinkEventTool"
-                       />
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalDependencies="$(DllPrefix)glibmm32-2.4-0RDC.lib $(DllPrefix)giomm32-2.4-0RDC.lib waves_portaudio_x86RDC.lib pthreadVCE2.lib $(DllPrefix)gthread32-2.0-0RDC.lib $(DllPrefix)gobject32-2.0-0RDC.lib $(DllPrefix)gmodule32-2.0-0RDC.lib $(DllPrefix)glib32-2.0-0RDC.lib $(DllPrefix)gio32-2.0-0RDC.lib $(DllPrefix)sigc++32-2.0RDC.lib $(DllPrefix)timecode32RDC.lib $(DllPrefix)ardour32RDC.lib $(DllPrefix)pbd32RDC.lib intlRDC.lib ws2_32.lib psapi.lib wininet.lib kernel32.lib shell32.lib winmm.lib setupapi.lib"
-                               OutputFile="$(OutDir)\$(ProjectName)RDC.dll"
-                               AdditionalLibraryDirectories="F:\pthread-win32\Pre-built.2\lib"
-                               IgnoreDefaultLibraryNames="libboost_regex-vc80-mt-gd-1_40.lib;dsound.lib"
-                               GenerateDebugInformation="true"
-                               SubSystem="2"
-                       />
-                       <Tool
-                               Name="VCALinkTool"
-                       />
-                       <Tool
-                               Name="VCManifestTool"
-                               UseFAT32Workaround="true"
-                       />
-                       <Tool
-                               Name="VCXDCMakeTool"
-                       />
-                       <Tool
-                               Name="VCBscMakeTool"
-                       />
-                       <Tool
-                               Name="VCFxCopTool"
-                       />
-                       <Tool
-                               Name="VCAppVerifierTool"
-                       />
-                       <Tool
-                               Name="VCWebDeploymentTool"
-                       />
-                       <Tool
-                               Name="VCPostBuildEventTool"
-                               CommandLine="copy /Y &quot;$(OutDir)\$(TargetName).dll&quot; &quot;$(Release32TestSuiteFolder)\..\lib\ardour3\backends\$(TargetName).dll&quot;&#x0D;&#x0A;copy /Y &quot;$(OutDir)\$(TargetName).lib&quot; &quot;$(GenericWin32LibraryFolder)\$(TargetName).lib&quot;&#x0D;&#x0A;"
-                       />
-               </Configuration>
-       </Configurations>
-       <References>
-       </References>
-       <Files>
-               <Filter
-                       Name="Source Files"
-                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-                       >
-                       <File
-                               RelativePath="..\wavesaudio\waves_audiobackend.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_audiobackend.latency.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_audiobackend.midi.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_audiobackend.port_engine.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_audioport.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_dataport.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_buffer.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_device.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_device_manager.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_event.cc"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midiport.cc"
-                               >
-                       </File>
-                       <Filter
-                               Name="wavesapi"
-                               >
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\UMicroseconds.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRAudioDeviceManager.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRNativeAudio.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRPortAudioDeviceManager.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\refmanager\WCRefManager.cpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\threads\WCThreadSafe.cpp"
-                                       >
-                               </File>
-                       </Filter>
-                       <Filter
-                               Name="portmidi"
-                               >
-                               <File
-                                       RelativePath="..\wavesaudio\portmidi\src\pm_common\pmutil.c"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\portmidi\src\pm_win\pmwin.c"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\portmidi\src\pm_win\pmwinmm.c"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\portmidi\src\pm_common\portmidi.c"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\portmidi\src\porttime\ptwinmm.c"
-                                       >
-                               </File>
-                       </Filter>
-               </Filter>
-               <Filter
-                       Name="Header Files"
-                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
-                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-                       >
-                       <File
-                               RelativePath="..\wavesaudio\portmidi\src\pm_common\pminternal.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\portmidi\pmutil.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\portmidi\src\pm_win\pmwinmm.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\portmidi\portmidi.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\portmidi\porttime.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_audiobackend.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_audioport.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_dataport.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_buffer.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_device.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_device_manager.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midi_event.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\waves_midiport.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath="..\wavesaudio\wavesapi\wavespublicapi\wstdint.h"
-                               >
-                       </File>
-                       <Filter
-                               Name="wavesapi"
-                               >
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\akupara\threading\atomic_ops.hpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\akupara\threading\atomic_ops_gcc_x86.hpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\akupara\basics.hpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\akupara\compiletime_functions.hpp"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\MinMaxUtilities.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\pthread_utils.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\safe_delete.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\UMicroseconds.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\WCFixedString.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WCFourCC.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRAudioDeviceManager.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRNativeAudio.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\devicemanager\WCMRPortAudioDeviceManager.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\refmanager\WCRefManager.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\threads\WCThreadSafe.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WTByteOrder.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\wavespublicapi\WTErr.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUComPtr.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUDefines.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\miscutils\WUErrors.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUMathConsts.h"
-                                       >
-                               </File>
-                               <File
-                                       RelativePath="..\wavesaudio\wavesapi\BasicTypes\WUTypes.h"
-                                       >
-                               </File>
-                       </Filter>
-               </Filter>
-       </Files>
-       <Globals>
-       </Globals>
-</VisualStudioProject>
index 58780acf4ee6fd0ea6aea42a2bf83aded2933942..4b8fb82a7a543e9306034286343e62123f2a6f84 100644 (file)
@@ -382,8 +382,15 @@ AlsaAudioBackend::midi_device_info(std::string const name) const {
                }
        }
 
+       assert(_midi_driver_option != _("None"));
+
        std::map<std::string, std::string> devices;
-       get_alsa_rawmidi_device_names(devices);
+       if (_midi_driver_option == _("ALSA raw devices")) {
+               get_alsa_rawmidi_device_names(devices);
+       } else {
+               get_alsa_sequencer_names (devices);
+       }
+
        for (std::map<std::string, std::string>::const_iterator i = devices.begin (); i != devices.end(); ++i) {
                if (i->first == name) {
                        _midi_devices[name] = new AlsaMidiDeviceInfo();
@@ -399,6 +406,7 @@ AlsaAudioBackend::enumerate_midi_options () const
        std::vector<std::string> m;
        m.push_back (_("None"));
        m.push_back (_("ALSA raw devices"));
+       m.push_back (_("ALSA sequencer"));
        return m;
 }
 
@@ -406,13 +414,17 @@ std::vector<AudioBackend::DeviceStatus>
 AlsaAudioBackend::enumerate_midi_devices () const
 {
        std::vector<AudioBackend::DeviceStatus> s;
-       if (_midi_driver_option == _("None")) {
+       std::map<std::string, std::string> devices;
+
+       if (_midi_driver_option == _("ALSA raw devices")) {
+               get_alsa_rawmidi_device_names (devices);
+       }
+       else if (_midi_driver_option == _("ALSA sequencer")) {
+               get_alsa_sequencer_names (devices);
+       } else {
                return s;
        }
 
-       std::map<std::string, std::string> devices;
-       get_alsa_rawmidi_device_names(devices);
-
        for (std::map<std::string, std::string>::const_iterator i = devices.begin (); i != devices.end(); ++i) {
                s.push_back (DeviceStatus (i->first, true));
        }
@@ -422,7 +434,7 @@ AlsaAudioBackend::enumerate_midi_devices () const
 int
 AlsaAudioBackend::set_midi_option (const std::string& opt)
 {
-       if (opt != _("None") && opt != _("ALSA raw devices")) {
+       if (opt != _("None") && opt != _("ALSA raw devices") && opt != _("ALSA sequencer")) {
                return -1;
        }
        _midi_driver_option = opt;
@@ -620,13 +632,13 @@ AlsaAudioBackend::stop ()
        }
 
        while (!_rmidi_out.empty ()) {
-               AlsaRawMidiIO *m = _rmidi_out.back ();
+               AlsaMidiIO *m = _rmidi_out.back ();
                m->stop();
                _rmidi_out.pop_back ();
                delete m;
        }
        while (!_rmidi_in.empty ()) {
-               AlsaRawMidiIO *m = _rmidi_in.back ();
+               AlsaMidiIO *m = _rmidi_in.back ();
                m->stop();
                _rmidi_in.pop_back ();
                delete m;
@@ -954,18 +966,27 @@ AlsaAudioBackend::register_system_midi_ports()
 
        if (_midi_driver_option == _("None")) {
                return 0;
+       } else if (_midi_driver_option == _("ALSA raw devices")) {
+               get_alsa_rawmidi_device_names(devices);
+       } else {
+               get_alsa_sequencer_names (devices);
        }
-       get_alsa_rawmidi_device_names(devices);
 
        for (std::map<std::string, std::string>::const_iterator i = devices.begin (); i != devices.end(); ++i) {
                struct AlsaMidiDeviceInfo * nfo = midi_device_info(i->first);
                if (!nfo) continue;
                if (!nfo->enabled) continue;
 
-               AlsaRawMidiOut *mout = new AlsaRawMidiOut (i->second.c_str());
+               AlsaMidiOut *mout;
+               if (_midi_driver_option == _("ALSA raw devices")) {
+                       mout = new AlsaRawMidiOut (i->second.c_str());
+               } else {
+                       mout = new AlsaSeqMidiOut (i->second.c_str());
+               }
+
                if (mout->state ()) {
                        PBD::warning << string_compose (
-                                       _("AlsaRawMidiOut: failed to open midi device '%1'."), i->second)
+                                       _("AlsaMidiOut: failed to open midi device '%1'."), i->second)
                                << endmsg;
                        delete mout;
                } else {
@@ -973,7 +994,7 @@ AlsaAudioBackend::register_system_midi_ports()
                        mout->sync_time (g_get_monotonic_time());
                        if (mout->start ()) {
                                PBD::warning << string_compose (
-                                               _("AlsaRawMidiOut: failed to start midi device '%1'."), i->second)
+                                               _("AlsaMidiOut: failed to start midi device '%1'."), i->second)
                                        << endmsg;
                                delete mout;
                        } else {
@@ -992,10 +1013,16 @@ AlsaAudioBackend::register_system_midi_ports()
                        }
                }
 
-               AlsaRawMidiIn *midin = new AlsaRawMidiIn (i->second.c_str());
+               AlsaMidiIn *midin;
+               if (_midi_driver_option == _("ALSA raw devices")) {
+                       midin = new AlsaRawMidiIn (i->second.c_str());
+               } else {
+                       midin = new AlsaSeqMidiIn (i->second.c_str());
+               }
+
                if (midin->state ()) {
                        PBD::warning << string_compose (
-                                       _("AlsaRawMidiIn: failed to open midi device '%1'."), i->second)
+                                       _("AlsaMidiIn: failed to open midi device '%1'."), i->second)
                                << endmsg;
                        delete midin;
                } else {
@@ -1003,7 +1030,7 @@ AlsaAudioBackend::register_system_midi_ports()
                        midin->sync_time (g_get_monotonic_time());
                        if (midin->start ()) {
                                PBD::warning << string_compose (
-                                               _("AlsaRawMidiIn: failed to start midi device '%1'."), i->second)
+                                               _("AlsaMidiIn: failed to start midi device '%1'."), i->second)
                                        << endmsg;
                                delete midin;
                        } else {
@@ -1401,10 +1428,10 @@ AlsaAudioBackend::main_process_thread ()
                                i = 0;
                                for (std::vector<AlsaPort*>::const_iterator it = _system_midi_in.begin (); it != _system_midi_in.end (); ++it, ++i) {
                                        assert (_rmidi_in.size() > i);
-                                       AlsaRawMidiIn *rm = static_cast<AlsaRawMidiIn*>(_rmidi_in.at(i));
+                                       AlsaMidiIn *rm = static_cast<AlsaMidiIn*>(_rmidi_in.at(i));
                                        void *bptr = (*it)->get_buffer(0);
                                        pframes_t time;
-                                       uint8_t data[64]; // match MaxAlsaRawEventSize in alsa_rawmidi.cc
+                                       uint8_t data[64]; // match MaxAlsaEventSize in alsa_rawmidi.cc
                                        size_t size = sizeof(data);
                                        midi_clear(bptr);
                                        while (rm->recv_event (time, data, size)) {
@@ -1434,7 +1461,7 @@ AlsaAudioBackend::main_process_thread ()
                                for (std::vector<AlsaPort*>::const_iterator it = _system_midi_out.begin (); it != _system_midi_out.end (); ++it, ++i) {
                                        assert (_rmidi_out.size() > i);
                                        const AlsaMidiBuffer src = static_cast<const AlsaMidiPort*>(*it)->const_buffer();
-                                       AlsaRawMidiOut *rm = static_cast<AlsaRawMidiOut*>(_rmidi_out.at(i));
+                                       AlsaMidiOut *rm = static_cast<AlsaMidiOut*>(_rmidi_out.at(i));
                                        rm->sync_time (clock1);
                                        for (AlsaMidiBuffer::const_iterator mit = src.begin (); mit != src.end (); ++mit) {
                                                rm->send_event ((*mit)->timestamp(), (*mit)->data(), (*mit)->size());
index e0d1f114c314410d5aabf52788a6f2052f4873b5..91d133f303bcefb92143d16084512ac4c610257e 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "zita-alsa-pcmi.h"
 #include "alsa_rawmidi.h"
+#include "alsa_sequencer.h"
 
 namespace ARDOUR {
 
@@ -367,8 +368,8 @@ class AlsaAudioBackend : public AudioBackend {
                std::vector<AlsaPort *> _system_midi_in;
                std::vector<AlsaPort *> _system_midi_out;
 
-               std::vector<AlsaRawMidiOut *> _rmidi_out;
-               std::vector<AlsaRawMidiIn  *> _rmidi_in;
+               std::vector<AlsaMidiOut *> _rmidi_out;
+               std::vector<AlsaMidiIn  *> _rmidi_in;
 
                struct PortConnectData {
                        std::string a;
diff --git a/libs/backends/alsa/alsa_midi.cc b/libs/backends/alsa/alsa_midi.cc
new file mode 100644 (file)
index 0000000..dce8478
--- /dev/null
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2014 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <unistd.h>
+
+#include <glibmm.h>
+
+#include "alsa_midi.h"
+#include "rt_thread.h"
+
+#include "pbd/error.h"
+#include "i18n.h"
+
+using namespace ARDOUR;
+
+#ifndef NDEBUG
+#define _DEBUGPRINT(STR) fprintf(stderr, STR);
+#else
+#define _DEBUGPRINT(STR) ;
+#endif
+
+AlsaMidiIO::AlsaMidiIO ()
+       : _state (-1)
+       , _running (false)
+       , _pfds (0)
+       , _sample_length_us (1e6 / 48000.0)
+       , _period_length_us (1.024e6 / 48000.0)
+       , _samples_per_period (1024)
+       , _rb (0)
+{
+       pthread_mutex_init (&_notify_mutex, 0);
+       pthread_cond_init (&_notify_ready, 0);
+
+       // MIDI (hw port) 31.25 kbaud
+       // worst case here is  8192 SPP and 8KSPS for which we'd need
+       // 4000 bytes sans MidiEventHeader.
+       // since we're not always in sync, let's use 4096.
+       _rb = new RingBuffer<uint8_t>(4096 + 4096 * sizeof(MidiEventHeader));
+}
+
+AlsaMidiIO::~AlsaMidiIO ()
+{
+       delete _rb;
+       pthread_mutex_destroy (&_notify_mutex);
+       pthread_cond_destroy (&_notify_ready);
+       free (_pfds);
+}
+
+static void * pthread_process (void *arg)
+{
+       AlsaMidiIO *d = static_cast<AlsaMidiIO *>(arg);
+       d->main_process_thread ();
+       pthread_exit (0);
+       return 0;
+}
+
+int
+AlsaMidiIO::start ()
+{
+       if (_realtime_pthread_create (SCHED_FIFO, -21, 100000,
+                               &_main_thread, pthread_process, this))
+       {
+               if (pthread_create (&_main_thread, NULL, pthread_process, this)) {
+                       PBD::error << _("AlsaMidiIO: Failed to create process thread.") << endmsg;
+                       return -1;
+               } else {
+                       PBD::warning << _("AlsaMidiIO: Cannot acquire realtime permissions.") << endmsg;
+               }
+       }
+       int timeout = 5000;
+       while (!_running && --timeout > 0) { Glib::usleep (1000); }
+       if (timeout == 0 || !_running) {
+               return -1;
+       }
+       return 0;
+}
+
+int
+AlsaMidiIO::stop ()
+{
+       void *status;
+       if (!_running) {
+               return 0;
+       }
+
+       _running = false;
+
+       pthread_mutex_lock (&_notify_mutex);
+       pthread_cond_signal (&_notify_ready);
+       pthread_mutex_unlock (&_notify_mutex);
+
+       if (pthread_join (_main_thread, &status)) {
+               PBD::error << _("AlsaMidiIO: Failed to terminate.") << endmsg;
+               return -1;
+       }
+       return 0;
+}
+
+void
+AlsaMidiIO::setup_timing (const size_t samples_per_period, const float samplerate)
+{
+       _period_length_us = (double) samples_per_period * 1e6 / samplerate;
+       _sample_length_us = 1e6 / samplerate;
+       _samples_per_period = samples_per_period;
+}
+
+void
+AlsaMidiIO::sync_time (const uint64_t tme)
+{
+       // TODO consider a PLL, if this turns out to be the bottleneck for jitter
+       // also think about using
+       // snd_pcm_status_get_tstamp() and snd_rawmidi_status_get_tstamp()
+       // instead of monotonic clock.
+#ifdef DEBUG_TIMING
+       double tdiff = (_clock_monotonic + _period_length_us - tme) / 1000.0;
+       if (abs(tdiff) >= .05) {
+               printf("AlsaMidiIO MJ: %.1f ms\n", tdiff);
+       }
+#endif
+       _clock_monotonic = tme;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+AlsaMidiOut::AlsaMidiOut ()
+       : AlsaMidiIO ()
+{
+}
+
+int
+AlsaMidiOut::send_event (const pframes_t time, const uint8_t *data, const size_t size)
+{
+       const uint32_t  buf_size = sizeof (MidiEventHeader) + size;
+       if (_rb->write_space() < buf_size) {
+               _DEBUGPRINT("AlsaMidiOut: ring buffer overflow\n");
+               return -1;
+       }
+       struct MidiEventHeader h (_clock_monotonic + time * _sample_length_us, size);
+       _rb->write ((uint8_t*) &h, sizeof(MidiEventHeader));
+       _rb->write (data, size);
+
+       if (pthread_mutex_trylock (&_notify_mutex) == 0) {
+               pthread_cond_signal (&_notify_ready);
+               pthread_mutex_unlock (&_notify_mutex);
+       }
+       return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+AlsaMidiIn::AlsaMidiIn ()
+       : AlsaMidiIO ()
+{
+}
+
+size_t
+AlsaMidiIn::recv_event (pframes_t &time, uint8_t *data, size_t &size)
+{
+       const uint32_t read_space = _rb->read_space();
+       struct MidiEventHeader h(0,0);
+
+       if (read_space <= sizeof(MidiEventHeader)) {
+               return 0;
+       }
+
+       RingBuffer<uint8_t>::rw_vector vector;
+       _rb->get_read_vector(&vector);
+       if (vector.len[0] >= sizeof(MidiEventHeader)) {
+               memcpy((uint8_t*)&h, vector.buf[0], sizeof(MidiEventHeader));
+       } else {
+               if (vector.len[0] > 0) {
+                       memcpy ((uint8_t*)&h, vector.buf[0], vector.len[0]);
+               }
+               memcpy (((uint8_t*)&h) + vector.len[0], vector.buf[1], sizeof(MidiEventHeader) - vector.len[0]);
+       }
+
+       if (h.time >= _clock_monotonic + _period_length_us ) {
+#ifdef DEBUG_TIMING
+               printf("AlsaMidiIn DEBUG: POSTPONE EVENT TO NEXT CYCLE: %.1f spl\n", ((h.time - _clock_monotonic) / _sample_length_us));
+#endif
+               return 0;
+       }
+       _rb->increment_read_idx (sizeof(MidiEventHeader));
+
+       assert (h.size > 0);
+       if (h.size > size) {
+               _DEBUGPRINT("AlsaMidiIn::recv_event MIDI event too large!\n");
+               _rb->increment_read_idx (h.size);
+               return 0;
+       }
+       if (_rb->read (&data[0], h.size) != h.size) {
+               _DEBUGPRINT("AlsaMidiIn::recv_event Garbled MIDI EVENT DATA!!\n");
+               return 0;
+       }
+       if (h.time < _clock_monotonic) {
+#ifdef DEBUG_TIMING
+               printf("AlsaMidiIn DEBUG: MIDI TIME < 0 %.1f spl\n", ((_clock_monotonic - h.time) / -_sample_length_us));
+#endif
+               time = 0;
+       } else if (h.time >= _clock_monotonic + _period_length_us ) {
+#ifdef DEBUG_TIMING
+               printf("AlsaMidiIn DEBUG: MIDI TIME > PERIOD %.1f spl\n", ((h.time - _clock_monotonic) / _sample_length_us));
+#endif
+               time = _samples_per_period - 1;
+       } else {
+               time = floor ((h.time - _clock_monotonic) / _sample_length_us);
+       }
+       assert(time < _samples_per_period);
+       size = h.size;
+       return h.size;
+}
+
+int
+AlsaMidiIn::queue_event (const uint64_t time, const uint8_t *data, const size_t size) {
+       const uint32_t  buf_size = sizeof(MidiEventHeader) + size;
+
+       if (size == 0) {
+               return -1;
+       }
+       if (_rb->write_space() < buf_size) {
+               _DEBUGPRINT("AlsaMidiIn: ring buffer overflow\n");
+               return -1;
+       }
+       struct MidiEventHeader h (time, size);
+       _rb->write ((uint8_t*) &h, sizeof(MidiEventHeader));
+       _rb->write (data, size);
+       return 0;
+}
diff --git a/libs/backends/alsa/alsa_midi.h b/libs/backends/alsa/alsa_midi.h
new file mode 100644 (file)
index 0000000..7da991d
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2014 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __libbackend_alsa_midi_h__
+#define __libbackend_alsa_midi_h__
+
+#include <stdint.h>
+#include <poll.h>
+#include <pthread.h>
+
+#include "pbd/ringbuffer.h"
+#include "ardour/types.h"
+
+namespace ARDOUR {
+
+class AlsaMidiIO {
+public:
+       AlsaMidiIO ();
+       virtual ~AlsaMidiIO ();
+
+       int state (void) const { return _state; }
+       int start ();
+       int stop ();
+
+       void setup_timing (const size_t samples_per_period, const float samplerate);
+       void sync_time(uint64_t);
+
+       virtual void* main_process_thread () = 0;
+
+protected:
+       pthread_t _main_thread;
+       pthread_mutex_t _notify_mutex;
+       pthread_cond_t _notify_ready;
+
+       int  _state;
+       bool  _running;
+
+       int _npfds;
+       struct pollfd *_pfds;
+
+       double _sample_length_us;
+       double _period_length_us;
+       size_t _samples_per_period;
+       uint64_t _clock_monotonic;
+
+       struct MidiEventHeader {
+               uint64_t time;
+               size_t size;
+               MidiEventHeader(const uint64_t t, const size_t s)
+                       : time(t)
+                       , size(s) {}
+       };
+
+       RingBuffer<uint8_t>* _rb;
+
+protected:
+       virtual void init (const char *device_name, const bool input) = 0;
+
+};
+
+class AlsaMidiOut : virtual public AlsaMidiIO
+{
+public:
+       AlsaMidiOut ();
+
+       int send_event (const pframes_t, const uint8_t *, const size_t);
+};
+
+class AlsaMidiIn : virtual public AlsaMidiIO
+{
+public:
+       AlsaMidiIn ();
+
+       size_t recv_event (pframes_t &, uint8_t *, size_t &);
+
+protected:
+       int queue_event (const uint64_t, const uint8_t *, const size_t);
+};
+
+} // namespace
+
+#endif
index b3a5720aa27632e2e510f10f188658d1ab2d325d..e4678ba26906a13eda1efc4a284fe33f41bbd667 100644 (file)
  */
 
 #include <unistd.h>
-
 #include <glibmm.h>
 
+#include "select_sleep.h"
 #include "alsa_rawmidi.h"
-#include "rt_thread.h"
 
 #include "pbd/error.h"
 #include "i18n.h"
@@ -40,17 +39,9 @@ using namespace ARDOUR;
 #endif
 
 AlsaRawMidiIO::AlsaRawMidiIO (const char *device, const bool input)
-       : _state (-1)
-       , _running (false)
+       : AlsaMidiIO()
        , _device (0)
-       , _pfds (0)
-       , _sample_length_us (1e6 / 48000.0)
-       , _period_length_us (1.024e6 / 48000.0)
-       , _samples_per_period (1024)
-       , _rb (0)
 {
-       pthread_mutex_init (&_notify_mutex, 0);
-       pthread_cond_init (&_notify_ready, 0);
        init (device, input);
 }
 
@@ -61,10 +52,6 @@ AlsaRawMidiIO::~AlsaRawMidiIO ()
                snd_rawmidi_close (_device);
                _device = 0;
        }
-       delete _rb;
-       pthread_mutex_destroy (&_notify_mutex);
-       pthread_cond_destroy (&_notify_ready);
-       free (_pfds);
 }
 
 void
@@ -87,12 +74,6 @@ AlsaRawMidiIO::init (const char *device_name, const bool input)
        _pfds = (struct pollfd*) malloc (_npfds * sizeof(struct pollfd));
        snd_rawmidi_poll_descriptors (_device, _pfds, _npfds);
 
-       // MIDI (hw port) 31.25 kbaud
-       // worst case here is  8192 SPP and 8KSPS for which we'd need
-       // 4000 bytes sans MidiEventHeader.
-       // since we're not always in sync, let's use 4096.
-       _rb = new RingBuffer<uint8_t>(4096 + 4096 * sizeof(MidiEventHeader));
-
 #if 0
        _state = 0;
 #else
@@ -124,121 +105,14 @@ initerr:
        return;
 }
 
-static void * pthread_process (void *arg)
-{
-       AlsaRawMidiIO *d = static_cast<AlsaRawMidiIO *>(arg);
-       d->main_process_thread ();
-       pthread_exit (0);
-       return 0;
-}
-
-int
-AlsaRawMidiIO::start ()
-{
-       if (_realtime_pthread_create (SCHED_FIFO, -21, 100000,
-                               &_main_thread, pthread_process, this))
-       {
-               if (pthread_create (&_main_thread, NULL, pthread_process, this)) {
-                       PBD::error << _("AlsaRawMidiIO: Failed to create process thread.") << endmsg;
-                       return -1;
-               } else {
-                       PBD::warning << _("AlsaRawMidiIO: Cannot acquire realtime permissions.") << endmsg;
-               }
-       }
-       int timeout = 5000;
-       while (!_running && --timeout > 0) { Glib::usleep (1000); }
-       if (timeout == 0 || !_running) {
-               return -1;
-       }
-       return 0;
-}
-
-int
-AlsaRawMidiIO::stop ()
-{
-       void *status;
-       if (!_running) {
-               return 0;
-       }
-
-       _running = false;
-
-       pthread_mutex_lock (&_notify_mutex);
-       pthread_cond_signal (&_notify_ready);
-       pthread_mutex_unlock (&_notify_mutex);
-
-       if (pthread_join (_main_thread, &status)) {
-               PBD::error << _("AlsaRawMidiIO: Failed to terminate.") << endmsg;
-               return -1;
-       }
-       return 0;
-}
-
-void
-AlsaRawMidiIO::setup_timing (const size_t samples_per_period, const float samplerate)
-{
-       _period_length_us = (double) samples_per_period * 1e6 / samplerate;
-       _sample_length_us = 1e6 / samplerate;
-       _samples_per_period = samples_per_period;
-}
-
-void
-AlsaRawMidiIO::sync_time (const uint64_t tme)
-{
-       // TODO consider a PLL, if this turns out to be the bottleneck for jitter
-       // also think about using
-       // snd_pcm_status_get_tstamp() and snd_rawmidi_status_get_tstamp()
-       // instead of monotonic clock.
-#ifdef DEBUG_TIMING
-       double tdiff = (_clock_monotonic + _period_length_us - tme) / 1000.0;
-       if (abs(tdiff) >= .05) {
-               printf("AlsaRawMidiIO MJ: %.1f ms\n", tdiff);
-       }
-#endif
-       _clock_monotonic = tme;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-// select sleeps _at most_ (compared to usleep() which sleeps at least)
-static void select_sleep (uint32_t usec) {
-       if (usec <= 10) return;
-       fd_set fd;
-       int max_fd=0;
-       struct timeval tv;
-       tv.tv_sec = usec / 1000000;
-       tv.tv_usec = usec % 1000000;
-       FD_ZERO (&fd);
-       select (max_fd, &fd, NULL, NULL, &tv);
-}
-
 ///////////////////////////////////////////////////////////////////////////////
 
 AlsaRawMidiOut::AlsaRawMidiOut (const char *device)
                : AlsaRawMidiIO (device, false)
+               , AlsaMidiOut ()
 {
 }
 
-
-int
-AlsaRawMidiOut::send_event (const pframes_t time, const uint8_t *data, const size_t size)
-{
-       const uint32_t  buf_size = sizeof (MidiEventHeader) + size;
-       if (_rb->write_space() < buf_size) {
-               _DEBUGPRINT("AlsaRawMidiOut: ring buffer overflow\n");
-               return -1;
-       }
-       struct MidiEventHeader h (_clock_monotonic + time * _sample_length_us, size);
-       _rb->write ((uint8_t*) &h, sizeof(MidiEventHeader));
-       _rb->write (data, size);
-
-       if (pthread_mutex_trylock (&_notify_mutex) == 0) {
-               pthread_cond_signal (&_notify_ready);
-               pthread_mutex_unlock (&_notify_mutex);
-       }
-       return 0;
-}
-
 void *
 AlsaRawMidiOut::main_process_thread ()
 {
@@ -351,6 +225,7 @@ retry:
 
 AlsaRawMidiIn::AlsaRawMidiIn (const char *device)
                : AlsaRawMidiIO (device, true)
+               , AlsaMidiIn ()
                , _event(0,0)
                , _first_time(true)
                , _unbuffered_bytes(0)
@@ -360,70 +235,6 @@ AlsaRawMidiIn::AlsaRawMidiIn (const char *device)
 {
 }
 
-size_t
-AlsaRawMidiIn::recv_event (pframes_t &time, uint8_t *data, size_t &size)
-{
-       const uint32_t read_space = _rb->read_space();
-       struct MidiEventHeader h(0,0);
-
-       if (read_space <= sizeof(MidiEventHeader)) {
-               return 0;
-       }
-
-#if 1
-       // check if event is in current cycle
-       RingBuffer<uint8_t>::rw_vector vector;
-       _rb->get_read_vector(&vector);
-       if (vector.len[0] >= sizeof(MidiEventHeader)) {
-               memcpy((uint8_t*)&h, vector.buf[0], sizeof(MidiEventHeader));
-       } else {
-               if (vector.len[0] > 0) {
-                       memcpy ((uint8_t*)&h, vector.buf[0], vector.len[0]);
-               }
-               memcpy (((uint8_t*)&h) + vector.len[0], vector.buf[1], sizeof(MidiEventHeader) - vector.len[0]);
-       }
-
-       if (h.time >= _clock_monotonic + _period_length_us ) {
-#ifdef DEBUG_TIMING
-               printf("AlsaRawMidiIn DEBUG: POSTPONE EVENT TO NEXT CYCLE: %.1f spl\n", ((h.time - _clock_monotonic) / _sample_length_us));
-#endif
-               return 0;
-       }
-       _rb->increment_read_idx (sizeof(MidiEventHeader));
-#else
-       if (_rb->read ((uint8_t*)&h, sizeof(MidiEventHeader)) != sizeof(MidiEventHeader)) {
-               _DEBUGPRINT("AlsaRawMidiIn::recv_event Garbled MIDI EVENT HEADER!!\n");
-               return 0;
-       }
-#endif
-       assert (h.size > 0);
-       if (h.size > size) {
-               _DEBUGPRINT("AlsaRawMidiIn::recv_event MIDI event too large!\n");
-               _rb->increment_read_idx (h.size);
-               return 0;
-       }
-       if (_rb->read (&data[0], h.size) != h.size) {
-               _DEBUGPRINT("AlsaRawMidiIn::recv_event Garbled MIDI EVENT DATA!!\n");
-               return 0;
-       }
-       if (h.time < _clock_monotonic) {
-#ifdef DEBUG_TIMING
-               printf("AlsaRawMidiIn DEBUG: MIDI TIME < 0 %.1f spl\n", ((_clock_monotonic - h.time) / -_sample_length_us));
-#endif
-               time = 0;
-       } else if (h.time >= _clock_monotonic + _period_length_us ) {
-#ifdef DEBUG_TIMING
-               printf("AlsaRawMidiIn DEBUG: MIDI TIME > PERIOD %.1f spl\n", ((h.time - _clock_monotonic) / _sample_length_us));
-#endif
-               time = _samples_per_period - 1;
-       } else {
-               time = floor ((h.time - _clock_monotonic) / _sample_length_us);
-       }
-       assert(time < _samples_per_period);
-       size = h.size;
-       return h.size;
-}
-
 void *
 AlsaRawMidiIn::main_process_thread ()
 {
@@ -485,20 +296,8 @@ AlsaRawMidiIn::main_process_thread ()
 
 int
 AlsaRawMidiIn::queue_event (const uint64_t time, const uint8_t *data, const size_t size) {
-       const uint32_t  buf_size = sizeof(MidiEventHeader) + size;
        _event._pending = false;
-
-       if (size == 0) {
-               return -1;
-       }
-       if (_rb->write_space() < buf_size) {
-               _DEBUGPRINT("AlsaRawMidiIn: ring buffer overflow\n");
-               return -1;
-       }
-       struct MidiEventHeader h (time, size);
-       _rb->write ((uint8_t*) &h, sizeof(MidiEventHeader));
-       _rb->write (data, size);
-       return 0;
+       return AlsaMidiIn::queue_event(time, data, size);
 }
 
 void
index 896ae072468c311353903c31a466667780ed18fc..5d9a86c8dbd9acbd80c7c8621b1225d5113faf32 100644 (file)
 
 #include "pbd/ringbuffer.h"
 #include "ardour/types.h"
+#include "alsa_midi.h"
 
 namespace ARDOUR {
 
-class AlsaRawMidiIO {
+class AlsaRawMidiIO : virtual public AlsaMidiIO {
 public:
        AlsaRawMidiIO (const char *device, const bool input);
        virtual ~AlsaRawMidiIO ();
 
-       int state (void) const { return _state; }
-       int start ();
-       int stop ();
-
-       void setup_timing (const size_t samples_per_period, const float samplerate);
-       void sync_time(uint64_t);
-
-       virtual void* main_process_thread () = 0;
-
 protected:
-       pthread_t _main_thread;
-       pthread_mutex_t _notify_mutex;
-       pthread_cond_t _notify_ready;
-
-       int  _state;
-       bool  _running;
-
        snd_rawmidi_t *_device;
-       int _npfds;
-       struct pollfd *_pfds;
-
-       double _sample_length_us;
-       double _period_length_us;
-       size_t _samples_per_period;
-       uint64_t _clock_monotonic;
-
-       struct MidiEventHeader {
-               uint64_t time;
-               size_t size;
-               MidiEventHeader(const uint64_t t, const size_t s)
-                       : time(t)
-                       , size(s) {}
-       };
-
-       RingBuffer<uint8_t>* _rb;
 
 private:
        void init (const char *device_name, const bool input);
-
 };
 
-class AlsaRawMidiOut : public AlsaRawMidiIO
+class AlsaRawMidiOut : public AlsaRawMidiIO, public AlsaMidiOut
 {
 public:
        AlsaRawMidiOut (const char *device);
-
        void* main_process_thread ();
-       int send_event (const pframes_t, const uint8_t *, const size_t);
 };
 
-class AlsaRawMidiIn : public AlsaRawMidiIO
+class AlsaRawMidiIn : public AlsaRawMidiIO, public AlsaMidiIn
 {
 public:
        AlsaRawMidiIn (const char *device);
 
        void* main_process_thread ();
 
-       size_t recv_event (pframes_t &, uint8_t *, size_t &);
-
-private:
+protected:
        int queue_event (const uint64_t, const uint8_t *, const size_t);
+private:
        void parse_events (const uint64_t, const uint8_t *, const size_t);
        bool process_byte (const uint64_t, const uint8_t);
 
diff --git a/libs/backends/alsa/alsa_sequencer.cc b/libs/backends/alsa/alsa_sequencer.cc
new file mode 100644 (file)
index 0000000..aa0aac0
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2014 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <unistd.h>
+#include <glibmm.h>
+
+#include "select_sleep.h"
+#include "alsa_sequencer.h"
+
+#include "pbd/error.h"
+#include "i18n.h"
+
+using namespace ARDOUR;
+
+/* max bytes per individual midi-event
+ * events larger than this are ignored */
+#define MaxAlsaSeqEventSize (64)
+
+#ifndef NDEBUG
+#define _DEBUGPRINT(STR) fprintf(stderr, STR);
+#else
+#define _DEBUGPRINT(STR) ;
+#endif
+
+AlsaSeqMidiIO::AlsaSeqMidiIO (const char *device, const bool input)
+       : AlsaMidiIO()
+       , _seq (0)
+{
+       init (device, input);
+}
+
+AlsaSeqMidiIO::~AlsaSeqMidiIO ()
+{
+       if (_seq) {
+               snd_seq_close (_seq);
+               _seq = 0;
+       }
+}
+
+void
+AlsaSeqMidiIO::init (const char *device_name, const bool input)
+{
+       if (snd_seq_open (&_seq, "hw",
+                               input ? SND_SEQ_OPEN_INPUT : SND_SEQ_OPEN_OUTPUT, 0) < 0)
+       {
+               _seq = 0;
+               return;
+       }
+
+       if (snd_seq_set_client_name (_seq, "Ardour")) {
+               _DEBUGPRINT("AlsaSeqMidiIO: cannot set client name.\n");
+               goto initerr;
+       }
+
+       _port = snd_seq_create_simple_port (_seq, "port", SND_SEQ_PORT_CAP_NO_EXPORT |
+                       (input ? SND_SEQ_PORT_CAP_WRITE : SND_SEQ_PORT_CAP_READ),
+                       SND_SEQ_PORT_TYPE_APPLICATION);
+
+       if (_port < 0) {
+               _DEBUGPRINT("AlsaSeqMidiIO: cannot create port.\n");
+               goto initerr;
+       }
+
+       _npfds = snd_seq_poll_descriptors_count (_seq, input ? POLLIN : POLLOUT);
+       if (_npfds < 1) {
+               _DEBUGPRINT("AlsaSeqMidiIO: no poll descriptor(s).\n");
+               goto initerr;
+       }
+       _pfds = (struct pollfd*) malloc (_npfds * sizeof(struct pollfd));
+       snd_seq_poll_descriptors (_seq, _pfds, _npfds, input ? POLLIN : POLLOUT);
+
+
+       snd_seq_addr_t port;
+       if (snd_seq_parse_address (_seq, &port, device_name) < 0) {
+               _DEBUGPRINT("AlsaSeqMidiIO: cannot resolve hardware port.\n");
+               goto initerr;
+       }
+
+       if (input) {
+               if (snd_seq_connect_from (_seq, _port, port.client, port.port) < 0) {
+                       _DEBUGPRINT("AlsaSeqMidiIO: cannot connect input port.\n");
+                       goto initerr;
+               }
+       } else {
+               if (snd_seq_connect_to (_seq, _port, port.client, port.port) < 0) {
+                       _DEBUGPRINT("AlsaSeqMidiIO: cannot connect output port.\n");
+                       goto initerr;
+               }
+       }
+
+       snd_seq_nonblock(_seq, 1);
+
+       _state = 0;
+       return;
+
+initerr:
+       PBD::error << _("AlsaSeqMidiIO: Device initialization failed.") << endmsg;
+       snd_seq_close (_seq);
+       _seq = 0;
+       return;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+AlsaSeqMidiOut::AlsaSeqMidiOut (const char *device)
+               : AlsaSeqMidiIO (device, false)
+               , AlsaMidiOut ()
+{
+}
+
+void *
+AlsaSeqMidiOut::main_process_thread ()
+{
+       _running = true;
+       bool need_drain = false;
+       snd_midi_event_t *alsa_codec = NULL;
+       snd_midi_event_new (MaxAlsaSeqEventSize, &alsa_codec);
+       pthread_mutex_lock (&_notify_mutex);
+       while (_running) {
+               bool have_data = false;
+               struct MidiEventHeader h(0,0);
+               uint8_t data[MaxAlsaSeqEventSize];
+
+               const uint32_t read_space = _rb->read_space();
+
+               if (read_space > sizeof(MidiEventHeader)) {
+                       if (_rb->read ((uint8_t*)&h, sizeof(MidiEventHeader)) != sizeof(MidiEventHeader)) {
+                               _DEBUGPRINT("AlsaSeqMidiOut: Garbled MIDI EVENT HEADER!!\n");
+                               break;
+                       }
+                       assert (read_space >= h.size);
+                       if (h.size > MaxAlsaSeqEventSize) {
+                               _rb->increment_read_idx (h.size);
+                               _DEBUGPRINT("AlsaSeqMidiOut: MIDI event too large!\n");
+                               continue;
+                       }
+                       if (_rb->read (&data[0], h.size) != h.size) {
+                               _DEBUGPRINT("AlsaSeqMidiOut: Garbled MIDI EVENT DATA!!\n");
+                               break;
+                       }
+                       have_data = true;
+               }
+
+               if (!have_data) {
+                       if (need_drain) {
+                               snd_seq_drain_output (_seq);
+                               need_drain = false;
+                       }
+                       pthread_cond_wait (&_notify_ready, &_notify_mutex);
+                       continue;
+               }
+
+               snd_seq_event_t alsa_event;
+               snd_seq_ev_clear (&alsa_event);
+               snd_midi_event_reset_encode (alsa_codec);
+               if (!snd_midi_event_encode (alsa_codec, data, h.size, &alsa_event)) {
+                       PBD::error << _("AlsaSeqMidiOut: Invalid Midi Event.") << endmsg;
+                       continue;
+               }
+
+               snd_seq_ev_set_source (&alsa_event, _port);
+               snd_seq_ev_set_subs (&alsa_event);
+               snd_seq_ev_set_direct (&alsa_event);
+
+               uint64_t now = g_get_monotonic_time();
+               while (h.time > now + 500) {
+                       if (need_drain) {
+                               snd_seq_drain_output (_seq);
+                               need_drain = false;
+                       } else {
+                               select_sleep(h.time - now);
+                       }
+                       now = g_get_monotonic_time();
+               }
+
+retry:
+               int perr = poll (_pfds, _npfds, 10 /* ms */);
+               if (perr < 0) {
+                       PBD::error << _("AlsaSeqMidiOut: Error polling device. Terminating Midi Thread.") << endmsg;
+                       break;
+               }
+               if (perr == 0) {
+                       _DEBUGPRINT("AlsaSeqMidiOut: poll() timed out.\n");
+                       goto retry;
+               }
+
+               ssize_t err = snd_seq_event_output(_seq, &alsa_event);
+
+               if ((err == -EAGAIN)) {
+                       snd_seq_drain_output (_seq);
+                       goto retry;
+               }
+               if (err == -EWOULDBLOCK) {
+                       select_sleep (1000);
+                       goto retry;
+               }
+               if (err < 0) {
+                       PBD::error << _("AlsaSeqMidiOut: write failed. Terminating Midi Thread.") << endmsg;
+                       break;
+               }
+               need_drain = true;
+       }
+
+       pthread_mutex_unlock (&_notify_mutex);
+
+       if (alsa_codec) {
+               snd_midi_event_free(alsa_codec);
+       }
+       _DEBUGPRINT("AlsaSeqMidiOut: MIDI OUT THREAD STOPPED\n");
+       return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+AlsaSeqMidiIn::AlsaSeqMidiIn (const char *device)
+               : AlsaSeqMidiIO (device, true)
+               , AlsaMidiIn ()
+{
+}
+
+void *
+AlsaSeqMidiIn::main_process_thread ()
+{
+       _running = true;
+       bool do_poll = true;
+       snd_midi_event_t *alsa_codec = NULL;
+       snd_midi_event_new (MaxAlsaSeqEventSize, &alsa_codec);
+
+       while (_running) {
+
+               if (do_poll) {
+                       snd_seq_poll_descriptors (_seq, _pfds, _npfds, POLLIN);
+                       int perr = poll (_pfds, _npfds, 100 /* ms */);
+
+                       if (perr < 0) {
+                               PBD::error << _("AlsaSeqMidiIn: Error polling device. Terminating Midi Thread.") << endmsg;
+                               break;
+                       }
+                       if (perr == 0) {
+                               continue;
+                       }
+               }
+
+               snd_seq_event_t *event;
+               uint64_t time = g_get_monotonic_time();
+               ssize_t err = snd_seq_event_input (_seq, &event);
+
+               if ((err == -EAGAIN) || (err == -EWOULDBLOCK)) {
+                       do_poll = true;
+                       continue;
+               }
+               if (err == -ENOSPC) {
+                       PBD::error << _("AlsaSeqMidiIn: FIFO overrun.") << endmsg;
+                       do_poll = true;
+                       continue;
+               }
+               if (err < 0) {
+                       PBD::error << _("AlsaSeqMidiIn: read error. Terminating Midi") << endmsg;
+                       break;
+               }
+
+               uint8_t data[MaxAlsaSeqEventSize];
+               snd_midi_event_reset_decode (alsa_codec);
+               ssize_t size = snd_midi_event_decode (alsa_codec, data, sizeof(data), event);
+
+               if (size > 0) {
+                       queue_event (time, data, size);
+               }
+               do_poll = (0 == err);
+       }
+
+       if (alsa_codec) {
+               snd_midi_event_free(alsa_codec);
+       }
+       _DEBUGPRINT("AlsaSeqMidiIn: MIDI IN THREAD STOPPED\n");
+       return 0;
+}
diff --git a/libs/backends/alsa/alsa_sequencer.h b/libs/backends/alsa/alsa_sequencer.h
new file mode 100644 (file)
index 0000000..bc00751
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2014 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __libbackend_alsa_sequencer_h__
+#define __libbackend_alsa_sequencer_h__
+
+#include <stdint.h>
+#include <poll.h>
+#include <pthread.h>
+
+#include <alsa/asoundlib.h>
+
+#include "pbd/ringbuffer.h"
+#include "ardour/types.h"
+#include "alsa_midi.h"
+
+namespace ARDOUR {
+
+class AlsaSeqMidiIO : virtual public AlsaMidiIO {
+public:
+       AlsaSeqMidiIO (const char *port_name, const bool input);
+       virtual ~AlsaSeqMidiIO ();
+
+protected:
+       snd_seq_t *_seq;
+       int _port;
+
+private:
+       void init (const char *device_name, const bool input);
+};
+
+class AlsaSeqMidiOut : public AlsaSeqMidiIO, public AlsaMidiOut
+{
+public:
+       AlsaSeqMidiOut (const char *port_name);
+       void* main_process_thread ();
+};
+
+class AlsaSeqMidiIn : public AlsaSeqMidiIO, public AlsaMidiIn
+{
+public:
+       AlsaSeqMidiIn (const char *port_name);
+
+       void* main_process_thread ();
+};
+
+} // namespace
+
+#endif
diff --git a/libs/backends/alsa/select_sleep.h b/libs/backends/alsa/select_sleep.h
new file mode 100644 (file)
index 0000000..ec6a93d
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2004,2014 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <stdint.h>
+#include <sys/select.h>
+
+/* select() sleeps _at most_ a given time.
+ * (compared to usleep() or nanosleep() which sleep at least a given time)
+ */
+static void select_sleep (uint64_t usec) {
+       if (usec <= 10) return;
+       fd_set fd;
+       int max_fd=0;
+       struct timeval tv;
+       tv.tv_sec = usec / 1000000;
+       tv.tv_usec = usec % 1000000;
+       FD_ZERO (&fd);
+       select (max_fd, &fd, NULL, NULL, &tv);
+       // on Linux, tv reflects the actual time slept.
+}
index 0e539e5718691f4c0007616947b386392e8bf083..173b6e08909a98c9e2a2066177bd4d04cd4c9e35 100644 (file)
@@ -25,7 +25,9 @@ def build(bld):
     obj = bld(features = 'cxx cxxshlib')
     obj.source = [
             'alsa_audiobackend.cc',
+            'alsa_midi.cc',
             'alsa_rawmidi.cc',
+            'alsa_sequencer.cc',
             'zita-alsa-pcmi.cc',
             ]
     obj.includes = ['.']