1 /* B.Harvestr 2 * LV2 Plugin 3 * 4 * Copyright (C) 2018, 2019 by Sven Jähnichen 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 3, or (at your option) 9 * any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software Foundation, 18 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 */ 20 21 #ifndef PORTS_HPP_ 22 #define PORTS_HPP_ 23 24 enum PortIndex { 25 // Atom data ports 26 CONTROL = 0, // Time, MIDI, GUI->DSP 27 NOTIFY = 1, // DSP->GUI 28 29 // Audio ports 30 AUDIO_OUT_1 = 2, 31 AUDIO_OUT_2 = 3, 32 33 CONTROLLERS = 4, 34 // Global plugin definitions 35 MAX_VOICES = 0, 36 MAX_GRAINS_PER_VOICE = 1, 37 38 // Sample properies 39 SAMPLE_START = 2, 40 SAMPLE_END = 3, 41 SAMPLE_FREQ = 4, 42 43 // Motion pattern properties 44 PATTERN_SIZE = 5, 45 PATTERN_TYPE = 6, 46 47 // Grain properites 48 PROPERTIES = 7, 49 PROPERTY_VALUE_START = 0, 50 PROPERTY_VALUE_END = 1, 51 PROPERTY_MODULATORS = 2, 52 NR_PROPERTY_MODULATORS = 4, 53 PROPERTIES_SIZE = PROPERTY_MODULATORS + NR_PROPERTY_MODULATORS, 54 55 GRAIN_SIZE = 0, 56 GRAIN_RATE = 1, 57 GRAIN_PHASE = 2, 58 GRAIN_DRIVE = 3, 59 GRAIN_LEVEL = 4, 60 GRAIN_PAN = 5, 61 GRAIN_TUNE = 6, 62 GRAIN_FINE = 7, 63 NR_GRAIN_PROPERTIES = 8, 64 65 // Shapes 66 GRAIN_SHAPE = PROPERTIES + NR_GRAIN_PROPERTIES * PROPERTIES_SIZE, 67 68 // LFOs 69 LFOS = GRAIN_SHAPE + 1, 70 LFO_TYPE = 0, 71 LFO_FREQ = 1, 72 LFO_PHASE = 2, 73 LFO_AMP = 3, 74 LFO_SIZE = 4, 75 NR_LFOS = 4, 76 77 // Sequencers 78 SEQS = LFOS + LFO_SIZE * NR_LFOS, 79 SEQ_CHS = 0, 80 SEQ_FREQ = 1, 81 SEQ_PHASE = 2, 82 SEQ_STEPS = 3, 83 NR_SEQ_STEPS = 16, 84 SEQ_SIZE = SEQ_STEPS + NR_SEQ_STEPS, 85 NR_SEQS = 4, 86 87 // Random engines 88 RNDS = SEQS + SEQ_SIZE * NR_SEQS, 89 RND_MIN = 0, 90 RND_MAX = 1, 91 RND_SIZE = 2, 92 NR_RNDS = 4, 93 94 // Envelopes 95 ENVS = RNDS + RND_SIZE * NR_RNDS, 96 ENV_ATTACK = 0, 97 ENV_DECAY = 1, 98 ENV_SUSTAIN = 2, 99 ENV_RELEASE = 3, 100 ENV_SIZE = 4, 101 NR_ENVS = 4, 102 103 // Synth 104 SYNTH = ENVS + ENV_SIZE * NR_ENVS, 105 SYNTH_LEVEL = 0, 106 NR_SYNTH_PROPERTIES = 1, 107 108 MAXCONTROLLERS = SYNTH + NR_SYNTH_PROPERTIES * PROPERTIES_SIZE 109 }; 110 111 enum ShapeIndex 112 { 113 SINE_SHAPE = 0, 114 HALF_SINE_SHAPE = 1, 115 TRIANGLE_SHAPE = 2, 116 TRAPEZ_SHAPE = 3, 117 USER_SHAPES = 4, 118 NR_USER_SHAPES = 4, 119 }; 120 121 enum PlaybackIndex 122 { 123 PLAY_SAMPLE = 0, 124 PLAY_SELECTION = 1 125 }; 126 127 enum ModulatorIndex 128 { 129 MODULATOR_NONE = 0, 130 MODULATOR_ENV1 = 1, 131 MODULATOR_ENV2 = 2, 132 MODULATOR_ENV3 = 3, 133 MODULATOR_ENV4 = 4, 134 MODULATOR_LFO1 = 5, 135 MODULATOR_LFO2 = 6, 136 MODULATOR_LFO3 = 7, 137 MODULATOR_LFO4 = 8, 138 MODULATOR_SEQ1 = 9, 139 MODULATOR_SEQ2 = 10, 140 MODULATOR_SEQ3 = 11, 141 MODULATOR_SEQ4 = 12, 142 MODULATOR_RANDOM1 = 13, 143 MODULATOR_RANDOM2 = 14, 144 MODULATOR_RANDOM3 = 15, 145 MODULATOR_RANDOM4 = 16 146 }; 147 148 enum PatchInfoIndex 149 { 150 PATCH_NAME = 0, 151 PATCH_TYPE = 1, 152 PATCH_DATE = 2, 153 PATCH_CREATOR = 3, 154 PATCH_URI = 4, 155 PATCH_LICENSE = 5, 156 PATCH_DESCRIPTION = 6, 157 NR_PATCHES = 7 158 }; 159 160 #endif /* PORTS_HPP_ */ 161