Start analyser
This commit is contained in:
parent
5c31f6dbf8
commit
a1b9153bdc
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -4,3 +4,9 @@
|
||||
[submodule "modules/hilbert-iir"]
|
||||
path = modules/hilbert-iir
|
||||
url = https://github.com/Signalsmith-Audio/hilbert-iir.git
|
||||
[submodule "clap/modules/linear"]
|
||||
path = modules/linear
|
||||
url = https://github.com/Signalsmith-Audio/linear.git
|
||||
[submodule "modules/linear"]
|
||||
path = modules/linear
|
||||
url = https://github.com/Signalsmith-Audio/linear.git
|
||||
|
||||
48
analyser.h
Normal file
48
analyser.h
Normal file
@ -0,0 +1,48 @@
|
||||
/* Copyright 2022 Signalsmith Audio Ltd. / Geraint Luff
|
||||
Released under the Boost Software License (see LICENSE.txt) */
|
||||
#pragma once
|
||||
|
||||
#include "stfx/stfx-library.h"
|
||||
|
||||
namespace signalsmith { namespace basics {
|
||||
|
||||
template<class BaseEffect>
|
||||
struct AnalyserSTFX;
|
||||
|
||||
using AnalyserFloat = stfx::LibraryEffect<float, AnalyserSTFX>;
|
||||
using AnalyserDouble = stfx::LibraryEffect<double, AnalyserSTFX>;
|
||||
|
||||
template<class BaseEffect>
|
||||
struct AnalyserSTFX : public BaseEffect {
|
||||
using typename BaseEffect::Sample;
|
||||
using typename BaseEffect::ParamRange;
|
||||
using typename BaseEffect::ParamStepped;
|
||||
|
||||
template<class Storage>
|
||||
void state(Storage &storage) {
|
||||
storage.info("[Basics] Analyser", "A Bark-scale spectrum analyser");
|
||||
storage.version(0);
|
||||
}
|
||||
|
||||
template<class Config>
|
||||
void configureSTFX(Config &config) {
|
||||
config.outputChannels = config.inputChannels;
|
||||
config.auxInputs = config.auxOutputs = {};
|
||||
}
|
||||
|
||||
void reset() {}
|
||||
|
||||
template<class Io, class Config, class Block>
|
||||
void processSTFX(Io &io, Config &config, Block &block) {
|
||||
for (size_t c = 0; c < config.inputChannels; ++c) {
|
||||
auto &input = io.input[c];
|
||||
auto &output = io.output[c];
|
||||
for (size_t i = 0; i < block.length; ++i) {
|
||||
output[i] = input[i];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
}} // namespace
|
||||
@ -1,7 +1,9 @@
|
||||
cmake_minimum_required(VERSION 3.28)
|
||||
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||
|
||||
project(plugins VERSION 1.0.0)
|
||||
set(NAME basics)
|
||||
|
||||
################ boilerplate config
|
||||
|
||||
@ -57,17 +59,16 @@ FetchContent_MakeAvailable(clap-helpers)
|
||||
|
||||
################ The actual plugin(s)
|
||||
|
||||
add_subdirectory(../ signalsmith-basics/) # need explicit path since it's not a subdir
|
||||
|
||||
set(NAME basics)
|
||||
add_library(${NAME}_static STATIC)
|
||||
target_link_libraries(${NAME}_static PUBLIC
|
||||
clap
|
||||
clap-helpers
|
||||
)
|
||||
target_include_directories(${NAME}_static PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../modules
|
||||
signalsmith-basics
|
||||
)
|
||||
target_sources(${NAME}_static PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/source/${NAME}.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/source/basics.cpp
|
||||
)
|
||||
|
||||
make_clapfirst_plugins(
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<REAPER_PROJECT 0.1 "7.20/macOS-arm64" 1747749064
|
||||
<REAPER_PROJECT 0.1 "7.24/OSX64-clang" 1750919608
|
||||
<NOTES 0 2
|
||||
>
|
||||
RIPPLE 0
|
||||
@ -101,7 +101,7 @@
|
||||
BAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAIAAAAAAAAAArAAAAAEAAAAAABAA
|
||||
AQAAAAIAAAABAAAAZGVmYXVsdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMjcuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
AAAQAAAA
|
||||
AFByb2dyYW0gMQAQAAAA
|
||||
>
|
||||
FLOATPOS 0 0 0 0
|
||||
FXID {11A0D811-6420-CB40-95D6-F9D12E45C862}
|
||||
@ -125,54 +125,8 @@
|
||||
>
|
||||
<PROJBAY
|
||||
>
|
||||
<TRACK {6D299D8B-E766-F540-80D3-DA6147A064BA}
|
||||
NAME "Sidechain Distortion"
|
||||
PEAKCOL 16576
|
||||
BEAT -1
|
||||
AUTOMODE 0
|
||||
PANLAWFLAGS 3
|
||||
VOLPAN 0.56085967561807 0 -1 -1 1
|
||||
MUTESOLO 0 0 0
|
||||
IPHASE 0
|
||||
PLAYOFFS 0 1
|
||||
ISBUS 1 1
|
||||
BUSCOMP 0 0 0 0 0
|
||||
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
|
||||
FIXEDLANES 9 0 0 0 0
|
||||
SEL 1
|
||||
REC 0 0 1 0 0 0 0 0
|
||||
VU 2
|
||||
TRACKHEIGHT 0 0 0 0 0 0 0
|
||||
INQ 0 0 0 0.5 100 0 0 100
|
||||
NCHAN 4
|
||||
FX 1
|
||||
TRACKID {6D299D8B-E766-F540-80D3-DA6147A064BA}
|
||||
PERF 0
|
||||
AUXRECV 2 3 1 0 0 0 0 0 2 -1:U 0 -1 ''
|
||||
AUXRECV 3 3 1 0 0 0 0 0 2 -1:U 0 -1 ''
|
||||
MIDIOUT -1
|
||||
MAINSEND 1 0
|
||||
<FXCHAIN
|
||||
WNDRECT 184 282 862 150
|
||||
SHOW 1
|
||||
LASTSEL 0
|
||||
DOCKED 0
|
||||
BYPASS 0 0 0
|
||||
<CLAP "CLAP: Sidechain Distortion (example) (Signalsmith Audio)" uk.co.signalsmith.dev.sidechain-distortion ""
|
||||
CFG 0 0 0 ""
|
||||
<OUT_PINS
|
||||
>
|
||||
<STATE
|
||||
v2d2ZXJzaW9uAGVzdGF0Zb9ndmVyc2lvbgBnbGltaXREYr9ldmFsdWX7wDrCUmkT/3z/Z3RvbmVrSHq/ZXZhbHVl+0AVARbxhJ0S////
|
||||
>
|
||||
>
|
||||
FLOATPOS 0 0 0 0
|
||||
FXID {1F02CE63-5B2C-DD40-B8DA-6796E8E4CD70}
|
||||
WAK 0 0
|
||||
>
|
||||
>
|
||||
<TRACK {D098F2BD-6569-F946-9F66-5C0548DFE5B1}
|
||||
NAME "Welcome Pad"
|
||||
<TRACK {93E699D9-F890-234E-A113-7E0053A85B78}
|
||||
NAME ""
|
||||
PEAKCOL 16576
|
||||
BEAT -1
|
||||
AUTOMODE 0
|
||||
@ -181,180 +135,25 @@
|
||||
MUTESOLO 0 0 0
|
||||
IPHASE 0
|
||||
PLAYOFFS 0 1
|
||||
ISBUS 2 -1
|
||||
BUSCOMP 0 0 0 0 0
|
||||
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
|
||||
FIXEDLANES 9 0 0 0 0
|
||||
SEL 0
|
||||
REC 0 0 1 0 0 0 0 0
|
||||
VU 2
|
||||
TRACKHEIGHT 0 0 0 0 0 0 0
|
||||
INQ 0 0 0 0.5 100 0 0 100
|
||||
NCHAN 2
|
||||
FX 1
|
||||
TRACKID {D098F2BD-6569-F946-9F66-5C0548DFE5B1}
|
||||
PERF 0
|
||||
MIDIOUT -1
|
||||
MAINSEND 1 0
|
||||
<ITEM
|
||||
POSITION 0
|
||||
SNAPOFFS 0
|
||||
LENGTH 12.5
|
||||
LOOP 0
|
||||
ALLTAKES 0
|
||||
FADEIN 1 0 0 1 0 0 0
|
||||
FADEOUT 1 0 0 1 0 0 0
|
||||
MUTE 0 0
|
||||
SEL 0
|
||||
IGUID {96281C1B-0CD8-7A4C-BC7B-83E34DB38B24}
|
||||
IID 4
|
||||
NAME "Welcome Pad - stem"
|
||||
VOLPAN 1 0 1 -1
|
||||
SOFFS 0
|
||||
PLAYRATE 1 1 0 -1 0 0.0025
|
||||
CHANMODE 0
|
||||
GUID {D46D1639-7253-D040-86A3-47C6E3A0FBCB}
|
||||
<SOURCE WAVE
|
||||
FILE "Media/sidechain-distortion_stems_Welcome Pad.wav"
|
||||
>
|
||||
>
|
||||
>
|
||||
<TRACK {F4D9FA0E-571B-E24E-B158-4F619AA188D8}
|
||||
NAME Filtered
|
||||
PEAKCOL 16576
|
||||
BEAT -1
|
||||
AUTOMODE 0
|
||||
PANLAWFLAGS 3
|
||||
VOLPAN 0 0 -1 -1 1
|
||||
MUTESOLO 0 0 0
|
||||
IPHASE 0
|
||||
PLAYOFFS 0 1
|
||||
ISBUS 0 0
|
||||
BUSCOMP 0 0 0 0 0
|
||||
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
|
||||
FIXEDLANES 9 0 0 0 0
|
||||
SEL 0
|
||||
REC 0 0 1 0 0 0 0 0
|
||||
SEL 1
|
||||
REC 0 5088 1 7 0 0 0 0
|
||||
VU 2
|
||||
TRACKHEIGHT 0 0 0 0 0 0 0
|
||||
INQ 0 0 0 0.5 100 0 0 100
|
||||
NCHAN 2
|
||||
FX 1
|
||||
TRACKID {F4D9FA0E-571B-E24E-B158-4F619AA188D8}
|
||||
TRACKID {93E699D9-F890-234E-A113-7E0053A85B78}
|
||||
PERF 0
|
||||
MIDIOUT -1
|
||||
MAINSEND 1 0
|
||||
<FXCHAIN
|
||||
WNDRECT 847 421 815 444
|
||||
SHOW 2
|
||||
LASTSEL 1
|
||||
DOCKED 0
|
||||
BYPASS 0 0 0
|
||||
<JS "Geraint's JSFX/Utility/Panalysis/Panalysis.jsfx" ""
|
||||
1 0 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
>
|
||||
<JS_SER
|
||||
zczMPQAAAAAAAAAA
|
||||
>
|
||||
FLOATPOS 0 0 0 0
|
||||
FXID {6A5C4484-079E-F34D-8A18-CB456B094205}
|
||||
WAK 0 0
|
||||
BYPASS 0 0 0
|
||||
<VST "VST: ReaEQ (Cockos)" reaeq.vst.dylib 0 "" 1919247729<56535472656571726561657100000000> ""
|
||||
cWVlcu5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAAAAAAAagAAAAEAAAAAABAA
|
||||
IQAAAAIAAAAEAAAAAQAAAMS7LCro8zZAAAAAAAAA8D9GtvP91Hj1PwEDAAAAAQAAAHj7zCB2ucJAdouc1Fqk9D8QWDm0yHbyPwEBAAAAAQAAAAAAAAAAAPA/AAAAAEAC
|
||||
AABrAQAAAgAAAA==
|
||||
AAAQAAAA
|
||||
>
|
||||
FLOATPOS 0 0 0 0
|
||||
FXID {5262179C-F519-424F-8C34-4765E9AE04E7}
|
||||
WAK 0 0
|
||||
>
|
||||
<ITEM
|
||||
POSITION 0
|
||||
SNAPOFFS 0
|
||||
LENGTH 12.5
|
||||
LOOP 0
|
||||
ALLTAKES 0
|
||||
FADEIN 1 0 0 1 0 0 0
|
||||
FADEOUT 1 0 0 1 0 0 0
|
||||
MUTE 0 0
|
||||
SEL 1
|
||||
IGUID {102A7029-390F-704B-AE82-A4E1AA02CD03}
|
||||
IID 8
|
||||
NAME "Welcome Pad - stem"
|
||||
VOLPAN 1 0 1 -1
|
||||
SOFFS 0
|
||||
PLAYRATE 1 1 0 -1 0 0.0025
|
||||
CHANMODE 0
|
||||
GUID {6D40E4DA-D9A6-5149-915A-965CEB60DCAE}
|
||||
<SOURCE WAVE
|
||||
FILE "Media/sidechain-distortion_stems_Welcome Pad.wav"
|
||||
>
|
||||
>
|
||||
>
|
||||
<TRACK {F52BCBA5-0B54-6B40-8D30-4E09891F36EC}
|
||||
NAME Drums
|
||||
PEAKCOL 16576
|
||||
BEAT -1
|
||||
AUTOMODE 0
|
||||
PANLAWFLAGS 3
|
||||
VOLPAN 0 0 -1 -1 1
|
||||
MUTESOLO 1 0 0
|
||||
IPHASE 0
|
||||
PLAYOFFS 0 1
|
||||
ISBUS 0 0
|
||||
BUSCOMP 0 0 0 0 0
|
||||
SHOWINMIX 1 0.6667 0.5 1 0.5 0 0 0
|
||||
FIXEDLANES 9 0 0 0 0
|
||||
SEL 0
|
||||
REC 0 0 1 0 0 0 0 0
|
||||
VU 2
|
||||
TRACKHEIGHT 0 0 0 0 0 0 0
|
||||
INQ 0 0 0 0.5 100 0 0 100
|
||||
NCHAN 2
|
||||
FX 1
|
||||
TRACKID {F52BCBA5-0B54-6B40-8D30-4E09891F36EC}
|
||||
PERF 0
|
||||
MIDIOUT -1
|
||||
MAINSEND 1 0
|
||||
<FXCHAIN
|
||||
WNDRECT 900 170 815 444
|
||||
SHOW 0
|
||||
LASTSEL 0
|
||||
DOCKED 0
|
||||
BYPASS 0 0 0
|
||||
<VST "VST: ReaEQ (Cockos)" reaeq.vst.dylib 0 "" 1919247729<56535472656571726561657100000000> ""
|
||||
cWVlcu5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAAAAAAAagAAAAEAAAAAABAA
|
||||
IQAAAAIAAAADAAAAAQAAAJ0Q6aODFJFAAAAAAAAA8D+amZmZmZnpPwEEAAAAAQAAADNAfmGLZFZANFOMBg1H7z9/arx0kxjsPwEBAAAAAQAAAModDNkGk/o/AAAAAEAC
|
||||
AABrAQAAAgAAAA==
|
||||
AAAQAAAA
|
||||
>
|
||||
FLOATPOS 0 0 0 0
|
||||
FXID {4CCB9CFD-8185-AE45-8B5D-ADB8ED3C4344}
|
||||
WAK 0 0
|
||||
>
|
||||
<ITEM
|
||||
POSITION 0
|
||||
SNAPOFFS 0
|
||||
LENGTH 12.5
|
||||
LOOP 1
|
||||
ALLTAKES 0
|
||||
FADEIN 1 0 0 1 0 0 0
|
||||
FADEOUT 1 0 0 1 0 0 0
|
||||
MUTE 0 0
|
||||
SEL 0
|
||||
IGUID {AEF812EA-814E-294B-8BFA-79DB6C6C36A2}
|
||||
IID 1
|
||||
NAME Drums.wav
|
||||
VOLPAN 1 0 1 -1
|
||||
SOFFS 0
|
||||
PLAYRATE 1 1 0 -1 0 0.0025
|
||||
CHANMODE 0
|
||||
GUID {DE8AA9D2-A674-E747-9071-19071A8A8C7E}
|
||||
<SOURCE WAVE
|
||||
FILE "Media/Drums.wav"
|
||||
>
|
||||
>
|
||||
>
|
||||
>
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
# define LOG_EXPR(expr) std::cout << #expr " = " << (expr) << std::endl;
|
||||
#endif
|
||||
|
||||
#include "signalsmith-basics/analyser.h"
|
||||
#include "signalsmith-basics/crunch.h"
|
||||
#include "signalsmith-basics/limiter.h"
|
||||
#include "signalsmith-basics/reverb.h"
|
||||
@ -24,7 +25,7 @@ bool clap_init(const char *path) {
|
||||
CLAP_PLUGIN_FEATURE_AUDIO_EFFECT,
|
||||
CLAP_PLUGIN_FEATURE_DISTORTION,
|
||||
});
|
||||
|
||||
|
||||
plugins.add<signalsmith::basics::LimiterSTFX>({
|
||||
.clap_version = CLAP_VERSION,
|
||||
.id = "uk.co.signalsmith.basics.limiter",
|
||||
@ -38,7 +39,7 @@ bool clap_init(const char *path) {
|
||||
CLAP_PLUGIN_FEATURE_AUDIO_EFFECT,
|
||||
CLAP_PLUGIN_FEATURE_LIMITER,
|
||||
});
|
||||
|
||||
|
||||
plugins.add<signalsmith::basics::ReverbSTFX>({
|
||||
.clap_version = CLAP_VERSION,
|
||||
.id = "uk.co.signalsmith.basics.reverb",
|
||||
@ -52,6 +53,21 @@ bool clap_init(const char *path) {
|
||||
CLAP_PLUGIN_FEATURE_AUDIO_EFFECT,
|
||||
CLAP_PLUGIN_FEATURE_REVERB,
|
||||
});
|
||||
|
||||
plugins.add<signalsmith::basics::AnalyserSTFX>({
|
||||
.clap_version = CLAP_VERSION,
|
||||
.id = "uk.co.signalsmith.basics.analyser",
|
||||
.name = "[Basics] Analyser",
|
||||
.vendor = "Signalsmith Audio",
|
||||
.url = "",
|
||||
.manual_url = "",
|
||||
.support_url = "",
|
||||
.version = "1.0.0"
|
||||
}, {
|
||||
CLAP_PLUGIN_FEATURE_AUDIO_EFFECT,
|
||||
CLAP_PLUGIN_FEATURE_DISTORTION,
|
||||
});
|
||||
|
||||
return plugins.clap_init(path);
|
||||
}
|
||||
void clap_deinit() {
|
||||
|
||||
@ -1,8 +1,34 @@
|
||||
#include "clap/entry.h"
|
||||
/*
|
||||
#include "../../stfx/clap/stfx-clap.h"
|
||||
|
||||
extern bool clap_init(const char *);
|
||||
stfx::clap::Plugins stfxPlugins;
|
||||
extern void addAnalyser();
|
||||
extern void addCrunch();
|
||||
extern void addLimiter();
|
||||
extern void addReverb();
|
||||
|
||||
bool clap_init(const char *path) {
|
||||
static bool added = false;
|
||||
if (!added) {
|
||||
addAnalyser();
|
||||
addCrunch();
|
||||
addLimiter();
|
||||
addReverb();
|
||||
}
|
||||
return added = stfxPlugins.clap_init(path);
|
||||
}
|
||||
void clap_deinit() {
|
||||
stfxPlugins.clap_deinit();
|
||||
}
|
||||
const void * clap_get_factory(const char *id) {
|
||||
return stfxPlugins.clap_get_factory(id);
|
||||
}
|
||||
*/
|
||||
|
||||
extern bool clap_init(const char *path);
|
||||
extern void clap_deinit();
|
||||
extern const void * clap_get_factory(const char *);
|
||||
extern const void * clap_get_factory(const char *id);
|
||||
|
||||
extern "C" {
|
||||
const CLAP_EXPORT clap_plugin_entry clap_entry{
|
||||
|
||||
1
include/signalsmith-basics/analyser.h
Normal file
1
include/signalsmith-basics/analyser.h
Normal file
@ -0,0 +1 @@
|
||||
#include "../../analyser.h"
|
||||
1
modules/linear
Submodule
1
modules/linear
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 157b448e390663e78d845ca9f8dad65140f686ad
|
||||
@ -20,7 +20,7 @@ struct Plugin;
|
||||
// A helper to make a CLAP plugin factory from STFX templates
|
||||
struct Plugins {
|
||||
template<template<class> class EffectSTFX, class ...Args>
|
||||
void add(clap_plugin_descriptor desc, std::initializer_list<const char *> features, Args ...args) {
|
||||
size_t add(clap_plugin_descriptor desc, std::initializer_list<const char *> features, Args ...args) {
|
||||
size_t index = featureLists.size();
|
||||
|
||||
featureLists.emplace_back(features);
|
||||
@ -31,6 +31,7 @@ struct Plugins {
|
||||
creates.push_back([=](const clap_host *host){
|
||||
return new Plugin<EffectSTFX>(*this, &descriptors[index], host, args...);
|
||||
});
|
||||
return index;
|
||||
}
|
||||
|
||||
bool clap_init(const char *path) {
|
||||
@ -651,3 +652,5 @@ struct Plugin : public clap_plugin {
|
||||
};
|
||||
|
||||
}} // namespace
|
||||
|
||||
extern stfx::clap::Plugins stfxPlugins;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "./storage.h"
|
||||
#include "../stfx-library.h" // for the ...ParamIgnore classes
|
||||
|
||||
namespace stfx { namespace storage {
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#include <functional>
|
||||
#include <atomic>
|
||||
#include <memory>
|
||||
#include <iostream> // we log to stderr if our queue gets full
|
||||
|
||||
namespace stfx { namespace web {
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user