Implementing fl.yin~

This commit is contained in:
2020-07-03 17:51:59 +01:00
parent 2facd3e046
commit 427042967c
5 changed files with 386 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
#include "FrameLib_Yin.h"
#include "FrameLib_MaxClass.h"
extern "C" int C74_EXPORT main(void)
{
FrameLib_MaxClass_Expand<FrameLib_Yin>::makeClass("fl.yin~");
}
+72
View File
@@ -0,0 +1,72 @@
#include "FrameLib_Yin.h"
// Constructor
FrameLib_Yin::FrameLib_Yin(FrameLib_Context context, FrameLib_Parameters::Serial *serialisedParameters, FrameLib_Proxy *proxy) : FrameLib_Processor(context, proxy, nullptr, 1, 1)
{
mParameters.addDouble(kF0Min, "f0Min", 0);
mParameters.setClip(0.0, floor(mSamplingRate*0.5));
mParameters.setInstantiation();
mParameters.addEnum(kF0Max, "f0Max", 1);
mParameters.setClip(0.0, floor(mSamplingRate*0.5));
mParameters.setInstantiation();
mParameters.addEnum(kHarmoThresh, "HarmoThresh", 2);
mParameters.setClip(0.0, 1.0);
mParameters.setInstantiation();
mParameters.set(serialisedParameters);
}
// Info
std::string FrameLib_Yin::objectInfo(bool verbose)
{
return formatInfo("Output the cummulative sum of the input frame",
"Output the cummulative sum of the input frame", verbose);
}
std::string FrameLib_Yin::inputInfo(unsigned long idx, bool verbose)
{
return formatInfo("Input Frames", "Input Frames", verbose);
}
std::string FrameLib_Yin::outputInfo(unsigned long idx, bool verbose)
{
return "cumulative sum of the frame";
}
// Process
void FrameLib_Yin::process()
{
const double tauMin = floor(mParameters.getValue(kF0Min) / mSamplingRate);
const double tauMax = floor(mParameters.getValue(kF0Max) / mSamplingRate);
unsigned long sizeIn;
const double *input = getInput(0, &sizeIn);
unsigned long sizeOut = sizeIn;
requestOutputSize(0, sizeOut);
allocateOutputs();
double *output = getOutput(0, &sizeOut);
if (output)
{
output[0] = input[0];
for (unsigned long i=1; i < sizeOut; i++)
{
output[i] = input[i] + input[i - 1];
}
}
}
const double * FrameLib_Yin::differenceFunction(double * x, unsigned int N, double tauMax)
{
tauMax = std::min(tauMax, static_cast<double>(N));
return nullptr;
}
+32
View File
@@ -0,0 +1,32 @@
#ifndef FRAMELIB_YIN_H
#define FRAMELIB_YIN_H
#include "FrameLib_DSP.h"
class FrameLib_Yin final : public FrameLib_Processor
{
enum ParameterList { kF0Min, kF0Max, kHarmoThresh };
struct ParameterInfo : public FrameLib_Parameters::Info { ParameterInfo(); };
public:
// Constructor
FrameLib_Yin(FrameLib_Context context, FrameLib_Parameters::Serial *serialisedParameters, FrameLib_Proxy *proxy);
// Info
std::string objectInfo(bool verbose) override;
std::string inputInfo(unsigned long idx, bool verbose) override;
std::string outputInfo(unsigned long idx, bool verbose) override;
private:
// Process
void process() override;
};
#endif
@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\FrameLib_Max_Objects\Vector\fl.cumsum~.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{3F591F75-C3CD-4304-8C2E-F9D9C45D8E23}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>framelib</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
<ProjectName>fl.cumsum~</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Debug_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win32_Config.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Release_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win32_Config.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Debug_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win64_Config.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Release_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win64_Config.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetExt>.mxe</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetExt>.mxe64</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<TargetExt>.mxe</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<TargetExt>.mxe64</TargetExt>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<Link />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalOptions>
</AdditionalOptions>
</Link>
<ProjectReference />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\FrameLib_Max_Objects\Vector\fl.cumsum~.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{3F591F75-C3CD-4304-8C2E-F9D9C45D8E23}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>framelib</RootNamespace>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
<ProjectName>fl.cumsum~</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Debug_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win32_Config.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Release_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win32_Config.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Debug_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win64_Config.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\01_Configs\FrameLib_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Base_Config.props" />
<Import Project="..\01_Configs\FrameLib_Release_Config.props" />
<Import Project="..\01_Configs\FrameLib_Max_Win64_Config.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetExt>.mxe</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetExt>.mxe64</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<TargetExt>.mxe</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<TargetExt>.mxe64</TargetExt>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
<Link />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalOptions>
</AdditionalOptions>
</Link>
<ProjectReference />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeaderFile />
<AdditionalIncludeDirectories>$(SolutionDir)FrameLib_Objects\Vector\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link />
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>