├── .appveyor.yml
├── .gitattributes
├── .gitignore
├── CMakeLists.txt
├── CMakeSettings.json
├── ConvertTheFuck
├── App.config
├── CMakeLists.txt
├── ConvertTheFuck.csproj
├── Program.cs
└── Properties
│ └── AssemblyInfo.cs
├── Data
├── background.png
├── data.rc
├── knob1.png
├── optionmenu-pressed.png
├── optionmenu-unpressed.png
├── resource.h
└── tinybutton.png
├── Docs
├── Composition.md
├── DAW-Support.md
├── Devices.md
├── Home.md
└── Serialized-song-format.md
├── LICENSE
├── MSVCRT
├── CMakeLists.txt
├── mainCRTStartup.c
└── msvcrt.def
├── Media
└── logo-black.png
├── ProjectManager
├── App.config
├── CMakeLists.txt
├── Program.cs
├── ProjectDetails.Designer.cs
├── ProjectDetails.cs
├── ProjectDetails.resx
├── ProjectManager.Designer.cs
├── ProjectManager.cs
├── ProjectManager.csproj
├── ProjectManager.resx
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
└── logicoma_basic_CoA_icon.ico
├── README.md
├── Tests
├── PlayerTest
│ ├── CMakeLists.txt
│ ├── Song.h
│ └── main.cpp
└── WaveSabreConvertTests
│ ├── App.config
│ ├── CMakeLists.txt
│ ├── Diff.cs
│ ├── Printer.cs
│ ├── Program.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── Refs
│ ├── Arps9.als.ref
│ ├── Arps9_compoedit.als.ref
│ ├── Arps9_looppoints.als.ref
│ ├── Backscatter.als.ref
│ ├── Bare Faced Cheek.als.ref
│ ├── Effects Automation Test.xrns.ref
│ ├── Effects Muted Send Test.xrns.ref
│ ├── Effects Send Test.xrns.ref
│ ├── Elysian.als.ref
│ ├── Engage.als.ref
│ ├── FLSingle.flp.ref
│ ├── Global Groove.xrns.ref
│ ├── Group Test.xrns.ref
│ ├── GroupTest.als.ref
│ ├── GroupTest2.als.ref
│ ├── Instrument Automation Test.xrns.ref
│ ├── Migraine.als.ref
│ ├── Nested Group Test.xrns.ref
│ ├── Punqtured's Tune.xrns.ref
│ ├── Renoise 2.8 File.xrns.ref
│ ├── Reverence.als.ref
│ ├── SabreWulf 02.als.ref
│ ├── SabreWulf 03.als.ref
│ ├── SabreWulf 04.als.ref
│ ├── SabreWulf 05.als.ref
│ ├── SabreWulf 06.als.ref
│ ├── SabreWulf 07.als.ref
│ ├── SabreWulf 08.als.ref
│ ├── SabreWulf 08_cputest.als.ref
│ ├── SabreWulf 09.als.ref
│ ├── SabreWulf 09_cputest.als.ref
│ ├── SabreWulf 09_cputest2.als.ref
│ ├── SabreWulf 10.als.ref
│ ├── SabreWulf 11.als.ref
│ ├── SabreWulf 12.als.ref
│ ├── SabreWulf 13.als.ref
│ ├── SabreWulf 14.als.ref
│ ├── SabreWulf 15.als.ref
│ ├── SabreWulf 16.als.ref
│ ├── SabreWulf 17.als.ref
│ ├── SabreWulf 18.als.ref
│ ├── SabreWulf 19.als.ref
│ ├── SabreWulf 20.als.ref
│ ├── SabreWulf 21.als.ref
│ ├── SabreWulf.als.ref
│ ├── SideChainTest.flp.ref
│ ├── SomeNotesAndAutoTests.flp.ref
│ ├── SpecimenTest.xrns.ref
│ ├── almostblanktest01.als.ref
│ ├── almostblanktest02.als.ref
│ ├── eladamri-Try_Stopping_abl11_triplet_issue.als.ref
│ └── nhersierhtest01.als.ref
│ ├── Test.cs
│ ├── Tests
│ ├── Arps9.als
│ ├── Arps9_compoedit.als
│ ├── Arps9_looppoints.als
│ ├── Backscatter.als
│ ├── Bare Faced Cheek.als
│ ├── Effects Automation Test.xrns
│ ├── Effects Muted Send Test.xrns
│ ├── Effects Send Test.xrns
│ ├── Elysian.als
│ ├── Engage.als
│ ├── FLSingle.flp
│ ├── Global Groove.xrns
│ ├── Group Test.xrns
│ ├── GroupTest.als
│ ├── GroupTest2.als
│ ├── Instrument Automation Test.xrns
│ ├── Migraine.als
│ ├── Nested Group Test.xrns
│ ├── Punqtured's Tune.xrns
│ ├── Renoise 2.8 File.xrns
│ ├── Reverence.als
│ ├── SabreWulf 02.als
│ ├── SabreWulf 03.als
│ ├── SabreWulf 04.als
│ ├── SabreWulf 05.als
│ ├── SabreWulf 06.als
│ ├── SabreWulf 07.als
│ ├── SabreWulf 08.als
│ ├── SabreWulf 08_cputest.als
│ ├── SabreWulf 09.als
│ ├── SabreWulf 09_cputest.als
│ ├── SabreWulf 09_cputest2.als
│ ├── SabreWulf 10.als
│ ├── SabreWulf 11.als
│ ├── SabreWulf 12.als
│ ├── SabreWulf 13.als
│ ├── SabreWulf 14.als
│ ├── SabreWulf 15.als
│ ├── SabreWulf 16.als
│ ├── SabreWulf 17.als
│ ├── SabreWulf 18.als
│ ├── SabreWulf 19.als
│ ├── SabreWulf 20.als
│ ├── SabreWulf 21.als
│ ├── SabreWulf.als
│ ├── SideChainTest.flp
│ ├── SomeNotesAndAutoTests.flp
│ ├── SpecimenTest.xrns
│ ├── almostblanktest01.als
│ ├── almostblanktest02.als
│ ├── eladamri-Try_Stopping_abl11_triplet_issue.als
│ └── nhersierhtest01.als
│ ├── WaveSabreConvertTests.csproj
│ └── packages.config
├── Vst3.x
└── README
├── Vsts
├── Adultery
│ ├── AdulteryEditor.cpp
│ ├── AdulteryEditor.h
│ ├── AdulteryVst.cpp
│ └── AdulteryVst.h
├── CMakeLists.txt
├── Cathedral
│ ├── CathedralEditor.cpp
│ ├── CathedralEditor.h
│ ├── CathedralVst.cpp
│ └── CathedralVst.h
├── Chamber
│ ├── ChamberEditor.cpp
│ ├── ChamberEditor.h
│ ├── ChamberVst.cpp
│ └── ChamberVst.h
├── Crusher
│ ├── CrusherEditor.cpp
│ ├── CrusherEditor.h
│ ├── CrusherVst.cpp
│ └── CrusherVst.h
├── Echo
│ ├── EchoEditor.cpp
│ ├── EchoEditor.h
│ ├── EchoVst.cpp
│ └── EchoVst.h
├── Falcon
│ ├── FalconEditor.cpp
│ ├── FalconEditor.h
│ ├── FalconVst.cpp
│ └── FalconVst.h
├── Leveller
│ ├── LevellerEditor.cpp
│ ├── LevellerEditor.h
│ ├── LevellerVst.cpp
│ └── LevellerVst.h
├── Scissor
│ ├── ScissorEditor.cpp
│ ├── ScissorEditor.h
│ ├── ScissorVst.cpp
│ └── ScissorVst.h
├── Slaughter
│ ├── SlaughterEditor.cpp
│ ├── SlaughterEditor.h
│ ├── SlaughterVst.cpp
│ └── SlaughterVst.h
├── Smasher
│ ├── SmasherEditor.cpp
│ ├── SmasherEditor.h
│ ├── SmasherVst.cpp
│ └── SmasherVst.h
├── Specimen
│ ├── SpecimenEditor.cpp
│ ├── SpecimenEditor.h
│ ├── SpecimenVst.cpp
│ └── SpecimenVst.h
├── Thunder
│ ├── ThunderEditor.cpp
│ ├── ThunderEditor.h
│ ├── ThunderVst.cpp
│ └── ThunderVst.h
└── Twister
│ ├── TwisterEditor.cpp
│ ├── TwisterEditor.h
│ ├── TwisterVst.cpp
│ └── TwisterVst.h
├── WaveSabreConvert
├── CMakeLists.txt
├── FLConverter.cs
├── FLParser
│ ├── LICENSE
│ └── Monad.FLParser.dll
├── ILog.cs
├── LiveConverter.cs
├── LiveParser.cs
├── LiveProject.cs
├── MetaPlugin.cs
├── ProjectConverter.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── ReaperConverter.cs
├── ReaperElements
│ ├── ReaperElement.cs
│ ├── ReaperProject.cs
│ ├── ReaperTag.cs
│ └── ReaperTrack.cs
├── ReaperParser.cs
├── RenoiseConverter.cs
├── RenoiseInject.cs
├── RenoiseParser.cs
├── RenoiseSchema
│ ├── Readme.txt
│ └── RenoiseSong63.xsd
├── RenoiseSong63.cs
├── Resources
│ ├── Song.xml
│ └── template.xrns
├── SendItConfig.cs
├── Serializer.cs
├── Song.cs
├── Utils.cs
└── WaveSabreConvert.csproj
├── WaveSabreCore
├── CMakeLists.txt
├── include
│ ├── WaveSabreCore.h
│ └── WaveSabreCore
│ │ ├── Adultery.h
│ │ ├── AllPass.h
│ │ ├── AllPassDelay.h
│ │ ├── BiquadFilter.h
│ │ ├── Cathedral.h
│ │ ├── Chamber.h
│ │ ├── Comb.h
│ │ ├── Crusher.h
│ │ ├── DelayBuffer.h
│ │ ├── Deprecated
│ │ └── Thunder.h
│ │ ├── Device.h
│ │ ├── Devices.h
│ │ ├── Echo.h
│ │ ├── Envelope.h
│ │ ├── Falcon.h
│ │ ├── GmDls.h
│ │ ├── GsmSample.h
│ │ ├── Helpers.h
│ │ ├── Leveller.h
│ │ ├── MxcsrFlagGuard.h
│ │ ├── ResampleBuffer.h
│ │ ├── SamplePlayer.h
│ │ ├── Scissor.h
│ │ ├── Slaughter.h
│ │ ├── Smasher.h
│ │ ├── Specimen.h
│ │ ├── StateVariableFilter.h
│ │ ├── SynthDevice.h
│ │ └── Twister.h
└── src
│ ├── Adultery.cpp
│ ├── AllPass.cpp
│ ├── AllPassDelay.cpp
│ ├── BiquadFilter.cpp
│ ├── CHANGELOG.md
│ ├── Cathedral.cpp
│ ├── Chamber.cpp
│ ├── Comb.cpp
│ ├── Crusher.cpp
│ ├── DelayBuffer.cpp
│ ├── Deprecated
│ └── Thunder.cpp
│ ├── Device.cpp
│ ├── Echo.cpp
│ ├── Envelope.cpp
│ ├── Falcon.cpp
│ ├── GmDls.cpp
│ ├── GsmSample.cpp
│ ├── Helpers.cpp
│ ├── Leveller.cpp
│ ├── MxcsrFlagGuard.cpp
│ ├── ResampleBuffer.cpp
│ ├── SamplePlayer.cpp
│ ├── Scissor.cpp
│ ├── Slaughter.cpp
│ ├── Smasher.cpp
│ ├── Specimen.cpp
│ ├── StateVariableFilter.cpp
│ ├── SynthDevice.cpp
│ └── Twister.cpp
├── WaveSabrePlayerLib
├── CMakeLists.txt
├── include
│ ├── WaveSabrePlayerLib.h
│ └── WaveSabrePlayerLib
│ │ ├── CriticalSection.h
│ │ ├── DirectSoundRenderThread.h
│ │ ├── IPlayer.h
│ │ ├── PreRenderPlayer.h
│ │ ├── RealtimePlayer.h
│ │ ├── SongRenderer.h
│ │ └── WavWriter.h
└── src
│ ├── CriticalSection.cpp
│ ├── DirectSoundRenderThread.cpp
│ ├── IPlayer.cpp
│ ├── PreRenderPlayer.cpp
│ ├── RealtimePlayer.cpp
│ ├── SongRenderer.Track.cpp
│ ├── SongRenderer.cpp
│ └── WavWriter.cpp
├── WaveSabreStandAlonePlayer
├── CMakeLists.txt
└── main.cpp
└── WaveSabreVstLib
├── CMakeLists.txt
├── include
├── WaveSabreVstLib.h
└── WaveSabreVstLib
│ ├── Common.h
│ ├── ImageManager.h
│ ├── NoTextCOptionMenu.h
│ ├── VstEditor.h
│ └── VstPlug.h
└── src
├── ImageManager.cpp
├── NoTextCOptionMenu.cpp
├── VstEditor.cpp
└── VstPlug.cpp
/.appveyor.yml:
--------------------------------------------------------------------------------
1 | version: '{build}'
2 | image:
3 | - Visual Studio 2013
4 | - Visual Studio 2017
5 | - Visual Studio 2019
6 |
7 | platform:
8 | - Win32
9 | - x64
10 |
11 | cache:
12 | - C:\tmp\VST3 SDK
13 |
14 | install:
15 | - ps: |
16 | if (-Not (Test-Path "C:\tmp\VST3 SDK")) {
17 | Invoke-WebRequest "https://web.archive.org/web/20200502121517/https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip" -OutFile "vstsdk.zip"
18 | Expand-Archive "vstsdk.zip" "C:\tmp"
19 | }
20 |
21 | build_script:
22 | # build native code/tests
23 | - mkdir build
24 | - cd build
25 | - cmake -DCMAKE_GENERATOR_PLATFORM=%PLATFORM% -DVSTSDK3_DIR="C:/tmp/VST3 SDK" ..
26 | - msbuild /v:minimal /nologo WaveSabre.sln
27 | - msbuild /v:minimal /nologo /property:Configuration="MinSizeRel" WaveSabre.sln
28 | - cd ..
29 |
30 | test_script:
31 | - cd build
32 | - Tests\WaveSabreConvertTests\Debug\WaveSabreConvertTests.exe
33 | - cd ..
34 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.lib binary
2 | *.dll binary
3 | *.png binary
4 | *.ico binary
5 | *.xrns binary
6 | *.xsd binary
7 | *.als binary
8 | *.flp binary
9 |
10 | * text=auto
11 |
12 | *.md text
13 | *.ref text
14 | *.txt text
15 | *.h text
16 | *.cpp text
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 | #
3 | # If you find yourself ignoring temporary files generated by your text editor
4 | # or operating system, you probably want to add a global ignore instead:
5 | # git config --global core.excludesfile ~/.gitignore_global
6 |
7 | # Ignore OS specific and temporary files.
8 | .DS_Store
9 | Thumbs.db
10 | *.swp
11 |
12 | # Ignore user-specific Visual Studio .NET-files
13 | *.suo
14 | *.vcxproj.user
15 | *.csproj.user
16 | *.sdf
17 | *.opensdf
18 |
19 | # Ignore locally installed NuGet packages.
20 | .nuget/
21 | packages/
22 |
23 | # Ignore compiled and generated code.
24 | bin/
25 | obj/
26 | lib/
27 | Debug/
28 | Release/
29 |
30 | # Misc
31 | Vsts/build/
32 | Tests/PlayerTest/build/
33 | build/
34 | Vst3.x/*
35 | !Vst3.x/README
36 | Data/data.aps
37 | Vsts/*/*.def
38 |
39 | # Ignore VS 2017 IDE fluff
40 | .vs/
41 |
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project("WaveSabre" LANGUAGES C CXX CSharp)
2 |
3 | # Enable C# Utilities also for the VS2013 AppVeyor stage.
4 | cmake_policy(SET CMP0057 NEW)
5 | include(CSharpUtilities)
6 | set(CMAKE_CSharp_FLAGS ${CMAKE_CSharp_FLAGS} "/langversion:6")
7 |
8 | cmake_minimum_required(VERSION 3.11)
9 | set_property(GLOBAL PROPERTY USE_FOLDERS ON)
10 |
11 | if(MSVC)
12 | # disable exceptions globally (will be added back for VSTs)
13 | string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
14 | endif()
15 |
16 | set(BUILD_VST_PLUGINS ON CACHE BOOL "Opt out of building the VST plugins.")
17 | set(BUILD_WAVESABRE_CONVERT ON CACHE BOOL "Do not build WaveSabreConvert.")
18 | set(BUILD_WAVESABRE_CONVERT_TESTS ON CACHE BOOL "Do not build the WaveSabreConvert tests.")
19 | set(BUILD_CONVERT_THE_FUCK ON CACHE BOOL "Do not build ConvertTheFuck.")
20 | set(BUILD_PROJECT_MANAGER ON CACHE BOOL "Do not build the project manager.")
21 | set(VSTSDK3_DIR "${PROJECT_SOURCE_DIR}/Vst3.x/" CACHE PATH "VSTSDK location")
22 |
23 | # Download and unpack VST3 SDK
24 | set(DOWNLOAD_VST3SDK OFF CACHE BOOL "Download and unpack VST3 SDK automatically.")
25 | if(${BUILD_VST_PLUGINS} AND ${DOWNLOAD_VST3SDK})
26 | find_file(VST3SDK_TEST name public.sdk HINTS ${VSTSDK3_DIR})
27 | if(${VST3SDK_TEST} MATCHES VST3SDK_TEST-NOTFOUND)
28 | message(STATUS "VST3 SDK not found. Will download.")
29 | file(DOWNLOAD https://web.archive.org/web/20200502121517/https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip vstsdk366_27_06_2016_build_61.zip SHOW_PROGRESS)
30 | file(ARCHIVE_EXTRACT INPUT vstsdk366_27_06_2016_build_61.zip DESTINATION vstsdk366_27_06_2016_build_61 VERBOSE)
31 | file(GLOB VST3SDK_FILES "${CMAKE_CURRENT_BINARY_DIR}/vstsdk366_27_06_2016_build_61/VST3\ SDK/*")
32 | file(COPY ${VST3SDK_FILES} DESTINATION ${VSTSDK3_DIR})
33 | endif()
34 | endif()
35 |
36 | # shared code
37 | add_subdirectory(MSVCRT)
38 | add_subdirectory(WaveSabreCore)
39 | add_subdirectory(WaveSabrePlayerLib)
40 |
41 | # binaries
42 | add_subdirectory(Tests/PlayerTest)
43 | add_subdirectory(WaveSabreStandAlonePlayer)
44 |
45 | # VSTs
46 | if(${BUILD_VST_PLUGINS} AND VSTSDK3_DIR)
47 | add_subdirectory(WaveSabreVstLib)
48 | add_subdirectory(Vsts)
49 | endif()
50 |
51 | # Project file conversions
52 | if(${BUILD_WAVESABRE_CONVERT})
53 | add_subdirectory(WaveSabreConvert)
54 | endif()
55 | if(${BUILD_WAVESABRE_CONVERT_TESTS})
56 | add_subdirectory(Tests/WaveSabreConvertTests)
57 | endif()
58 | if(${BUILD_CONVERT_THE_FUCK})
59 | add_subdirectory(ConvertTheFuck)
60 | endif()
61 |
62 | # Project manager
63 | if(${BUILD_PROJECT_MANAGER})
64 | add_subdirectory(ProjectManager)
65 | endif()
66 |
--------------------------------------------------------------------------------
/ConvertTheFuck/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ConvertTheFuck/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(CONVERT_THE_FUCK_SOURCES
2 | Program.cs
3 |
4 | Properties/AssemblyInfo.cs
5 | )
6 |
7 | add_executable(ConvertTheFuck
8 | App.config
9 |
10 | ${CONVERT_THE_FUCK_SOURCES}
11 | )
12 |
13 | target_link_libraries(ConvertTheFuck WaveSabreConvert)
14 |
15 | csharp_set_designer_cs_properties(${CONVERT_THE_FUCK_SOURCES})
16 | csharp_set_windows_forms_properties(${CONVERT_THE_FUCK_SOURCES})
17 | set_property(TARGET ConvertTheFuck PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
18 | set_property(TARGET ConvertTheFuck PROPERTY VS_DOTNET_REFERENCES
19 | "System"
20 | "System.Core"
21 | "System.Xml.Linq"
22 | "System.Data.DataSetExtensions"
23 | "Microsoft.CSharp"
24 | "System.Data"
25 | "System.Xml"
26 | )
27 | set_target_properties(ConvertTheFuck PROPERTIES VS_GLOBAL_ROOTNAMESPACE ConvertTheFuck)
28 |
--------------------------------------------------------------------------------
/ConvertTheFuck/ConvertTheFuck.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {EFA32D77-8698-4A7F-848A-1E0357BAD979}
8 | Exe
9 | Properties
10 | ConvertTheFuck
11 | ConvertTheFuck
12 | v4.6.1
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | {f97425c7-8471-47ad-b398-ec5f37e848fc}
54 | WaveSabreConvert
55 |
56 |
57 |
58 |
65 |
--------------------------------------------------------------------------------
/ConvertTheFuck/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.IO;
7 | using WaveSabreConvert;
8 |
9 | namespace ConvertTheFuck
10 | {
11 | class Program
12 | {
13 | static void Main(string[] args)
14 | {
15 | try
16 | {
17 | if (args.Length != 3)
18 | {
19 | Console.WriteLine(
20 | "usage: ConvertTheFuck [input file] [option] [output file]\n\toption:\t-h export cpp song header file\n\t\t-b export binary song file\n");
21 | }
22 | else
23 | {
24 | var logger = new ConsoleLogger();
25 | var song = new ProjectConverter().Convert(args[0], logger);
26 | var option = args[1];
27 | var outFile = args[2];
28 |
29 | switch (option)
30 | {
31 | case "-h":
32 | File.WriteAllText(outFile, new Serializer().Serialize(song));
33 | break;
34 | case "-b":
35 | File.WriteAllBytes(outFile, new Serializer().SerializeBinary(song));
36 | break;
37 | default:
38 | Console.WriteLine(string.Format("ERROR: unknown option {0}", args[1]));
39 | break;
40 | }
41 | }
42 | }
43 | catch (Exception e)
44 | {
45 | Console.WriteLine("ERROR: " + e.Message);
46 | }
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/ConvertTheFuck/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ConvertTheFuck")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Microsoft")]
12 | [assembly: AssemblyProduct("ConvertTheFuck")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("283112d6-6c60-4f32-a833-b7981c0ec880")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Data/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Data/background.png
--------------------------------------------------------------------------------
/Data/data.rc:
--------------------------------------------------------------------------------
1 | // Microsoft Visual C++ generated resource script.
2 | //
3 | #include "resource.h"
4 |
5 | #define APSTUDIO_READONLY_SYMBOLS
6 | /////////////////////////////////////////////////////////////////////////////
7 | //
8 | // Generated from the TEXTINCLUDE 2 resource.
9 | //
10 | #include "winres.h"
11 |
12 | /////////////////////////////////////////////////////////////////////////////
13 | #undef APSTUDIO_READONLY_SYMBOLS
14 |
15 | /////////////////////////////////////////////////////////////////////////////
16 | // Neutral (Default) resources
17 |
18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUD)
19 | LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
20 |
21 | /////////////////////////////////////////////////////////////////////////////
22 | //
23 | // PNG
24 | //
25 |
26 | IDB_PNG1 PNG "background.png"
27 | IDB_PNG2 PNG "knob1.png"
28 | IDB_PNG3 PNG "tinybutton.png"
29 | IDB_PNG4 PNG "optionmenu-unpressed.png"
30 | IDB_PNG5 PNG "optionmenu-pressed.png"
31 | #endif // Neutral (Default) resources
32 | /////////////////////////////////////////////////////////////////////////////
33 |
34 |
35 | #ifndef APSTUDIO_INVOKED
36 | /////////////////////////////////////////////////////////////////////////////
37 | //
38 | // Generated from the TEXTINCLUDE 3 resource.
39 | //
40 |
41 |
42 | /////////////////////////////////////////////////////////////////////////////
43 | #endif // not APSTUDIO_INVOKED
44 |
45 |
--------------------------------------------------------------------------------
/Data/knob1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Data/knob1.png
--------------------------------------------------------------------------------
/Data/optionmenu-pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Data/optionmenu-pressed.png
--------------------------------------------------------------------------------
/Data/optionmenu-unpressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Data/optionmenu-unpressed.png
--------------------------------------------------------------------------------
/Data/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by data.rc
4 | //
5 | #define IDB_PNG1 101
6 | #define IDB_PNG2 102
7 | #define IDB_PNG3 103
8 | #define IDB_PNG4 105
9 | #define IDB_PNG5 106
10 |
11 | // Next default values for new objects
12 | //
13 | #ifdef APSTUDIO_INVOKED
14 | #ifndef APSTUDIO_READONLY_SYMBOLS
15 | #define _APS_NEXT_RESOURCE_VALUE 107
16 | #define _APS_NEXT_COMMAND_VALUE 40001
17 | #define _APS_NEXT_CONTROL_VALUE 1001
18 | #define _APS_NEXT_SYMED_VALUE 101
19 | #endif
20 | #endif
21 |
--------------------------------------------------------------------------------
/Data/tinybutton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Data/tinybutton.png
--------------------------------------------------------------------------------
/Docs/DAW-Support.md:
--------------------------------------------------------------------------------
1 | Currently supported DAW software
2 |
3 | |DAW|Platform|x86|x64|
4 | |--|--|--|--|
5 | |Ableton 9|PC|native|support via [jBridge](https://jstuff.wordpress.com/jbridge/)|
6 | |Ableton 10|PC|untested|untested|
7 | |Renoise|PC|native|to be tested|
8 | |FL Studio 12|PC|native|works with internal bridge|
9 | |FL Studio 20|PC|native|works with internal bridge|
10 | |Reaper|PC|coming soon|coming soon|
11 | |Ableton 9|MAC|no|coming soon|
12 | |Renoise|MAC|no|coming soon|
13 |
--------------------------------------------------------------------------------
/Docs/Home.md:
--------------------------------------------------------------------------------
1 | # WaveSabre Wiki
2 |
3 | ## Building
4 |
5 | - WaveSabre builds have only been tested with Visual Studio 2013/2015/2017/2019 and version 3.6.6 of the VST3 SDK.
6 | - Due to licensing requirements, WaveSabre requires you to either [download](https://web.archive.org/web/20200502121517/https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip) and copy the VST3 SDK into the build yourself. Download, extract, and copy into the *"Vst3.x"* folder. See [this readme](https://github.com/logicomacorp/WaveSabre/blob/master/Vst3.x/README) or download the VST3 SDK automatically using CMake (see below).
7 |
8 | ### CMake
9 |
10 | WaveSabre has a new [CMake](https://cmake.org/) based build-system that can generate Visual Studio project files for you.
11 |
12 | - Install CMake v3.11 or later
13 | - The latest installer [can be found here](https://cmake.org/download/#latestbinary)
14 | - Alternatively, you can install CMake from [Chocolatey](https://chocolatey.org/) or other package managers.
15 | - Run `cmake -B build` to generate the Visual Studio project files and solution
16 | - Optionally, you can also specify `-DVSTDIR=` to copy the VST plugins into your DAW's VST plugin directory upon build.
17 | - Optionally, you can specify `-DDOWNLOAD_VST3SDK=ON` to let CMake download and unpack the VST3 SDK for you.
18 | - You can specify `-DBUILD_VST_PLUGINS=OFF` to avoid building the plugins (useful for projects that only need the synthesizer and not the plugins).
19 | - You can also specify `-DVSTSDK3_DIR=` to use a VSTSDK from outside of the source-tree.
20 | - You can limit the tools you want to build by using `-DBUILD_WAVESABRE_CONVERT=OFF`, `-DBUILD_WAVESABRE_CONVERT_TESTS=OFF`, `-DBUILD_CONVERT_THE_FUCK=OFF` or `-DBUILD_PROJECT_MANAGER=OFF`.
21 | - As of Visual Studio 2019, `-A Win32` is required to generate a project with 32-bit targets.
22 | - Open the generated solution from the build directory, and proceed as normal.
23 |
24 | ## New Device Check List
25 |
26 | - Add device to WaveSabreCore/Devices.h
27 | - Add device to WaveSabreConvert/Song.cs
28 | - Add device to WaveSabrePlayer/include/SongRenderer.h
29 | - Add device to WaveSabreStandAlongPlayer/main.cpp
30 | - Re-run cmake to create new Vst project file
31 | - Add Build dependencies for WaveSabreCore and WaveSabrePlayer to VST Project
32 | - Profit!
33 |
--------------------------------------------------------------------------------
/Docs/Serialized-song-format.md:
--------------------------------------------------------------------------------
1 | ```
2 | int: tempo
3 | int: sample rate
4 | double: song length (seconds)
5 | int: device count
6 | list of devices:
7 | byte: device id
8 | int: chunk size
9 | byte[]: chunk data
10 | int: midi lane count
11 | list of midi lanes:
12 | int: event count
13 | list of events:
14 | int: samples from last event (or from 0 if first event)
15 | byte: msb is type (on or off) remaining 7 bits = note
16 | byte: velocity (only present if type is note on)
17 | int: track count
18 | list of tracks (in calculation order):
19 | float: track volume
20 | int: receive count (including original children)
21 | list of receives:
22 | int: sending track index
23 | int: receiving channel index
24 | float: volume
25 | int: device count
26 | list of device indexes:
27 | int: device index
28 | int: midi lane id
29 | int: automation count
30 | list of automations:
31 | int: device index
32 | int: param id
33 | int: point count
34 | list of points:
35 | int: samples from last point (or from 0 if first point)
36 | byte: quantized value (0-255)
37 |
38 | effect id's:
39 | 00: Falcon
40 | 01: Slaughter
41 | 02: Thunder
42 | 03: Scissor
43 | 04: Leveller
44 | 05: Crusher
45 | 06: Echo
46 | 07: Smasher
47 | 08: Chamber
48 | 09: Twister
49 | 10: Cathedral
50 | 11: Adultery
51 | 12: Specimen
52 |
53 | event types:
54 | 0: Note on
55 | 1: Note off
56 | ```
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2012-2021 WaveSabre Team
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/MSVCRT/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/msvcrt.lib
2 | MAIN_DEPENDENCY msvcrt.def
3 | COMMAND lib.exe /machine:${CMAKE_CXX_COMPILER_ARCHITECTURE_ID} /def:${CMAKE_CURRENT_SOURCE_DIR}/msvcrt.def /out:${CMAKE_CURRENT_BINARY_DIR}/msvcrt.lib
4 | COMMENT "Creating msvcrt.lib"
5 | VERBATIM)
6 | add_custom_target(build-msvcrt DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/msvcrt.lib)
7 |
8 | add_library(msvcrt_dll SHARED IMPORTED GLOBAL)
9 | set_target_properties(msvcrt_dll PROPERTIES IMPORTED_IMPLIB ${CMAKE_CURRENT_BINARY_DIR}/msvcrt.lib)
10 | add_dependencies(msvcrt_dll build-msvcrt)
11 |
12 | add_library(msvcrt STATIC mainCRTStartup.c)
13 | target_link_libraries(msvcrt msvcrt_dll)
14 |
--------------------------------------------------------------------------------
/MSVCRT/mainCRTStartup.c:
--------------------------------------------------------------------------------
1 | #if defined(_MSC_VER)
2 | int __getmainargs(int *argc, char ***argv, char ***env, int dowildcards, int *new_mode);
3 | int main(int argc, char **argv);
4 | int mainCRTStartup()
5 | {
6 | int argc;
7 | char **argv, **env;
8 | int new_mode = 0;
9 | __getmainargs(&argc, &argv, &env, 0, &new_mode);
10 | return main(argc, argv);
11 | }
12 | #endif
--------------------------------------------------------------------------------
/Media/logo-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Media/logo-black.png
--------------------------------------------------------------------------------
/ProjectManager/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ProjectManager/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(PROJECT_MANAGER_SOURCES
2 | Program.cs
3 | ProjectDetails.cs
4 | ProjectDetails.Designer.cs
5 | ProjectManager.cs
6 | ProjectManager.Designer.cs
7 |
8 | Properties/AssemblyInfo.cs
9 | Properties/Resources.Designer.cs
10 | Properties/Settings.Designer.cs
11 |
12 | Properties/Resources.resx
13 | Properties/Settings.settings
14 |
15 | logicoma_basic_CoA_icon.ico
16 |
17 | ProjectDetails.resx
18 | ProjectManager.resx
19 | )
20 |
21 | add_executable(ProjectManager
22 | App.config
23 |
24 | ${PROJECT_MANAGER_SOURCES}
25 | )
26 |
27 | target_link_libraries(ProjectManager WaveSabreConvert)
28 |
29 | set_property(TARGET ProjectManager PROPERTY VS_GLOBAL_ApplicationIcon "${CMAKE_CURRENT_SOURCE_DIR}/logicoma_basic_CoA_icon.ico")
30 | csharp_set_designer_cs_properties(${PROJECT_MANAGER_SOURCES})
31 | csharp_set_windows_forms_properties(${PROJECT_MANAGER_SOURCES})
32 | set_property(TARGET ProjectManager PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
33 | set_property(TARGET ProjectManager PROPERTY VS_DOTNET_REFERENCES
34 | "System"
35 | "System.Core"
36 | "System.Xml.Linq"
37 | "System.Data.DataSetExtensions"
38 | "Microsoft.CSharp"
39 | "System.Data"
40 | "System.Xml"
41 | "System.Windows"
42 | "System.Windows.Forms"
43 | "System.Drawing"
44 | )
45 | set_target_properties(ProjectManager PROPERTIES VS_GLOBAL_ROOTNAMESPACE ProjectManager)
46 |
47 | add_custom_command(TARGET ProjectManager POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ $)
48 |
--------------------------------------------------------------------------------
/ProjectManager/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace ProjectManager
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new ProjectManager());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ProjectManager/ProjectDetails.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ProjectManager
2 | {
3 | partial class ProjectDetails
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.treeViewDetails = new System.Windows.Forms.TreeView();
32 | this.SuspendLayout();
33 | //
34 | // treeViewDetails
35 | //
36 | this.treeViewDetails.Dock = System.Windows.Forms.DockStyle.Fill;
37 | this.treeViewDetails.Location = new System.Drawing.Point(0, 0);
38 | this.treeViewDetails.Name = "treeViewDetails";
39 | this.treeViewDetails.Size = new System.Drawing.Size(447, 413);
40 | this.treeViewDetails.TabIndex = 0;
41 | //
42 | // ProjectDetails
43 | //
44 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
45 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
46 | this.ClientSize = new System.Drawing.Size(447, 413);
47 | this.Controls.Add(this.treeViewDetails);
48 | this.Name = "ProjectDetails";
49 | this.ShowIcon = false;
50 | this.Text = "Project Details";
51 | this.ResumeLayout(false);
52 |
53 | }
54 |
55 | #endregion
56 |
57 | private System.Windows.Forms.TreeView treeViewDetails;
58 | }
59 | }
--------------------------------------------------------------------------------
/ProjectManager/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ProjectManager")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ProjectManager")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("31059c16-0ffe-41cb-ba3d-a2da559d6103")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/ProjectManager/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ProjectManager.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectManager.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/ProjectManager/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ProjectManager.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ProjectManager/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ProjectManager/logicoma_basic_CoA_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/ProjectManager/logicoma_basic_CoA_icon.ico
--------------------------------------------------------------------------------
/Tests/PlayerTest/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_executable(PlayerTest main.cpp)
2 | target_link_libraries(PlayerTest WaveSabrePlayerLib)
3 |
4 | if(MSVC)
5 | target_link_libraries(PlayerTest $<$:msvcrt>)
6 | set_property(TARGET PlayerTest APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL
7 | " /NODEFAULTLIB /SAFESEH:NO /MANIFEST:NO /LTCG /OPT:REF /OPT:ICF /DYNAMICBASE:NO")
8 |
9 | if(MSVC_VERSION GREATER 1900)
10 | target_compile_definitions(PlayerTest PRIVATE
11 | $<$:_NO_CRT_STDIO_INLINE>)
12 | endif()
13 | endif()
14 |
--------------------------------------------------------------------------------
/Tests/PlayerTest/Song.h:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | WaveSabreCore::Device *SongFactory(SongRenderer::DeviceId id)
5 | {
6 | switch (id)
7 | {
8 | case SongRenderer::DeviceId::Slaughter: return new WaveSabreCore::Slaughter();
9 | }
10 | return nullptr;
11 | }
12 |
13 | const unsigned char SongBlob[] =
14 | {
15 | 0x8c, 0x00, 0x00, 0x00, 0x44, 0xac, 0x00, 0x00, 0x25, 0x49,
16 | 0x92, 0x24, 0x49, 0x92, 0x24, 0x40, 0x01, 0x00, 0x00, 0x00,
17 | 0x01, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
18 | 0x00, 0x00, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00,
19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20 | 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22 | 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24 | 0x00, 0x00, 0x00, 0x31, 0xdf, 0x7f, 0x3f, 0x00, 0x00, 0x00,
25 | 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x69,
26 | 0xb4, 0xe7, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x0a, 0xd7, 0x23,
27 | 0x3c, 0x00, 0x00, 0x00, 0x00, 0x69, 0xb4, 0xe7, 0x3c, 0x00,
28 | 0x00, 0x80, 0x3f, 0x0a, 0xd7, 0x23, 0x3c, 0x00, 0x00, 0x00,
29 | 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30 | 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69,
32 | 0xb4, 0xe7, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x0a, 0xd7, 0x23,
33 | 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
34 | 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
35 | 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
36 | 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24, 0x00, 0x00,
37 | 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24, 0x00,
38 | 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24,
39 | 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea,
40 | 0x24, 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc,
41 | 0xea, 0x24, 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00,
42 | 0xbc, 0xea, 0x24, 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00,
43 | 0x00, 0xbc, 0xea, 0x24, 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24,
44 | 0x00, 0x00, 0xbc, 0x8a, 0x73, 0x02, 0x00, 0x3c, 0x64, 0xea,
45 | 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24, 0x00, 0x00, 0x3c, 0x64,
46 | 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24, 0x00, 0x00, 0x3c,
47 | 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24, 0x00, 0x00,
48 | 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24, 0x00,
49 | 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea, 0x24,
50 | 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc, 0xea,
51 | 0x24, 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00, 0xbc,
52 | 0xea, 0x24, 0x00, 0x00, 0x3c, 0x64, 0xea, 0x24, 0x00, 0x00,
53 | 0xbc, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc5,
54 | 0x8f, 0x61, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
55 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x01, 0x00, 0x00,
57 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5,
58 | 0x8f, 0x61, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
59 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x01,
60 | 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61 | 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x01,
62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63 | };
64 |
65 | SongRenderer::Song Song = {
66 | SongFactory,
67 | SongBlob
68 | };
69 |
--------------------------------------------------------------------------------
/Tests/PlayerTest/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | using namespace WaveSabrePlayerLib;
3 |
4 | #include
5 |
6 | #include "Song.h"
7 |
8 | void progressCallback(double progress, void *data)
9 | {
10 | const int barLength = 32;
11 | int filledChars = (int)(progress * (double)(barLength - 1));
12 | printf("\r[");
13 | for (int j = 0; j < barLength; j++) putchar(filledChars >= j ? '*' : '-');
14 | printf("]");
15 | }
16 |
17 | int main(int argc, char **argv)
18 | {
19 | bool writeWav = argc >= 2 && !strcmp(argv[1], "-w");
20 | bool preRender = argc == 2 && !strcmp(argv[1], "-p");
21 |
22 | const int numRenderThreads = 3;
23 |
24 | if (writeWav)
25 | {
26 | WavWriter wavWriter(&Song, numRenderThreads);
27 |
28 | printf("WAV writer activated.\n");
29 |
30 | auto fileName = argc >= 3 ? argv[2] : "out.wav";
31 | printf("Rendering...\n");
32 | wavWriter.Write(fileName, progressCallback, nullptr);
33 |
34 | printf("\n\nWAV file written to \"%s\". Enjoy.\n", fileName);
35 | }
36 | else
37 | {
38 | IPlayer *player;
39 |
40 | if (preRender)
41 | {
42 | printf("Prerender activated.\n");
43 | printf("Rendering...\n");
44 |
45 | player = new PreRenderPlayer(&Song, numRenderThreads, progressCallback, nullptr);
46 |
47 | printf("\n\n");
48 | }
49 | else
50 | {
51 | player = new RealtimePlayer(&Song, numRenderThreads);
52 | }
53 |
54 | printf("Realtime player activated. Press ESC to quit.\n");
55 | player->Play();
56 | while (!GetAsyncKeyState(VK_ESCAPE))
57 | {
58 | auto songPos = player->GetSongPos();
59 | if (songPos >= player->GetLength()) break;
60 | int minutes = (int)songPos / 60;
61 | int seconds = (int)songPos % 60;
62 | int hundredths = (int)(songPos * 100.0) % 100;
63 | printf("\r %.1i:%.2i.%.2i", minutes, seconds, hundredths);
64 |
65 | Sleep(10);
66 | }
67 | printf("\n");
68 |
69 | delete player;
70 | }
71 |
72 | return 0;
73 | }
74 |
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(WAVESABRE_CONVERT_TESTS_SOURCES
2 | Diff.cs
3 | packages.config
4 | Printer.cs
5 | Program.cs
6 | Test.cs
7 |
8 | Properties/AssemblyInfo.cs
9 | )
10 |
11 | add_executable(WaveSabreConvertTests
12 | App.config
13 |
14 | ${WAVESABRE_CONVERT_TESTS_SOURCES}
15 | )
16 |
17 | target_link_libraries(WaveSabreConvertTests WaveSabreConvert)
18 |
19 | csharp_set_designer_cs_properties(${WAVESABRE_CONVERT_TESTS_SOURCES})
20 | csharp_set_windows_forms_properties(${WAVESABRE_CONVERT_TESTS_SOURCES})
21 | set_property(TARGET WaveSabreConvertTests PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
22 | set_property(TARGET WaveSabreConvertTests PROPERTY VS_DOTNET_REFERENCES
23 | "System"
24 | "System.Core"
25 | "System.Xml.Linq"
26 | "System.Data.DataSetExtensions"
27 | "Microsoft.CSharp"
28 | "System.Data"
29 | "System.Xml"
30 | "Newtonsoft"
31 | "Newtonsoft.json"
32 | )
33 | set_property(TARGET WaveSabreConvertTests PROPERTY VS_PACKAGE_REFERENCES "Newtonsoft.Json_6.0.8")
34 | set_target_properties(WaveSabreConvertTests PROPERTIES VS_GLOBAL_ROOTNAMESPACE WaveSabreConvertTests)
35 |
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Printer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace WaveSabreConvertTests
4 | {
5 | class Printer
6 | {
7 | internal int Indent;
8 |
9 | public Printer()
10 | {
11 | Reset();
12 | }
13 |
14 | public void Reset()
15 | {
16 | Indent = 0;
17 | }
18 |
19 | public PrinterScope Scope()
20 | {
21 | return new PrinterScope(this);
22 | }
23 |
24 | public void PrintLine(string line)
25 | {
26 | for (int i = 0; i < Indent; i++)
27 | line = " " + line;
28 | Console.WriteLine(line);
29 | }
30 | }
31 |
32 | class PrinterScope : IDisposable
33 | {
34 | readonly Printer _p;
35 |
36 | public PrinterScope(Printer p)
37 | {
38 | _p = p;
39 |
40 | _p.Indent++;
41 | }
42 |
43 | public void Dispose()
44 | {
45 | _p.Indent--;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.IO;
7 |
8 | namespace WaveSabreConvertTests
9 | {
10 | class Program
11 | {
12 | static int Main(string[] args)
13 | {
14 | var testsDir = new DirectoryInfo("Tests");
15 | var refsDir = new DirectoryInfo("Refs");
16 |
17 | var interactive = args.Length == 1 ? args[0] == "-i" : false;
18 |
19 | bool success = true;
20 |
21 | foreach (var testFileInfo in testsDir.EnumerateFiles())
22 | {
23 | var testFileName = testFileInfo.Name;
24 | var refFileName = testFileName + ".ref";
25 |
26 | success |= new Test().Run(testsDir.FullName + "\\" + testFileName, refsDir.FullName + "\\" + refFileName, interactive);
27 | }
28 |
29 | return success ? 0 : 1;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WaveSabreConvertTests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Microsoft")]
12 | [assembly: AssemblyProduct("WaveSabreConvertTests")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2013")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("5d1fbc24-7023-41c9-8c20-4d0d637a34d1")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Arps9.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Arps9.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Arps9_compoedit.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Arps9_compoedit.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Arps9_looppoints.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Arps9_looppoints.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Backscatter.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Backscatter.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Bare Faced Cheek.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Bare Faced Cheek.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Effects Automation Test.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Effects Automation Test.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Effects Muted Send Test.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Effects Muted Send Test.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Effects Send Test.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Effects Send Test.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Elysian.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Elysian.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Engage.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Engage.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/FLSingle.flp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/FLSingle.flp
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Global Groove.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Global Groove.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Group Test.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Group Test.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/GroupTest.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/GroupTest.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/GroupTest2.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/GroupTest2.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Instrument Automation Test.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Instrument Automation Test.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Migraine.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Migraine.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Nested Group Test.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Nested Group Test.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Punqtured's Tune.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Punqtured's Tune.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Renoise 2.8 File.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Renoise 2.8 File.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/Reverence.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/Reverence.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 02.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 02.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 03.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 03.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 04.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 04.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 05.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 05.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 06.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 06.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 07.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 07.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 08.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 08.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 08_cputest.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 08_cputest.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 09.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 09.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 09_cputest.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 09_cputest.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 09_cputest2.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 09_cputest2.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 10.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 10.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 11.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 11.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 12.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 12.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 13.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 13.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 14.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 14.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 15.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 15.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 16.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 16.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 17.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 17.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 18.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 18.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 19.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 19.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 20.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 20.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf 21.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf 21.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SabreWulf.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SabreWulf.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SideChainTest.flp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SideChainTest.flp
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SomeNotesAndAutoTests.flp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SomeNotesAndAutoTests.flp
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/SpecimenTest.xrns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/SpecimenTest.xrns
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/almostblanktest01.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/almostblanktest01.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/almostblanktest02.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/almostblanktest02.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/eladamri-Try_Stopping_abl11_triplet_issue.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/eladamri-Try_Stopping_abl11_triplet_issue.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/Tests/nhersierhtest01.als:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/Tests/WaveSabreConvertTests/Tests/nhersierhtest01.als
--------------------------------------------------------------------------------
/Tests/WaveSabreConvertTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Vst3.x/README:
--------------------------------------------------------------------------------
1 | You can download the last version of the VST3 SDK that includes the full VST2
2 | SDK [here][1].
3 |
4 | Unpack the contents of the "VST3 SDK" subfolder from that archive into this
5 | folder. This means that folders like "plugininterface" and "public.sdk" should
6 | be located next to this file.
7 |
8 | [1]: https://web.archive.org/web/20200502121517/https://www.steinberg.net/sdk_downloads/vstsdk366_27_06_2016_build_61.zip
9 |
--------------------------------------------------------------------------------
/Vsts/Adultery/AdulteryEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __ADULTERYEDITOR_H__
2 | #define __ADULTERYEDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | #include
8 | using namespace WaveSabreCore;
9 |
10 | class AdulteryEditor : public VstEditor
11 | {
12 | public:
13 | AdulteryEditor(AudioEffect *audioEffect, Adultery *adultery);
14 | virtual ~AdulteryEditor();
15 |
16 | virtual void Open();
17 |
18 | virtual void setParameter(VstInt32 index, float value);
19 |
20 | private:
21 | void updateCaption();
22 | void uncheckMenuItems();
23 |
24 | Adultery *adultery;
25 |
26 | COptionMenu *menu;
27 | CTextLabel *caption;
28 |
29 | std::map optionNames;
30 | };
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/Vsts/Adultery/AdulteryVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __ADULTERYVST_H__
2 | #define __ADULTERYVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | #include
8 | using namespace WaveSabreCore;
9 |
10 |
11 | class AdulteryVst : public VstPlug
12 | {
13 | public:
14 | AdulteryVst(audioMasterCallback audioMaster);
15 |
16 | virtual void getParameterName(VstInt32 index, char *text);
17 |
18 | virtual bool getEffectName(char *name);
19 | virtual bool getProductString(char *text);
20 |
21 | Adultery *GetAdultery() const;
22 | };
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/Vsts/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(VSTDIR "" CACHE PATH "VST system directory")
2 |
3 | file(GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
4 | foreach(child ${children})
5 | if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${child})
6 | file(GLOB sources ${CMAKE_CURRENT_SOURCE_DIR}/${child}/*.h)
7 | aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/${child} sources)
8 | file(WRITE "${CMAKE_BINARY_DIR}/${child}.def"
9 | "LIBRARY ${child}\nEXPORTS\nVSTPluginMain\nmain=VSTPluginMain")
10 | add_library(${child} SHARED
11 | ${sources} ../Data/data.rc ${CMAKE_BINARY_DIR}/${child}.def)
12 | target_link_libraries(${child} WaveSabreCore WaveSabreVstLib)
13 | set_property(TARGET ${child} APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL
14 | " /LTCG")
15 | set_property(TARGET ${child} PROPERTY FOLDER VSTs)
16 |
17 | if(VSTDIR)
18 | add_custom_command(TARGET ${child} POST_BUILD
19 | COMMAND ${CMAKE_COMMAND} -E copy $ ${VSTDIR})
20 | endif()
21 | endif()
22 | endforeach()
23 |
--------------------------------------------------------------------------------
/Vsts/Cathedral/CathedralEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "CathedralEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | CathedralEditor::CathedralEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 560, 100, "CATHEDRAL")
8 | {
9 | }
10 |
11 | CathedralEditor::~CathedralEditor()
12 | {
13 | }
14 |
15 | void CathedralEditor::Open()
16 | {
17 | addKnob((VstInt32)Cathedral::ParamIndices::Freeze, "FREEZE");
18 | addKnob((VstInt32)Cathedral::ParamIndices::RoomSize, "ROOM SIZE");
19 | addKnob((VstInt32)Cathedral::ParamIndices::Damp, "DAMP");
20 | addKnob((VstInt32)Cathedral::ParamIndices::Width, "WIDTH");
21 | addKnob((VstInt32)Cathedral::ParamIndices::PreDelay, "PRE DLY");
22 | addSpacer();
23 | addKnob((VstInt32)Cathedral::ParamIndices::LowCutFreq, "LC FREQ");
24 | addKnob((VstInt32)Cathedral::ParamIndices::HighCutFreq, "HC FREQ");
25 | addSpacer();
26 | addKnob((VstInt32)Cathedral::ParamIndices::DryWet, "DRY/WET");
27 |
28 | VstEditor::Open();
29 | }
30 |
--------------------------------------------------------------------------------
/Vsts/Cathedral/CathedralEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __CATHEDRALEDITOR_H__
2 | #define __CATHEDRALEDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class CathedralEditor : public VstEditor
8 | {
9 | public:
10 | CathedralEditor(AudioEffect *audioEffect);
11 | virtual ~CathedralEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Cathedral/CathedralVst.cpp:
--------------------------------------------------------------------------------
1 | #include "CathedralVst.h"
2 | #include "CathedralEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new CathedralVst(audioMaster);
11 | }
12 |
13 | CathedralVst::CathedralVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Cathedral::ParamIndices::NumParams, 2, 2, 'Cath', new Cathedral())
15 | {
16 | setEditor(new CathedralEditor(this));
17 | }
18 |
19 | void CathedralVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Cathedral::ParamIndices)index)
22 | {
23 | case Cathedral::ParamIndices::Freeze: vst_strncpy(text, "Freeze", kVstMaxParamStrLen); break;
24 | case Cathedral::ParamIndices::RoomSize: vst_strncpy(text, "Roomsize", kVstMaxParamStrLen); break;
25 | case Cathedral::ParamIndices::Damp: vst_strncpy(text, "Damp", kVstMaxParamStrLen); break;
26 | case Cathedral::ParamIndices::Width: vst_strncpy(text, "Width", kVstMaxParamStrLen); break;
27 | case Cathedral::ParamIndices::LowCutFreq: vst_strncpy(text, "LC Freq", kVstMaxParamStrLen); break;
28 | case Cathedral::ParamIndices::HighCutFreq: vst_strncpy(text, "HC Freq", kVstMaxParamStrLen); break;
29 | case Cathedral::ParamIndices::DryWet: vst_strncpy(text, "Dry/Wet", kVstMaxParamStrLen); break;
30 | case Cathedral::ParamIndices::PreDelay: vst_strncpy(text, "Pre Dly", kVstMaxParamStrLen); break;
31 | }
32 | }
33 |
34 | bool CathedralVst::getEffectName(char *name)
35 | {
36 | vst_strncpy(name, "WaveSabre - Cathedral", kVstMaxEffectNameLen);
37 | return true;
38 | }
39 |
40 | bool CathedralVst::getProductString(char *text)
41 | {
42 | vst_strncpy(text, "WaveSabre - Cathedral", kVstMaxProductStrLen);
43 | return true;
44 | }
45 |
--------------------------------------------------------------------------------
/Vsts/Cathedral/CathedralVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __CATHEDRALVST_H__
2 | #define __CATHEDRALVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class CathedralVst : public VstPlug
8 | {
9 | public:
10 | CathedralVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/Vsts/Chamber/ChamberEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "ChamberEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | ChamberEditor::ChamberEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 460, 100, "CHAMBER")
8 | {
9 | }
10 |
11 | ChamberEditor::~ChamberEditor()
12 | {
13 | }
14 |
15 | void ChamberEditor::Open()
16 | {
17 | addKnob((VstInt32)Chamber::ParamIndices::Mode, "MODE");
18 | addSpacer();
19 | addKnob((VstInt32)Chamber::ParamIndices::Feedback, "FEEDBACK");
20 | addSpacer();
21 | addKnob((VstInt32)Chamber::ParamIndices::PreDelay, "PRE DELAY");
22 | addSpacer();
23 | addKnob((VstInt32)Chamber::ParamIndices::LowCutFreq, "LC FREQ");
24 | addSpacer();
25 | addKnob((VstInt32)Chamber::ParamIndices::HighCutFreq, "HC FREQ");
26 | addSpacer();
27 | addKnob((VstInt32)Chamber::ParamIndices::DryWet, "DRY/WET");
28 |
29 | VstEditor::Open();
30 | }
31 |
--------------------------------------------------------------------------------
/Vsts/Chamber/ChamberEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __CHAMBEREDITOR_H__
2 | #define __CHAMBEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class ChamberEditor : public VstEditor
8 | {
9 | public:
10 | ChamberEditor(AudioEffect *audioEffect);
11 | virtual ~ChamberEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Chamber/ChamberVst.cpp:
--------------------------------------------------------------------------------
1 | #include "ChamberVst.h"
2 | #include "ChamberEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new ChamberVst(audioMaster);
11 | }
12 |
13 | ChamberVst::ChamberVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Chamber::ParamIndices::NumParams, 2, 2, 'Chmb', new Chamber())
15 | {
16 | setEditor(new ChamberEditor(this));
17 | }
18 |
19 | void ChamberVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Chamber::ParamIndices)index)
22 | {
23 | case Chamber::ParamIndices::Mode: vst_strncpy(text, "Mode", kVstMaxParamStrLen); break;
24 | case Chamber::ParamIndices::Feedback: vst_strncpy(text, "Feedback", kVstMaxParamStrLen); break;
25 | case Chamber::ParamIndices::LowCutFreq: vst_strncpy(text, "LC Freq", kVstMaxParamStrLen); break;
26 | case Chamber::ParamIndices::HighCutFreq: vst_strncpy(text, "HC Freq", kVstMaxParamStrLen); break;
27 | case Chamber::ParamIndices::DryWet: vst_strncpy(text, "Dry/Wet", kVstMaxParamStrLen); break;
28 | case Chamber::ParamIndices::PreDelay: vst_strncpy(text, "Pre Dly", kVstMaxParamStrLen); break;
29 | }
30 | }
31 |
32 | bool ChamberVst::getEffectName(char *name)
33 | {
34 | vst_strncpy(name, "WaveSabre - Chamber", kVstMaxEffectNameLen);
35 | return true;
36 | }
37 |
38 | bool ChamberVst::getProductString(char *text)
39 | {
40 | vst_strncpy(text, "WaveSabre - Chamber", kVstMaxProductStrLen);
41 | return true;
42 | }
43 |
--------------------------------------------------------------------------------
/Vsts/Chamber/ChamberVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __CHAMBERVST_H__
2 | #define __CHAMBERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class ChamberVst : public VstPlug
8 | {
9 | public:
10 | ChamberVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/Vsts/Crusher/CrusherEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "CrusherEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | CrusherEditor::CrusherEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 250, 100, "CRUSHER")
8 | {
9 | }
10 |
11 | CrusherEditor::~CrusherEditor()
12 | {
13 | }
14 |
15 | void CrusherEditor::Open()
16 | {
17 | addKnob((VstInt32)Crusher::ParamIndices::Vertical, "VERTICAL");
18 | addSpacer();
19 | addKnob((VstInt32)Crusher::ParamIndices::Horizontal, "HORIZONTAL");
20 | addSpacer();
21 | addKnob((VstInt32)Crusher::ParamIndices::DryWet, "DRY/WET");
22 |
23 | VstEditor::Open();
24 | }
25 |
--------------------------------------------------------------------------------
/Vsts/Crusher/CrusherEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __CRUSHEREDITOR_H__
2 | #define __CRUSHEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class CrusherEditor : public VstEditor
8 | {
9 | public:
10 | CrusherEditor(AudioEffect *audioEffect);
11 | virtual ~CrusherEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Crusher/CrusherVst.cpp:
--------------------------------------------------------------------------------
1 | #include "CrusherVst.h"
2 | #include "CrusherEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new CrusherVst(audioMaster);
11 | }
12 |
13 | CrusherVst::CrusherVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Crusher::ParamIndices::NumParams, 2, 2, 'Crsh', new Crusher())
15 | {
16 | setEditor(new CrusherEditor(this));
17 | }
18 |
19 | void CrusherVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Crusher::ParamIndices)index)
22 | {
23 | case Crusher::ParamIndices::Vertical: vst_strncpy(text, "Vert", kVstMaxParamStrLen); break;
24 | case Crusher::ParamIndices::Horizontal: vst_strncpy(text, "Hori", kVstMaxParamStrLen); break;
25 | case Crusher::ParamIndices::DryWet: vst_strncpy(text, "Dry/Wet", kVstMaxParamStrLen); break;
26 | }
27 | }
28 |
29 | bool CrusherVst::getEffectName(char *name)
30 | {
31 | vst_strncpy(name, "WaveSabre - Crusher", kVstMaxEffectNameLen);
32 | return true;
33 | }
34 |
35 | bool CrusherVst::getProductString(char *text)
36 | {
37 | vst_strncpy(text, "WaveSabre - Crusher", kVstMaxProductStrLen);
38 | return true;
39 | }
40 |
--------------------------------------------------------------------------------
/Vsts/Crusher/CrusherVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __CRUSHERVST_H__
2 | #define __CRUSHERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class CrusherVst : public VstPlug
8 | {
9 | public:
10 | CrusherVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/Vsts/Echo/EchoEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "EchoEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | EchoEditor::EchoEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 400, 160, "ECHO")
8 | {
9 | }
10 |
11 | EchoEditor::~EchoEditor()
12 | {
13 | }
14 |
15 | void EchoEditor::Open()
16 | {
17 | addKnob((VstInt32)Echo::ParamIndices::LeftDelayCoarse, "LEFT COARSE");
18 | addSpacer();
19 | addKnob((VstInt32)Echo::ParamIndices::LeftDelayFine, "LEFT FINE");
20 | addSpacer();
21 | addKnob((VstInt32)Echo::ParamIndices::Feedback, "FEEDBACK");
22 | addSpacer();
23 | addKnob((VstInt32)Echo::ParamIndices::Cross, "CROSS");
24 | addSpacer();
25 | addKnob((VstInt32)Echo::ParamIndices::DryWet, "DRY/WET");
26 |
27 | startNextRow();
28 | addKnob((VstInt32)Echo::ParamIndices::RightDelayCoarse, "RIGHT COARSE");
29 | addSpacer();
30 | addKnob((VstInt32)Echo::ParamIndices::RightDelayFine, "RIGHT FINE");
31 | addSpacer();
32 | addKnob((VstInt32)Echo::ParamIndices::LowCutFreq, "LC FREQ");
33 | addSpacer();
34 | addKnob((VstInt32)Echo::ParamIndices::HighCutFreq, "HC FREQ");
35 |
36 | VstEditor::Open();
37 | }
38 |
--------------------------------------------------------------------------------
/Vsts/Echo/EchoEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __ECHOEDITOR_H__
2 | #define __ECHOEDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class EchoEditor : public VstEditor
8 | {
9 | public:
10 | EchoEditor(AudioEffect *audioEffect);
11 | virtual ~EchoEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Echo/EchoVst.cpp:
--------------------------------------------------------------------------------
1 | #include "EchoVst.h"
2 | #include "EchoEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new EchoVst(audioMaster);
11 | }
12 |
13 | EchoVst::EchoVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Echo::ParamIndices::NumParams, 2, 2, 'Echo', new Echo())
15 | {
16 | setEditor(new EchoEditor(this));
17 | }
18 |
19 | void EchoVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Echo::ParamIndices)index)
22 | {
23 | case Echo::ParamIndices::LeftDelayCoarse: vst_strncpy(text, "LDly Crs", kVstMaxParamStrLen); break;
24 | case Echo::ParamIndices::LeftDelayFine: vst_strncpy(text, "LDly Fin", kVstMaxParamStrLen); break;
25 | case Echo::ParamIndices::RightDelayCoarse: vst_strncpy(text, "RDly Crs", kVstMaxParamStrLen); break;
26 | case Echo::ParamIndices::RightDelayFine: vst_strncpy(text, "RDly Fin", kVstMaxParamStrLen); break;
27 | case Echo::ParamIndices::LowCutFreq: vst_strncpy(text, "LC Freq", kVstMaxParamStrLen); break;
28 | case Echo::ParamIndices::HighCutFreq: vst_strncpy(text, "HC Freq", kVstMaxParamStrLen); break;
29 | case Echo::ParamIndices::Feedback: vst_strncpy(text, "Feedback", kVstMaxParamStrLen); break;
30 | case Echo::ParamIndices::Cross: vst_strncpy(text, "Cross", kVstMaxParamStrLen); break;
31 | case Echo::ParamIndices::DryWet: vst_strncpy(text, "Dry/Wet", kVstMaxParamStrLen); break;
32 | }
33 | }
34 |
35 | bool EchoVst::getEffectName(char *name)
36 | {
37 | vst_strncpy(name, "WaveSabre - Echo", kVstMaxEffectNameLen);
38 | return true;
39 | }
40 |
41 | bool EchoVst::getProductString(char *text)
42 | {
43 | vst_strncpy(text, "WaveSabre - Echo", kVstMaxProductStrLen);
44 | return true;
45 | }
46 |
--------------------------------------------------------------------------------
/Vsts/Echo/EchoVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __ECHOVST_H__
2 | #define __ECHOVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class EchoVst : public VstPlug
8 | {
9 | public:
10 | EchoVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/Vsts/Falcon/FalconEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "FalconEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | FalconEditor::FalconEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 820, 220, "FALCON")
8 | {
9 | }
10 |
11 | FalconEditor::~FalconEditor()
12 | {
13 | }
14 |
15 | void FalconEditor::Open()
16 | {
17 | addKnob((VstInt32)Falcon::ParamIndices::Osc1Waveform, "WAVEFORM");
18 | addSpacer();
19 | addKnob((VstInt32)Falcon::ParamIndices::Osc1RatioCoarse, "RATIO COARSE");
20 | addSpacer();
21 | addKnob((VstInt32)Falcon::ParamIndices::Osc1RatioFine, "RATIO SEMI");
22 | addSpacer();
23 | addKnob((VstInt32)Falcon::ParamIndices::Osc1Feedback, "FEEDBACK");
24 | addSpacer();
25 | addKnob((VstInt32)Falcon::ParamIndices::Osc1FeedForward, "FEEDFORWARD");
26 |
27 | addSpacer();
28 | addSpacer();
29 | addSpacer();
30 | addSpacer();
31 | addSpacer();
32 |
33 | addKnob((VstInt32)Falcon::ParamIndices::Osc1Attack, "ATTACK");
34 | addKnob((VstInt32)Falcon::ParamIndices::Osc1Decay, "DECAY");
35 | addKnob((VstInt32)Falcon::ParamIndices::Osc1Sustain, "SUSTAIN");
36 | addKnob((VstInt32)Falcon::ParamIndices::Osc1Release, "RELEASE");
37 |
38 | addSpacer();
39 | addSpacer();
40 | addSpacer();
41 |
42 | addKnob((VstInt32)Falcon::ParamIndices::MasterLevel, "MASTER");
43 |
44 | startNextRow();
45 | addSpacer();
46 | addSpacer();
47 |
48 | addKnob((VstInt32)Falcon::ParamIndices::Osc2Waveform, "WAVEFORM");
49 | addSpacer();
50 | addKnob((VstInt32)Falcon::ParamIndices::Osc2RatioCoarse, "RATIO COARSE");
51 | addSpacer();
52 | addKnob((VstInt32)Falcon::ParamIndices::Osc2RatioFine, "RATIO SEMI");
53 | addSpacer();
54 | addKnob((VstInt32)Falcon::ParamIndices::Osc2Feedback, "FEEDBACK");
55 |
56 | addSpacer();
57 | addSpacer();
58 | addSpacer();
59 | addSpacer();
60 | addSpacer();
61 | addSpacer();
62 | addSpacer();
63 | addSpacer();
64 |
65 | addKnob((VstInt32)Falcon::ParamIndices::Osc2Attack, "ATTACK");
66 | addKnob((VstInt32)Falcon::ParamIndices::Osc2Decay, "DECAY");
67 | addKnob((VstInt32)Falcon::ParamIndices::Osc2Sustain, "SUSTAIN");
68 | addKnob((VstInt32)Falcon::ParamIndices::Osc2Release, "RELEASE");
69 |
70 | startNextRow();
71 |
72 | addKnob((VstInt32)Falcon::ParamIndices::VoicesUnisono, "UNISONO");
73 | addKnob((VstInt32)Falcon::ParamIndices::VoicesDetune, "DETUNE");
74 | addKnob((VstInt32)Falcon::ParamIndices::VoicesPan, "PAN");
75 |
76 | addKnob((VstInt32)Falcon::ParamIndices::VibratoFreq, "VIB FREQ");
77 | addKnob((VstInt32)Falcon::ParamIndices::VibratoAmount, "VIB AMT");
78 |
79 | addKnob((VstInt32)Falcon::ParamIndices::VoiceMode, "MODE");
80 | addKnob((VstInt32)Falcon::ParamIndices::SlideTime, "SLIDE");
81 |
82 | addKnob((VstInt32)Falcon::ParamIndices::Rise, "RISE");
83 |
84 | addSpacer();
85 | addKnob((VstInt32)Falcon::ParamIndices::PitchAttack, "P ATTACK");
86 | addKnob((VstInt32)Falcon::ParamIndices::PitchDecay, "P DECAY");
87 | addKnob((VstInt32)Falcon::ParamIndices::PitchSustain, "P SUSTAIN");
88 | addKnob((VstInt32)Falcon::ParamIndices::PitchRelease, "P RELEASE");
89 | addKnob((VstInt32)Falcon::ParamIndices::PitchEnvAmt1, "P AMT 1");
90 | addKnob((VstInt32)Falcon::ParamIndices::PitchEnvAmt2, "P AMT 2");
91 |
92 | VstEditor::Open();
93 | }
94 |
--------------------------------------------------------------------------------
/Vsts/Falcon/FalconEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __FALCONEDITOR_H__
2 | #define __FALCONEDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class FalconEditor : public VstEditor
8 | {
9 | public:
10 | FalconEditor(AudioEffect *audioEffect);
11 | virtual ~FalconEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Falcon/FalconVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __FALCONVST_H__
2 | #define __FALCONVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class FalconVst : public VstPlug
8 | {
9 | public:
10 | FalconVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
19 |
--------------------------------------------------------------------------------
/Vsts/Leveller/LevellerEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "LevellerEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | LevellerEditor::LevellerEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 210, 340, "LEVELLER")
8 | {
9 | }
10 |
11 | LevellerEditor::~LevellerEditor()
12 | {
13 | }
14 |
15 | void LevellerEditor::Open()
16 | {
17 | addKnob((VstInt32)Leveller::ParamIndices::LowCutFreq, "LC FREQ");
18 | addKnob((VstInt32)Leveller::ParamIndices::LowCutQ, "LC Q");
19 |
20 | startNextRow();
21 |
22 | addKnob((VstInt32)Leveller::ParamIndices::Peak1Freq, "P1 FREQ");
23 | addKnob((VstInt32)Leveller::ParamIndices::Peak1Gain, "P1 GAIN");
24 | addKnob((VstInt32)Leveller::ParamIndices::Peak1Q, "P1 Q");
25 |
26 | startNextRow();
27 |
28 | addKnob((VstInt32)Leveller::ParamIndices::Peak2Freq, "P2 FREQ");
29 | addKnob((VstInt32)Leveller::ParamIndices::Peak2Gain, "P2 GAIN");
30 | addKnob((VstInt32)Leveller::ParamIndices::Peak2Q, "P2 Q");
31 |
32 | startNextRow();
33 |
34 | addKnob((VstInt32)Leveller::ParamIndices::Peak3Freq, "P3 FREQ");
35 | addKnob((VstInt32)Leveller::ParamIndices::Peak3Gain, "P3 GAIN");
36 | addKnob((VstInt32)Leveller::ParamIndices::Peak3Q, "P3 Q");
37 |
38 | startNextRow();
39 |
40 | addKnob((VstInt32)Leveller::ParamIndices::HighCutFreq, "HC FREQ");
41 | addKnob((VstInt32)Leveller::ParamIndices::HighCutQ, "HC Q");
42 | addKnob((VstInt32)Leveller::ParamIndices::Master, "MASTER");
43 |
44 | VstEditor::Open();
45 | }
46 |
--------------------------------------------------------------------------------
/Vsts/Leveller/LevellerEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __LEVELLEREDITOR_H__
2 | #define __LEVELLEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class LevellerEditor : public VstEditor
8 | {
9 | public:
10 | LevellerEditor(AudioEffect *audioEffect);
11 | virtual ~LevellerEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Leveller/LevellerVst.cpp:
--------------------------------------------------------------------------------
1 | #include "LevellerVst.h"
2 | #include "LevellerEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new LevellerVst(audioMaster);
11 | }
12 |
13 | LevellerVst::LevellerVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Leveller::ParamIndices::NumParams, 2, 2, 'Lvlr', new Leveller())
15 | {
16 | setEditor(new LevellerEditor(this));
17 | }
18 |
19 | void LevellerVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Leveller::ParamIndices)index)
22 | {
23 | case Leveller::ParamIndices::LowCutFreq: vst_strncpy(text, "LC Freq", kVstMaxParamStrLen); break;
24 | case Leveller::ParamIndices::LowCutQ: vst_strncpy(text, "LC Q", kVstMaxParamStrLen); break;
25 |
26 | case Leveller::ParamIndices::Peak1Freq: vst_strncpy(text, "Pk1 Freq", kVstMaxParamStrLen); break;
27 | case Leveller::ParamIndices::Peak1Gain: vst_strncpy(text, "Pk1 Gain", kVstMaxParamStrLen); break;
28 | case Leveller::ParamIndices::Peak1Q: vst_strncpy(text, "Pk1 Q", kVstMaxParamStrLen); break;
29 |
30 | case Leveller::ParamIndices::Peak2Freq: vst_strncpy(text, "Pk2 Freq", kVstMaxParamStrLen); break;
31 | case Leveller::ParamIndices::Peak2Gain: vst_strncpy(text, "Pk2 Gain", kVstMaxParamStrLen); break;
32 | case Leveller::ParamIndices::Peak2Q: vst_strncpy(text, "Pk2 Q", kVstMaxParamStrLen); break;
33 |
34 | case Leveller::ParamIndices::Peak3Freq: vst_strncpy(text, "Pk3 Freq", kVstMaxParamStrLen); break;
35 | case Leveller::ParamIndices::Peak3Gain: vst_strncpy(text, "Pk3 Gain", kVstMaxParamStrLen); break;
36 | case Leveller::ParamIndices::Peak3Q: vst_strncpy(text, "Pk3 Q", kVstMaxParamStrLen); break;
37 |
38 | case Leveller::ParamIndices::HighCutFreq: vst_strncpy(text, "HC Freq", kVstMaxParamStrLen); break;
39 | case Leveller::ParamIndices::HighCutQ: vst_strncpy(text, "HC Q", kVstMaxParamStrLen); break;
40 |
41 | case Leveller::ParamIndices::Master: vst_strncpy(text, "Master", kVstMaxParamStrLen); break;
42 | }
43 | }
44 |
45 | bool LevellerVst::getEffectName(char *name)
46 | {
47 | vst_strncpy(name, "WaveSabre - Leveller", kVstMaxEffectNameLen);
48 | return true;
49 | }
50 |
51 | bool LevellerVst::getProductString(char *text)
52 | {
53 | vst_strncpy(text, "WaveSabre - Leveller", kVstMaxProductStrLen);
54 | return true;
55 | }
56 |
--------------------------------------------------------------------------------
/Vsts/Leveller/LevellerVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __LEVELLERVST_H__
2 | #define __LEVELLERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class LevellerVst : public VstPlug
8 | {
9 | public:
10 | LevellerVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/Vsts/Scissor/ScissorEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "ScissorEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | ScissorEditor::ScissorEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 480, 100, "SCISSOR")
8 | {
9 | }
10 |
11 | ScissorEditor::~ScissorEditor()
12 | {
13 | }
14 |
15 | void ScissorEditor::Open()
16 | {
17 | addKnob((VstInt32)Scissor::ParamIndices::Type, "TYPE");
18 | addSpacer();
19 | addKnob((VstInt32)Scissor::ParamIndices::Drive, "DRIVE");
20 | addSpacer();
21 | addKnob((VstInt32)Scissor::ParamIndices::Threshold, "THRESHOLD");
22 | addSpacer();
23 | addKnob((VstInt32)Scissor::ParamIndices::Foldover, "FOLDOVER");
24 | addSpacer();
25 | addKnob((VstInt32)Scissor::ParamIndices::DryWet, "DRY/WET");
26 | addSpacer();
27 | addKnob((VstInt32)Scissor::ParamIndices::Oversampling, "OVERSAMPLING");
28 |
29 | VstEditor::Open();
30 | }
31 |
--------------------------------------------------------------------------------
/Vsts/Scissor/ScissorEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __SCISSOREDITOR_H__
2 | #define __SCISSOREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class ScissorEditor : public VstEditor
8 | {
9 | public:
10 | ScissorEditor(AudioEffect *audioEffect);
11 | virtual ~ScissorEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Scissor/ScissorVst.cpp:
--------------------------------------------------------------------------------
1 | #include "ScissorVst.h"
2 | #include "ScissorEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new ScissorVst(audioMaster);
11 | }
12 |
13 | ScissorVst::ScissorVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Scissor::ParamIndices::NumParams, 2, 2, 'Scsr', new Scissor())
15 | {
16 | setEditor(new ScissorEditor(this));
17 | }
18 |
19 | void ScissorVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Scissor::ParamIndices)index)
22 | {
23 | case Scissor::ParamIndices::Drive: vst_strncpy(text, "Drive", kVstMaxParamStrLen); break;
24 | case Scissor::ParamIndices::Threshold: vst_strncpy(text, "Threshld", kVstMaxParamStrLen); break;
25 | case Scissor::ParamIndices::Foldover: vst_strncpy(text, "Foldover", kVstMaxParamStrLen); break;
26 | case Scissor::ParamIndices::DryWet: vst_strncpy(text, "Dry/Wet", kVstMaxParamStrLen); break;
27 | case Scissor::ParamIndices::Type: vst_strncpy(text, "Type", kVstMaxParamStrLen); break;
28 | case Scissor::ParamIndices::Oversampling: vst_strncpy(text, "Oversmpl", kVstMaxParamStrLen); break;
29 | }
30 | }
31 |
32 | bool ScissorVst::getEffectName(char *name)
33 | {
34 | vst_strncpy(name, "WaveSabre - Scissor", kVstMaxEffectNameLen);
35 | return true;
36 | }
37 |
38 | bool ScissorVst::getProductString(char *text)
39 | {
40 | vst_strncpy(text, "WaveSabre - Scissor", kVstMaxProductStrLen);
41 | return true;
42 | }
43 |
--------------------------------------------------------------------------------
/Vsts/Scissor/ScissorVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __SCISSORVST_H__
2 | #define __SCISSORVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class ScissorVst : public VstPlug
8 | {
9 | public:
10 | ScissorVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
19 |
--------------------------------------------------------------------------------
/Vsts/Slaughter/SlaughterEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __SLAUGHTEREDITOR_H__
2 | #define __SLAUGHTEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class SlaughterEditor : public VstEditor
8 | {
9 | public:
10 | SlaughterEditor(AudioEffect *audioEffect);
11 | virtual ~SlaughterEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Slaughter/SlaughterVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __SLAUGHTERVST_H__
2 | #define __SLAUGHTERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class SlaughterVst : public VstPlug
8 | {
9 | public:
10 | SlaughterVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
19 |
--------------------------------------------------------------------------------
/Vsts/Smasher/SmasherEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "SmasherEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | SmasherEditor::SmasherEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 330, 160, "SMASHER")
8 | {
9 | }
10 |
11 | SmasherEditor::~SmasherEditor()
12 | {
13 | }
14 |
15 | void SmasherEditor::Open()
16 | {
17 | addKnob((VstInt32)Smasher::ParamIndices::InputGain, "INPUT GAIN");
18 | addSpacer();
19 | addKnob((VstInt32)Smasher::ParamIndices::Threshold, "THRESHOLD");
20 | addSpacer();
21 | addKnob((VstInt32)Smasher::ParamIndices::Attack, "ATTACK");
22 | addSpacer();
23 | addKnob((VstInt32)Smasher::ParamIndices::OutputGain, "OUTPUT GAIN");
24 |
25 | startNextRow();
26 |
27 | addKnob((VstInt32)Smasher::ParamIndices::Sidechain, "SIDECHAIN");
28 | addSpacer();
29 | addKnob((VstInt32)Smasher::ParamIndices::Ratio, "RATIO");
30 | addSpacer();
31 | addKnob((VstInt32)Smasher::ParamIndices::Release, "RELEASE");
32 |
33 | VstEditor::Open();
34 | }
35 |
--------------------------------------------------------------------------------
/Vsts/Smasher/SmasherEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __SMASHEREDITOR_H__
2 | #define __SMASHEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class SmasherEditor : public VstEditor
8 | {
9 | public:
10 | SmasherEditor(AudioEffect *audioEffect);
11 | virtual ~SmasherEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Smasher/SmasherVst.cpp:
--------------------------------------------------------------------------------
1 | #include "SmasherVst.h"
2 | #include "SmasherEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new SmasherVst(audioMaster);
11 | }
12 |
13 | SmasherVst::SmasherVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Smasher::ParamIndices::NumParams, 4, 2, 'Smsh', new Smasher())
15 | {
16 | setEditor(new SmasherEditor(this));
17 | }
18 |
19 | void SmasherVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Smasher::ParamIndices)index)
22 | {
23 | case Smasher::ParamIndices::Sidechain: vst_strncpy(text, "Sidchain", kVstMaxParamStrLen); break;
24 | case Smasher::ParamIndices::InputGain: vst_strncpy(text, "In Gain", kVstMaxParamStrLen); break;
25 | case Smasher::ParamIndices::Threshold: vst_strncpy(text, "Thres", kVstMaxParamStrLen); break;
26 | case Smasher::ParamIndices::Ratio: vst_strncpy(text, "Ratio", kVstMaxParamStrLen); break;
27 | case Smasher::ParamIndices::Attack: vst_strncpy(text, "Attack", kVstMaxParamStrLen); break;
28 | case Smasher::ParamIndices::Release: vst_strncpy(text, "Release", kVstMaxParamStrLen); break;
29 | case Smasher::ParamIndices::OutputGain: vst_strncpy(text, "Out Gain", kVstMaxParamStrLen); break;
30 | }
31 | }
32 |
33 | bool SmasherVst::getEffectName(char *name)
34 | {
35 | vst_strncpy(name, "WaveSabre - Smasher", kVstMaxEffectNameLen);
36 | return true;
37 | }
38 |
39 | bool SmasherVst::getProductString(char *text)
40 | {
41 | vst_strncpy(text, "WaveSabre - Smasher", kVstMaxProductStrLen);
42 | return true;
43 | }
44 |
--------------------------------------------------------------------------------
/Vsts/Smasher/SmasherVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __SMASHERVST_H__
2 | #define __SMASHERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class SmasherVst : public VstPlug
8 | {
9 | public:
10 | SmasherVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/Vsts/Specimen/SpecimenEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __SPECIMENEDITOR_H__
2 | #define __SPECIMENEDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | #include
8 | using namespace WaveSabreCore;
9 |
10 | class SpecimenEditor : public VstEditor
11 | {
12 | public:
13 | SpecimenEditor(AudioEffect *audioEffect);
14 | virtual ~SpecimenEditor();
15 |
16 | virtual void Open();
17 |
18 | virtual void setParameter(VstInt32 index, float value);
19 |
20 | private:
21 | static BOOL __stdcall driverEnumCallback(HACMDRIVERID driverId, DWORD_PTR dwInstance, DWORD fdwSupport);
22 | static BOOL __stdcall formatEnumCallback(HACMDRIVERID driverId, LPACMFORMATDETAILS formatDetails, DWORD_PTR dwInstance, DWORD fdwSupport);
23 |
24 | static HACMDRIVERID driverId;
25 | static WAVEFORMATEX *foundWaveFormat;
26 |
27 | bool pressedTheFuck;
28 |
29 | CFileSelector *fileSelector;
30 |
31 | Specimen *specimen;
32 | };
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/Vsts/Specimen/SpecimenVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __SPECIMENVST_H__
2 | #define __SPECIMENVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | #include
8 | using namespace WaveSabreCore;
9 |
10 |
11 | class SpecimenVst : public VstPlug
12 | {
13 | public:
14 | SpecimenVst(audioMasterCallback audioMaster);
15 |
16 | virtual void getParameterName(VstInt32 index, char *text);
17 |
18 | virtual bool getEffectName(char *name);
19 | virtual bool getProductString(char *text);
20 |
21 | Specimen *GetSpecimen() const;
22 | };
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/Vsts/Thunder/ThunderEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __THUNDEREDITOR_H__
2 | #define __THUNDEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | #include
8 | using namespace WaveSabreCore;
9 |
10 |
11 | class ThunderEditor : public VstEditor
12 | {
13 | public:
14 | ThunderEditor(AudioEffect *audioEffect);
15 | virtual ~ThunderEditor();
16 |
17 | virtual void Open();
18 |
19 | virtual void setParameter(VstInt32 index, float value);
20 |
21 | private:
22 | static BOOL __stdcall driverEnumCallback(HACMDRIVERID driverId, DWORD_PTR dwInstance, DWORD fdwSupport);
23 | static BOOL __stdcall formatEnumCallback(HACMDRIVERID driverId, LPACMFORMATDETAILS formatDetails, DWORD_PTR dwInstance, DWORD fdwSupport);
24 |
25 | static HACMDRIVERID driverId;
26 | static WAVEFORMATEX *foundWaveFormat;
27 |
28 | bool pressedTheFuck;
29 |
30 | CFileSelector *fileSelector;
31 |
32 | Thunder *thunder;
33 | };
34 |
35 | #endif
36 |
--------------------------------------------------------------------------------
/Vsts/Thunder/ThunderVst.cpp:
--------------------------------------------------------------------------------
1 | #include "ThunderVst.h"
2 | #include "ThunderEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new ThunderVst(audioMaster);
11 | }
12 |
13 | ThunderVst::ThunderVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, 0, 0, 2, 'Tndr', new Thunder(), true)
15 | {
16 | setEditor(new ThunderEditor(this));
17 | }
18 |
19 | bool ThunderVst::getEffectName(char *name)
20 | {
21 | vst_strncpy(name, "WaveSabre - Thunder", kVstMaxEffectNameLen);
22 | return true;
23 | }
24 |
25 | bool ThunderVst::getProductString(char *text)
26 | {
27 | vst_strncpy(text, "WaveSabre - Thunder", kVstMaxProductStrLen);
28 | return true;
29 | }
30 |
31 | Thunder *ThunderVst::GetThunder() const
32 | {
33 | return (Thunder *)getDevice();
34 | }
35 |
--------------------------------------------------------------------------------
/Vsts/Thunder/ThunderVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __THUNDERVST_H__
2 | #define __THUNDERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | #include
8 | using namespace WaveSabreCore;
9 |
10 | class ThunderVst : public VstPlug
11 | {
12 | public:
13 | ThunderVst(audioMasterCallback audioMaster);
14 |
15 | virtual bool getEffectName(char *name);
16 | virtual bool getProductString(char *text);
17 |
18 | Thunder *GetThunder() const;
19 | };
20 |
21 | #endif
22 |
--------------------------------------------------------------------------------
/Vsts/Twister/TwisterEditor.cpp:
--------------------------------------------------------------------------------
1 | #include "TwisterEditor.h"
2 |
3 | #include
4 | using namespace WaveSabreCore;
5 |
6 | TwisterEditor::TwisterEditor(AudioEffect *audioEffect)
7 | : VstEditor(audioEffect, 400, 160, "TWISTER")
8 | {
9 | }
10 |
11 | TwisterEditor::~TwisterEditor()
12 | {
13 | }
14 |
15 | void TwisterEditor::Open()
16 | {
17 | addKnob((VstInt32)Twister::ParamIndices::Type, "TYPE");
18 | addKnob((VstInt32)Twister::ParamIndices::Amount, "AMOUNT");
19 | addKnob((VstInt32)Twister::ParamIndices::Feedback, "FEEDBACK");
20 | addKnob((VstInt32)Twister::ParamIndices::Spread, "SPREAD");
21 | addSpacer();
22 | addKnob((VstInt32)Twister::ParamIndices::VibratoFreq, "VIB FREQ");
23 | addKnob((VstInt32)Twister::ParamIndices::VibratoAmount, "VIB AMT");
24 |
25 | startNextRow();
26 | addKnob((VstInt32)Twister::ParamIndices::LowCutFreq, "LC FREQ");
27 | addKnob((VstInt32)Twister::ParamIndices::HighCutFreq, "HC FREQ");
28 | addSpacer();
29 | addKnob((VstInt32)Twister::ParamIndices::DryWet, "DRY/WET");
30 |
31 | VstEditor::Open();
32 | }
33 |
--------------------------------------------------------------------------------
/Vsts/Twister/TwisterEditor.h:
--------------------------------------------------------------------------------
1 | #ifndef __TWISTEREDITOR_H__
2 | #define __TWISTEREDITOR_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class TwisterEditor : public VstEditor
8 | {
9 | public:
10 | TwisterEditor(AudioEffect *audioEffect);
11 | virtual ~TwisterEditor();
12 |
13 | virtual void Open();
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/Vsts/Twister/TwisterVst.cpp:
--------------------------------------------------------------------------------
1 | #include "TwisterVst.h"
2 | #include "TwisterEditor.h"
3 |
4 | #include
5 | using namespace WaveSabreCore;
6 |
7 | AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
8 | {
9 | Helpers::Init();
10 | return new TwisterVst(audioMaster);
11 | }
12 |
13 | TwisterVst::TwisterVst(audioMasterCallback audioMaster)
14 | : VstPlug(audioMaster, (int)Twister::ParamIndices::NumParams, 2, 2, 'Twst', new Twister())
15 | {
16 | setEditor(new TwisterEditor(this));
17 | }
18 |
19 | void TwisterVst::getParameterName(VstInt32 index, char *text)
20 | {
21 | switch ((Twister::ParamIndices)index)
22 | {
23 | case Twister::ParamIndices::Type: vst_strncpy(text, "Type", kVstMaxParamStrLen); break;
24 | case Twister::ParamIndices::Amount: vst_strncpy(text, "Amount", kVstMaxParamStrLen); break;
25 | case Twister::ParamIndices::Feedback: vst_strncpy(text, "Feedback", kVstMaxParamStrLen); break;
26 | case Twister::ParamIndices::Spread: vst_strncpy(text, "Spread", kVstMaxParamStrLen); break;
27 | case Twister::ParamIndices::VibratoFreq: vst_strncpy(text, "Vib Frq", kVstMaxParamStrLen); break;
28 | case Twister::ParamIndices::VibratoAmount: vst_strncpy(text, "Vib Amt", kVstMaxParamStrLen); break;
29 | case Twister::ParamIndices::LowCutFreq: vst_strncpy(text, "LC Freq", kVstMaxParamStrLen); break;
30 | case Twister::ParamIndices::HighCutFreq: vst_strncpy(text, "HC Freq", kVstMaxParamStrLen); break;
31 | case Twister::ParamIndices::DryWet: vst_strncpy(text, "Dry/Wet", kVstMaxParamStrLen); break;
32 | }
33 | }
34 |
35 | bool TwisterVst::getEffectName(char *name)
36 | {
37 | vst_strncpy(name, "WaveSabre - Twister", kVstMaxEffectNameLen);
38 | return true;
39 | }
40 |
41 | bool TwisterVst::getProductString(char *text)
42 | {
43 | vst_strncpy(text, "WaveSabre - Twister", kVstMaxProductStrLen);
44 | return true;
45 | }
46 |
--------------------------------------------------------------------------------
/Vsts/Twister/TwisterVst.h:
--------------------------------------------------------------------------------
1 | #ifndef __TWISTERVST_H__
2 | #define __TWISTERVST_H__
3 |
4 | #include
5 | using namespace WaveSabreVstLib;
6 |
7 | class TwisterVst : public VstPlug
8 | {
9 | public:
10 | TwisterVst(audioMasterCallback audioMaster);
11 |
12 | virtual void getParameterName(VstInt32 index, char *text);
13 |
14 | virtual bool getEffectName(char *name);
15 | virtual bool getProductString(char *text);
16 | };
17 |
18 | #endif
--------------------------------------------------------------------------------
/WaveSabreConvert/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(WAVESABRE_CONVERT_SOURCES
2 | FLConverter.cs
3 | ILog.cs
4 | LiveConverter.cs
5 | LiveParser.cs
6 | LiveProject.cs
7 | MetaPlugin.cs
8 | ProjectConverter.cs
9 | ReaperConverter.cs
10 | ReaperParser.cs
11 | RenoiseConverter.cs
12 | RenoiseInject.cs
13 | RenoiseParser.cs
14 | RenoiseSong63.cs
15 | SendItConfig.cs
16 | Serializer.cs
17 | Song.cs
18 | Utils.cs
19 |
20 | ReaperElements/ReaperElement.cs
21 | ReaperElements/ReaperProject.cs
22 | ReaperElements/ReaperTag.cs
23 | ReaperElements/ReaperTrack.cs
24 |
25 | Properties/AssemblyInfo.cs
26 | Properties/Resources.Designer.cs
27 | Properties/Resources.resx
28 |
29 | Resources/Song.xml
30 | Resources/template.xrns
31 | )
32 |
33 | add_library(WaveSabreConvert SHARED ${WAVESABRE_CONVERT_SOURCES})
34 |
35 | csharp_set_designer_cs_properties(${WAVESABRE_CONVERT_SOURCES})
36 | csharp_set_windows_forms_properties(${WAVESABRE_CONVERT_SOURCES})
37 | set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_REFERENCE_Monad.FLParser "${CMAKE_CURRENT_SOURCE_DIR}/FLParser/Monad.FLParser.dll")
38 | set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
39 | set_property(TARGET WaveSabreConvert PROPERTY VS_DOTNET_REFERENCES
40 | "System"
41 | "System.Core"
42 | "System.IO.Compression"
43 | "System.IO.Compression.FileSystem"
44 | "System.Xml.Linq"
45 | "System.Data.DataSetExtensions"
46 | "Microsoft.CSharp"
47 | "System.Data"
48 | "System.Xml"
49 | "System.ComponentModel"
50 | )
51 | set_target_properties(WaveSabreConvert PROPERTIES VS_GLOBAL_ROOTNAMESPACE WaveSabreConvert)
52 |
--------------------------------------------------------------------------------
/WaveSabreConvert/FLParser/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2017 MONAD Demogroup
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/WaveSabreConvert/FLParser/Monad.FLParser.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/logicomacorp/WaveSabre/3739be9d5ecf1313114d6277205a359c4dc32c15/WaveSabreConvert/FLParser/Monad.FLParser.dll
--------------------------------------------------------------------------------
/WaveSabreConvert/ILog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace WaveSabreConvert
8 | {
9 | public interface ILog
10 | {
11 | void Write(string value);
12 | void WriteLine(string value);
13 | void WriteLine(string format, object arg0);
14 | void WriteLine(string format, params object[] arg);
15 | }
16 |
17 | public class ConsoleLogger : ILog
18 | {
19 | public void Write(string value)
20 | {
21 | Console.Write(value);
22 | }
23 | public void WriteLine(string value)
24 | {
25 | Console.WriteLine(value);
26 | }
27 | public void WriteLine(string format, object arg0)
28 | {
29 | Console.WriteLine(format, arg0);
30 | }
31 | public void WriteLine(string format, params object[] arg)
32 | {
33 | Console.WriteLine(format, arg);
34 | }
35 | }
36 |
37 | public class LogEvent : EventArgs
38 | {
39 | public string Output { get; set; }
40 | }
41 |
42 | public class EventLogger : ILog
43 | {
44 | public event EventHandler OnLog;
45 |
46 | protected virtual void LogOutput(EventArgs e)
47 | {
48 | EventHandler handler = OnLog;
49 | if (handler != null)
50 | {
51 | handler(this, e);
52 | }
53 | }
54 |
55 | public void Write(string value)
56 | {
57 | var e = new LogEvent();
58 | e.Output = value;
59 | LogOutput(e);
60 | }
61 | public void WriteLine(string value)
62 | {
63 | var e = new LogEvent();
64 | e.Output = value + Environment.NewLine;
65 | LogOutput(e);
66 | }
67 | public void WriteLine(string format, object arg0)
68 | {
69 | var e = new LogEvent();
70 | e.Output = string.Format(format, arg0) + Environment.NewLine;
71 | LogOutput(e);
72 | }
73 | public void WriteLine(string format, params object[] arg)
74 | {
75 | var e = new LogEvent();
76 | e.Output = string.Format(format, arg) + Environment.NewLine;
77 | LogOutput(e);
78 | }
79 | }
80 |
81 | public class NullLogger : ILog
82 | {
83 | public void Write(string value) { }
84 | public void WriteLine(string value) { }
85 | public void WriteLine(string format, object arg0) { }
86 | public void WriteLine(string format, params object[] arg) { }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/WaveSabreConvert/LiveProject.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace WaveSabreConvert
4 | {
5 | public class LiveProject
6 | {
7 | public class Send
8 | {
9 | public Track ReceivingTrack;
10 | public int ReceivingChannelIndex;
11 | public double Volume;
12 | public bool IsActive;
13 | public Send(Track receivingTrack, int receivingChannelIndex, double volume, bool isActive)
14 | {
15 | ReceivingTrack = receivingTrack;
16 | ReceivingChannelIndex = receivingChannelIndex;
17 | Volume = volume;
18 | IsActive = isActive;
19 | }
20 | }
21 |
22 | public class Event
23 | {
24 | public double Time;
25 | public float Value;
26 | }
27 |
28 | public class AutomationEnvelope
29 | {
30 | public int PointeeId;
31 | public List Events = new List();
32 | }
33 |
34 | public class FloatParameter
35 | {
36 | public int Id;
37 | public int AutomationTarget = -1;
38 | public List Events = new List();
39 | }
40 |
41 | public class Device
42 | {
43 | public string Id;
44 | public string PluginDll;
45 | public bool Bypass;
46 | public byte[] RawData;
47 | public List FloatParameters = new List();
48 | }
49 |
50 | public class Note
51 | {
52 | public double Time;
53 | public double Duration;
54 | public int Velocity;
55 | public bool IsEnabled;
56 | }
57 |
58 | public class KeyTrack
59 | {
60 | public int MidiKey;
61 | public List Notes = new List();
62 | }
63 |
64 | public class MidiClip
65 | {
66 | public double CurrentStart, CurrentEnd;
67 | public double LoopStart, LoopEnd, LoopStartRelative;
68 | public bool IsDisabled;
69 | public List KeyTracks = new List();
70 | }
71 |
72 | public class Track
73 | {
74 | public string Id;
75 | public string Name;
76 | public double Volume;
77 | public bool IsSpeakerOn;
78 | public List Sends = new List();
79 | public List Devices = new List();
80 | public List MidiClips = new List();
81 | public string TrackGroupId;
82 | public List AutomationEnvelopes = new List();
83 | }
84 |
85 | public List