aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/SDK/dsp_test
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/SDK/dsp_test
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Plugins/SDK/dsp_test')
-rw-r--r--Src/Plugins/SDK/dsp_test/RESOURCE.H18
-rw-r--r--Src/Plugins/SDK/dsp_test/SCRIPT1.RC97
-rw-r--r--Src/Plugins/SDK/dsp_test/dsp_ns.txt23
-rw-r--r--Src/Plugins/SDK/dsp_test/dsp_test.c478
-rw-r--r--Src/Plugins/SDK/dsp_test/dsp_test.sln24
-rw-r--r--Src/Plugins/SDK/dsp_test/dsp_test.vcxproj227
-rw-r--r--Src/Plugins/SDK/dsp_test/dsp_test.vcxproj.filters32
7 files changed, 899 insertions, 0 deletions
diff --git a/Src/Plugins/SDK/dsp_test/RESOURCE.H b/Src/Plugins/SDK/dsp_test/RESOURCE.H
new file mode 100644
index 00000000..a9f020ac
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/RESOURCE.H
@@ -0,0 +1,18 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by Script1.rc
+//
+#define IDD_DIALOG1 101
+#define IDC_BOOGA 102
+#define IDC_SLIDER1 1000
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 104
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/Src/Plugins/SDK/dsp_test/SCRIPT1.RC b/Src/Plugins/SDK/dsp_test/SCRIPT1.RC
new file mode 100644
index 00000000..159d286a
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/SCRIPT1.RC
@@ -0,0 +1,97 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_DIALOG1 DIALOGEX 0, 0, 28, 138
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+EXSTYLE WS_EX_TOOLWINDOW
+CAPTION "Tempo"
+FONT 8, "MS Sans Serif"
+BEGIN
+ CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS |
+ TBS_VERT | WS_TABSTOP,3,0,20,128
+ LTEXT "100%",IDC_BOOGA,3,127,21,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_DIALOG1, DIALOG
+ BEGIN
+ RIGHTMARGIN, 21
+ BOTTOMMARGIN, 12
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/Src/Plugins/SDK/dsp_test/dsp_ns.txt b/Src/Plugins/SDK/dsp_test/dsp_ns.txt
new file mode 100644
index 00000000..b9a7332d
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/dsp_ns.txt
@@ -0,0 +1,23 @@
+Nullsoft DSP Effects Plug-in 0.35 for Winamp
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+This plug-in lets you use the following effects on
+your sound in Winamp:
+
+Echo: adds a simple echo effect to the music
+Voice Removal: only for Stereo sounds, this attempts
+ to remove the center channel. Sounds pretty good on
+ about 1% of music out there, the other 99% sounds
+ like crap :)
+Pitch/Tempo control: ownage :)
+
+Once you install this nugget, fire up Winamp, open
+up the preferences (CTRL+P), go to the Plugins/DSP&Effect
+section, and select 'Nullsoft DSP Effects' as
+the new DPS Plug-in. You can then select from the three
+above effects.
+
+Limitations:
+ This plug-in only effects audio that is 16 bit.
+ Note that this plug-in won't work with passive plug-ins
+ such as CD audio.
diff --git a/Src/Plugins/SDK/dsp_test/dsp_test.c b/Src/Plugins/SDK/dsp_test/dsp_test.c
new file mode 100644
index 00000000..1c9fa37f
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/dsp_test.c
@@ -0,0 +1,478 @@
+// Winamp test dsp library 0.9 for Winamp 2
+// Copyright (C) 1997, Justin Frankel/Nullsoft
+// Feel free to base any plugins on this "framework"...
+
+#include <windows.h>
+#include <commctrl.h>
+#include <math.h>
+#include "../Winamp/dsp.h"
+#include "resource.h"
+
+// avoid stupid CRT silliness
+//BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
+//{
+// return TRUE;
+//}
+
+
+// pitch value
+int g_pitch=100;
+
+// pitch control window
+HWND pitch_control_hwnd;
+
+// auxilary pitch buffer (for resampling from)
+short *pitch_buffer=NULL;
+int pitch_buffer_len=0;
+int quit_pitch=0;
+
+// module getter.
+winampDSPModule *getModule(int which);
+
+void config(struct winampDSPModule *this_mod);
+int init(struct winampDSPModule *this_mod);
+int initpitch(struct winampDSPModule *this_mod);
+void quit(struct winampDSPModule *this_mod);
+void quitpitch(struct winampDSPModule *this_mod);
+int modify_samples1(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate);
+int modify_samples2(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate);
+int modify_samples3(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate);
+int modify_samples_lopass(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate);
+int modify_samples_hipass(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate);
+
+static INT_PTR CALLBACK pitchProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
+
+// Module header, includes version, description, and address of the module retriever function
+typedef struct {
+ int version; // DSP_HDRVER
+ char *description; // description of library
+ winampDSPModule* (*getModule)(int); // module retrieval function
+ int (*sf)(int);
+} winampDSPHeaderEx;
+
+int sf(int v)
+{
+ int res;
+ res = v * (unsigned long)1103515245;
+ res += (unsigned long)13293;
+ res &= (unsigned long)0x7FFFFFFF;
+ res ^= v;
+ return res;
+}
+
+winampDSPHeaderEx hdr = { DSP_HDRVER+1, "Nullsoft DSP v0.35 for Winamp 2ARG", getModule, sf };
+
+
+// first module
+winampDSPModule mod =
+{
+ "Nullsoft Echo v0.2",
+ NULL, // hwndParent
+ NULL, // hDllInstance
+ config,
+ init,
+ modify_samples1,
+ quit
+};
+
+
+// second module
+winampDSPModule mod2 =
+{
+ "Nullsoft Stereo Voice Removal v0.2",
+ NULL, // hwndParent
+ NULL, // hDllInstance
+ config,
+ init,
+ modify_samples2,
+ quit
+};
+
+winampDSPModule mod3 =
+{
+ "Nullsoft Pitch/Tempo Control v0.2",
+ NULL, // hwndParent
+ NULL, // hDllInstance
+ config,
+ initpitch,
+ modify_samples3,
+ quitpitch
+};
+
+winampDSPModule mod4 =
+{
+ "Nullsoft Lowpass Filter v1.0",
+ NULL, // hwndParent
+ NULL, // hDllInstance
+ config,
+ init,
+ modify_samples_lopass,
+ quit
+};
+winampDSPModule mod5 =
+{
+ "Nullsoft Highpass Filter v1.0",
+ NULL, // hwndParent
+ NULL, // hDllInstance
+ config,
+ init,
+ modify_samples_hipass,
+ quit
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+// this is the only exported symbol. returns our main header.
+__declspec( dllexport ) winampDSPHeaderEx *winampDSPGetHeader2()
+{
+ return &hdr;
+}
+#ifdef __cplusplus
+}
+#endif
+
+// getmodule routine from the main header. Returns NULL if an invalid module was requested,
+// otherwise returns either mod1 or mod2 depending on 'which'.
+winampDSPModule *getModule(int which)
+{
+ switch (which)
+ {
+ case 0: return &mod;
+ case 1: return &mod2;
+ case 2: return &mod3;
+// case 3: return &mod4;
+// case 4: return &mod5;
+ default:return NULL;
+ }
+}
+
+// configuration. Passed this_mod, as a "this" parameter. Allows you to make one configuration
+// function that shares code for all your modules (you don't HAVE to use it though, you can make
+// config1(), config2(), etc...)
+void config(struct winampDSPModule *this_mod)
+{
+ MessageBox(this_mod->hwndParent,"This module is Copyright(C) 1997-1999, Nullsoft\n"
+ "Notes:\n"
+ " * 8 bit samples aren't supported.\n"
+ " * Pitch control rules!\n"
+ " * Voice removal sucks (works about 10% of the time)!\n"
+ " * Echo isn't very good!\n"
+ "etc... this is really just a test of the new\n"
+ "DSP plug-in system. Nothing more.",
+ "Configuration",MB_OK);
+}
+
+int init(struct winampDSPModule *this_mod)
+{
+ return 0;
+}
+int initpitch(struct winampDSPModule *this_mod)
+{
+ pitch_buffer_len=0;
+ pitch_buffer=NULL;
+ quit_pitch=0;
+ ShowWindow((pitch_control_hwnd=CreateDialog(this_mod->hDllInstance,MAKEINTRESOURCE(IDD_DIALOG1),this_mod->hwndParent,pitchProc)),SW_SHOW);
+ return 0;
+}
+
+// cleanup (opposite of init()). Destroys the window, unregisters the window class
+void quit(struct winampDSPModule *this_mod)
+{
+}
+
+void quitpitch(struct winampDSPModule *this_mod)
+{
+ if (this_mod == &mod3)
+ {
+ if (pitch_buffer) GlobalFree(pitch_buffer);
+ pitch_buffer_len=0;
+ pitch_buffer=NULL;
+ quit_pitch=1;
+ if (pitch_control_hwnd)
+ {
+ DestroyWindow(pitch_control_hwnd);
+ pitch_control_hwnd=0;
+ }
+
+ }
+}
+
+short echo_buf[65536], echo_buf2[65536];
+
+int modify_samples1(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate)
+{
+ // echo doesn't support 8 bit right now cause I'm lazy.
+ if (bps==16)
+ {
+ int x,s;
+ s = numsamples*nch;
+
+ memcpy(echo_buf2, echo_buf, s*2);
+ memcpy(echo_buf, echo_buf+s, s*2);
+ memcpy(echo_buf+s, echo_buf+s*2, s*2);
+ memcpy(echo_buf+s*2,echo_buf+s*3, s*2);
+ memcpy(echo_buf+s*3,samples, s*2);
+
+ for (x = 0; x < s; x ++)
+ {
+ int s = samples[x]/2+echo_buf2[x]/2;
+ samples[x] = (s>32767?32767:s<-32768?-32768:s);
+ }
+ }
+ return numsamples;
+}
+
+int modify_samples3(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate)
+{
+ int pitch=g_pitch;
+ int rlen =numsamples*bps/8*nch;
+ int index=0, x;
+ int n;
+ int dindex;
+ if (quit_pitch || g_pitch==100) return numsamples;
+ if (g_pitch > 200) g_pitch=200;
+ if (g_pitch < 50) g_pitch=50;
+ pitch = 100000/pitch;
+ n=(numsamples*pitch)/1000;
+ dindex=(numsamples<<11)/n;
+ if (pitch_buffer_len < rlen)
+ {
+ pitch_buffer_len = rlen;
+ GlobalFree(pitch_buffer);
+ pitch_buffer=GlobalAlloc(GMEM_FIXED,rlen);
+ }
+ if (bps == 16 && nch == 2)
+ {
+ short *buf=pitch_buffer;
+ memcpy(buf,samples,rlen);
+ for (x = 0; x < n; x ++)
+ {
+ int p=(index>>11)<<1;
+ index+=dindex;
+ samples[0] = buf[p];
+ samples[1] = buf[p+1];
+ samples+=2;
+ }
+ return n;
+ }
+ else if (bps == 16 && nch == 1)
+ {
+ short *buf=pitch_buffer;
+ memcpy(buf,samples,rlen);
+ for (x = 0; x < n; x ++)
+ {
+ int p=(index>>11);
+ index+=dindex;
+ *samples++ = buf[p];
+ }
+ return n;
+ }
+ return numsamples;
+}
+
+
+int modify_samples2(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate)
+{
+ int x = numsamples;
+ if (bps == 16)
+ {
+ short *a = samples;
+ if (nch == 2) while (x--)
+ {
+ int l, r;
+ l = a[1]-a[0];
+ r = a[0]-a[1];
+ if (l < -32768) l = -32768;
+ if (l > 32767) l = 32767;
+ if (r < -32768) r = -32768;
+ if (r > 32767) r = 32767;
+ a[0] = l;
+ a[1] = r;
+ a+=2;
+ }
+ }
+ return numsamples;
+}
+
+/*
+int modify_samples_lopass(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate)
+{
+ if (bps==16)
+ {
+ static int lastspl=0,lastspl2=0;
+ int x;
+ x=numsamples;
+ if (nch==1) while (x--)
+ {
+ int thisspl=*samples;
+ *samples++=(lastspl+thisspl)/2;
+ lastspl=thisspl;
+ }
+ else if (nch == 2) while (x--)
+ {
+ int thisspl=*samples;
+ *samples++=(lastspl+thisspl)/2;
+ lastspl=thisspl;
+ thisspl=*samples;
+ *samples++=(lastspl2+thisspl)/2;
+ lastspl2=thisspl;
+ }
+ }
+ return numsamples;
+}
+*/
+
+
+enum FILTER_TYPE {
+ lowpass,highpass,bandpass
+};
+
+typedef struct
+{
+ float m_a0,m_a1;
+ float m_b0,m_b1,m_b2;
+ float m_d1,m_d2;
+ float m_k;
+} filter;
+
+float Filter(filter *f, const float x )
+{
+ float d0,y;
+
+ d0 = f->m_k*x - f->m_a1*f->m_d1 - f->m_a0*f->m_d2;
+ y = d0*f->m_b2 + f->m_d1*f->m_b1 + f->m_d2*f->m_b0;
+ f->m_d2 = f->m_d1;
+ f->m_d1 = d0;
+
+ return y;
+}
+
+
+void makefilter( filter *f, int t , float sample_rate , float cutoff , float dampening )
+{
+ float a2,c;
+
+ c = (float)( 1.f / tan( 3.14159265359*cutoff / sample_rate ) );
+ a2 = 1.f + c*(c+dampening);
+
+ f->m_a1 = 2.f * (1.f - c*c) / a2;
+ f->m_a0 = (1.f + c*(c-dampening)) / a2;
+ f->m_d1 = f->m_d2 = 0.f;
+
+ switch( t )
+ {
+ case lowpass:
+ f->m_k = 1.f / a2;
+ f->m_b1 = 2.f;
+ f->m_b0 = 1.f;
+ break;
+
+ case highpass:
+ f->m_k = c*c / a2;
+ f->m_b1 = -2.f;
+ f->m_b0 = 1.f;
+ break;
+
+ case bandpass:
+ f->m_k = c*dampening / a2;
+ f->m_b1 = 0.f;
+ f->m_b0 = -1.f;
+ break;
+ }
+ f->m_b2 = 1.f;
+}
+
+int modify_samples_lopass(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate)
+{
+ static int i;
+ static filter f1,f2;
+ if (!i)
+ {
+ i=1;
+ makefilter(&f1,bandpass,44100,1000.0,0.5);
+ makefilter(&f2,lowpass,44100,1.0,1.0);
+ }
+ if (bps==16)
+ {
+ int x;
+ x=numsamples;
+ if (nch == 2) while (x--)
+ {
+ int t=(int)Filter(&f1,*samples);
+ *samples++=min(max(t,-32768),32767);
+ t=(int)Filter(&f2,*samples);
+ *samples++=min(max(t,-32768),32767);
+ }
+ }
+ return numsamples;
+}
+
+#define mulspl(a,b) _mulspl((int)(a),(int)((b)*65536.0))
+
+int _mulspl(int a, int b)
+{
+ a *= b;
+ a >>= 16;
+ return a;
+}
+
+
+int modify_samples_hipass(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate)
+{
+ if (bps==16 && nch==2)
+ {
+ static short splbuf[32768+2];
+ short int *spls=splbuf+nch;
+ int x;
+ memcpy(spls,samples,numsamples*sizeof(short)*nch);
+ x=numsamples;
+ while (x--)
+ {
+ int ch;
+ for (ch = 0; ch < nch; ch ++)
+ {
+ int r=mulspl(spls[0],0.93) + mulspl(spls[-nch],-0.93) + mulspl(samples[-nch],0.86);
+ samples[0] = max(min(r,32767),-32768);
+ spls++;
+ samples++;
+ }
+ }
+ memcpy(splbuf,&splbuf[numsamples*nch],nch*sizeof(short));
+ }
+ return numsamples;
+}
+
+
+static BOOL CALLBACK pitchProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
+{
+ if (uMsg == WM_INITDIALOG)
+ {
+ SendDlgItemMessage(hwndDlg,IDC_SLIDER1,TBM_SETRANGEMAX,0,50);
+ SendDlgItemMessage(hwndDlg,IDC_SLIDER1,TBM_SETRANGEMIN,0,-50);
+ SendDlgItemMessage(hwndDlg,IDC_SLIDER1,TBM_SETPOS,1,1);
+ SendDlgItemMessage(hwndDlg,IDC_SLIDER1,TBM_SETPOS,1,0);
+ {
+ char str[123];
+ wsprintf(str,"%s%d%%",g_pitch>=100?"+":"",g_pitch-100);
+ SetDlgItemText(hwndDlg,IDC_BOOGA,str);
+ }
+ }
+ if (uMsg == WM_VSCROLL)
+ {
+ HWND swnd = (HWND) lParam;
+ if (swnd == GetDlgItem(hwndDlg,IDC_SLIDER1))
+ {
+ g_pitch = -SendDlgItemMessage(hwndDlg,IDC_SLIDER1,TBM_GETPOS,0,0)+100;
+ {
+ char str[123];
+ wsprintf(str,"%s%d%%",g_pitch>=100?"+":"",g_pitch-100);
+ SetDlgItemText(hwndDlg,IDC_BOOGA,str);
+ }
+ }
+ }
+ return 0;
+}
+
+
diff --git a/Src/Plugins/SDK/dsp_test/dsp_test.sln b/Src/Plugins/SDK/dsp_test/dsp_test.sln
new file mode 100644
index 00000000..d502d889
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/dsp_test.sln
@@ -0,0 +1,24 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.32802.440
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dsp_test", "dsp_test.vcxproj", "{91476D06-BDDF-4BD1-B855-AB2DC03A41C3}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {91476D06-BDDF-4BD1-B855-AB2DC03A41C3}.Debug|x86.ActiveCfg = Debug|Win32
+ {91476D06-BDDF-4BD1-B855-AB2DC03A41C3}.Debug|x86.Build.0 = Debug|Win32
+ {91476D06-BDDF-4BD1-B855-AB2DC03A41C3}.Release|x86.ActiveCfg = Release|Win32
+ {91476D06-BDDF-4BD1-B855-AB2DC03A41C3}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {8AA64C58-B209-477B-8EDE-709FDFD0E5C5}
+ EndGlobalSection
+EndGlobal
diff --git a/Src/Plugins/SDK/dsp_test/dsp_test.vcxproj b/Src/Plugins/SDK/dsp_test/dsp_test.vcxproj
new file mode 100644
index 00000000..a3ecc7f1
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/dsp_test.vcxproj
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{91476D06-BDDF-4BD1-B855-AB2DC03A41C3}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v142</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>16.0.32629.160</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(IncludePath)</IncludePath>
+ <LibraryPath>$(LibraryPath)</LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(IncludePath)</IncludePath>
+ <LibraryPath>$(LibraryPath)</LibraryPath>
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(IncludePath)</IncludePath>
+ <LibraryPath>$(LibraryPath)</LibraryPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IncludePath>$(IncludePath)</IncludePath>
+ <LibraryPath>$(LibraryPath)</LibraryPath>
+ <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir>
+ <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg">
+ <VcpkgEnabled>false</VcpkgEnabled>
+ </PropertyGroup>
+ <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <VcpkgConfiguration>Debug</VcpkgConfiguration>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DSP_TEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <PrecompiledHeader />
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DSP_TEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <OmitFramePointers>true</OmitFramePointers>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DSP_TEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <PrecompiledHeader />
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <OmitFramePointers>true</OmitFramePointers>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DSP_TEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="dsp_test.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="RESOURCE.H" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="SCRIPT1.RC" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/Src/Plugins/SDK/dsp_test/dsp_test.vcxproj.filters b/Src/Plugins/SDK/dsp_test/dsp_test.vcxproj.filters
new file mode 100644
index 00000000..f1efa308
--- /dev/null
+++ b/Src/Plugins/SDK/dsp_test/dsp_test.vcxproj.filters
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="dsp_test.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="RESOURCE.H">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="SCRIPT1.RC">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file