Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
faust_base.hpp
Go to the documentation of this file.
1#pragma once
2
3// Pulp-owned minimal compatibility interfaces for Faust-generated C++ classes.
4// They express the narrow ABI consumed by FaustProcessor and keep the installed
5// Pulp headers independent of an external Faust installation.
6//
7// Declaration order matters: UI and Meta must be defined before dsp,
8// because dsp::buildUserInterface(UI*) and dsp::metadata(Meta*) reference them.
9
10#ifndef FAUSTFLOAT
11#define FAUSTFLOAT float
12#endif
13
14#include <string>
15
16// Meta base class — key/value metadata
17class Meta {
18public:
19 virtual ~Meta() = default;
20 virtual void declare(const char* key, const char* value) = 0;
21};
22
23// UI base class — parameter discovery interface
24class UI {
25public:
26 virtual ~UI() = default;
27
28 // Widgets
29 virtual void openTabBox(const char* label) = 0;
30 virtual void openHorizontalBox(const char* label) = 0;
31 virtual void openVerticalBox(const char* label) = 0;
32 virtual void closeBox() = 0;
33
34 // Active widgets (user-controllable)
35 virtual void addHorizontalSlider(const char* label, FAUSTFLOAT* zone,
36 FAUSTFLOAT init, FAUSTFLOAT min,
37 FAUSTFLOAT max, FAUSTFLOAT step) = 0;
38 virtual void addVerticalSlider(const char* label, FAUSTFLOAT* zone,
39 FAUSTFLOAT init, FAUSTFLOAT min,
40 FAUSTFLOAT max, FAUSTFLOAT step) = 0;
41 virtual void addNumEntry(const char* label, FAUSTFLOAT* zone,
42 FAUSTFLOAT init, FAUSTFLOAT min,
43 FAUSTFLOAT max, FAUSTFLOAT step) = 0;
44 virtual void addButton(const char* label, FAUSTFLOAT* zone) = 0;
45 virtual void addCheckButton(const char* label, FAUSTFLOAT* zone) = 0;
46
47 // Passive widgets (display only)
48 virtual void addHorizontalBargraph(const char* label, FAUSTFLOAT* zone,
49 FAUSTFLOAT min, FAUSTFLOAT max) = 0;
50 virtual void addVerticalBargraph(const char* label, FAUSTFLOAT* zone,
51 FAUSTFLOAT min, FAUSTFLOAT max) = 0;
52
53 // Metadata
54 virtual void declare(FAUSTFLOAT* zone, const char* key, const char* value) = 0;
55};
56
57// Base DSP class — FAUST-generated classes derive from this
58class dsp {
59public:
60 virtual ~dsp() = default;
61
62 virtual int getNumInputs() = 0;
63 virtual int getNumOutputs() = 0;
64
65 virtual void buildUserInterface(UI* ui_interface) = 0;
66
67 virtual int getSampleRate() = 0;
68
69 virtual void init(int sample_rate) = 0;
70 virtual void instanceInit(int sample_rate) = 0;
71 virtual void instanceConstants(int sample_rate) = 0;
72 virtual void instanceResetUserInterface() = 0;
73 virtual void instanceClear() = 0;
74
75 virtual dsp* clone() = 0;
76
77 virtual void metadata(Meta* m) = 0;
78
79 virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) = 0;
80};
Definition faust_base.hpp:17
virtual void declare(const char *key, const char *value)=0
virtual ~Meta()=default
Definition faust_base.hpp:24
virtual void openTabBox(const char *label)=0
virtual void addVerticalSlider(const char *label, float *zone, float init, float min, float max, float step)=0
virtual void addVerticalBargraph(const char *label, float *zone, float min, float max)=0
virtual void openVerticalBox(const char *label)=0
virtual void addButton(const char *label, float *zone)=0
virtual void addCheckButton(const char *label, float *zone)=0
virtual void openHorizontalBox(const char *label)=0
virtual void addNumEntry(const char *label, float *zone, float init, float min, float max, float step)=0
virtual void addHorizontalBargraph(const char *label, float *zone, float min, float max)=0
virtual void addHorizontalSlider(const char *label, float *zone, float init, float min, float max, float step)=0
virtual void declare(float *zone, const char *key, const char *value)=0
virtual ~UI()=default
virtual void closeBox()=0
Definition faust_base.hpp:58
virtual int getNumOutputs()=0
virtual ~dsp()=default
virtual void init(int sample_rate)=0
virtual int getNumInputs()=0
virtual void compute(int count, float **inputs, float **outputs)=0
virtual void instanceClear()=0
virtual void instanceConstants(int sample_rate)=0
virtual void instanceResetUserInterface()=0
virtual dsp * clone()=0
virtual void instanceInit(int sample_rate)=0
virtual void buildUserInterface(UI *ui_interface)=0
virtual int getSampleRate()=0
virtual void metadata(Meta *m)=0
#define FAUSTFLOAT
Definition faust_base.hpp:11