![]() |
pl-nk v0.4.5
Plonk|Plink|Plank are a set of cross-platform C/C++ frameworks for audio software development
|
00001 /* 00002 ------------------------------------------------------------------------------- 00003 This file is part of the Plink, Plonk, Plank libraries 00004 by Martin Robinson 00005 00006 http://code.google.com/p/pl-nk/ 00007 00008 Copyright University of the West of England, Bristol 2011-14 00009 All rights reserved. 00010 00011 Redistribution and use in source and binary forms, with or without 00012 modification, are permitted provided that the following conditions are met: 00013 00014 * Redistributions of source code must retain the above copyright 00015 notice, this list of conditions and the following disclaimer. 00016 * Redistributions in binary form must reproduce the above copyright 00017 notice, this list of conditions and the following disclaimer in the 00018 documentation and/or other materials provided with the distribution. 00019 * Neither the name of University of the West of England, Bristol nor 00020 the names of its contributors may be used to endorse or promote products 00021 derived from this software without specific prior written permission. 00022 00023 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00024 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00025 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00026 DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF THE WEST OF ENGLAND, BRISTOL BE 00027 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00028 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 00029 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00030 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00031 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 00032 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 00034 This software makes use of third party libraries. For more information see: 00035 doc/license.txt included in the distribution. 00036 ------------------------------------------------------------------------------- 00037 */ 00038 00039 #ifndef PLONK_IOKEY_H 00040 #define PLONK_IOKEY_H 00041 00042 #include "plonk_InfoHeaders.h" 00043 00044 00045 00046 class IOKey 00047 { 00048 public: 00049 enum IOType 00050 { 00051 TypeUnknown = 0, 00052 TypeNumerical, 00053 TypeVariable, 00054 TypeAtomicVariable, 00055 TypeUnit, 00056 TypeUnits, 00057 TypeBus, 00058 TypeBusses, 00059 TypeBuffer, 00060 TypeWavetable, 00061 TypeSignal, 00062 TypeBreakpoints, 00063 TypeUnitVariable, 00064 TypeUnitsVariable, 00065 TypeBusVariable, 00066 TypeBussesVariable, 00067 TypeBufferVariable, 00068 TypeWavetableVariable, 00069 TypeSignalVariable, 00070 TypeBreakpointsVariable, 00071 TypeAudioFileReader, 00072 TypeUnitQueue, 00073 TypeBlockSize, 00074 TypeSampleRate, 00075 // TypeBlockSizes, 00076 // TypeSampleRates, 00077 TypeBool, 00078 00079 NumIOTypes 00080 }; 00081 00082 00083 enum Name 00084 { 00085 End = -2, 00086 Invalid = -1, 00087 Unknown = 0, 00088 Constant, 00089 Variable, 00090 AtomicVariable, 00091 Multiply, 00092 Add, 00093 Generic, 00094 Control, 00095 LeftOperand, 00096 RightOperand, 00097 Position, 00098 Frequency, 00099 Rate, 00100 Q, 00101 S, 00102 Gain, 00103 Bandwidth, 00104 Time, 00105 Duration, 00106 Decay, 00107 Feedback, 00108 Feedforward, 00109 Coeffs, 00110 FFTPacked, 00111 FFTUnacked, 00112 Real, 00113 Imaginary, 00114 Gate, 00115 Loop, 00116 Minimum, 00117 Maximum, 00118 00119 BlockSize, 00120 SampleRate, 00121 FilterSampleRate, 00122 OverlapMake, 00123 OverlapMix, 00124 LoopCount, 00125 00126 Units, 00127 Bus, 00128 Busses, 00129 Buffer, 00130 Wavetable, 00131 Signal, 00132 Breakpoints, 00133 00134 UnitVariable, 00135 UnitsVariable, 00136 BusVariable, 00137 BussesVariable, 00138 BufferVariable, 00139 WavetableVariable, 00140 SignalVariable, 00141 BreakpointsVariable, 00142 00143 AudioFileReader, 00144 UnitQueue, 00145 00146 AutoDeleteFlag, 00147 PurgeExpiredUnitsFlag, 00148 HarmonicCount, 00149 BufferCount, 00150 Priority, 00151 MaximumDuration, 00152 PreferredNumChannels, 00153 00154 NumNames 00155 }; 00156 00157 static IOKey::Name fromInt (const int value) throw(); 00158 00159 static Text getName (const int keyIndex) throw(); 00160 static IOKey::IOType getType (const int keyIndex) throw(); 00161 static Text getTypeName (const int keyIndex) throw(); 00162 00163 static TextArray collectNames (IntArray const& keys) throw(); 00164 static IntArray collectTypes (IntArray const& keys) throw(); 00165 static TextArray collectTypeNames (IntArray const& keys) throw(); 00166 00167 private: 00168 }; 00169 00170 00171 00172 #endif // PLONK_IOKEY_H