mirror of
https://github.com/yokemura/Magical8bitPlug2.git
synced 2025-05-24 23:00:21 -04:00
Added code
This commit is contained in:
parent
64dcb731c2
commit
941a120dea
BIN
Builds/MacOSX/Icon.icns
Normal file
BIN
Builds/MacOSX/Icon.icns
Normal file
Binary file not shown.
50
Builds/MacOSX/Info-AU.plist
Normal file
50
Builds/MacOSX/Info-AU.plist
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.ymck.magical8bitPlug2Juce</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>AudioComponents</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Ymck: Magical 8bit Plug 2</string>
|
||||
<key>description</key>
|
||||
<string>8bit sound generator 2nd ver. by YMCK</string>
|
||||
<key>factoryFunction</key>
|
||||
<string>Magical8bitPlug2AUFactory</string>
|
||||
<key>manufacturer</key>
|
||||
<string>Ymck</string>
|
||||
<key>type</key>
|
||||
<string>aumu</string>
|
||||
<key>subtype</key>
|
||||
<string>synj</string>
|
||||
<key>version</key>
|
||||
<integer>65536</integer>
|
||||
<key>sandboxSafe</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
64
Builds/MacOSX/Info-AUv3_AppExtension.plist
Normal file
64
Builds/MacOSX/Info-AUv3_AppExtension.plist
Normal file
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.ymck.magical8bitPlug2Juce.magical8bitPlug2JuceAUv3</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionPrincipalClass</key>
|
||||
<string>Magical8bitPlug2AUFactoryAUv3</string>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
<string>com.apple.AudioUnit-UI</string>
|
||||
<key>NSExtensionAttributes</key>
|
||||
<dict>
|
||||
<key>AudioComponents</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>Ymck: Magical 8bit Plug 2</string>
|
||||
<key>description</key>
|
||||
<string>8bit sound generator 2nd ver. by YMCK</string>
|
||||
<key>factoryFunction</key>
|
||||
<string>Magical8bitPlug2AUFactoryAUv3</string>
|
||||
<key>manufacturer</key>
|
||||
<string>Ymck</string>
|
||||
<key>type</key>
|
||||
<string>aumu</string>
|
||||
<key>subtype</key>
|
||||
<string>synj</string>
|
||||
<key>version</key>
|
||||
<integer>65536</integer>
|
||||
<key>sandboxSafe</key>
|
||||
<true/>
|
||||
<key>tags</key>
|
||||
<array>
|
||||
<string>Synth</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
29
Builds/MacOSX/Info-Standalone_Plugin.plist
Normal file
29
Builds/MacOSX/Info-Standalone_Plugin.plist
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.ymck.magical8bitPlug2Juce</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
29
Builds/MacOSX/Info-VST.plist
Normal file
29
Builds/MacOSX/Info-VST.plist
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.ymck.magical8bitPlug2Juce</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
29
Builds/MacOSX/Info-VST3.plist
Normal file
29
Builds/MacOSX/Info-VST3.plist
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.ymck.magical8bitPlug2Juce</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Magical8bitPlug2</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
8
Builds/MacOSX/Magical8bitPlug2.entitlements
Normal file
8
Builds/MacOSX/Magical8bitPlug2.entitlements
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
1749
Builds/MacOSX/Magical8bitPlug2.xcodeproj/project.pbxproj
Normal file
1749
Builds/MacOSX/Magical8bitPlug2.xcodeproj/project.pbxproj
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildSystemType</key>
|
||||
<string>Original</string>
|
||||
</dict>
|
||||
</plist>
|
BIN
Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
BIN
Builds/MacOSX/RecentFilesMenuTemplate.nib
generated
Normal file
Binary file not shown.
47
Builds/VisualStudio2019/Magical8bitPlug2.sln
Normal file
47
Builds/VisualStudio2019/Magical8bitPlug2.sln
Normal file
@ -0,0 +1,47 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2019
|
||||
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Magical8bitPlug2 - Standalone Plugin", "Magical8bitPlug2_StandalonePlugin.vcxproj", "{C02870D7-AC33-3909-E665-C98867282BC1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84} = {80977313-1FCC-A730-AFD8-C24BE8D3CC84}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Magical8bitPlug2 - VST", "Magical8bitPlug2_VST.vcxproj", "{07728894-B31D-C03F-3B53-F1AA56D7D33E}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84} = {80977313-1FCC-A730-AFD8-C24BE8D3CC84}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Magical8bitPlug2 - VST3", "Magical8bitPlug2_VST3.vcxproj", "{836483B4-BF68-04F1-87CC-D36835A0F3C0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84} = {80977313-1FCC-A730-AFD8-C24BE8D3CC84}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Magical8bitPlug2 - Shared Code", "Magical8bitPlug2_SharedCode.vcxproj", "{80977313-1FCC-A730-AFD8-C24BE8D3CC84}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{07728894-B31D-C03F-3B53-F1AA56D7D33E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{07728894-B31D-C03F-3B53-F1AA56D7D33E}.Debug|x64.Build.0 = Debug|x64
|
||||
{07728894-B31D-C03F-3B53-F1AA56D7D33E}.Release|x64.ActiveCfg = Release|x64
|
||||
{07728894-B31D-C03F-3B53-F1AA56D7D33E}.Release|x64.Build.0 = Release|x64
|
||||
{836483B4-BF68-04F1-87CC-D36835A0F3C0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{836483B4-BF68-04F1-87CC-D36835A0F3C0}.Debug|x64.Build.0 = Debug|x64
|
||||
{836483B4-BF68-04F1-87CC-D36835A0F3C0}.Release|x64.ActiveCfg = Release|x64
|
||||
{836483B4-BF68-04F1-87CC-D36835A0F3C0}.Release|x64.Build.0 = Release|x64
|
||||
{C02870D7-AC33-3909-E665-C98867282BC1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C02870D7-AC33-3909-E665-C98867282BC1}.Debug|x64.Build.0 = Debug|x64
|
||||
{C02870D7-AC33-3909-E665-C98867282BC1}.Release|x64.ActiveCfg = Release|x64
|
||||
{C02870D7-AC33-3909-E665-C98867282BC1}.Release|x64.Build.0 = Release|x64
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84}.Debug|x64.Build.0 = Debug|x64
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84}.Release|x64.ActiveCfg = Release|x64
|
||||
{80977313-1FCC-A730-AFD8-C24BE8D3CC84}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
2786
Builds/VisualStudio2019/Magical8bitPlug2_SharedCode.vcxproj
Normal file
2786
Builds/VisualStudio2019/Magical8bitPlug2_SharedCode.vcxproj
Normal file
File diff suppressed because it is too large
Load Diff
4842
Builds/VisualStudio2019/Magical8bitPlug2_SharedCode.vcxproj.filters
Normal file
4842
Builds/VisualStudio2019/Magical8bitPlug2_SharedCode.vcxproj.filters
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Project DefaultTargets="Build"
|
||||
ToolsVersion="16.0"
|
||||
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{C02870D7-AC33-3909-E665-C98867282BC1}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"
|
||||
Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"
|
||||
Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
|
||||
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
|
||||
Label="LocalAppDataPlatform"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<TargetExt>.exe</TargetExt>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\Standalone Plugin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\Standalone Plugin\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Magical8bitPlug2</TargetName>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</GenerateManifest>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(SolutionDir)$(Platform)\$(Configuration)\Shared Code</LibraryPath>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\Standalone Plugin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\Standalone Plugin\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Magical8bitPlug2</TargetName>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</GenerateManifest>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(SolutionDir)$(Platform)\$(Configuration)\Shared Code</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<HeaderFileName/>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>C:\JUCE\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;C:\JUCE\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=1;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp14</LanguageStandard>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\Magical8bitPlug2.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)\Magical8bitPlug2.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(IntDir)\Magical8bitPlug2.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<HeaderFileName/>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<AdditionalIncludeDirectories>C:\JUCE\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;C:\JUCE\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=1;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp14</LanguageStandard>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\Magical8bitPlug2.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)\Magical8bitPlug2.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(IntDir)\Magical8bitPlug2.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_plugin_client_Standalone.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup/>
|
||||
<ItemGroup>
|
||||
<None Include=".\icon.ico"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include=".\resources.rc"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Project ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="JUCE Library Code">
|
||||
<UniqueIdentifier>{7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_plugin_client_Standalone.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup/>
|
||||
<ItemGroup>
|
||||
<None Include=".\icon.ico">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include=".\resources.rc">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
160
Builds/VisualStudio2019/Magical8bitPlug2_VST.vcxproj
Normal file
160
Builds/VisualStudio2019/Magical8bitPlug2_VST.vcxproj
Normal file
@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Project DefaultTargets="Build"
|
||||
ToolsVersion="16.0"
|
||||
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{07728894-B31D-C03F-3B53-F1AA56D7D33E}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"
|
||||
Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"
|
||||
Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
|
||||
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
|
||||
Label="LocalAppDataPlatform"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<TargetExt>.dll</TargetExt>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\VST\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\VST\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Magical8bitPlug2</TargetName>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</GenerateManifest>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(SolutionDir)$(Platform)\$(Configuration)\Shared Code</LibraryPath>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\VST\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\VST\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Magical8bitPlug2</TargetName>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</GenerateManifest>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(SolutionDir)$(Platform)\$(Configuration)\Shared Code</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<HeaderFileName/>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>C:\JUCE\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;C:\JUCE\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp14</LanguageStandard>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\Magical8bitPlug2.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)\Magical8bitPlug2.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(IntDir)\Magical8bitPlug2.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<HeaderFileName/>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<AdditionalIncludeDirectories>C:\JUCE\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;C:\JUCE\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=1;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp14</LanguageStandard>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\Magical8bitPlug2.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)\Magical8bitPlug2.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(IntDir)\Magical8bitPlug2.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_plugin_client_VST2.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup/>
|
||||
<ItemGroup>
|
||||
<None Include=".\icon.ico"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include=".\resources.rc"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
25
Builds/VisualStudio2019/Magical8bitPlug2_VST.vcxproj.filters
Normal file
25
Builds/VisualStudio2019/Magical8bitPlug2_VST.vcxproj.filters
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Project ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="JUCE Library Code">
|
||||
<UniqueIdentifier>{7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_plugin_client_VST2.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup/>
|
||||
<ItemGroup>
|
||||
<None Include=".\icon.ico">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include=".\resources.rc">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
160
Builds/VisualStudio2019/Magical8bitPlug2_VST3.vcxproj
Normal file
160
Builds/VisualStudio2019/Magical8bitPlug2_VST3.vcxproj
Normal file
@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Project DefaultTargets="Build"
|
||||
ToolsVersion="16.0"
|
||||
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{836483B4-BF68-04F1-87CC-D36835A0F3C0}</ProjectGuid>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"
|
||||
Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"
|
||||
Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
|
||||
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
|
||||
Label="LocalAppDataPlatform"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<TargetExt>.vst3</TargetExt>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\VST3\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\VST3\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Magical8bitPlug2</TargetName>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</GenerateManifest>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(LibraryPath);$(SolutionDir)$(Platform)\$(Configuration)\Shared Code</LibraryPath>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\VST3\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\VST3\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Magical8bitPlug2</TargetName>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</GenerateManifest>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(LibraryPath);$(SolutionDir)$(Platform)\$(Configuration)\Shared Code</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<HeaderFileName/>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>C:\JUCE\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;C:\JUCE\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp14</LanguageStandard>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\Magical8bitPlug2.vst3</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)\Magical8bitPlug2.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(IntDir)\Magical8bitPlug2.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<HeaderFileName/>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<AdditionalIncludeDirectories>C:\JUCE\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;C:\JUCE\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=1;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<AssemblerListingLocation>$(IntDir)\</AssemblerListingLocation>
|
||||
<ObjectFileName>$(IntDir)\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>$(IntDir)\</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<LanguageStandard>stdcpp14</LanguageStandard>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\Magical8bitPlug2.vst3</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)\Magical8bitPlug2.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<LargeAddressAware>true</LargeAddressAware>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>$(IntDir)\Magical8bitPlug2.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<AdditionalDependencies>Magical8bitPlug2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_plugin_client_VST3.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup/>
|
||||
<ItemGroup>
|
||||
<None Include=".\icon.ico"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include=".\resources.rc"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Project ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="JUCE Library Code">
|
||||
<UniqueIdentifier>{7ED5A90E-41AF-A1EF-659B-37CEEAB9BA61}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_plugin_client_VST3.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup/>
|
||||
<ItemGroup>
|
||||
<None Include=".\icon.ico">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include=".\resources.rc">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
BIN
Builds/VisualStudio2019/icon.ico
Normal file
BIN
Builds/VisualStudio2019/icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
33
Builds/VisualStudio2019/resources.rc
Normal file
33
Builds/VisualStudio2019/resources.rc
Normal file
@ -0,0 +1,33 @@
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "YMCK\0"
|
||||
VALUE "FileDescription", "Magical8bitPlug2\0"
|
||||
VALUE "FileVersion", "1.0.0\0"
|
||||
VALUE "ProductName", "Magical8bitPlug2\0"
|
||||
VALUE "ProductVersion", "1.0.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
21
CppProperties.json
Normal file
21
CppProperties.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"inheritEnvironments": [
|
||||
"msvc_x86"
|
||||
],
|
||||
"name": "x86-Release",
|
||||
"includePath": [
|
||||
"${env.INCLUDE}",
|
||||
"${workspaceRoot}\\**"
|
||||
],
|
||||
"defines": [
|
||||
"WIN32",
|
||||
"NDEBUG",
|
||||
"UNICODE",
|
||||
"_UNICODE"
|
||||
],
|
||||
"intelliSenseMode": "windows-msvc-x86"
|
||||
}
|
||||
]
|
||||
}
|
467
JuceLibraryCode/AppConfig.h
Normal file
467
JuceLibraryCode/AppConfig.h
Normal file
@ -0,0 +1,467 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
There's a section below where you can add your own custom code safely, and the
|
||||
Projucer will preserve the contents of that block, but the best way to change
|
||||
any of these definitions is by using the Projucer's project settings.
|
||||
|
||||
Any commented-out settings will assume their default values.
|
||||
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//==============================================================================
|
||||
// [BEGIN_USER_CODE_SECTION]
|
||||
|
||||
// (You can add your own code in this section, and the Projucer will not overwrite it)
|
||||
|
||||
// [END_USER_CODE_SECTION]
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
In accordance with the terms of the JUCE 5 End-Use License Agreement, the
|
||||
JUCE Code in SECTION A cannot be removed, changed or otherwise rendered
|
||||
ineffective unless you have a JUCE Indie or Pro license, or are using JUCE
|
||||
under the GPL v3 license.
|
||||
|
||||
End User License Agreement: www.juce.com/juce-5-licence
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
// BEGIN SECTION A
|
||||
|
||||
#ifndef JUCE_DISPLAY_SPLASH_SCREEN
|
||||
#define JUCE_DISPLAY_SPLASH_SCREEN 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_REPORT_APP_USAGE
|
||||
#define JUCE_REPORT_APP_USAGE 1
|
||||
#endif
|
||||
|
||||
// END SECTION A
|
||||
|
||||
#define JUCE_USE_DARK_SPLASH_SCREEN 0
|
||||
|
||||
#define JUCE_PROJUCER_VERSION 0x50406
|
||||
|
||||
//==============================================================================
|
||||
#define JUCE_MODULE_AVAILABLE_juce_audio_basics 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_audio_devices 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_audio_formats 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_audio_plugin_client 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_audio_processors 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_audio_utils 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_core 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_cryptography 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_data_structures 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_events 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_graphics 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_opengl 1
|
||||
|
||||
#define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1
|
||||
|
||||
//==============================================================================
|
||||
// juce_audio_devices flags:
|
||||
|
||||
#ifndef JUCE_USE_WINRT_MIDI
|
||||
//#define JUCE_USE_WINRT_MIDI 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_ASIO
|
||||
//#define JUCE_ASIO 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_WASAPI
|
||||
//#define JUCE_WASAPI 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_WASAPI_EXCLUSIVE
|
||||
//#define JUCE_WASAPI_EXCLUSIVE 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_DIRECTSOUND
|
||||
//#define JUCE_DIRECTSOUND 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_ALSA
|
||||
//#define JUCE_ALSA 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_JACK
|
||||
//#define JUCE_JACK 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_BELA
|
||||
//#define JUCE_BELA 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_ANDROID_OBOE
|
||||
//#define JUCE_USE_ANDROID_OBOE 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_ANDROID_OPENSLES
|
||||
//#define JUCE_USE_ANDROID_OPENSLES 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_DISABLE_AUDIO_MIXING_WITH_OTHER_APPS
|
||||
//#define JUCE_DISABLE_AUDIO_MIXING_WITH_OTHER_APPS 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_audio_formats flags:
|
||||
|
||||
#ifndef JUCE_USE_FLAC
|
||||
//#define JUCE_USE_FLAC 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_OGGVORBIS
|
||||
//#define JUCE_USE_OGGVORBIS 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_MP3AUDIOFORMAT
|
||||
//#define JUCE_USE_MP3AUDIOFORMAT 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_LAME_AUDIO_FORMAT
|
||||
//#define JUCE_USE_LAME_AUDIO_FORMAT 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT
|
||||
//#define JUCE_USE_WINDOWS_MEDIA_FORMAT 1
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_audio_plugin_client flags:
|
||||
|
||||
#ifndef JUCE_VST3_CAN_REPLACE_VST2
|
||||
#define JUCE_VST3_CAN_REPLACE_VST2 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS
|
||||
//#define JUCE_FORCE_USE_LEGACY_PARAM_IDS 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE
|
||||
//#define JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_STUDIO_ONE_COMPATIBLE_PARAMETERS
|
||||
//#define JUCE_USE_STUDIO_ONE_COMPATIBLE_PARAMETERS 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_STANDALONE_FILTER_WINDOW_USE_KIOSK_MODE
|
||||
//#define JUCE_STANDALONE_FILTER_WINDOW_USE_KIOSK_MODE 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_audio_processors flags:
|
||||
|
||||
#ifndef JUCE_PLUGINHOST_VST
|
||||
//#define JUCE_PLUGINHOST_VST 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_PLUGINHOST_VST3
|
||||
//#define JUCE_PLUGINHOST_VST3 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_PLUGINHOST_AU
|
||||
//#define JUCE_PLUGINHOST_AU 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_PLUGINHOST_LADSPA
|
||||
//#define JUCE_PLUGINHOST_LADSPA 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_audio_utils flags:
|
||||
|
||||
#ifndef JUCE_USE_CDREADER
|
||||
//#define JUCE_USE_CDREADER 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_CDBURNER
|
||||
//#define JUCE_USE_CDBURNER 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_core flags:
|
||||
|
||||
#ifndef JUCE_FORCE_DEBUG
|
||||
//#define JUCE_FORCE_DEBUG 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_LOG_ASSERTIONS
|
||||
//#define JUCE_LOG_ASSERTIONS 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_CHECK_MEMORY_LEAKS
|
||||
//#define JUCE_CHECK_MEMORY_LEAKS 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
//#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_INCLUDE_ZLIB_CODE
|
||||
//#define JUCE_INCLUDE_ZLIB_CODE 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_CURL
|
||||
//#define JUCE_USE_CURL 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_LOAD_CURL_SYMBOLS_LAZILY
|
||||
//#define JUCE_LOAD_CURL_SYMBOLS_LAZILY 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
|
||||
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES
|
||||
//#define JUCE_ALLOW_STATIC_NULL_VARIABLES 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_STRICT_REFCOUNTEDPOINTER
|
||||
#define JUCE_STRICT_REFCOUNTEDPOINTER 1
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_events flags:
|
||||
|
||||
#ifndef JUCE_EXECUTE_APP_SUSPEND_ON_IOS_BACKGROUND_TASK
|
||||
//#define JUCE_EXECUTE_APP_SUSPEND_ON_IOS_BACKGROUND_TASK 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_graphics flags:
|
||||
|
||||
#ifndef JUCE_USE_COREIMAGE_LOADER
|
||||
//#define JUCE_USE_COREIMAGE_LOADER 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_DIRECTWRITE
|
||||
//#define JUCE_USE_DIRECTWRITE 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_DISABLE_COREGRAPHICS_FONT_SMOOTHING
|
||||
//#define JUCE_DISABLE_COREGRAPHICS_FONT_SMOOTHING 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_gui_basics flags:
|
||||
|
||||
#ifndef JUCE_ENABLE_REPAINT_DEBUGGING
|
||||
//#define JUCE_ENABLE_REPAINT_DEBUGGING 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XRANDR
|
||||
//#define JUCE_USE_XRANDR 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XINERAMA
|
||||
//#define JUCE_USE_XINERAMA 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XSHM
|
||||
//#define JUCE_USE_XSHM 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XRENDER
|
||||
//#define JUCE_USE_XRENDER 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XCURSOR
|
||||
//#define JUCE_USE_XCURSOR 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_WIN_PER_MONITOR_DPI_AWARE
|
||||
//#define JUCE_WIN_PER_MONITOR_DPI_AWARE 1
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_gui_extra flags:
|
||||
|
||||
#ifndef JUCE_WEB_BROWSER
|
||||
//#define JUCE_WEB_BROWSER 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||
//#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR 0
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// Audio plugin settings..
|
||||
|
||||
#ifndef JucePlugin_Build_VST
|
||||
#define JucePlugin_Build_VST 1
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_VST3
|
||||
#define JucePlugin_Build_VST3 1
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_AU
|
||||
#define JucePlugin_Build_AU 1
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_AUv3
|
||||
#define JucePlugin_Build_AUv3 0
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_RTAS
|
||||
#define JucePlugin_Build_RTAS 0
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_AAX
|
||||
#define JucePlugin_Build_AAX 0
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_Standalone
|
||||
#define JucePlugin_Build_Standalone 1
|
||||
#endif
|
||||
#ifndef JucePlugin_Build_Unity
|
||||
#define JucePlugin_Build_Unity 0
|
||||
#endif
|
||||
#ifndef JucePlugin_Enable_IAA
|
||||
#define JucePlugin_Enable_IAA 0
|
||||
#endif
|
||||
#ifndef JucePlugin_Name
|
||||
#define JucePlugin_Name "Magical 8bit Plug 2"
|
||||
#endif
|
||||
#ifndef JucePlugin_Desc
|
||||
#define JucePlugin_Desc "8bit sound generator 2nd ver. by YMCK"
|
||||
#endif
|
||||
#ifndef JucePlugin_Manufacturer
|
||||
#define JucePlugin_Manufacturer "Ymck"
|
||||
#endif
|
||||
#ifndef JucePlugin_ManufacturerWebsite
|
||||
#define JucePlugin_ManufacturerWebsite "http://ymck.net"
|
||||
#endif
|
||||
#ifndef JucePlugin_ManufacturerEmail
|
||||
#define JucePlugin_ManufacturerEmail "info@ymck.net"
|
||||
#endif
|
||||
#ifndef JucePlugin_ManufacturerCode
|
||||
#define JucePlugin_ManufacturerCode 0x596d636b // 'Ymck'
|
||||
#endif
|
||||
#ifndef JucePlugin_PluginCode
|
||||
#define JucePlugin_PluginCode 0x73796e6a // 'synj'
|
||||
#endif
|
||||
#ifndef JucePlugin_IsSynth
|
||||
#define JucePlugin_IsSynth 1
|
||||
#endif
|
||||
#ifndef JucePlugin_WantsMidiInput
|
||||
#define JucePlugin_WantsMidiInput 1
|
||||
#endif
|
||||
#ifndef JucePlugin_ProducesMidiOutput
|
||||
#define JucePlugin_ProducesMidiOutput 0
|
||||
#endif
|
||||
#ifndef JucePlugin_IsMidiEffect
|
||||
#define JucePlugin_IsMidiEffect 0
|
||||
#endif
|
||||
#ifndef JucePlugin_EditorRequiresKeyboardFocus
|
||||
#define JucePlugin_EditorRequiresKeyboardFocus 0
|
||||
#endif
|
||||
#ifndef JucePlugin_Version
|
||||
#define JucePlugin_Version 1.0.0
|
||||
#endif
|
||||
#ifndef JucePlugin_VersionCode
|
||||
#define JucePlugin_VersionCode 0x10000
|
||||
#endif
|
||||
#ifndef JucePlugin_VersionString
|
||||
#define JucePlugin_VersionString "1.0.0"
|
||||
#endif
|
||||
#ifndef JucePlugin_VSTUniqueID
|
||||
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode
|
||||
#endif
|
||||
#ifndef JucePlugin_VSTCategory
|
||||
#define JucePlugin_VSTCategory kPlugCategSynth
|
||||
#endif
|
||||
#ifndef JucePlugin_Vst3Category
|
||||
#define JucePlugin_Vst3Category "Instrument|Synth"
|
||||
#endif
|
||||
#ifndef JucePlugin_AUMainType
|
||||
#define JucePlugin_AUMainType 'aumu'
|
||||
#endif
|
||||
#ifndef JucePlugin_AUSubType
|
||||
#define JucePlugin_AUSubType JucePlugin_PluginCode
|
||||
#endif
|
||||
#ifndef JucePlugin_AUExportPrefix
|
||||
#define JucePlugin_AUExportPrefix Magical8bitPlug2AU
|
||||
#endif
|
||||
#ifndef JucePlugin_AUExportPrefixQuoted
|
||||
#define JucePlugin_AUExportPrefixQuoted "Magical8bitPlug2AU"
|
||||
#endif
|
||||
#ifndef JucePlugin_AUManufacturerCode
|
||||
#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode
|
||||
#endif
|
||||
#ifndef JucePlugin_CFBundleIdentifier
|
||||
#define JucePlugin_CFBundleIdentifier com.ymck.magical8bitPlug2Juce
|
||||
#endif
|
||||
#ifndef JucePlugin_RTASCategory
|
||||
#define JucePlugin_RTASCategory 2048
|
||||
#endif
|
||||
#ifndef JucePlugin_RTASManufacturerCode
|
||||
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
|
||||
#endif
|
||||
#ifndef JucePlugin_RTASProductId
|
||||
#define JucePlugin_RTASProductId JucePlugin_PluginCode
|
||||
#endif
|
||||
#ifndef JucePlugin_RTASDisableBypass
|
||||
#define JucePlugin_RTASDisableBypass 0
|
||||
#endif
|
||||
#ifndef JucePlugin_RTASDisableMultiMono
|
||||
#define JucePlugin_RTASDisableMultiMono 0
|
||||
#endif
|
||||
#ifndef JucePlugin_AAXIdentifier
|
||||
#define JucePlugin_AAXIdentifier com.ymck.magical8bitPlug2Juce
|
||||
#endif
|
||||
#ifndef JucePlugin_AAXManufacturerCode
|
||||
#define JucePlugin_AAXManufacturerCode JucePlugin_ManufacturerCode
|
||||
#endif
|
||||
#ifndef JucePlugin_AAXProductId
|
||||
#define JucePlugin_AAXProductId JucePlugin_PluginCode
|
||||
#endif
|
||||
#ifndef JucePlugin_AAXCategory
|
||||
#define JucePlugin_AAXCategory 2048
|
||||
#endif
|
||||
#ifndef JucePlugin_AAXDisableBypass
|
||||
#define JucePlugin_AAXDisableBypass 0
|
||||
#endif
|
||||
#ifndef JucePlugin_AAXDisableMultiMono
|
||||
#define JucePlugin_AAXDisableMultiMono 0
|
||||
#endif
|
||||
#ifndef JucePlugin_IAAType
|
||||
#define JucePlugin_IAAType 0x61757269 // 'auri'
|
||||
#endif
|
||||
#ifndef JucePlugin_IAASubType
|
||||
#define JucePlugin_IAASubType JucePlugin_PluginCode
|
||||
#endif
|
||||
#ifndef JucePlugin_IAAName
|
||||
#define JucePlugin_IAAName "Ymck: Magical 8bit Plug 2"
|
||||
#endif
|
||||
#ifndef JucePlugin_VSTNumMidiInputs
|
||||
#define JucePlugin_VSTNumMidiInputs 16
|
||||
#endif
|
||||
#ifndef JucePlugin_VSTNumMidiOutputs
|
||||
#define JucePlugin_VSTNumMidiOutputs 16
|
||||
#endif
|
||||
#ifndef JucePlugin_MaxNumInputChannels
|
||||
#define JucePlugin_MaxNumInputChannels 0
|
||||
#endif
|
||||
#ifndef JucePlugin_MaxNumOutputChannels
|
||||
#define JucePlugin_MaxNumOutputChannels 2
|
||||
#endif
|
||||
#ifndef JucePlugin_PreferredChannelConfigurations
|
||||
#define JucePlugin_PreferredChannelConfigurations {0, 2}
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
#ifndef JUCE_STANDALONE_APPLICATION
|
||||
#if defined(JucePlugin_Name) && defined(JucePlugin_Build_Standalone)
|
||||
#define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone
|
||||
#else
|
||||
#define JUCE_STANDALONE_APPLICATION 0
|
||||
#endif
|
||||
#endif
|
2480
JuceLibraryCode/BinaryData.cpp
Normal file
2480
JuceLibraryCode/BinaryData.cpp
Normal file
File diff suppressed because it is too large
Load Diff
33
JuceLibraryCode/BinaryData.h
Normal file
33
JuceLibraryCode/BinaryData.h
Normal file
@ -0,0 +1,33 @@
|
||||
/* =========================================================================================
|
||||
|
||||
This is an auto-generated file: Any edits you make may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace BinaryData
|
||||
{
|
||||
extern const char* icon256_png;
|
||||
const int icon256_pngSize = 35016;
|
||||
|
||||
extern const char* icon512_png;
|
||||
const int icon512_pngSize = 134935;
|
||||
|
||||
// Number of elements in the namedResourceList and originalFileNames arrays.
|
||||
const int namedResourceListSize = 2;
|
||||
|
||||
// Points to the start of a list of resource names.
|
||||
extern const char* namedResourceList[];
|
||||
|
||||
// Points to the start of a list of resource filenames.
|
||||
extern const char* originalFilenames[];
|
||||
|
||||
// If you provide the name of one of the binary resource variables above, this function will
|
||||
// return the corresponding data and its size (or a null pointer if the name isn't found).
|
||||
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes);
|
||||
|
||||
// If you provide the name of one of the binary resource variables above, this function will
|
||||
// return the corresponding original, non-mangled filename (or a null pointer if the name isn't found).
|
||||
const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8);
|
||||
}
|
57
JuceLibraryCode/JuceHeader.h
Normal file
57
JuceLibraryCode/JuceHeader.h
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
This is the header file that your files should include in order to get all the
|
||||
JUCE library headers. You should avoid including the JUCE headers directly in
|
||||
your own source files, because that wouldn't pick up the correct configuration
|
||||
options for your app.
|
||||
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "AppConfig.h"
|
||||
|
||||
#include <juce_audio_basics/juce_audio_basics.h>
|
||||
#include <juce_audio_devices/juce_audio_devices.h>
|
||||
#include <juce_audio_formats/juce_audio_formats.h>
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client.h>
|
||||
#include <juce_audio_processors/juce_audio_processors.h>
|
||||
#include <juce_audio_utils/juce_audio_utils.h>
|
||||
#include <juce_core/juce_core.h>
|
||||
#include <juce_cryptography/juce_cryptography.h>
|
||||
#include <juce_data_structures/juce_data_structures.h>
|
||||
#include <juce_events/juce_events.h>
|
||||
#include <juce_graphics/juce_graphics.h>
|
||||
#include <juce_gui_basics/juce_gui_basics.h>
|
||||
#include <juce_gui_extra/juce_gui_extra.h>
|
||||
#include <juce_opengl/juce_opengl.h>
|
||||
|
||||
#include "BinaryData.h"
|
||||
|
||||
#if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION
|
||||
/** If you've hit this error then the version of the Projucer that was used to generate this project is
|
||||
older than the version of the JUCE modules being included. To fix this error, re-save your project
|
||||
using the latest version of the Projucer or, if you aren't using the Projucer to manage your project,
|
||||
remove the JUCE_PROJUCER_VERSION define from the AppConfig.h file.
|
||||
*/
|
||||
#error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error."
|
||||
#endif
|
||||
|
||||
#if ! DONT_SET_USING_JUCE_NAMESPACE
|
||||
// If your code uses a lot of JUCE classes, then this will obviously save you
|
||||
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
|
||||
using namespace juce;
|
||||
#endif
|
||||
|
||||
#if ! JUCE_DONT_DECLARE_PROJECTINFO
|
||||
namespace ProjectInfo
|
||||
{
|
||||
const char* const projectName = "Magical8bitPlug2";
|
||||
const char* const companyName = "YMCK";
|
||||
const char* const versionString = "1.0.0";
|
||||
const int versionNumber = 0x10000;
|
||||
}
|
||||
#endif
|
12
JuceLibraryCode/ReadMe.txt
Normal file
12
JuceLibraryCode/ReadMe.txt
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
Important Note!!
|
||||
================
|
||||
|
||||
The purpose of this folder is to contain files that are auto-generated by the Projucer,
|
||||
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
|
||||
the Projucer saves your project.
|
||||
|
||||
Therefore, it's a bad idea to make any manual changes to the files in here, or to
|
||||
put any of your own files in here if you don't want to lose them. (Of course you may choose
|
||||
to add the folder's contents to your version-control system so that you can re-merge your own
|
||||
modifications after the Projucer has saved its changes).
|
9
JuceLibraryCode/include_juce_audio_basics.cpp
Normal file
9
JuceLibraryCode/include_juce_audio_basics.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_basics/juce_audio_basics.cpp>
|
9
JuceLibraryCode/include_juce_audio_basics.mm
Normal file
9
JuceLibraryCode/include_juce_audio_basics.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_basics/juce_audio_basics.mm>
|
9
JuceLibraryCode/include_juce_audio_devices.cpp
Normal file
9
JuceLibraryCode/include_juce_audio_devices.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_devices/juce_audio_devices.cpp>
|
9
JuceLibraryCode/include_juce_audio_devices.mm
Normal file
9
JuceLibraryCode/include_juce_audio_devices.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_devices/juce_audio_devices.mm>
|
9
JuceLibraryCode/include_juce_audio_formats.cpp
Normal file
9
JuceLibraryCode/include_juce_audio_formats.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_formats/juce_audio_formats.cpp>
|
9
JuceLibraryCode/include_juce_audio_formats.mm
Normal file
9
JuceLibraryCode/include_juce_audio_formats.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_formats/juce_audio_formats.mm>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_AAX.mm>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_AU.r
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_AU.r
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client_AU.r>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_AUv3.mm>
|
9
JuceLibraryCode/include_juce_audio_plugin_client_RTAS.r
Normal file
9
JuceLibraryCode/include_juce_audio_plugin_client_RTAS.r
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client_RTAS.r>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_1.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_2.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_3.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_4.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_utils.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_RTAS_utils.mm>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_Standalone.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_Unity.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST3.cpp>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_VST_utils.mm>
|
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_plugin_client/juce_audio_plugin_client_utils.cpp>
|
9
JuceLibraryCode/include_juce_audio_processors.cpp
Normal file
9
JuceLibraryCode/include_juce_audio_processors.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_processors/juce_audio_processors.cpp>
|
9
JuceLibraryCode/include_juce_audio_processors.mm
Normal file
9
JuceLibraryCode/include_juce_audio_processors.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_processors/juce_audio_processors.mm>
|
9
JuceLibraryCode/include_juce_audio_utils.cpp
Normal file
9
JuceLibraryCode/include_juce_audio_utils.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_utils/juce_audio_utils.cpp>
|
9
JuceLibraryCode/include_juce_audio_utils.mm
Normal file
9
JuceLibraryCode/include_juce_audio_utils.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_audio_utils/juce_audio_utils.mm>
|
9
JuceLibraryCode/include_juce_core.cpp
Normal file
9
JuceLibraryCode/include_juce_core.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_core/juce_core.cpp>
|
9
JuceLibraryCode/include_juce_core.mm
Normal file
9
JuceLibraryCode/include_juce_core.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_core/juce_core.mm>
|
9
JuceLibraryCode/include_juce_cryptography.cpp
Normal file
9
JuceLibraryCode/include_juce_cryptography.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_cryptography/juce_cryptography.cpp>
|
9
JuceLibraryCode/include_juce_cryptography.mm
Normal file
9
JuceLibraryCode/include_juce_cryptography.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_cryptography/juce_cryptography.mm>
|
9
JuceLibraryCode/include_juce_data_structures.cpp
Normal file
9
JuceLibraryCode/include_juce_data_structures.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_data_structures/juce_data_structures.cpp>
|
9
JuceLibraryCode/include_juce_data_structures.mm
Normal file
9
JuceLibraryCode/include_juce_data_structures.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_data_structures/juce_data_structures.mm>
|
9
JuceLibraryCode/include_juce_events.cpp
Normal file
9
JuceLibraryCode/include_juce_events.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_events/juce_events.cpp>
|
9
JuceLibraryCode/include_juce_events.mm
Normal file
9
JuceLibraryCode/include_juce_events.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_events/juce_events.mm>
|
9
JuceLibraryCode/include_juce_graphics.cpp
Normal file
9
JuceLibraryCode/include_juce_graphics.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_graphics/juce_graphics.cpp>
|
9
JuceLibraryCode/include_juce_graphics.mm
Normal file
9
JuceLibraryCode/include_juce_graphics.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_graphics/juce_graphics.mm>
|
9
JuceLibraryCode/include_juce_gui_basics.cpp
Normal file
9
JuceLibraryCode/include_juce_gui_basics.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_gui_basics/juce_gui_basics.cpp>
|
9
JuceLibraryCode/include_juce_gui_basics.mm
Normal file
9
JuceLibraryCode/include_juce_gui_basics.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_gui_basics/juce_gui_basics.mm>
|
9
JuceLibraryCode/include_juce_gui_extra.cpp
Normal file
9
JuceLibraryCode/include_juce_gui_extra.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_gui_extra/juce_gui_extra.cpp>
|
9
JuceLibraryCode/include_juce_gui_extra.mm
Normal file
9
JuceLibraryCode/include_juce_gui_extra.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_gui_extra/juce_gui_extra.mm>
|
9
JuceLibraryCode/include_juce_opengl.cpp
Normal file
9
JuceLibraryCode/include_juce_opengl.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_opengl/juce_opengl.cpp>
|
9
JuceLibraryCode/include_juce_opengl.mm
Normal file
9
JuceLibraryCode/include_juce_opengl.mm
Normal file
@ -0,0 +1,9 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include <juce_opengl/juce_opengl.mm>
|
172
Magical8bitPlug2.jucer
Normal file
172
Magical8bitPlug2.jucer
Normal file
@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<JUCERPROJECT id="JWTLbw" name="Magical8bitPlug2" projectType="audioplug" jucerVersion="5.4.6"
|
||||
companyName="YMCK" companyWebsite="http://ymck.net" companyEmail="info@ymck.net"
|
||||
pluginCharacteristicsValue="pluginIsSynth,pluginWantsMidiIn"
|
||||
pluginManufacturerCode="Ymck" pluginManufacturer="Ymck" pluginCode="synj"
|
||||
pluginChannelConfigs="{0, 2}" pluginAUIsSandboxSafe="1" pluginFormats="buildAU,buildStandalone,buildVST,buildVST3"
|
||||
pluginAUMainType="'aumu'" pluginName="Magical 8bit Plug 2" aaxIdentifier="com.ymck.magical8bitPlug2Juce"
|
||||
bundleIdentifier="com.ymck.magical8bitPlug2Juce" splashScreenColour="Light"
|
||||
pluginDesc="8bit sound generator 2nd ver. by YMCK">
|
||||
<MAINGROUP id="tlJ5Jv" name="Magical8bitPlug2">
|
||||
<GROUP id="{05934500-901F-8317-27DC-7E17FC00833D}" name="View">
|
||||
<GROUP id="{68A7410F-88F9-C9D8-8A37-6A70F269BBCC}" name="BaseComponents">
|
||||
<FILE id="lBYKKS" name="CheckBoxComponent.cpp" compile="1" resource="0"
|
||||
file="Source/CheckBoxComponent.cpp"/>
|
||||
<FILE id="GKQ2rj" name="CheckBoxComponent.h" compile="0" resource="0"
|
||||
file="Source/CheckBoxComponent.h"/>
|
||||
<FILE id="s3PHkb" name="ChoiceComponent.cpp" compile="1" resource="0"
|
||||
file="Source/ChoiceComponent.cpp"/>
|
||||
<FILE id="VINNU4" name="ChoiceComponent.h" compile="0" resource="0"
|
||||
file="Source/ChoiceComponent.h"/>
|
||||
<FILE id="omAv7p" name="CustomEnvelopeComponent.cpp" compile="1" resource="0"
|
||||
file="Source/CustomEnvelopeComponent.cpp"/>
|
||||
<FILE id="gj4RVm" name="CustomEnvelopeComponent.h" compile="0" resource="0"
|
||||
file="Source/CustomEnvelopeComponent.h"/>
|
||||
<FILE id="p2sHMQ" name="Defs.h" compile="0" resource="0" file="Source/Defs.h"/>
|
||||
<FILE id="wMmLx0" name="SliderComponent.cpp" compile="1" resource="0"
|
||||
file="Source/SliderComponent.cpp"/>
|
||||
<FILE id="qIuf9N" name="SliderComponent.h" compile="0" resource="0"
|
||||
file="Source/SliderComponent.h"/>
|
||||
</GROUP>
|
||||
<FILE id="SFqkUr" name="AdvancedParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/AdvancedParamsComponent.cpp"/>
|
||||
<FILE id="bLoGhR" name="AdvancedParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/AdvancedParamsComponent.h"/>
|
||||
<FILE id="tpDHK7" name="BasicParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/BasicParamsComponent.cpp"/>
|
||||
<FILE id="pWCi0b" name="BasicParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/BasicParamsComponent.h"/>
|
||||
<FILE id="RJmn17" name="BendParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/BendParamsComponent.cpp"/>
|
||||
<FILE id="uCgnPh" name="BendParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/BendParamsComponent.h"/>
|
||||
<FILE id="hREK5i" name="EnvelopeParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/EnvelopeParamsComponent.cpp"/>
|
||||
<FILE id="zBFywa" name="EnvelopeParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/EnvelopeParamsComponent.h"/>
|
||||
<FILE id="RF89Wr" name="NoiseParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/NoiseParamsComponent.cpp"/>
|
||||
<FILE id="jPVIvX" name="NoiseParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/NoiseParamsComponent.h"/>
|
||||
<FILE id="XHpejJ" name="PulseParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/PulseParamsComponent.cpp"/>
|
||||
<FILE id="cAGz3I" name="PulseParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/PulseParamsComponent.h"/>
|
||||
<FILE id="ea5dUx" name="SweepParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/SweepParamsComponent.cpp"/>
|
||||
<FILE id="J042bI" name="SweepParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/SweepParamsComponent.h"/>
|
||||
<FILE id="qRObuz" name="VibratoParamsComponent.cpp" compile="1" resource="0"
|
||||
file="Source/VibratoParamsComponent.cpp"/>
|
||||
<FILE id="Y7Wuhu" name="VibratoParamsComponent.h" compile="0" resource="0"
|
||||
file="Source/VibratoParamsComponent.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{630C27C7-03AA-CFC6-2FC4-4CE2DBE3640A}" name="Source">
|
||||
<FILE id="H2Vgbj" name="FrameSequenceParseErrors.cpp" compile="1" resource="0"
|
||||
file="Source/FrameSequenceParseErrors.cpp"/>
|
||||
<FILE id="Gwt2vB" name="FrameSequenceParseErrors.h" compile="0" resource="0"
|
||||
file="Source/FrameSequenceParseErrors.h"/>
|
||||
<FILE id="GaiFnT" name="FrameSequence.h" compile="0" resource="0" file="Source/FrameSequence.h"/>
|
||||
<FILE id="VlzmNv" name="FrameSequenceParser.h" compile="0" resource="0"
|
||||
file="Source/FrameSequenceParser.h"/>
|
||||
<FILE id="Vt0YUx" name="FrameSequenceParser.cpp" compile="1" resource="0"
|
||||
file="Source/FrameSequenceParser.cpp"/>
|
||||
<FILE id="khdj4k" name="ColorScheme.cpp" compile="1" resource="0" file="Source/ColorScheme.cpp"/>
|
||||
<FILE id="V4fHSM" name="ColorScheme.h" compile="0" resource="0" file="Source/ColorScheme.h"/>
|
||||
<FILE id="zV62Lc" name="BaseVoice.cpp" compile="1" resource="0" file="Source/BaseVoice.cpp"/>
|
||||
<FILE id="JKpQZv" name="BaseVoice.h" compile="0" resource="0" file="Source/BaseVoice.h"/>
|
||||
<FILE id="pQzCOx" name="NoiseVoice.cpp" compile="1" resource="0" file="Source/NoiseVoice.cpp"/>
|
||||
<FILE id="qvDlqm" name="NoiseVoice.h" compile="0" resource="0" file="Source/NoiseVoice.h"/>
|
||||
<FILE id="YaJLvx" name="TriangleVoice.cpp" compile="1" resource="0"
|
||||
file="Source/TriangleVoice.cpp"/>
|
||||
<FILE id="v5f5q3" name="TriangleVoice.h" compile="0" resource="0" file="Source/TriangleVoice.h"/>
|
||||
<FILE id="OicXYm" name="PulseVoice.cpp" compile="1" resource="0" file="Source/PulseVoice.cpp"/>
|
||||
<FILE id="wu8Sc6" name="PulseVoice.h" compile="0" resource="0" file="Source/PulseVoice.h"/>
|
||||
<FILE id="FAGU8n" name="TonalVoice.cpp" compile="1" resource="0" file="Source/TonalVoice.cpp"/>
|
||||
<FILE id="D1kCDT" name="TonalVoice.h" compile="0" resource="0" file="Source/TonalVoice.h"/>
|
||||
<FILE id="r26Byf" name="Settings.cpp" compile="1" resource="0" file="Source/Settings.cpp"/>
|
||||
<FILE id="nfNh5I" name="Settings.h" compile="0" resource="0" file="Source/Settings.h"/>
|
||||
<FILE id="oN8naR" name="Voices.cpp" compile="1" resource="0" file="Source/Voices.cpp"/>
|
||||
<FILE id="j916c6" name="Voices.h" compile="0" resource="0" file="Source/Voices.h"/>
|
||||
<FILE id="Gw3YLv" name="PluginProcessor.cpp" compile="1" resource="0"
|
||||
file="Source/PluginProcessor.cpp"/>
|
||||
<FILE id="zN1hQW" name="PluginProcessor.h" compile="0" resource="0"
|
||||
file="Source/PluginProcessor.h"/>
|
||||
<FILE id="Ijcts1" name="PluginEditor.cpp" compile="1" resource="0"
|
||||
file="Source/PluginEditor.cpp"/>
|
||||
<FILE id="UZrV40" name="PluginEditor.h" compile="0" resource="0" file="Source/PluginEditor.h"/>
|
||||
</GROUP>
|
||||
<FILE id="EM0Wl7" name="icon-256.png" compile="0" resource="1" file="Resources/icon-256.png"/>
|
||||
<FILE id="a4A23f" name="icon-512.png" compile="0" resource="1" file="Resources/icon-512.png"/>
|
||||
</MAINGROUP>
|
||||
<EXPORTFORMATS>
|
||||
<XCODE_MAC targetFolder="Builds/MacOSX" hardenedRuntime="1" smallIcon="EM0Wl7"
|
||||
bigIcon="a4A23f" vstLegacyFolder="../../magical8bitPlug-misc/VST_SDK/VST2_SDK">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION isDebug="1" name="Debug" codeSigningIdentity="Developer ID Application"/>
|
||||
<CONFIGURATION isDebug="0" name="Release" codeSigningIdentity="Developer ID Application"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_audio_devices" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_audio_formats" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_audio_plugin_client" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_audio_processors" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_audio_utils" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../../Applications/JUCE/modules"/>
|
||||
<MODULEPATH id="juce_opengl" path="../../../Applications/JUCE/modules"/>
|
||||
</MODULEPATHS>
|
||||
</XCODE_MAC>
|
||||
<VS2019 targetFolder="Builds/VisualStudio2019" smallIcon="EM0Wl7" bigIcon="a4A23f">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION isDebug="1" name="Debug"/>
|
||||
<CONFIGURATION isDebug="0" name="Release"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_opengl" path="../../juce"/>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../juce"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../juce"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../juce"/>
|
||||
<MODULEPATH id="juce_events" path="../../juce"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../juce"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../juce"/>
|
||||
<MODULEPATH id="juce_core" path="../../juce"/>
|
||||
<MODULEPATH id="juce_audio_utils" path="../../juce"/>
|
||||
<MODULEPATH id="juce_audio_processors" path="../../juce"/>
|
||||
<MODULEPATH id="juce_audio_plugin_client" path="../../juce"/>
|
||||
<MODULEPATH id="juce_audio_formats" path="../../juce"/>
|
||||
<MODULEPATH id="juce_audio_devices" path="../../juce"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../juce"/>
|
||||
</MODULEPATHS>
|
||||
</VS2019>
|
||||
</EXPORTFORMATS>
|
||||
<MODULES>
|
||||
<MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_audio_plugin_client" showAllCode="1" useLocalCopy="0"
|
||||
useGlobalPath="1"/>
|
||||
<MODULE id="juce_audio_processors" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_audio_utils" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_core" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_cryptography" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_events" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
<MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0" useGlobalPath="1"/>
|
||||
</MODULES>
|
||||
<LIVE_SETTINGS>
|
||||
<OSX/>
|
||||
<WINDOWS/>
|
||||
</LIVE_SETTINGS>
|
||||
<JUCEOPTIONS JUCE_VST3_CAN_REPLACE_VST2="0" JUCE_STRICT_REFCOUNTEDPOINTER="1"/>
|
||||
</JUCERPROJECT>
|
44
README.md
44
README.md
@ -1 +1,43 @@
|
||||
# Magical8bitPlug2
|
||||
# Magical 8bit Plug 2
|
||||
By Yokemura @ [YMCK](http://ymck.net/)
|
||||
|
||||
Magical 8bit Plug is a software synthesizer to generate the tones like the old 8bit game consoles.
|
||||
|
||||
Naming "2" of course means there was the first version, but the code base of it is already obsolate and hard to maintain, so this version is developed from scratch with only very little code snippet brought from the previous version.
|
||||
|
||||
Upon rewriting from scratch I set the base to [JUCE](https://juce.com/). Thanks to this awesome framework I was able to build it fast and able to add more functionality than the previous version.
|
||||
|
||||
|
||||
|
||||
#Getting Started
|
||||
|
||||
To build from the source:
|
||||
|
||||
- Get [Projucer](https://shop.juce.com/get-juce) (JUCE IDE)
|
||||
- Setup your native development environment(ex. XCode for Mac, VisualStudio for Windows)
|
||||
- Open magical8bitPlug2-juce.jucer with Projucer
|
||||
- Select the native IDE and export
|
||||
- Build
|
||||
|
||||
#License
|
||||
|
||||
This software is released under GPL v3 license.
|
||||
|
||||
Although this plugin satisfies the condition of JUCE's [Personal License](https://juce.com/juce-5-license), I chose GPL by my own decision. This is sort of a backup for me just in case it breaks that condition. As the plugin is a not a kind of library that can be a core part of other product, I believe there will be very little concern about "copyleft contamination".
|
||||
In other words, my choice is not based on a strong belief on the copyleft and it can be changed if there are any positive reason to do that.
|
||||
|
||||
See [LICENSE](./LICENSE) for details.
|
||||
|
||||
#Donation
|
||||
|
||||
You can support developing Magical 8bit Plug not only by the contribution of source code but by the donation as well. We really appreciate your support.
|
||||
|
||||
<div class="donate">
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
||||
<input type="hidden" name="cmd" value="_donations">
|
||||
<input type="hidden" name="business" value="5CKQFPFTHRNMS">
|
||||
<input type="image"
|
||||
src="http://www.ymck.net/images/download/btn_donate.png" border="0"
|
||||
name="submit" alt="Donate" formtarget="_blank">
|
||||
</form>
|
||||
</div>
|
||||
|
BIN
Resources/icon-256.png
Normal file
BIN
Resources/icon-256.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
Resources/icon-512.png
Normal file
BIN
Resources/icon-512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 132 KiB |
163
Source/AdvancedParamsComponent.cpp
Normal file
163
Source/AdvancedParamsComponent.cpp
Normal file
@ -0,0 +1,163 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
//[/Headers]
|
||||
|
||||
#include "AdvancedParamsComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
AdvancedParamsComponent::AdvancedParamsComponent (Magical8bitPlug2AudioProcessor& p)
|
||||
: processor(p)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
volumeCompo.reset (new CustomEnvelopeComponent (p, "volume", "Volume", "isVolumeSequenceEnabled_raw"));
|
||||
addAndMakeVisible (volumeCompo.get());
|
||||
volumeCompo->setName ("volume component");
|
||||
|
||||
label5.reset (new Label ("new label",
|
||||
TRANS("Custom Envelopes")));
|
||||
addAndMakeVisible (label5.get());
|
||||
label5->setFont (Font (17.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
label5->setJustificationType (Justification::centredLeft);
|
||||
label5->setEditable (false, false, false);
|
||||
label5->setColour (TextEditor::textColourId, Colours::black);
|
||||
label5->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
label5->setBounds (0, 4, 150, 24);
|
||||
|
||||
pitchCompo.reset (new CustomEnvelopeComponent (p, "pitch", "Pitch", "isPitchSequenceEnabled_raw"));
|
||||
addAndMakeVisible (pitchCompo.get());
|
||||
pitchCompo->setName ("pitch component");
|
||||
|
||||
dutyCompo.reset (new CustomEnvelopeComponent (p, "duty", "Duty", "isDutySequenceEnabled_raw"));
|
||||
addAndMakeVisible (dutyCompo.get());
|
||||
dutyCompo->setName ("duty component");
|
||||
|
||||
coarseOrFineChoice.reset (new ChoiceComponent (p, "pitchSequenceMode_raw", "Resolution"));
|
||||
addAndMakeVisible (coarseOrFineChoice.get());
|
||||
coarseOrFineChoice->setName ("Coarse or fine");
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (700, 216);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
p.settingRefs.volumeSequenceListener = (FrameSequenceChangeListener*)volumeCompo.get();
|
||||
p.settingRefs.pitchSequenceListener = (FrameSequenceChangeListener*)pitchCompo.get();
|
||||
p.settingRefs.dutySequenceListener = (FrameSequenceChangeListener*)dutyCompo.get();
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
AdvancedParamsComponent::~AdvancedParamsComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
//[/Destructor_pre]
|
||||
|
||||
volumeCompo = nullptr;
|
||||
label5 = nullptr;
|
||||
pitchCompo = nullptr;
|
||||
dutyCompo = nullptr;
|
||||
coarseOrFineChoice = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void AdvancedParamsComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void AdvancedParamsComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
volumeCompo->setBounds (0, 26, getWidth() - 160, 56);
|
||||
pitchCompo->setBounds (0, 82, getWidth() - 204, 56);
|
||||
dutyCompo->setBounds (0, 138, getWidth() - 160, 56);
|
||||
coarseOrFineChoice->setBounds (getWidth() - 4 - 200, 86, 200, 28);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="AdvancedParamsComponent"
|
||||
componentName="" parentClasses="public Component" constructorParams="Magical8bitPlug2AudioProcessor& p"
|
||||
variableInitialisers="processor(p)" snapPixels="8" snapActive="1"
|
||||
snapShown="1" overlayOpacity="0.330" fixedSize="1" initialWidth="700"
|
||||
initialHeight="216">
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<GENERICCOMPONENT name="volume component" id="829adedfc4b9300f" memberName="volumeCompo"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 26 160M 56" class="CustomEnvelopeComponent"
|
||||
params="p, "volume", "Volume", "isVolumeSequenceEnabled_raw""/>
|
||||
<LABEL name="new label" id="bae3132bcad681ce" memberName="label5" virtualName=""
|
||||
explicitFocusOrder="0" pos="0 4 150 24" edTextCol="ff000000"
|
||||
edBkgCol="0" labelText="Custom Envelopes" editableSingleClick="0"
|
||||
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
|
||||
fontsize="17.0" kerning="0.0" bold="0" italic="0" justification="33"/>
|
||||
<GENERICCOMPONENT name="pitch component" id="30dd6e142bdc9ed5" memberName="pitchCompo"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 82 204M 56" class="CustomEnvelopeComponent"
|
||||
params="p, "pitch", "Pitch", "isPitchSequenceEnabled_raw""/>
|
||||
<GENERICCOMPONENT name="duty component" id="e5e04cf3ca5aec1" memberName="dutyCompo"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 138 160M 56" class="CustomEnvelopeComponent"
|
||||
params="p, "duty", "Duty", "isDutySequenceEnabled_raw""/>
|
||||
<GENERICCOMPONENT name="Coarse or fine" id="950de1eb69e47c4c" memberName="coarseOrFineChoice"
|
||||
virtualName="" explicitFocusOrder="0" pos="4Rr 86 200 28" class="ChoiceComponent"
|
||||
params="p, "pitchSequenceMode_raw", "Resolution""/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
73
Source/AdvancedParamsComponent.h
Normal file
73
Source/AdvancedParamsComponent.h
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "CustomEnvelopeComponent.h"
|
||||
#include "ChoiceComponent.h"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class AdvancedParamsComponent : public Component
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
AdvancedParamsComponent (Magical8bitPlug2AudioProcessor& p);
|
||||
~AdvancedParamsComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
Magical8bitPlug2AudioProcessor& processor;
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<CustomEnvelopeComponent> volumeCompo;
|
||||
std::unique_ptr<Label> label5;
|
||||
std::unique_ptr<CustomEnvelopeComponent> pitchCompo;
|
||||
std::unique_ptr<CustomEnvelopeComponent> dutyCompo;
|
||||
std::unique_ptr<ChoiceComponent> coarseOrFineChoice;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AdvancedParamsComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
226
Source/BaseVoice.cpp
Normal file
226
Source/BaseVoice.cpp
Normal file
@ -0,0 +1,226 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
BaseVoice.cpp
|
||||
Created: 11 Nov 2019 9:38:44pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "BaseVoice.h"
|
||||
|
||||
//---------------------------------------------
|
||||
//
|
||||
// Base Voice
|
||||
// (Abstract)
|
||||
//
|
||||
//---------------------------------------------
|
||||
BaseVoice::BaseVoice (SettingRefs* sRefs)
|
||||
{
|
||||
settingRefs = sRefs;
|
||||
}
|
||||
|
||||
bool BaseVoice::canPlaySound (SynthesiserSound* sound)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void BaseVoice::startNote (int midiNoteNumber, float velocity, SynthesiserSound*, int currentPitchBendPosition)
|
||||
{
|
||||
|
||||
noteNumber = midiNoteNumber;
|
||||
|
||||
envelopePhase = kEnvelopePhaseA;
|
||||
currentAngle = 0.0;
|
||||
currentEnvelopeLevel = 0.0;
|
||||
|
||||
ampByVelocityAndGain = * (settingRefs->gain) * velocity; // velocity value range is 0.0f-1.0f
|
||||
|
||||
calculateAngleDelta();
|
||||
|
||||
//
|
||||
// Envelope
|
||||
//
|
||||
double srate = getSampleRate();
|
||||
|
||||
if (* (settingRefs->attack) == 0 ) { attack_slope = 1.0; }
|
||||
else
|
||||
{
|
||||
attack_slope = 1.0 / (* (settingRefs->attack) * srate);
|
||||
}
|
||||
|
||||
if (* (settingRefs->decay) == 0 ) { decay_slope = 1.0; }
|
||||
else
|
||||
{
|
||||
decay_slope = 1.0 / (* (settingRefs->decay) * srate);
|
||||
}
|
||||
|
||||
sustain_level = * (settingRefs->suslevel);
|
||||
|
||||
if (* (settingRefs->release) == 0 ) { release_slope = 1.0; }
|
||||
else
|
||||
{
|
||||
release_slope = 1.0 / (* (settingRefs->release) * srate);
|
||||
}
|
||||
|
||||
//
|
||||
// Control frame
|
||||
//
|
||||
controlFrameTimer = 0;
|
||||
currentVolumeSequenceFrame = 0;
|
||||
|
||||
if (settingRefs->isVolumeSequenceEnabled())
|
||||
{
|
||||
currentEnvelopeLevel = (float) (settingRefs->volumeSequence.valueAt (0)) / 15.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void BaseVoice::stopNote (float, bool allowTailOff)
|
||||
{
|
||||
if (!allowTailOff)
|
||||
{
|
||||
clearCurrentNote();
|
||||
angleDelta = 0.0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (settingRefs->isVolumeSequenceEnabled())
|
||||
{
|
||||
if (settingRefs->volumeSequence.hasRelease)
|
||||
{
|
||||
currentVolumeSequenceFrame = settingRefs->volumeSequence.releaseSequenceStartIndex;
|
||||
currentEnvelopeLevel = (float) (settingRefs->volumeSequence.valueAt (0)) / 15.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
clearCurrentNote();
|
||||
angleDelta = 0.0;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
envelopePhase = kEnvelopePhaseR;
|
||||
}
|
||||
|
||||
void BaseVoice::renderNextBlock (AudioSampleBuffer& outputBuffer, int startSample, int numSamples)
|
||||
{
|
||||
if (angleDelta == 0.0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while (--numSamples >= 0)
|
||||
{
|
||||
//
|
||||
// Envelope
|
||||
//
|
||||
if (settingRefs->isVolumeSequenceEnabled())
|
||||
{
|
||||
currentEnvelopeLevel = (float) (settingRefs->volumeSequence.valueAt (currentVolumeSequenceFrame)) / 15.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (envelopePhase)
|
||||
{
|
||||
case kEnvelopePhaseA:
|
||||
currentEnvelopeLevel += attack_slope;
|
||||
|
||||
if (currentEnvelopeLevel > 1.0)
|
||||
{
|
||||
currentEnvelopeLevel = 1.0;
|
||||
envelopePhase = kEnvelopePhaseD;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case kEnvelopePhaseD:
|
||||
currentEnvelopeLevel -= decay_slope;
|
||||
|
||||
if (currentEnvelopeLevel < sustain_level)
|
||||
{
|
||||
envelopePhase = kEnvelopePhaseS;
|
||||
currentEnvelopeLevel = sustain_level;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case kEnvelopePhaseS:
|
||||
currentEnvelopeLevel = sustain_level;
|
||||
break;
|
||||
|
||||
case kEnvelopePhaseR:
|
||||
currentEnvelopeLevel -= release_slope;
|
||||
|
||||
if (currentEnvelopeLevel < 0)
|
||||
{
|
||||
currentEnvelopeLevel = 0;
|
||||
clearCurrentNote();
|
||||
angleDelta = 0.0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Write to buffer
|
||||
//
|
||||
float currentSample = voltageForAngle (currentAngle) * currentEnvelopeLevel * ampByVelocityAndGain;
|
||||
|
||||
for (auto i = outputBuffer.getNumChannels(); --i >= 0;)
|
||||
outputBuffer.addSample (i, startSample, currentSample);
|
||||
|
||||
//
|
||||
// Advance phase
|
||||
//
|
||||
calculateAngleDelta();
|
||||
|
||||
currentAngle += angleDelta;
|
||||
|
||||
while (currentAngle > 2.0 * MathConstants<float>::pi)
|
||||
{
|
||||
currentAngle -= 2.0 * MathConstants<float>::pi;
|
||||
}
|
||||
|
||||
//
|
||||
// Advance control frame
|
||||
//
|
||||
controlFrameTimer += 1.0 / getSampleRate();
|
||||
|
||||
if (controlFrameTimer >= controlFrameLength)
|
||||
{
|
||||
advanceControlFrame();
|
||||
|
||||
while (controlFrameTimer >= controlFrameLength)
|
||||
{
|
||||
controlFrameTimer -= controlFrameLength;
|
||||
}
|
||||
}
|
||||
|
||||
onFrameAdvanced();
|
||||
|
||||
++startSample;
|
||||
}
|
||||
}
|
||||
|
||||
void BaseVoice::calculateAngleDelta()
|
||||
{
|
||||
auto cyclesPerSecond = MidiMessage::getMidiNoteInHertz (noteNumber);
|
||||
auto cyclesPerSample = cyclesPerSecond / getSampleRate();
|
||||
|
||||
angleDelta = cyclesPerSample * 2.0 * MathConstants<double>::pi;
|
||||
}
|
||||
|
||||
void BaseVoice::advanceControlFrame()
|
||||
{
|
||||
currentVolumeSequenceFrame = settingRefs->volumeSequence.nextIndexOf (currentVolumeSequenceFrame);
|
||||
|
||||
if (currentVolumeSequenceFrame == FrameSequence::SHOULD_RETIRE)
|
||||
{
|
||||
currentEnvelopeLevel = 0;
|
||||
clearCurrentNote();
|
||||
angleDelta = 0.0;
|
||||
}
|
||||
}
|
54
Source/BaseVoice.h
Normal file
54
Source/BaseVoice.h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
BaseVoice.h
|
||||
Created: 11 Nov 2019 9:38:44pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "Voices.h"
|
||||
|
||||
struct BaseVoice : public SynthesiserVoice
|
||||
{
|
||||
SettingRefs* settingRefs;
|
||||
|
||||
BaseVoice (SettingRefs* sRefs);
|
||||
|
||||
bool canPlaySound (SynthesiserSound* sound) override;
|
||||
void startNote (int midiNoteNumber, float velocity,
|
||||
SynthesiserSound*, int currentPitchWheelPosition) override;
|
||||
void stopNote (float /*velocity*/, bool allowTailOff) override;
|
||||
void pitchWheelMoved (int) override {}
|
||||
void controllerMoved (int, int) override {}
|
||||
void renderNextBlock (AudioSampleBuffer& outputBuffer, int startSample, int numSamples) override;
|
||||
|
||||
virtual float voltageForAngle (double angle) = 0;
|
||||
virtual void onFrameAdvanced() {};
|
||||
virtual void advanceControlFrame();
|
||||
virtual void calculateAngleDelta();
|
||||
|
||||
protected:
|
||||
// Basic
|
||||
int noteNumber;
|
||||
float ampByVelocityAndGain = 1.0;
|
||||
|
||||
// Oscillator State
|
||||
double currentAngle = 0.0;
|
||||
double angleDelta = 0.0;
|
||||
|
||||
// Envelope
|
||||
double currentEnvelopeLevel = 0.0;
|
||||
EnvelopePhase envelopePhase = kEnvelopePhaseA;
|
||||
double attack_slope = 1.0;
|
||||
double decay_slope = 0.0; // Positive to decrease
|
||||
double sustain_level = 1.0;
|
||||
double release_slope = 1.0; // Positive to decrease
|
||||
|
||||
// For Frame Counting for Customs
|
||||
double controlFrameTimer = 0;
|
||||
const double controlFrameLength = 1.0 / 60.0;
|
||||
int currentVolumeSequenceFrame = 0;
|
||||
};
|
215
Source/BasicParamsComponent.cpp
Normal file
215
Source/BasicParamsComponent.cpp
Normal file
@ -0,0 +1,215 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
#include "PluginEditor.h"
|
||||
//[/Headers]
|
||||
|
||||
#include "BasicParamsComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
BasicParamsComponent::BasicParamsComponent (Magical8bitPlug2AudioProcessor& p, Magical8bitPlug2AudioProcessorEditor& e)
|
||||
: processor(p),editor(e)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
polyLabel.reset (new Label ("label",
|
||||
TRANS("Poly")));
|
||||
addAndMakeVisible (polyLabel.get());
|
||||
polyLabel->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
polyLabel->setJustificationType (Justification::centredLeft);
|
||||
polyLabel->setEditable (false, false, false);
|
||||
polyLabel->setColour (TextEditor::textColourId, Colours::black);
|
||||
polyLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
polyLabel->setBounds (232, 8, 40, 15);
|
||||
|
||||
gainSlider.reset (new SliderComponent (p, "gain", "Gain"));
|
||||
addAndMakeVisible (gainSlider.get());
|
||||
gainSlider->setName ("gain slider");
|
||||
|
||||
gainSlider->setBounds (0, 32, 360, 32);
|
||||
|
||||
oscChoice.reset (new ChoiceComponent (p, "osc", "OSC Type"));
|
||||
addAndMakeVisible (oscChoice.get());
|
||||
oscChoice->setName ("osc selector");
|
||||
|
||||
oscChoice->setBounds (0, 4, 224, 28);
|
||||
|
||||
polyNumberInput.reset (new Slider ("poly number input"));
|
||||
addAndMakeVisible (polyNumberInput.get());
|
||||
polyNumberInput->setRange (0, 32, 1);
|
||||
polyNumberInput->setSliderStyle (Slider::IncDecButtons);
|
||||
polyNumberInput->setTextBoxStyle (Slider::TextBoxLeft, false, 30, 20);
|
||||
polyNumberInput->addListener (this);
|
||||
|
||||
polyNumberInput->setBounds (268, 4, 86, 24);
|
||||
|
||||
advancedSwitch.reset (new CheckBoxComponent (p, "isAdvancedPanelOpen_raw", "Show Advanced Options"));
|
||||
addAndMakeVisible (advancedSwitch.get());
|
||||
advancedSwitch->setName ("advanced option switch");
|
||||
|
||||
colorSchemeChoice.reset (new ChoiceComponent (p, "colorScheme", "Color"));
|
||||
addAndMakeVisible (colorSchemeChoice.get());
|
||||
colorSchemeChoice->setName ("color selector");
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (700, 64);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
oscChoice->setListener (this);
|
||||
advancedSwitch->setListener (this);
|
||||
colorSchemeChoice->setListener (this);
|
||||
colorSchemeChoice->setVisible (p.settingRefs.isAdvancedPanelOpen());
|
||||
attc.reset (new SliderAttachment (p.parameters, "maxPoly", *polyNumberInput));
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
BasicParamsComponent::~BasicParamsComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
oscChoice->removeListener();
|
||||
advancedSwitch->removeListener();
|
||||
attc.reset();
|
||||
//[/Destructor_pre]
|
||||
|
||||
polyLabel = nullptr;
|
||||
gainSlider = nullptr;
|
||||
oscChoice = nullptr;
|
||||
polyNumberInput = nullptr;
|
||||
advancedSwitch = nullptr;
|
||||
colorSchemeChoice = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void BasicParamsComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void BasicParamsComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
advancedSwitch->setBounds (getWidth() - 240, 4, 240, 28);
|
||||
colorSchemeChoice->setBounds (getWidth() - 4 - 185, 32, 185, 28);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
void BasicParamsComponent::sliderValueChanged (Slider* sliderThatWasMoved)
|
||||
{
|
||||
//[UsersliderValueChanged_Pre]
|
||||
//[/UsersliderValueChanged_Pre]
|
||||
|
||||
if (sliderThatWasMoved == polyNumberInput.get())
|
||||
{
|
||||
//[UserSliderCode_polyNumberInput] -- add your slider handling code here..
|
||||
processor.setupVoice();
|
||||
//[/UserSliderCode_polyNumberInput]
|
||||
}
|
||||
|
||||
//[UsersliderValueChanged_Post]
|
||||
//[/UsersliderValueChanged_Post]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
void BasicParamsComponent::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
|
||||
{
|
||||
processor.setupVoice();
|
||||
editor.resized();
|
||||
printf ("setup voice!!\n");
|
||||
}
|
||||
|
||||
void BasicParamsComponent::buttonClicked (Button* buttonThatWasClicked)
|
||||
{
|
||||
colorSchemeChoice->setVisible (buttonThatWasClicked->getToggleState());
|
||||
editor.resizeWholePanel();
|
||||
}
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="BasicParamsComponent" componentName=""
|
||||
parentClasses="public Component, public ComboBox::Listener, public Button::Listener"
|
||||
constructorParams="Magical8bitPlug2AudioProcessor& p, Magical8bitPlug2AudioProcessorEditor& e"
|
||||
variableInitialisers="processor(p),editor(e)" snapPixels="8"
|
||||
snapActive="1" snapShown="1" overlayOpacity="0.330" fixedSize="1"
|
||||
initialWidth="700" initialHeight="64">
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<LABEL name="label" id="a5b2b89e6dca4fe" memberName="polyLabel" virtualName=""
|
||||
explicitFocusOrder="0" pos="232 8 40 15" edTextCol="ff000000"
|
||||
edBkgCol="0" labelText="Poly" editableSingleClick="0" editableDoubleClick="0"
|
||||
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
|
||||
kerning="0.0" bold="0" italic="0" justification="33"/>
|
||||
<GENERICCOMPONENT name="gain slider" id="4bb22b329fed19e9" memberName="gainSlider"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 32 360 32" class="SliderComponent"
|
||||
params="p, "gain", "Gain""/>
|
||||
<GENERICCOMPONENT name="osc selector" id="fa2387d441a3005d" memberName="oscChoice"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 4 224 28" class="ChoiceComponent"
|
||||
params="p, "osc", "OSC Type""/>
|
||||
<SLIDER name="poly number input" id="f767aca03a9fe3ae" memberName="polyNumberInput"
|
||||
virtualName="" explicitFocusOrder="0" pos="268 4 86 24" min="0.0"
|
||||
max="32.0" int="1.0" style="IncDecButtons" textBoxPos="TextBoxLeft"
|
||||
textBoxEditable="1" textBoxWidth="30" textBoxHeight="20" skewFactor="1.0"
|
||||
needsCallback="1"/>
|
||||
<GENERICCOMPONENT name="advanced option switch" id="9d35239102eeb521" memberName="advancedSwitch"
|
||||
virtualName="" explicitFocusOrder="0" pos="0Rr 4 240 28" class="CheckBoxComponent"
|
||||
params="p, "isAdvancedPanelOpen_raw", "Show Advanced Options""/>
|
||||
<GENERICCOMPONENT name="color selector" id="21d73ddc37680dd7" memberName="colorSchemeChoice"
|
||||
virtualName="" explicitFocusOrder="0" pos="4Rr 32 185 28" class="ChoiceComponent"
|
||||
params="p, "colorScheme", "Color""/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
86
Source/BasicParamsComponent.h
Normal file
86
Source/BasicParamsComponent.h
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "PluginProcessor.h"
|
||||
#include "SliderComponent.h"
|
||||
#include "ChoiceComponent.h"
|
||||
#include "CheckBoxComponent.h"
|
||||
class Magical8bitPlug2AudioProcessorEditor;
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class BasicParamsComponent : public Component,
|
||||
public ComboBox::Listener,
|
||||
public Button::Listener,
|
||||
public Slider::Listener
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
BasicParamsComponent (Magical8bitPlug2AudioProcessor& p, Magical8bitPlug2AudioProcessorEditor& e);
|
||||
~BasicParamsComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
void comboBoxChanged (ComboBox* comboBoxThatHasChanged) override;
|
||||
void buttonClicked (Button* buttonThatWasClicked) override;
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
void sliderValueChanged (Slider* sliderThatWasMoved) override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
Magical8bitPlug2AudioProcessor& processor;
|
||||
Magical8bitPlug2AudioProcessorEditor& editor;
|
||||
|
||||
std::unique_ptr<SliderAttachment> attc;
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<Label> polyLabel;
|
||||
std::unique_ptr<SliderComponent> gainSlider;
|
||||
std::unique_ptr<ChoiceComponent> oscChoice;
|
||||
std::unique_ptr<Slider> polyNumberInput;
|
||||
std::unique_ptr<CheckBoxComponent> advancedSwitch;
|
||||
std::unique_ptr<ChoiceComponent> colorSchemeChoice;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BasicParamsComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
131
Source/BendParamsComponent.cpp
Normal file
131
Source/BendParamsComponent.cpp
Normal file
@ -0,0 +1,131 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
//[/Headers]
|
||||
|
||||
#include "BendParamsComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
BendParamsComponent::BendParamsComponent (Magical8bitPlug2AudioProcessor& p)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
label.reset (new Label ("label",
|
||||
TRANS("Bend Range")));
|
||||
addAndMakeVisible (label.get());
|
||||
label->setFont (Font (17.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
label->setJustificationType (Justification::centredLeft);
|
||||
label->setEditable (false, false, false);
|
||||
label->setColour (TextEditor::textColourId, Colours::black);
|
||||
label->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
label->setBounds (0, 4, 150, 22);
|
||||
|
||||
sliderCompo.reset (new SliderComponent (p, "bendRange", "Range"));
|
||||
addAndMakeVisible (sliderCompo.get());
|
||||
sliderCompo->setName ("slider");
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (340, 58);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
BendParamsComponent::~BendParamsComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
//[/Destructor_pre]
|
||||
|
||||
label = nullptr;
|
||||
sliderCompo = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void BendParamsComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void BendParamsComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
sliderCompo->setBounds (0, 26, proportionOfWidth (1.0000f), 28);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="BendParamsComponent" componentName=""
|
||||
parentClasses="public Component" constructorParams="Magical8bitPlug2AudioProcessor& p"
|
||||
variableInitialisers="" snapPixels="8" snapActive="1" snapShown="1"
|
||||
overlayOpacity="0.330" fixedSize="1" initialWidth="340" initialHeight="58">
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<LABEL name="label" id="bae3132bcad681ce" memberName="label" virtualName=""
|
||||
explicitFocusOrder="0" pos="0 4 150 22" edTextCol="ff000000"
|
||||
edBkgCol="0" labelText="Bend Range" editableSingleClick="0" editableDoubleClick="0"
|
||||
focusDiscardsChanges="0" fontname="Default font" fontsize="17.0"
|
||||
kerning="0.0" bold="0" italic="0" justification="33"/>
|
||||
<GENERICCOMPONENT name="slider" id="b01ddc412ec6dc27" memberName="sliderCompo"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 26 100% 28" class="SliderComponent"
|
||||
params="p, "bendRange", "Range""/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
68
Source/BendParamsComponent.h
Normal file
68
Source/BendParamsComponent.h
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "SliderComponent.h"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class BendParamsComponent : public Component
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
BendParamsComponent (Magical8bitPlug2AudioProcessor& p);
|
||||
~BendParamsComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<Label> label;
|
||||
std::unique_ptr<SliderComponent> sliderCompo;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BendParamsComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
149
Source/CheckBoxComponent.cpp
Normal file
149
Source/CheckBoxComponent.cpp
Normal file
@ -0,0 +1,149 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
#include "PluginProcessor.h"
|
||||
//[/Headers]
|
||||
|
||||
#include "CheckBoxComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
CheckBoxComponent::CheckBoxComponent (Magical8bitPlug2AudioProcessor& p, String paramId, String name)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
toggleButton.reset (new ToggleButton ("toggle button"));
|
||||
addAndMakeVisible (toggleButton.get());
|
||||
toggleButton->setButtonText (TRANS("new toggle button"));
|
||||
toggleButton->addListener (this);
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (360, 28);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
attc.reset (new ButtonAttachment (p.parameters, paramId, *toggleButton));
|
||||
|
||||
toggleButton->setButtonText (name);
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
CheckBoxComponent::~CheckBoxComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
attc.reset();
|
||||
//[/Destructor_pre]
|
||||
|
||||
toggleButton = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void CheckBoxComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void CheckBoxComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
toggleButton->setBounds (32, 0, getWidth() - 40, 24);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
void CheckBoxComponent::buttonClicked (Button* buttonThatWasClicked)
|
||||
{
|
||||
//[UserbuttonClicked_Pre]
|
||||
//[/UserbuttonClicked_Pre]
|
||||
|
||||
if (buttonThatWasClicked == toggleButton.get())
|
||||
{
|
||||
//[UserButtonCode_toggleButton] -- add your button handler code here..
|
||||
//[/UserButtonCode_toggleButton]
|
||||
}
|
||||
|
||||
//[UserbuttonClicked_Post]
|
||||
if (buttonThatWasClicked == toggleButton.get() && checkBoxListener != nullptr)
|
||||
{
|
||||
checkBoxListener->buttonClicked (buttonThatWasClicked);
|
||||
}
|
||||
|
||||
//[/UserbuttonClicked_Post]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
void CheckBoxComponent::setListener (Button::Listener* lnr)
|
||||
{
|
||||
checkBoxListener = lnr;
|
||||
}
|
||||
|
||||
void CheckBoxComponent::removeListener()
|
||||
{
|
||||
checkBoxListener = nullptr;
|
||||
}
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="CheckBoxComponent" componentName=""
|
||||
parentClasses="public Component" constructorParams="Magical8bitPlug2AudioProcessor& p, String paramId, String name"
|
||||
variableInitialisers="" snapPixels="8" snapActive="1" snapShown="1"
|
||||
overlayOpacity="0.330" fixedSize="1" initialWidth="360" initialHeight="28">
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<TOGGLEBUTTON name="toggle button" id="78b65dc9a6b61921" memberName="toggleButton"
|
||||
virtualName="" explicitFocusOrder="0" pos="32 0 40M 24" buttonText="new toggle button"
|
||||
connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
73
Source/CheckBoxComponent.h
Normal file
73
Source/CheckBoxComponent.h
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "Defs.h"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class CheckBoxComponent : public Component,
|
||||
public Button::Listener
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
CheckBoxComponent (Magical8bitPlug2AudioProcessor& p, String paramId, String name);
|
||||
~CheckBoxComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
void setListener (Button::Listener* lnr);
|
||||
void removeListener();
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
void buttonClicked (Button* buttonThatWasClicked) override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
std::unique_ptr<ButtonAttachment> attc;
|
||||
Button::Listener* checkBoxListener = nullptr;
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<ToggleButton> toggleButton;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CheckBoxComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
177
Source/ChoiceComponent.cpp
Normal file
177
Source/ChoiceComponent.cpp
Normal file
@ -0,0 +1,177 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
//[/Headers]
|
||||
|
||||
#include "ChoiceComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
ChoiceComponent::ChoiceComponent (Magical8bitPlug2AudioProcessor& p, String paramId, String name)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
comboBox.reset (new ComboBox ("combo box"));
|
||||
addAndMakeVisible (comboBox.get());
|
||||
comboBox->setEditableText (false);
|
||||
comboBox->setJustificationType (Justification::centredLeft);
|
||||
comboBox->setTextWhenNothingSelected (String());
|
||||
comboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
|
||||
comboBox->addListener (this);
|
||||
|
||||
label.reset (new Label ("label",
|
||||
TRANS("Label")));
|
||||
addAndMakeVisible (label.get());
|
||||
label->setFont (Font (14.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
label->setJustificationType (Justification::centredRight);
|
||||
label->setEditable (false, false, false);
|
||||
label->setColour (TextEditor::textColourId, Colours::black);
|
||||
label->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
label->setBounds (8, 1, 60, 24);
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (360, 28);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
label->setText (name, dontSendNotification);
|
||||
|
||||
AudioParameterChoice* c = (AudioParameterChoice*)p.parameters.getParameter (paramId);
|
||||
|
||||
for (int i = 0; i < c->choices.size(); i++)
|
||||
{
|
||||
String choice = c->choices[i];
|
||||
comboBox->addItem (choice, i + 1);
|
||||
}
|
||||
|
||||
attc.reset (new ComboBoxAttachment (p.parameters, paramId, *comboBox));
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
ChoiceComponent::~ChoiceComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
attc.reset();
|
||||
//[/Destructor_pre]
|
||||
|
||||
comboBox = nullptr;
|
||||
label = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void ChoiceComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void ChoiceComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
comboBox->setBounds (72, 0, getWidth() - 80, 24);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
void ChoiceComponent::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
|
||||
{
|
||||
//[UsercomboBoxChanged_Pre]
|
||||
//[/UsercomboBoxChanged_Pre]
|
||||
|
||||
if (comboBoxThatHasChanged == comboBox.get())
|
||||
{
|
||||
//[UserComboBoxCode_comboBox] -- add your combo box handling code here..
|
||||
printf ("value = %d\n", comboBoxThatHasChanged->getSelectedId());
|
||||
//[/UserComboBoxCode_comboBox]
|
||||
}
|
||||
|
||||
//[UsercomboBoxChanged_Post]
|
||||
if (comboBoxThatHasChanged == comboBox.get() && comboBoxListener != nullptr)
|
||||
{
|
||||
comboBoxListener->comboBoxChanged (comboBoxThatHasChanged);
|
||||
}
|
||||
|
||||
//[/UsercomboBoxChanged_Post]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
void ChoiceComponent::setListener (ComboBox::Listener* lnr)
|
||||
{
|
||||
comboBoxListener = lnr;
|
||||
}
|
||||
|
||||
void ChoiceComponent::removeListener()
|
||||
{
|
||||
comboBoxListener = nullptr;
|
||||
}
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="ChoiceComponent" componentName=""
|
||||
parentClasses="public Component" constructorParams="Magical8bitPlug2AudioProcessor& p, String paramId, String name"
|
||||
variableInitialisers="" snapPixels="8" snapActive="1" snapShown="1"
|
||||
overlayOpacity="0.330" fixedSize="1" initialWidth="360" initialHeight="28">
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<COMBOBOX name="combo box" id="67bfdf47357e233d" memberName="comboBox"
|
||||
virtualName="" explicitFocusOrder="0" pos="72 0 80M 24" editable="0"
|
||||
layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
|
||||
<LABEL name="label" id="af1fa4a96c3448e5" memberName="label" virtualName=""
|
||||
explicitFocusOrder="0" pos="8 1 60 24" edTextCol="ff000000" edBkgCol="0"
|
||||
labelText="Label" editableSingleClick="0" editableDoubleClick="0"
|
||||
focusDiscardsChanges="0" fontname="Default font" fontsize="14.0"
|
||||
kerning="0.0" bold="0" italic="0" justification="34"/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
75
Source/ChoiceComponent.h
Normal file
75
Source/ChoiceComponent.h
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "PluginProcessor.h"
|
||||
#include "Defs.h"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class ChoiceComponent : public Component,
|
||||
public ComboBox::Listener
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
ChoiceComponent (Magical8bitPlug2AudioProcessor& p, String paramId, String name);
|
||||
~ChoiceComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
void setListener (ComboBox::Listener* lnr);
|
||||
void removeListener();
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
void comboBoxChanged (ComboBox* comboBoxThatHasChanged) override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
std::unique_ptr<ComboBoxAttachment> attc;
|
||||
ComboBox::Listener* comboBoxListener = nullptr;
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<ComboBox> comboBox;
|
||||
std::unique_ptr<Label> label;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChoiceComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
98
Source/ColorScheme.cpp
Normal file
98
Source/ColorScheme.cpp
Normal file
@ -0,0 +1,98 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
ColorScheme.cpp
|
||||
Created: 8 Dec 2019 1:00:26pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "ColorScheme.h"
|
||||
|
||||
ColorScheme::ColorScheme (ColorSchemeType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case kColorSchemeYmck:
|
||||
background = Colour (0xffffffff);
|
||||
textBoxFill = Colour (0xfff4f4ff);
|
||||
boxFill = Colour (0xff00aeff);
|
||||
main = Colour (0xff00aeff);
|
||||
mainThinLine = Colour (0xff0086ff);
|
||||
mainDarkened = Colour (0xff0080bb);
|
||||
accent = Colour (0xffffdd00);
|
||||
reversedForeground = Colour (0xffffffff);
|
||||
genericBorder = Colour (0xff0080bb);
|
||||
warning = Colour (0xffe22be0);
|
||||
break;
|
||||
|
||||
case kColorSchemeYmckDark:
|
||||
background = Colour (0xff000000);
|
||||
textBoxFill = Colour (0xff101010);
|
||||
boxFill = Colour (0xff004070);
|
||||
main = Colour (0xff00aeff);
|
||||
mainThinLine = Colour (0xff40A0ff);
|
||||
mainDarkened = Colour (0xff004070);
|
||||
accent = Colour (0xffffdd00);
|
||||
reversedForeground = Colour (0xffffffff);
|
||||
genericBorder = Colour (0xff0080bb);
|
||||
warning = Colour (0xffe22be0);
|
||||
break;
|
||||
|
||||
case kColorSchemeFamicom:
|
||||
background = Colour (0xfff4f5ec);
|
||||
boxFill = Colour (0xffead780);
|
||||
textBoxFill = Colour (0xfffdfee9);
|
||||
main = Colour (0xffc04136);
|
||||
mainThinLine = Colour (0xff97372b);
|
||||
mainDarkened = Colour (0xffc5b0ae);
|
||||
accent = Colour (0xffeed27d);
|
||||
reversedForeground = Colour (0xff101010);
|
||||
genericBorder = Colour (0xff641c11);
|
||||
warning = Colour (0xff641c11);
|
||||
break;
|
||||
|
||||
case kColorSchemeNes:
|
||||
background = Colour (0xffefefef);
|
||||
boxFill = Colour (0xff69616e);
|
||||
textBoxFill = Colour (0xffd1c8c3);
|
||||
main = Colour (0xff1b1718);
|
||||
mainThinLine = Colour (0xff000000);
|
||||
mainDarkened = Colour (0xffa1988f);
|
||||
accent = Colour (0xffc04136);
|
||||
reversedForeground = Colour (0xffffffff);
|
||||
genericBorder = Colour (0xffa1988f);
|
||||
warning = Colour (0xffc04136);
|
||||
break;
|
||||
|
||||
case kColorSchemeMonotoneLight:
|
||||
background = Colour (0xffffffff);
|
||||
boxFill = Colour (0xffffffff);
|
||||
textBoxFill = Colour (0xfff0f0f0);
|
||||
main = Colour (0xff202020);
|
||||
mainThinLine = Colour (0xff000000);
|
||||
mainDarkened = Colour (0xffc0c0c0);
|
||||
accent = Colour (0xff808080);
|
||||
reversedForeground = Colour (0xff000000);
|
||||
genericBorder = Colour (0xff606060);
|
||||
warning = Colour (0xff000000);
|
||||
break;
|
||||
|
||||
case kColorSchemeMonotoneDark:
|
||||
background = Colour (0xff000000);
|
||||
boxFill = Colour (0xff101010);
|
||||
textBoxFill = Colour (0xff000000);
|
||||
main = Colour (0xffffffff);
|
||||
mainThinLine = Colour (0xffffffff);
|
||||
mainDarkened = Colour (0xff404040);
|
||||
accent = Colour (0xffa0a0a0);
|
||||
reversedForeground = Colour (0xffffffff);
|
||||
genericBorder = Colour (0xffc0c0c0);
|
||||
warning = Colour (0xffffffff);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
38
Source/ColorScheme.h
Normal file
38
Source/ColorScheme.h
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
ColorScheme.h
|
||||
Created: 8 Dec 2019 1:00:26pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
|
||||
enum ColorSchemeType
|
||||
{
|
||||
kColorSchemeYmck = 0,
|
||||
kColorSchemeYmckDark,
|
||||
kColorSchemeFamicom,
|
||||
kColorSchemeNes,
|
||||
kColorSchemeMonotoneLight,
|
||||
kColorSchemeMonotoneDark
|
||||
};
|
||||
|
||||
struct ColorScheme
|
||||
{
|
||||
Colour background;
|
||||
Colour boxFill;
|
||||
Colour textBoxFill;
|
||||
Colour main;
|
||||
Colour mainThinLine;
|
||||
Colour mainDarkened;
|
||||
Colour accent;
|
||||
Colour reversedForeground;
|
||||
Colour genericBorder;
|
||||
Colour warning;
|
||||
|
||||
ColorScheme (ColorSchemeType type);
|
||||
};
|
226
Source/CustomEnvelopeComponent.cpp
Normal file
226
Source/CustomEnvelopeComponent.cpp
Normal file
@ -0,0 +1,226 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
#include "PluginProcessor.h"
|
||||
#include "FrameSequenceParseErrors.h"
|
||||
//[/Headers]
|
||||
|
||||
#include "CustomEnvelopeComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
CustomEnvelopeComponent::CustomEnvelopeComponent (Magical8bitPlug2AudioProcessor& p, String type, String displayName, String flagParameterName)
|
||||
: processor(p)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
textEditor.reset (new TextEditor ("text editor"));
|
||||
addAndMakeVisible (textEditor.get());
|
||||
textEditor->setMultiLine (false);
|
||||
textEditor->setReturnKeyStartsNewLine (false);
|
||||
textEditor->setReadOnly (false);
|
||||
textEditor->setScrollbarsShown (false);
|
||||
textEditor->setCaretVisible (true);
|
||||
textEditor->setPopupMenuEnabled (true);
|
||||
textEditor->setText (String());
|
||||
|
||||
toggleButton.reset (new ToggleButton ("toggle button"));
|
||||
addAndMakeVisible (toggleButton.get());
|
||||
toggleButton->setButtonText (TRANS("Enabled"));
|
||||
toggleButton->addListener (this);
|
||||
|
||||
toggleButton->setBounds (8, 4, 104, 24);
|
||||
|
||||
label.reset (new Label ("new label",
|
||||
String()));
|
||||
addAndMakeVisible (label.get());
|
||||
label->setFont (Font (12.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
label->setJustificationType (Justification::centredLeft);
|
||||
label->setEditable (false, false, false);
|
||||
label->setColour (TextEditor::textColourId, Colours::black);
|
||||
label->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (540, 56);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
paramType = type;
|
||||
attc.reset (new ButtonAttachment (p.parameters, flagParameterName, *toggleButton));
|
||||
|
||||
textEditor->addListener (this);
|
||||
textEditor->setText (p.settingRefs.getSequenceString (type));
|
||||
|
||||
toggleButton->setButtonText (displayName);
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
CustomEnvelopeComponent::~CustomEnvelopeComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
//[/Destructor_pre]
|
||||
|
||||
textEditor = nullptr;
|
||||
toggleButton = nullptr;
|
||||
label = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
attc.reset();
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void CustomEnvelopeComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void CustomEnvelopeComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
textEditor->setBounds (112, 4, getWidth() - 124, 24);
|
||||
label->setBounds (112, 28, getWidth() - 124, 24);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
void CustomEnvelopeComponent::buttonClicked (Button* buttonThatWasClicked)
|
||||
{
|
||||
//[UserbuttonClicked_Pre]
|
||||
//[/UserbuttonClicked_Pre]
|
||||
|
||||
if (buttonThatWasClicked == toggleButton.get())
|
||||
{
|
||||
//[UserButtonCode_toggleButton] -- add your button handler code here..
|
||||
//[/UserButtonCode_toggleButton]
|
||||
}
|
||||
|
||||
//[UserbuttonClicked_Post]
|
||||
//[/UserbuttonClicked_Post]
|
||||
}
|
||||
|
||||
void CustomEnvelopeComponent::lookAndFeelChanged()
|
||||
{
|
||||
//[UserCode_lookAndFeelChanged] -- Add your code here...
|
||||
ColorScheme cs = ColorScheme (processor.settingRefs.colorSchemeType());
|
||||
|
||||
labelLookAndFeel.setColour (Label::textColourId, cs.warning);
|
||||
label->setLookAndFeel (&labelLookAndFeel);
|
||||
|
||||
textEditor->applyColourToAllText (cs.mainThinLine, true);
|
||||
|
||||
//[/UserCode_lookAndFeelChanged]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
void CustomEnvelopeComponent::textEditorTextChanged (TextEditor& editor)
|
||||
{
|
||||
printf ("*** text changed!\n");
|
||||
String txt = editor.getText();
|
||||
|
||||
ParseError err = kParseErrorNone;
|
||||
processor.settingRefs.setSequenceWithString (paramType, txt, &err);
|
||||
|
||||
if (err == kParseErrorValueOutOfRange)
|
||||
{
|
||||
if (paramType == "volume")
|
||||
{
|
||||
label->setText (getParseErrorString (err, 0, 15), dontSendNotification);
|
||||
}
|
||||
else if (paramType == "pitch")
|
||||
{
|
||||
label->setText (getParseErrorString (err, -64, 63), dontSendNotification);
|
||||
}
|
||||
else if (paramType == "duty")
|
||||
{
|
||||
label->setText (getParseErrorString (err, 0, 2), dontSendNotification);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
label->setText (getParseErrorString (err), dontSendNotification);
|
||||
}
|
||||
}
|
||||
|
||||
void CustomEnvelopeComponent::sequenceChanged (String& str)
|
||||
{
|
||||
textEditor->setText (str);
|
||||
}
|
||||
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="CustomEnvelopeComponent"
|
||||
componentName="" parentClasses="public Component, TextEditor::Listener, FrameSequenceChangeListener"
|
||||
constructorParams="Magical8bitPlug2AudioProcessor& p, String type, String displayName, String flagParameterName"
|
||||
variableInitialisers="processor(p)" snapPixels="8" snapActive="1"
|
||||
snapShown="1" overlayOpacity="0.330" fixedSize="1" initialWidth="540"
|
||||
initialHeight="56">
|
||||
<METHODS>
|
||||
<METHOD name="lookAndFeelChanged()"/>
|
||||
</METHODS>
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<TEXTEDITOR name="text editor" id="9e63a9c08f238222" memberName="textEditor"
|
||||
virtualName="" explicitFocusOrder="0" pos="112 4 124M 24" initialText=""
|
||||
multiline="0" retKeyStartsLine="0" readonly="0" scrollbars="0"
|
||||
caret="1" popupmenu="1"/>
|
||||
<TOGGLEBUTTON name="toggle button" id="87baaa12bb810ff" memberName="toggleButton"
|
||||
virtualName="" explicitFocusOrder="0" pos="8 4 104 24" buttonText="Enabled"
|
||||
connectedEdges="0" needsCallback="1" radioGroupId="0" state="0"/>
|
||||
<LABEL name="new label" id="ea955df87cc606d6" memberName="label" virtualName=""
|
||||
explicitFocusOrder="0" pos="112 28 124M 24" edTextCol="ff000000"
|
||||
edBkgCol="0" labelText="" editableSingleClick="0" editableDoubleClick="0"
|
||||
focusDiscardsChanges="0" fontname="Default font" fontsize="12.0"
|
||||
kerning="0.0" bold="0" italic="0" justification="33"/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
81
Source/CustomEnvelopeComponent.h
Normal file
81
Source/CustomEnvelopeComponent.h
Normal file
@ -0,0 +1,81 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "PluginProcessor.h"
|
||||
#include "Defs.h"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class CustomEnvelopeComponent : public Component,
|
||||
TextEditor::Listener,
|
||||
FrameSequenceChangeListener,
|
||||
public Button::Listener
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
CustomEnvelopeComponent (Magical8bitPlug2AudioProcessor& p, String type, String displayName, String flagParameterName);
|
||||
~CustomEnvelopeComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
void textEditorTextChanged (TextEditor& editor) override;
|
||||
void sequenceChanged (String& str) override;
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
void buttonClicked (Button* buttonThatWasClicked) override;
|
||||
void lookAndFeelChanged() override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
Magical8bitPlug2AudioProcessor& processor;
|
||||
std::unique_ptr<ButtonAttachment> attc;
|
||||
String paramType;
|
||||
LookAndFeel_V4 labelLookAndFeel;
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<TextEditor> textEditor;
|
||||
std::unique_ptr<ToggleButton> toggleButton;
|
||||
std::unique_ptr<Label> label;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CustomEnvelopeComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
15
Source/Defs.h
Normal file
15
Source/Defs.h
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
Defs.h
|
||||
Created: 13 Jul 2019 11:03:52pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
typedef AudioProcessorValueTreeState::SliderAttachment SliderAttachment;
|
||||
typedef AudioProcessorValueTreeState::ButtonAttachment ButtonAttachment;
|
||||
typedef juce::AudioProcessorValueTreeState::ComboBoxAttachment ComboBoxAttachment;
|
196
Source/EnvelopeParamsComponent.cpp
Normal file
196
Source/EnvelopeParamsComponent.cpp
Normal file
@ -0,0 +1,196 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
//[/Headers]
|
||||
|
||||
#include "EnvelopeParamsComponent.h"
|
||||
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
EnvelopeParamsComponent::EnvelopeParamsComponent (Magical8bitPlug2AudioProcessor& p)
|
||||
{
|
||||
//[Constructor_pre] You can add your own custom stuff here..
|
||||
//[/Constructor_pre]
|
||||
|
||||
label.reset (new Label ("label",
|
||||
TRANS("Envelope")));
|
||||
addAndMakeVisible (label.get());
|
||||
label->setFont (Font (17.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
label->setJustificationType (Justification::centredLeft);
|
||||
label->setEditable (false, false, false);
|
||||
label->setColour (TextEditor::textColourId, Colours::black);
|
||||
label->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
label->setBounds (0, 4, 150, 22);
|
||||
|
||||
attackSlider.reset (new SliderComponent (p, "attack", "Attack"));
|
||||
addAndMakeVisible (attackSlider.get());
|
||||
attackSlider->setName ("attack slider");
|
||||
|
||||
decaySlider.reset (new SliderComponent (p, "decay", "Decay"));
|
||||
addAndMakeVisible (decaySlider.get());
|
||||
decaySlider->setName ("decay slider");
|
||||
|
||||
sustainSlider.reset (new SliderComponent (p, "suslevel", "Sustain"));
|
||||
addAndMakeVisible (sustainSlider.get());
|
||||
sustainSlider->setName ("sustain slider");
|
||||
|
||||
releaseSlider.reset (new SliderComponent (p, "release", "Release"));
|
||||
addAndMakeVisible (releaseSlider.get());
|
||||
releaseSlider->setName ("release slider");
|
||||
|
||||
warningLabel.reset (new Label ("warning label",
|
||||
String()));
|
||||
addAndMakeVisible (warningLabel.get());
|
||||
warningLabel->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
|
||||
warningLabel->setJustificationType (Justification::centredRight);
|
||||
warningLabel->setEditable (false, false, false);
|
||||
warningLabel->setColour (Label::textColourId, Colour (0xffe22be0));
|
||||
warningLabel->setColour (TextEditor::textColourId, Colours::black);
|
||||
warningLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
|
||||
|
||||
|
||||
//[UserPreSize]
|
||||
//[/UserPreSize]
|
||||
|
||||
setSize (340, 142);
|
||||
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
ColorScheme cs = ColorScheme (p.settingRefs.colorSchemeType());
|
||||
warningLabelLookAndFeel.setColour (Label::textColourId, cs.warning);
|
||||
warningLabel->setLookAndFeel (&warningLabelLookAndFeel);
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
EnvelopeParamsComponent::~EnvelopeParamsComponent()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
//[/Destructor_pre]
|
||||
|
||||
label = nullptr;
|
||||
attackSlider = nullptr;
|
||||
decaySlider = nullptr;
|
||||
sustainSlider = nullptr;
|
||||
releaseSlider = nullptr;
|
||||
warningLabel = nullptr;
|
||||
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void EnvelopeParamsComponent::paint (Graphics& g)
|
||||
{
|
||||
//[UserPrePaint] Add your own custom painting code here..
|
||||
//[/UserPrePaint]
|
||||
|
||||
//[UserPaint] Add your own custom painting code here..
|
||||
//[/UserPaint]
|
||||
}
|
||||
|
||||
void EnvelopeParamsComponent::resized()
|
||||
{
|
||||
//[UserPreResize] Add your own custom resize code here..
|
||||
//[/UserPreResize]
|
||||
|
||||
attackSlider->setBounds (0, 26, proportionOfWidth (1.0000f), 28);
|
||||
decaySlider->setBounds (0, 54, proportionOfWidth (1.0000f), 28);
|
||||
sustainSlider->setBounds (0, 82, proportionOfWidth (1.0000f), 28);
|
||||
releaseSlider->setBounds (0, 110, proportionOfWidth (1.0000f), 28);
|
||||
warningLabel->setBounds (getWidth() - 8 - 246, 4, 246, 24);
|
||||
//[UserResized] Add your own custom resize handling here..
|
||||
//[/UserResized]
|
||||
}
|
||||
|
||||
void EnvelopeParamsComponent::enablementChanged()
|
||||
{
|
||||
//[UserCode_enablementChanged] -- Add your code here...
|
||||
if (isEnabled())
|
||||
{
|
||||
warningLabel->setText (TRANS (""), dontSendNotification);
|
||||
}
|
||||
else
|
||||
{
|
||||
warningLabel->setText (TRANS ("Overridden by Custom Envelope"), dontSendNotification);
|
||||
}
|
||||
|
||||
//[/UserCode_enablementChanged]
|
||||
}
|
||||
|
||||
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Projucer information section --
|
||||
|
||||
This is where the Projucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
<JUCER_COMPONENT documentType="Component" className="EnvelopeParamsComponent"
|
||||
componentName="" parentClasses="public Component" constructorParams="Magical8bitPlug2AudioProcessor& p"
|
||||
variableInitialisers="" snapPixels="8" snapActive="1" snapShown="1"
|
||||
overlayOpacity="0.330" fixedSize="1" initialWidth="340" initialHeight="142">
|
||||
<METHODS>
|
||||
<METHOD name="enablementChanged()"/>
|
||||
</METHODS>
|
||||
<BACKGROUND backgroundColour="ffffff"/>
|
||||
<LABEL name="label" id="bae3132bcad681ce" memberName="label" virtualName=""
|
||||
explicitFocusOrder="0" pos="0 4 150 22" edTextCol="ff000000"
|
||||
edBkgCol="0" labelText="Envelope" editableSingleClick="0" editableDoubleClick="0"
|
||||
focusDiscardsChanges="0" fontname="Default font" fontsize="17.0"
|
||||
kerning="0.0" bold="0" italic="0" justification="33"/>
|
||||
<GENERICCOMPONENT name="attack slider" id="93ec1e79c45ddad4" memberName="attackSlider"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 26 100% 28" class="SliderComponent"
|
||||
params="p, "attack", "Attack""/>
|
||||
<GENERICCOMPONENT name="decay slider" id="1be45518932375fc" memberName="decaySlider"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 54 100% 28" class="SliderComponent"
|
||||
params="p, "decay", "Decay""/>
|
||||
<GENERICCOMPONENT name="sustain slider" id="5c2169fddb4cc33" memberName="sustainSlider"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 82 100% 28" class="SliderComponent"
|
||||
params="p, "suslevel", "Sustain""/>
|
||||
<GENERICCOMPONENT name="release slider" id="9d35239102eeb521" memberName="releaseSlider"
|
||||
virtualName="" explicitFocusOrder="0" pos="0 110 100% 28" class="SliderComponent"
|
||||
params="p, "release", "Release""/>
|
||||
<LABEL name="warning label" id="624aa3e1415981e3" memberName="warningLabel"
|
||||
virtualName="" explicitFocusOrder="0" pos="8Rr 4 246 24" textCol="ffe22be0"
|
||||
edTextCol="ff000000" edBkgCol="0" labelText="" editableSingleClick="0"
|
||||
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
|
||||
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="34"/>
|
||||
</JUCER_COMPONENT>
|
||||
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
74
Source/EnvelopeParamsComponent.h
Normal file
74
Source/EnvelopeParamsComponent.h
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Projucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Projucer version: 5.4.5
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Projucer is part of the JUCE library.
|
||||
Copyright (c) 2017 - ROLI Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "SliderComponent.h"
|
||||
//[/Headers]
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Projucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
class EnvelopeParamsComponent : public Component
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
EnvelopeParamsComponent (Magical8bitPlug2AudioProcessor& p);
|
||||
~EnvelopeParamsComponent();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
//[/UserMethods]
|
||||
|
||||
void paint (Graphics& g) override;
|
||||
void resized() override;
|
||||
void enablementChanged() override;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
LookAndFeel_V4 warningLabelLookAndFeel;
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
std::unique_ptr<Label> label;
|
||||
std::unique_ptr<SliderComponent> attackSlider;
|
||||
std::unique_ptr<SliderComponent> decaySlider;
|
||||
std::unique_ptr<SliderComponent> sustainSlider;
|
||||
std::unique_ptr<SliderComponent> releaseSlider;
|
||||
std::unique_ptr<Label> warningLabel;
|
||||
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EnvelopeParamsComponent)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
71
Source/FrameSequence.h
Normal file
71
Source/FrameSequence.h
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FrameSequence.h
|
||||
Created: 11 Dec 2019 11:37:27am
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <vector>
|
||||
|
||||
struct FrameSequence
|
||||
{
|
||||
std::vector<int> sequence;
|
||||
bool isLooped = false;
|
||||
bool hasRelease = false;
|
||||
int loopStartIndex = 0;
|
||||
int releaseSequenceStartIndex = 0;
|
||||
static const int SHOULD_RETIRE = 65535;
|
||||
|
||||
int valueAt (int index)
|
||||
{
|
||||
if (index < 0 || index >= sequence.size())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return sequence[index];
|
||||
}
|
||||
|
||||
int nextIndexOf (int current)
|
||||
{
|
||||
if (current < releaseSequenceStartIndex) // Hold
|
||||
{
|
||||
if (current == releaseSequenceStartIndex - 1) // Reached to the end
|
||||
{
|
||||
if (isLooped)
|
||||
{
|
||||
return loopStartIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
return current; // Hold the last value
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return current + 1;
|
||||
}
|
||||
|
||||
// No reach here
|
||||
}
|
||||
else // Released
|
||||
{
|
||||
if (current >= sequence.size() - 1) // Reached to the end
|
||||
{
|
||||
return SHOULD_RETIRE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return current + 1;
|
||||
}
|
||||
|
||||
// No reach here
|
||||
}
|
||||
|
||||
// No reach here
|
||||
}
|
||||
};
|
84
Source/FrameSequenceParseErrors.cpp
Normal file
84
Source/FrameSequenceParseErrors.cpp
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FrameSequenceParseErrors.cpp
|
||||
Created: 11 Dec 2019 7:16:17pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "FrameSequenceParseErrors.h"
|
||||
|
||||
String getParseErrorString (ParseError err, int minValue, int maxValue)
|
||||
{
|
||||
switch (err)
|
||||
{
|
||||
case kParseErrorDuplicatedReleaseDelimiter:
|
||||
return TRANS ("You cannot use \"|\" more than once");
|
||||
break;
|
||||
|
||||
case kParseErrorDuplicatedOpenBracket:
|
||||
return TRANS ("You cannot use \"[\" more than once");
|
||||
break;
|
||||
|
||||
case kParseErrorDuplicatedCloseBracket:
|
||||
return TRANS ("You cannot use \"]\" more than once");
|
||||
break;
|
||||
|
||||
case kParseErrorRepeatingInReleaseBlock:
|
||||
return TRANS ("You cannot use repeat in release phase");
|
||||
break;
|
||||
|
||||
case kParseErrorUnmatchingOpenBracket:
|
||||
return TRANS ("Unmatching \"[\"");
|
||||
break;
|
||||
|
||||
case kParseErrorUnmatchingCloseBracket:
|
||||
return TRANS ("Unmatching \"]\"");
|
||||
break;
|
||||
|
||||
case kParseErrorUnmatchingBracketNumber:
|
||||
return TRANS ("Number of brackets not matching");
|
||||
break;
|
||||
|
||||
case kParseErrorMissingSlopeValueDelimiter:
|
||||
return TRANS ("\"to\" must be speccified in slope description");
|
||||
break;
|
||||
|
||||
case kParseErrorMissingSlopeLengthDelimiter:
|
||||
return TRANS ("\"in\" must be speccified in slope description");
|
||||
break;
|
||||
|
||||
case kParseErrorMissingSlopeInitialValue:
|
||||
return TRANS ("Missing initial value before \"to\"");
|
||||
break;
|
||||
|
||||
case kParseErrorMissingSlopeFinalValue:
|
||||
return TRANS ("Missing destination value before \"in\"");
|
||||
break;
|
||||
|
||||
case kParseErrorNotANumber:
|
||||
return TRANS ("Number parse failed.");
|
||||
break;
|
||||
|
||||
case kParseErrorValueOutOfRange:
|
||||
return String::formatted (TRANS ("Value should be between %d and %d."), minValue, maxValue);
|
||||
break;
|
||||
|
||||
case kParseErrorFrameLengthTooShort:
|
||||
return TRANS ("Frame count should be more than 2");
|
||||
break;
|
||||
|
||||
case kParseErrorMissingValueForRepeatDelimiter:
|
||||
return TRANS ("Operator x should be followed by a number.");
|
||||
break;
|
||||
|
||||
case kParseErrorMissingFrameCountForRepeatDelimiter:
|
||||
return TRANS ("A number should be specified after operator x.");
|
||||
break;
|
||||
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
37
Source/FrameSequenceParseErrors.h
Normal file
37
Source/FrameSequenceParseErrors.h
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FrameSequenceParseErrors.h
|
||||
Created: 11 Dec 2019 5:06:52pm
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
|
||||
enum ParseError
|
||||
{
|
||||
kParseErrorNone = 0,
|
||||
kParseErrorLevelWarning,
|
||||
kParseErrorLevelFatal,
|
||||
kParseErrorDuplicatedReleaseDelimiter,
|
||||
kParseErrorDuplicatedOpenBracket,
|
||||
kParseErrorDuplicatedCloseBracket,
|
||||
kParseErrorRepeatingInReleaseBlock,
|
||||
kParseErrorUnmatchingOpenBracket,
|
||||
kParseErrorUnmatchingCloseBracket,
|
||||
kParseErrorUnmatchingBracketNumber,
|
||||
kParseErrorMissingSlopeValueDelimiter,
|
||||
kParseErrorMissingSlopeLengthDelimiter,
|
||||
kParseErrorMissingSlopeInitialValue,
|
||||
kParseErrorMissingSlopeFinalValue,
|
||||
kParseErrorNotANumber,
|
||||
kParseErrorValueOutOfRange,
|
||||
kParseErrorFrameLengthTooShort,
|
||||
kParseErrorMissingValueForRepeatDelimiter,
|
||||
kParseErrorMissingFrameCountForRepeatDelimiter,
|
||||
};
|
||||
|
||||
String getParseErrorString (ParseError err, int minValue = 0, int maxValue = 0);
|
462
Source/FrameSequenceParser.cpp
Normal file
462
Source/FrameSequenceParser.cpp
Normal file
@ -0,0 +1,462 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FrameSequenceParser.cpp
|
||||
Created: 11 Dec 2019 8:49:02am
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "FrameSequenceParser.h"
|
||||
|
||||
//
|
||||
// Fileprivate
|
||||
//
|
||||
|
||||
std::vector<int> parseSlope (const String& input,
|
||||
int minValue,
|
||||
int maxValue,
|
||||
ParseError* error)
|
||||
{
|
||||
std::vector<int> retval;
|
||||
|
||||
// find index of "to"
|
||||
int toIndex = input.indexOf ("to");
|
||||
|
||||
if (toIndex < 0)
|
||||
{
|
||||
// Normally this is impossible because it's checking existance of "to" to check if it's a slope
|
||||
*error = kParseErrorMissingSlopeValueDelimiter;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (toIndex < 1)
|
||||
{
|
||||
*error = kParseErrorMissingSlopeInitialValue;
|
||||
return retval;
|
||||
}
|
||||
|
||||
// find index of "in"
|
||||
int inIndex = input.indexOf ("in");
|
||||
|
||||
if (inIndex > input.length() - 3)
|
||||
{
|
||||
*error = kParseErrorMissingSlopeFinalValue;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (inIndex < 0)
|
||||
{
|
||||
*error = kParseErrorMissingSlopeLengthDelimiter;
|
||||
return retval;
|
||||
}
|
||||
|
||||
// get 3 substrings separated by "to" and "in" and put them into `from`, `to`, `cntStr`
|
||||
String fromStr = input.substring (0, toIndex);
|
||||
String toStr = input.substring (toIndex + 2, inIndex);
|
||||
String cntStr = input.substring (inIndex + 2, input.length());
|
||||
|
||||
|
||||
// remove "f" from `cntStr` if exists
|
||||
String cntStr_t = cntStr.replace ("f", "");
|
||||
|
||||
if (!fromStr.containsOnly ("-0123456789"))
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (!toStr.containsOnly ("-0123456789"))
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (!cntStr_t.containsOnly ("-0123456789"))
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
// convert each strings to int
|
||||
double fromValue = fromStr.getDoubleValue();
|
||||
double toValue = toStr.getDoubleValue();
|
||||
double cntValue = cntStr_t.getDoubleValue();
|
||||
|
||||
if (fromValue > (double)maxValue || toValue > (double)maxValue )
|
||||
{
|
||||
*error = kParseErrorValueOutOfRange;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (fromValue < (double)minValue || toValue < (double)minValue )
|
||||
{
|
||||
*error = kParseErrorValueOutOfRange;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (cntValue < 2.0)
|
||||
{
|
||||
*error = kParseErrorFrameLengthTooShort;
|
||||
return retval;
|
||||
}
|
||||
|
||||
// calculate slope as double
|
||||
double slope = (toValue - fromValue) / (cntValue - 1.0);
|
||||
|
||||
for (double i = 0; i < cntValue; i += 1.0)
|
||||
{
|
||||
double value = fromValue + slope * i;
|
||||
int rounded = round (value);
|
||||
retval.push_back (rounded);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
std::vector<int> parseRepeat (const String& input,
|
||||
int minValue,
|
||||
int maxValue,
|
||||
ParseError* error)
|
||||
{
|
||||
std::vector<int> retval;
|
||||
// find index of "x"
|
||||
int xIndex = input.indexOf ("x");
|
||||
|
||||
if (xIndex < 1)
|
||||
{
|
||||
*error = kParseErrorMissingValueForRepeatDelimiter;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (xIndex > input.length() - 1)
|
||||
{
|
||||
*error = kParseErrorMissingFrameCountForRepeatDelimiter;
|
||||
return retval;
|
||||
}
|
||||
|
||||
// separate into value, count
|
||||
String valueStr = input.substring (0, xIndex);
|
||||
String cntStr = input.substring (xIndex + 1, input.length());
|
||||
// remove "f" from `cntStr` if exists
|
||||
String cntStr_t = cntStr.replace ("f", "");
|
||||
|
||||
if (!valueStr.containsOnly ("-0123456789"))
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (!cntStr_t.containsOnly ("-0123456789"))
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
int value = valueStr.getIntValue();
|
||||
|
||||
if (value < minValue || value > maxValue)
|
||||
{
|
||||
*error = kParseErrorValueOutOfRange;
|
||||
return retval;
|
||||
}
|
||||
|
||||
int count = cntStr_t.getIntValue();
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
retval.push_back (value);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
std::vector<int> parseSegment (const String& input,
|
||||
int minValue,
|
||||
int maxValue,
|
||||
ParseError* error)
|
||||
{
|
||||
std::vector<int> retval;
|
||||
|
||||
StringArray temp;
|
||||
temp.addTokens (input, ",", "");
|
||||
|
||||
for (String aToken : temp)
|
||||
{
|
||||
std::vector<int> parsed;
|
||||
|
||||
if (aToken.contains ("to"))
|
||||
{
|
||||
// parse as slope
|
||||
parsed = parseSlope (aToken, minValue, maxValue, error);
|
||||
}
|
||||
else if (aToken.contains ("x"))
|
||||
{
|
||||
// parse as repeat-fixed-value
|
||||
parsed = parseRepeat (aToken, minValue, maxValue, error);
|
||||
}
|
||||
else
|
||||
{
|
||||
// parse as single value
|
||||
if (aToken.length() < 1)
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (!aToken.containsOnly ("-0123456789"))
|
||||
{
|
||||
*error = kParseErrorNotANumber;
|
||||
return retval;
|
||||
}
|
||||
|
||||
int value = aToken.getIntValue();
|
||||
|
||||
if (value < minValue || value > maxValue)
|
||||
{
|
||||
*error = kParseErrorValueOutOfRange;
|
||||
return retval;
|
||||
}
|
||||
|
||||
parsed.push_back (value);
|
||||
}
|
||||
|
||||
retval.insert (retval.end(), parsed.begin(), parsed.end());
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
FrameSequence FrameSequenceParser::parse (const String& input,
|
||||
int minValue,
|
||||
int maxValue,
|
||||
ParseError* error)
|
||||
{
|
||||
|
||||
FrameSequence fs;
|
||||
|
||||
//-----------------------------------
|
||||
//
|
||||
// Preprocessing
|
||||
//
|
||||
//-----------------------------------
|
||||
|
||||
// Remove white spaces
|
||||
String trimmed = input.replace (" ", "");
|
||||
|
||||
//
|
||||
// Overall structure
|
||||
//
|
||||
|
||||
int releaseBlockIndex = -1;
|
||||
int repeatStartIndex = -1;
|
||||
int repeatEndIndex = -1;
|
||||
int openBracketCount = 0;
|
||||
int closeBracketCount = 0;
|
||||
|
||||
// loop by character
|
||||
for (int i = 0; i < trimmed.length(); i++)
|
||||
{
|
||||
if (trimmed[i] == '|') // found "|":
|
||||
{
|
||||
if (releaseBlockIndex >= 0)
|
||||
{
|
||||
// if releaseBlockIndex is already determined: Duplication Error
|
||||
*error = kParseErrorDuplicatedReleaseDelimiter;
|
||||
return fs;
|
||||
}
|
||||
|
||||
// if(repeatStartIndex >= 0) {
|
||||
// // if appeard before "[" or "]": Repetition After Release Error
|
||||
// throw new FrameSequenceParseException(TRANS("You cannot repeat in release phase"), true);
|
||||
// }
|
||||
// set releaseBlockIndex
|
||||
releaseBlockIndex = i + 1;
|
||||
|
||||
if (repeatEndIndex < 0)
|
||||
{
|
||||
// if "]" is omitted: Also set repeatEndIndex
|
||||
repeatEndIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (trimmed[i] == '[') /// found "[":
|
||||
{
|
||||
openBracketCount++;
|
||||
|
||||
if (openBracketCount > 1)
|
||||
{
|
||||
// Duplication Error
|
||||
*error = kParseErrorDuplicatedOpenBracket;
|
||||
return fs;
|
||||
}
|
||||
|
||||
if (releaseBlockIndex >= 0)
|
||||
{
|
||||
// if repeat end is already defined: Repetition After Release Error
|
||||
*error = kParseErrorRepeatingInReleaseBlock;
|
||||
return fs;
|
||||
}
|
||||
|
||||
if (repeatEndIndex >= 0)
|
||||
{
|
||||
// if repeat end is already defined: Repetition After Release Error
|
||||
*error = kParseErrorDuplicatedOpenBracket;
|
||||
return fs;
|
||||
}
|
||||
|
||||
// set repeatStartIndex
|
||||
repeatStartIndex = i + 1;
|
||||
}
|
||||
|
||||
if (trimmed[i] == ']') // found "]":
|
||||
{
|
||||
closeBracketCount++;
|
||||
|
||||
if (closeBracketCount > 1)
|
||||
{
|
||||
// Duplication Error
|
||||
*error = kParseErrorDuplicatedCloseBracket;
|
||||
return fs;
|
||||
}
|
||||
|
||||
if (repeatStartIndex < 0)
|
||||
{
|
||||
// if repeatStartIndex hasn't set: Syntax Error
|
||||
*error = kParseErrorUnmatchingCloseBracket;
|
||||
return fs;
|
||||
}
|
||||
|
||||
if (releaseBlockIndex >= 0)
|
||||
{
|
||||
// if repeat end is already defined: Repetition After Release Error
|
||||
*error = kParseErrorRepeatingInReleaseBlock;
|
||||
return fs;
|
||||
}
|
||||
|
||||
repeatEndIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
// if (releaseBlockIndex < 0) { // "|" didn't explicitly specified
|
||||
// releaseBlockIndex = trimmed.length();
|
||||
// }
|
||||
|
||||
if (openBracketCount != closeBracketCount)
|
||||
{
|
||||
*error = kParseErrorUnmatchingBracketNumber;
|
||||
return fs;
|
||||
}
|
||||
|
||||
if (releaseBlockIndex - repeatEndIndex > 1)
|
||||
{
|
||||
// throw new FrameSequenceParseException(TRANS("Elements between repeat block and release block will be ignored"), false);
|
||||
// FiXME: non-fatal exceptionをどう扱うか
|
||||
}
|
||||
|
||||
// Just for convenience
|
||||
bool hasRelease = (releaseBlockIndex >= 0);
|
||||
bool shouldRepeat = (repeatStartIndex >= 0);
|
||||
|
||||
//-----------------------------------
|
||||
//
|
||||
// Split segments
|
||||
//
|
||||
//-----------------------------------
|
||||
|
||||
String str_beforeRepeat;
|
||||
String str_insideRepeat;
|
||||
String str_release;
|
||||
|
||||
if (shouldRepeat)
|
||||
{
|
||||
if (hasRelease)
|
||||
{
|
||||
str_beforeRepeat = trimmed.substring (0, repeatStartIndex - 1);
|
||||
}
|
||||
|
||||
str_insideRepeat = trimmed.substring (repeatStartIndex, repeatEndIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hasRelease)
|
||||
{
|
||||
str_beforeRepeat = trimmed.substring (0, releaseBlockIndex - 1);
|
||||
str_release = trimmed.substring (releaseBlockIndex, trimmed.length());
|
||||
}
|
||||
else
|
||||
{
|
||||
str_beforeRepeat = trimmed.substring (0, trimmed.length());
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "before repeat : " + str_beforeRepeat + "\n";
|
||||
std::cout << "inside repeat : " + str_insideRepeat + "\n";
|
||||
std::cout << "after release : " + str_release + "\n";
|
||||
|
||||
|
||||
//-----------------------------------
|
||||
//
|
||||
// Parse segments
|
||||
//
|
||||
//-----------------------------------
|
||||
|
||||
// Parse main segment to get frameSequence
|
||||
// And set frameSequence value to working variable
|
||||
// FrameSequence *fs = std::make_unique<FrameSequence>();
|
||||
|
||||
std::vector<int> sequence = parseSegment (str_beforeRepeat, minValue, maxValue, error);
|
||||
|
||||
if (*error > kParseErrorLevelFatal)
|
||||
{
|
||||
return fs;
|
||||
}
|
||||
|
||||
fs.sequence = sequence;
|
||||
fs.sequence.reserve (1000);
|
||||
fs.releaseSequenceStartIndex = (int)fs.sequence.size();
|
||||
|
||||
if (shouldRepeat) // If repeat segment exists:
|
||||
{
|
||||
// Set repeatStartIndex according to current working frameSequence length
|
||||
fs.isLooped = true;
|
||||
fs.loopStartIndex = (int)fs.sequence.size();
|
||||
|
||||
// Parse repeat segment and to get frameSequence
|
||||
std::vector<int> repeatSeq = parseSegment (str_insideRepeat, minValue, maxValue, error);
|
||||
|
||||
if (*error > kParseErrorLevelFatal)
|
||||
{
|
||||
return fs;
|
||||
}
|
||||
|
||||
// Add the result to working frameSequence
|
||||
fs.sequence.insert (fs.sequence.end(), repeatSeq.begin(), repeatSeq.end());
|
||||
|
||||
// Set repeatEndIndex according to current working frameSequence length
|
||||
fs.releaseSequenceStartIndex = (int)fs.sequence.size();
|
||||
}
|
||||
|
||||
if (hasRelease) // If release exists:
|
||||
{
|
||||
// Set releaseStartIndex according to current working frameSequence length
|
||||
fs.releaseSequenceStartIndex = (int)fs.sequence.size();
|
||||
fs.hasRelease = true;
|
||||
|
||||
// Parse release segment to get frameSequence
|
||||
std::vector<int> releaseSeq = parseSegment (str_release, minValue, maxValue, error);
|
||||
|
||||
if (*error > kParseErrorLevelFatal)
|
||||
{
|
||||
return fs;
|
||||
}
|
||||
|
||||
// Add the result to working frameSequence
|
||||
fs.sequence.insert (fs.sequence.end(), releaseSeq.begin(), releaseSeq.end());
|
||||
printf ("success");
|
||||
}
|
||||
|
||||
// return the frameSequence
|
||||
return fs;
|
||||
}
|
19
Source/FrameSequenceParser.h
Normal file
19
Source/FrameSequenceParser.h
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FrameSequenceParser.h
|
||||
Created: 11 Dec 2019 8:49:02am
|
||||
Author: 除村 武志
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "../JuceLibraryCode/JuceHeader.h"
|
||||
#include "FrameSequence.h"
|
||||
#include "FrameSequenceParseErrors.h"
|
||||
|
||||
struct FrameSequenceParser
|
||||
{
|
||||
FrameSequence parse (const String& input, int minValue, int maxValue, ParseError* error);
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user