Vital
Loading...
Searching...
No Matches
synth_constants.h
Go to the documentation of this file.
1#pragma once
2
3#include "value.h"
4#include <string>
5
10namespace vital {
11
13 constexpr int kNumLfos = 8;
14
16 constexpr int kNumOscillators = 3;
17
19 constexpr int kNumOscillatorWaveFrames = 257;
20
22 constexpr int kNumEnvelopes = 6;
23
25 constexpr int kNumRandomLfos = 4;
26
28 constexpr int kNumMacros = 4;
29
31 constexpr int kNumFilters = 2;
32
34 constexpr int kNumFormants = 4;
35
37 constexpr int kNumChannels = 2;
38
40 constexpr int kMaxPolyphony = 33;
41
43 constexpr int kMaxActivePolyphony = 32;
44
46 constexpr int kLfoDataResolution = 2048;
47
49 constexpr int kMaxModulationConnections = 64;
50
52 constexpr int kOscilloscopeMemorySampleRate = 22000;
53
55 constexpr int kOscilloscopeMemoryResolution = 512;
56
58 constexpr int kAudioMemorySamples = 1 << 15;
59
61 constexpr int kDefaultWindowWidth = 1400;
62
64 constexpr int kDefaultWindowHeight = 820;
65
67 constexpr int kMinWindowWidth = 350;
68
70 constexpr int kMinWindowHeight = 205;
71
73 constexpr int kDefaultKeyboardOffset = 48;
74
76 constexpr wchar_t kDefaultKeyboardOctaveUp = 'x';
77
79 constexpr wchar_t kDefaultKeyboardOctaveDown = 'z';
80
82 const std::wstring kDefaultKeyboard = L"awsedftgyhujkolp;'";
83
85 const std::string kPresetExtension = "vital";
86
88 const std::string kWavetableExtension = "vitaltable";
89
91 const std::string kWavetableExtensionsList = "*." + vital::kWavetableExtension + ";*.wav;*.flac";
92
94 const std::string kSampleExtensionsList = "*.wav;*.flac";
95
97 const std::string kSkinExtension = "vitalskin";
98
100 const std::string kLfoExtension = "vitallfo";
101
103 const std::string kBankExtension = "vitalbank";
104
109 namespace constants {
110
123
134 static SourceDestination toggleFilter1(SourceDestination current_destination, bool on) {
135 if (on) {
136 if (current_destination == vital::constants::kFilter2)
138 else
140 }
141 else if (current_destination == vital::constants::kDualFilters)
143 else if (current_destination == vital::constants::kFilter1)
145
146 return current_destination;
147 }
148
158 static SourceDestination toggleFilter2(SourceDestination current_destination, bool on) {
159 if (on) {
160 if (current_destination == vital::constants::kFilter1)
162 else
164 }
165 else if (current_destination == vital::constants::kDualFilters)
167 else if (current_destination == vital::constants::kFilter2)
169
170 return current_destination;
171 }
172
189
205
216
218 constexpr int kNumSyncedFrequencyRatios = 13;
219
222 0.0f,
223 1.0f / 128.0f,
224 1.0f / 64.0f,
225 1.0f / 32.0f,
226 1.0f / 16.0f,
227 1.0f / 8.0f,
228 1.0f / 4.0f,
229 1.0f / 2.0f,
230 1.0f,
231 2.0f,
232 4.0f,
233 8.0f,
234 16.0f
235 };
236
237 // Predefined poly_float and poly_mask values for internal DSP operations.
239 const poly_float kLeftOne(1.0f, 0.0f);
240
242 const poly_float kRightOne(0.0f, 1.0f);
243
245 const poly_float kFirstVoiceOne(1.0f, 1.0f, 0.0f, 0.0f);
246
248 const poly_float kSecondVoiceOne(0.0f, 0.0f, 1.0f, 1.0f);
249
252
255
258
261
264
267
270
271 // Predefined constant values stored as cr::Value for quick access.
273 const cr::Value kValueOne(1.0f);
274 const cr::Value kValueTwo(2.0f);
279 const cr::Value kValue2Pi(2.0f * kPi);
282
283} // namespace constants
284} // namespace vital
A control-rate variant of the Value processor.
Definition value.h:82
const cr::Value kValue2Pi(2.0f *kPi)
const poly_mask kFullMask
A mask covering all lanes of a poly_float vector.
Definition synth_constants.h:257
const poly_float kFirstVoiceOne(1.0f, 1.0f, 0.0f, 0.0f)
A poly_float indicating the first voice in a polyphonic group.
const cr::Value kValuePi(kPi)
const cr::Value kValueHalf(0.5f)
const cr::Value kValueFifth(0.2f)
const poly_float kSecondVoiceOne(0.0f, 0.0f, 1.0f, 1.0f)
A poly_float indicating the second voice in a polyphonic group.
const poly_float kPolySqrt2
A poly_float representing sqrt(2), used in various DSP calculations.
Definition synth_constants.h:254
const poly_mask kFirstMask
A mask identifying the first voice slots in a polyphonic vector.
Definition synth_constants.h:266
const cr::Value kValueNegOne(-1.0f)
constexpr vital::mono_float kSyncedFrequencyRatios[kNumSyncedFrequencyRatios]
Predefined list of frequency ratios for synced parameters (from 1/128th to 16x speed).
Definition synth_constants.h:221
constexpr int kNumSyncedFrequencyRatios
Number of frequency ratios used when syncing parameters (e.g., LFO speed) to tempo.
Definition synth_constants.h:218
Effect
Identifiers for the various audio effects available in Vital.
Definition synth_constants.h:177
@ kCompressor
Definition synth_constants.h:179
@ kEq
Definition synth_constants.h:182
@ kDistortion
Definition synth_constants.h:181
@ kReverb
Definition synth_constants.h:186
@ kNumEffects
Definition synth_constants.h:187
@ kPhaser
Definition synth_constants.h:185
@ kFlanger
Definition synth_constants.h:184
@ kDelay
Definition synth_constants.h:180
@ kFilterFx
Definition synth_constants.h:183
@ kChorus
Definition synth_constants.h:178
RetriggerStyle
Styles for how modulators (such as LFOs) are retriggered.
Definition synth_constants.h:210
@ kFree
LFO runs free without retriggering.
Definition synth_constants.h:211
@ kSyncToPlayHead
LFO syncs to the DAW’s timeline.
Definition synth_constants.h:213
@ kNumRetriggerStyles
Definition synth_constants.h:214
@ kRetrigger
LFO restarts phase on note-on.
Definition synth_constants.h:212
const poly_mask kRightMask
A mask identifying the right channel when comparing to kRightOne.
Definition synth_constants.h:263
const poly_mask kLeftMask
A mask identifying the left channel when comparing to kLeftOne.
Definition synth_constants.h:260
FilterModel
Identifiers for different filter models available in Vital’s filters.
Definition synth_constants.h:194
@ kDirty
Definition synth_constants.h:196
@ kNumFilterModels
Definition synth_constants.h:203
@ kDigital
Definition synth_constants.h:198
@ kAnalog
Definition synth_constants.h:195
@ kPhase
Definition synth_constants.h:202
@ kFormant
Definition synth_constants.h:200
@ kDiode
Definition synth_constants.h:199
@ kLadder
Definition synth_constants.h:197
@ kComb
Definition synth_constants.h:201
const poly_float kLeftOne(1.0f, 0.0f)
A poly_float representing a vector [1.0f, 0.0f] used for channel manipulations.
const cr::Value kValueZero(0.0f)
const poly_mask kSecondMask
A mask identifying the second voice slots in a polyphonic vector.
Definition synth_constants.h:269
const cr::Value kValueTwo(2.0f)
SourceDestination
Represents routing destinations for oscillators and other sound sources through the signal chain.
Definition synth_constants.h:115
@ kDualFilters
Route through both filters.
Definition synth_constants.h:118
@ kNumSourceDestinations
Definition synth_constants.h:121
@ kFilter2
Route through Filter 2.
Definition synth_constants.h:117
@ kEffects
Route directly to the effects chain.
Definition synth_constants.h:119
@ kFilter1
Route through Filter 1.
Definition synth_constants.h:116
@ kDirectOut
Route directly to the output (bypass filters and effects).
Definition synth_constants.h:120
const cr::Value kValueTenth(0.1f)
const poly_float kStereoSplit
Splits stereo channels into left and right components.
Definition synth_constants.h:251
const poly_float kRightOne(0.0f, 1.0f)
A poly_float representing a vector [0.0f, 1.0f] commonly used for stereo channel operations.
const cr::Value kValueSqrt2(kSqrt2)
const cr::Value kValueOne(1.0f)
Contains classes and functions used within the Vital synthesizer framework.
constexpr int kNumOscillators
Number of oscillators available in Vital.
Definition synth_constants.h:16
constexpr int kOscilloscopeMemoryResolution
Resolution (number of samples) in the oscilloscope memory buffer.
Definition synth_constants.h:55
constexpr int kNumFilters
Number of filter slots in Vital.
Definition synth_constants.h:31
constexpr int kDefaultWindowHeight
Default height of the Vital window (in pixels).
Definition synth_constants.h:64
constexpr int kMinWindowWidth
Minimum allowable window width.
Definition synth_constants.h:67
constexpr mono_float kSqrt2
Square root of 2.
Definition common.h:37
const std::string kBankExtension
File extension for Vital bank files, which group multiple presets.
Definition synth_constants.h:103
const std::string kSampleExtensionsList
A semicolon-separated list of supported sample file formats (e.g., wav and flac).
Definition synth_constants.h:94
constexpr wchar_t kDefaultKeyboardOctaveUp
Default key for octave-up action in the computer keyboard layout.
Definition synth_constants.h:76
constexpr int kDefaultWindowWidth
Default width of the Vital window (in pixels).
Definition synth_constants.h:61
const std::string kSkinExtension
File extension for Vital skin/theme files.
Definition synth_constants.h:97
constexpr int kLfoDataResolution
Resolution used for generating LFO data tables.
Definition synth_constants.h:46
constexpr int kNumFormants
Number of formant filters available.
Definition synth_constants.h:34
constexpr int kOscilloscopeMemorySampleRate
Sample rate (in Hz) at which the oscilloscope memory is sampled.
Definition synth_constants.h:52
const std::wstring kDefaultKeyboard
The default keyboard layout (QWERTY-based) mapping keys to notes.
Definition synth_constants.h:82
constexpr int kMaxActivePolyphony
The maximum number of active voices Vital uses simultaneously.
Definition synth_constants.h:43
constexpr int kAudioMemorySamples
Size of the stereo audio memory buffer used for visualization.
Definition synth_constants.h:58
constexpr int kNumRandomLfos
Number of random LFO sources (random modulation generators).
Definition synth_constants.h:25
constexpr int kDefaultKeyboardOffset
Default starting octave offset for the computer keyboard layout.
Definition synth_constants.h:73
const std::string kWavetableExtension
File extension for Vital wavetable files.
Definition synth_constants.h:88
constexpr mono_float kPi
Pi constant.
Definition common.h:36
constexpr int kMinWindowHeight
Minimum allowable window height.
Definition synth_constants.h:70
const std::string kWavetableExtensionsList
A semicolon-separated list of supported wavetable file extensions, including external formats like ....
Definition synth_constants.h:91
constexpr int kMaxPolyphony
The maximum number of voices allocated for polyphony (includes an extra for handling transitions).
Definition synth_constants.h:40
constexpr int kNumEnvelopes
Number of envelope generators in Vital.
Definition synth_constants.h:22
constexpr int kNumChannels
Number of output channels (stereo = 2).
Definition synth_constants.h:37
constexpr int kNumOscillatorWaveFrames
Number of wave frames in each oscillator’s wavetable.
Definition synth_constants.h:19
constexpr wchar_t kDefaultKeyboardOctaveDown
Default key for octave-down action in the computer keyboard layout.
Definition synth_constants.h:79
constexpr int kNumLfos
Number of LFO sources available in the Vital synthesizer.
Definition synth_constants.h:13
constexpr int kMaxModulationConnections
Maximum number of modulation connections allowed.
Definition synth_constants.h:49
const std::string kLfoExtension
File extension for Vital LFO shape files.
Definition synth_constants.h:100
constexpr int kNumMacros
Number of macro controls available.
Definition synth_constants.h:28
const std::string kPresetExtension
File extension for Vital preset files.
Definition synth_constants.h:85
float mono_float
Definition common.h:33
Represents a vector of floating-point values using SIMD instructions.
Definition poly_values.h:600
static force_inline mask_simd_type vector_call equal(simd_type one, simd_type two)
Compares two SIMD float registers for equality, element-wise.
Definition poly_values.h:954
Represents a vector of integer values using SIMD instructions.
Definition poly_values.h:56
Declares Value processors that output a constant value and can be dynamically set.