1 /* 2 * Author: Harry van Haaren 2013 3 * harryhaaren@gmail.com 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef LUPPP_BUFFERS_H 20 #define LUPPP_BUFFERS_H 21 22 #include <cstring> 23 #include <jack/transport.h> 24 25 class Buffers 26 { 27 public: 28 29 enum BUFFER { 30 // AUDIO 31 MASTER_INPUT_L = 0, 32 MASTER_INPUT_R, 33 34 MASTER_OUT_L, 35 MASTER_OUT_R, 36 37 JACK_SEND_OUT_L, 38 JACK_SEND_OUT_R, 39 JACK_MASTER_OUT_L, 40 JACK_MASTER_OUT_R, 41 JACK_SIDECHAIN_KEY_L, 42 JACK_SIDECHAIN_KEY_R, 43 JACK_SIDECHAIN_SIGNAL_L, 44 JACK_SIDECHAIN_SIGNAL_R, 45 46 SEND_L, 47 SEND_R, 48 SIDECHAIN_KEY_L, 49 SIDECHAIN_KEY_R, 50 SIDECHAIN_SIGNAL_L, 51 SIDECHAIN_SIGNAL_R, 52 53 MASTER_RETURN_L, 54 MASTER_RETURN_R, 55 56 HEADPHONES_OUT_L, 57 HEADPHONES_OUT_R, 58 59 // MIDI 60 MASTER_MIDI_INPUT, 61 62 // track buffers: they are the "working" buffers per track: 63 // the end result is mixed into the master output, while each 64 // stage along the way the amplitude etc can be analysed 65 TRACK_0_L, 66 TRACK_0_R, 67 TRACK_1_L, 68 TRACK_1_R, 69 TRACK_2_L, 70 TRACK_2_R, 71 TRACK_3_L, 72 TRACK_3_R, 73 TRACK_4_L, 74 TRACK_4_R, 75 TRACK_5_L, 76 TRACK_5_R, 77 TRACK_6_L, 78 TRACK_6_R, 79 TRACK_7_L, 80 TRACK_7_R, 81 //Per track sends/returns 82 SEND_TRACK_0_L, 83 SEND_TRACK_0_R, 84 SEND_TRACK_1_L, 85 SEND_TRACK_1_R, 86 SEND_TRACK_2_L, 87 SEND_TRACK_2_R, 88 SEND_TRACK_3_L, 89 SEND_TRACK_3_R, 90 SEND_TRACK_4_L, 91 SEND_TRACK_4_R, 92 SEND_TRACK_5_L, 93 SEND_TRACK_5_R, 94 SEND_TRACK_6_L, 95 SEND_TRACK_6_R, 96 SEND_TRACK_7_L, 97 SEND_TRACK_7_R, 98 RETURN_TRACK_0_L, 99 RETURN_TRACK_0_R, 100 RETURN_TRACK_1_L, 101 RETURN_TRACK_1_R, 102 RETURN_TRACK_2_L, 103 RETURN_TRACK_2_R, 104 RETURN_TRACK_3_L, 105 RETURN_TRACK_3_R, 106 RETURN_TRACK_4_L, 107 RETURN_TRACK_4_R, 108 RETURN_TRACK_5_L, 109 RETURN_TRACK_5_R, 110 RETURN_TRACK_6_L, 111 RETURN_TRACK_6_R, 112 RETURN_TRACK_7_L, 113 RETURN_TRACK_7_R, 114 115 JACK_TRACK_0_L, 116 JACK_TRACK_0_R, 117 JACK_TRACK_1_L, 118 JACK_TRACK_1_R, 119 JACK_TRACK_2_L, 120 JACK_TRACK_2_R, 121 JACK_TRACK_3_L, 122 JACK_TRACK_3_R, 123 JACK_TRACK_4_L, 124 JACK_TRACK_4_R, 125 JACK_TRACK_5_L, 126 JACK_TRACK_5_R, 127 JACK_TRACK_6_L, 128 JACK_TRACK_6_R, 129 JACK_TRACK_7_L, 130 JACK_TRACK_7_R, 131 132 133 BUFFER_COUNT, 134 }; 135 Buffers()136 Buffers() 137 { 138 memset( audio, 0, sizeof(float*)*BUFFER_COUNT); 139 memset( midi , 0, sizeof(void *)*BUFFER_COUNT); 140 } 141 float* audio[BUFFER_COUNT]; 142 void* midi [BUFFER_COUNT]; 143 144 // Jack details 145 jack_nframes_t nframes; 146 jack_nframes_t samplerate; 147 148 jack_nframes_t transportFrame; 149 jack_position_t* transportPosition; 150 jack_transport_state_t* transportState; 151 152 }; 153 154 #endif // LUPPP_BUFFERS_H 155 156