14 const std::string kModulationSourceDelimiter =
"_";
17 const std::set<std::string> kBipolarModulationSourcePrefixes = {
30 force_inline bool isConnectionAvailable(ModulationConnection* connection) {
31 return connection->source_name.empty() && connection->destination_name.empty();
36 source_name(std::move(from)), destination_name(std::move(to)) {
45 std::size_t pos = source.find(kModulationSourceDelimiter);
46 std::string prefix = source.substr(0, pos);
47 return kBipolarModulationSourcePrefixes.count(prefix) > 0;
53 std::unique_ptr<ModulationConnection> connection = std::make_unique<ModulationConnection>(i);
54 all_connections_.push_back(std::move(connection));
63 for (
auto& connection : all_connections_) {
64 std::string invalid_connection =
"modulation_" + std::to_string(index++) +
"_amount";
65 if (to != invalid_connection && isConnectionAvailable(connection.get())) {
66 connection->resetConnection(from, to);
68 return connection.get();
~ModulationConnectionBank()
Destroys the ModulationConnectionBank and its connections.
Definition synth_types.cpp:58
ModulationConnection * createConnection(const std::string &from, const std::string &to)
Creates a new modulation connection by finding an empty slot and assigning source/destination.
Definition synth_types.cpp:60
ModulationConnectionBank()
Constructs the bank and pre-allocates all modulation connection slots.
Definition synth_types.cpp:50
#define force_inline
Definition common.h:23
Contains classes and functions used within the Vital synthesizer framework.
constexpr int kMaxModulationConnections
Maximum number of modulation connections allowed.
Definition synth_constants.h:49
A structure representing a single modulation connection between a modulation source and a destination...
Definition synth_types.h:30
ModulationConnection(int index)
Constructs a ModulationConnection with an index and empty source/destination.
Definition synth_types.h:36
std::unique_ptr< ModulationConnectionProcessor > modulation_processor
Processor applying scaling/mapping.
Definition synth_types.h:75
~ModulationConnection()
Destroys the ModulationConnection, cleaning up its processor.
Definition synth_types.cpp:41
static bool isModulationSourceDefaultBipolar(const std::string &source)
Checks if a given modulation source is bipolar by default.
Definition synth_types.cpp:43