Krotos Modules 3
Loading...
Searching...
No Matches
AudioDataset.h
Go to the documentation of this file.
1#pragma once
2
3namespace krotos
4{
5class AudioDataset : public juce::Thread
6{
7
8 public:
11
14
21 std::vector<std::pair<std::string, float>> sample(std::string query, std::size_t k = 3,
22 bool descending = true) const;
23
24 private:
28 std::vector<File> findValidFiles() const;
29
31 void run() override;
32
36 bool assetsChanged();
37
41 bool runAnalysis();
42
46 File getFactoryAssetDirectory() const;
47
51 File getDatasetFile() const;
52
56 std::set<std::string> getPathsSet() const;
57
62 std::string fixKeyErrors(std::string key) const;
63
68 std::string extractCatID(std::string filename) const;
69
73 bool writeCache();
74
78 bool readCache();
79
83 bool cacheExists();
84
88 bool deleteCache();
89
93 AudioBuffer<float> resampleAudioBuffer(const AudioBuffer<float>& buffer, double sampleRate, double targetRate);
94
95 std::string m_version = "1.0";
96 std::map<std::string, std::vector<std::pair<std::string, std::vector<float>>>> m_dataset;
97
98 /*
99 https://universalcategorysystem.com/
100 Version 8.2
101 */
102 std::array<std::string, 753> CatIDSet = {
103 "AIRBlow", "AIRBrst", "AIRHiss", "AIRMisc", "AIRSuck", "AERODoor", "AEROHeli", "AEROInt",
104 "AEROJet", "AEROMech", "AEROMil", "AEROMisc", "AEROProp", "AERORadio", "AERORckt", "ALRMBell",
105 "ALRMBuzr", "ALRMClok", "ALRMElec", "ALRMMisc", "ALRMSirn", "AMBAir", "AMBAlpn", "AMBAmus",
106 "AMBBird", "AMBCele", "AMBCnst", "AMBDsrt", "AMBDsgn", "AMBEmrg", "AMBFant", "AMBFarm",
107 "AMBForst", "AMBGras", "AMBHist", "AMBTech", "AMBHosp", "AMBInd", "AMBInsc", "AMBLake",
108 "AMBMrkt", "AMBMisc", "AMBNaut", "AMBOffc", "AMBPark", "AMBPrisn", "AMBPrtst", "AMBPubl",
109 "AMBRlgn", "AMBHome", "AMBRest", "AMBRoom", "AMBRurl", "AMBSchl", "AMBSci", "AMBSea",
110 "AMBSprt", "AMBSubn", "AMBSwmp", "AMBTown", "AMBTraf", "AMBTran", "AMBTrop", "AMBTndra",
111 "AMBUndr", "AMBUndwtr", "AMBUrbn", "AMBWar", "ANMLAmph", "ANMLAqua", "ANMLBat", "ANMLCat",
112 "ANMLWcat", "ANMLDog", "ANMLWdog", "ANMLFarm", "ANMLHors", "ANMLInsc", "ANMLMisc", "ANMLPrim",
113 "ANMLRept", "ANMLRdnt", "ANMLWild", "ADR", "ASSET", "BNCE", "IR", "LPGRP",
114 "MIX", "PFX", "PROD", "RAW", "REF", "SCNE", "TEST", "TMARK",
115 "WIP", "WTF", "BEEPAppl", "BEEP", "BEEPLofi", "BEEPMed", "BEEPTimer", "BEEPVeh",
116 "BELLAnml", "BELLDoor", "BELLGong", "BELLHand", "BELLLrg", "BELLMisc", "BIRDPrey", "BIRDCrow",
117 "BIRDFowl", "BIRDMisc", "BIRDSea", "BIRDSong", "BIRDTrop", "BIRDWade", "BOATAir", "BOATWash",
118 "BOATDoor", "BOATElec", "BOATFish", "BOATHorn", "BOATInt", "BOATMech", "BOATMil", "BOATMisc",
119 "BOATMotr", "BOATRace", "BOATRow", "BOATSail", "BOATShip", "BOATStm", "BOATSub", "BOATUndwtr",
120 "BLLTBy", "BLLTImpt", "BLLTMisc", "BLLTRico", "BLLTShel", "TOONAnml", "TOONBoing", "TOONClang",
121 "TOONCreak", "TOONHorn", "TOONImpt", "TOONMach", "TOONMisc", "TOONMx", "TOONPluk", "TOONPop",
122 "TOONShake", "TOONSplt", "TOONSqk", "TOONStrch", "TOONSwsh", "TOONTwang", "TOONVeh", "TOONVox",
123 "TOONWarb", "TOONWhis", "TOONZip", "CERMBrk", "CERMCrsh", "CERMFric", "CERMHndl", "CERMImpt",
124 "CERMMisc", "CERMMvmt", "CERMTonl", "CHAINBrk", "CHAINHndl", "CHAINImpt", "CHAINMisc", "CHAINMvmt",
125 "CHEMAcid", "CHEMMisc", "CHEMReac", "CLOCKChim", "CLOCKMech", "CLOCKMisc", "CLOCKTick", "CLOTHFlp",
126 "CLOTHHndl", "CLOTHImpt", "CLOTHMisc", "CLOTHMvmt", "CLOTHRip", "COMAv", "COMCam", "COMCell",
127 "COMMic", "COMMisc", "COMPhono", "COMRadio", "COMStatic", "COMTelm", "COMTelph", "COMTv",
128 "COMTran", "COMType", "CMPTDriv", "CMPTKey", "CMPTMisc", "CREAAqua", "CREAAvian", "CREABeast",
129 "CREABlob", "CREADino", "CREADrgn", "CREAElem", "CREAEthr", "CREAHmn", "CREAInsc", "CREAMisc",
130 "CREAMnstr", "CREARept", "CREASmall", "CREASrce", "CRWDAngr", "CRWDApls", "CRWDBatl", "CRWDCele",
131 "CRWDCheer", "CRWDChld", "CRWDConv", "CRWDLaff", "CRWDLoop", "CRWDMisc", "CRWDPanic", "CRWDQuiet",
132 "CRWDReac", "CRWDSing", "CRWDSprt", "CRWDWalla", "DSGNBass", "DSGNBoom", "DSGNBram", "DSGNDist",
133 "DSGNDron", "DSGNErie", "DSGNEthr", "DSGNGran", "DSGNImpt", "DSGNMisc", "DSGNMorph", "DSGNRise",
134 "DSGNRmbl", "DSGNRythm", "DSGNSrce", "DSGNStngr", "DSGNSynth", "DSGNTonl", "DSGNVocl", "DSGNWhsh",
135 "DESTRClpse", "DESTRCrsh", "DESTRMisc", "DIRTCrsh", "DIRTDust", "DIRTHndl", "DIRTImpt", "DIRTMisc",
136 "DIRTMvmt", "DIRTTonl", "DOORAntq", "DOORAppl", "DOORCab", "DOORComp", "DOORCreak", "DOORDungn",
137 "DOORElec", "DOORGate", "DOORGlas", "DOORHdwr", "DOORTech", "DOORHydr", "DOORKnck", "DOORMetl",
138 "DOORMisc", "DOORPlas", "DOORPrisn", "DOORRevl", "DOORSlid", "DOORSton", "DOORSwng", "DOORWood",
139 "DRWRMetl", "DRWRMisc", "DRWRPlas", "DRWRWood", "ELECArc", "ELECBuzz", "ELECEmf", "ELECMisc",
140 "ELECSprk", "ELECZap", "EQUIPBridle", "EQUIPTech", "EQUIPMisc", "EQUIPRec", "EQUIPSprt", "EQUIPTact",
141 "EXPLDsgn", "EXPLMisc", "EXPLReal", "FARTDsgn", "FARTMisc", "FARTReal", "FGHTBf", "FGHTClth",
142 "FGHTGrab", "FGHTImpt", "FGHTMisc", "FIREBurn", "FIREBrst", "FIRECrkl", "FIREGas", "FIREIgn",
143 "FIREMisc", "FIRESizz", "FIRETrch", "FIRETurb", "FIREWhsh", "FRWKComr", "FRWKMisc", "FRWKRec",
144 "FOLYClth", "FOLYFeet", "FOLYHand", "FOLYMisc", "FOLYProp", "FOODCook", "FOODDrnk", "FOODEat",
145 "FOODGware", "FOODIngr", "FOODKware", "FOODMisc", "FOODPour", "FOODTware", "FEETAnml", "FEETCrea",
146 "FEETHors", "FEETHmn", "FEETMisc", "GAMEArcd", "GAMEBoard", "GAMECas", "GAMEMisc", "GAMEVideo",
147 "GEOFuma", "GEOGeyser", "GEOLava", "GEOMisc", "GEOMudpot", "GLASBrk", "GLASCrsh", "GLASFric",
148 "GLASHndl", "GLASImpt", "GLASMisc", "GLASMvmt", "GLASTonl", "GOREBlood", "GOREBone", "GOREBurn",
149 "GOREFlsh", "GOREMisc", "GOREOoze", "GORESrce", "GORESplt", "GORESqsh", "GOREStab", "GUNAntq",
150 "GUNArtl", "GUNAuto", "GUNCano", "GUNHndl", "GUNTech", "GUNMech", "GUNMisc", "GUNPis",
151 "GUNRif", "GUNShotg", "GUNSupr", "HORNAir", "HORNCele", "HORNMisc", "HORNTrad", "HMNBlow",
152 "HMNBrth", "HMNBurp", "HMNCough", "HMNHart", "HMNKiss", "HMNMisc", "HMNPee", "HMNSkin",
153 "HMNSneez", "HMNSniff", "HMNSnor", "HMNSpit", "HMNVomit", "ICEBrk", "ICECrsh", "ICEFric",
154 "ICEHndl", "ICEImpt", "ICEMisc", "ICEMvmt", "ICETonl", "LASRBeam", "LASRGun", "LASRImpt",
155 "LASRMisc", "LETHRCreak", "LETHRHndl", "LETHRImpt", "LETHRMisc", "LETHRMvmt", "LIQBubl", "LIQImpt",
156 "LIQMisc", "LIQMvmt", "LIQSuct", "MACHAmus", "MACHAntq", "MACHAppl", "MACHCnst", "MACHElev",
157 "MACHEscl", "MACHFan", "MACHGrdn", "MACHGym", "MACHTech", "MACHHvac", "MACHInd", "MACHMech",
158 "MACHMed", "MACHMisc", "MACHOffc", "MACHPump", "MAGAngl", "MAGElem", "MAGEvil", "MAGMisc",
159 "MAGPoof", "MAGShim", "MAGSpel", "MECHClik", "MECHGear", "MECHHydr", "MECHLtch", "MECHLvr",
160 "MECHLock", "MECHMisc", "MECHPuly", "MECHRtch", "MECHRelay", "MECHRolr", "MECHSwtch", "METLBrk",
161 "METLCrsh", "METLFric", "METLHndl", "METLImpt", "METLMisc", "METLMvmt", "METLTonl", "MOTRAntq",
162 "MOTRComb", "MOTRElec", "MOTRMisc", "MOTRSrvo", "MOTRTurb", "MOVEActv", "MOVEAnml", "MOVECrea",
163 "MOVECrwd", "MOVEHmn", "MOVEInsc", "MOVEMisc", "MOVEPres", "MUSCBell", "MUSCBrass", "MUSCChim",
164 "MUSCChor", "MUSCExpr", "MUSCInst", "MUSCKeyd", "MUSCLoop", "MUSCMisc", "MUSCPerc", "MUSCTnprc",
165 "MUSCPrfm", "MUSCPluck", "MUSCSmpl", "MUSCShake", "MUSCSong", "MUSCStngr", "MUSCStr", "MUSCSynth",
166 "MUSCToy", "MUSCWind", "NATDAval", "NATDQuak", "NATDMisc", "NATDTorn", "NATDTsun", "NATDThyp",
167 "NATDVolc", "OBJBag", "OBJBook", "OBJCoin", "OBJCont", "OBJFash", "OBJFurn", "OBJGrdn",
168 "OBJGym", "OBJHsehld", "OBJJewl", "OBJKey", "OBJLug", "OBJMed", "OBJMisc", "OBJOffc",
169 "OBJPack", "OBJTape", "OBJUmbr", "OBJWhled", "OBJWrite", "OBJZipr", "PAPRFltr", "PAPRFric",
170 "PAPRHndl", "PAPRImpt", "PAPRMisc", "PAPRRip", "PAPRTonl", "PLASBrk", "PLASCrsh", "PLASFric",
171 "PLASHndl", "PLASImpt", "PLASMisc", "PLASMvmt", "PLASTonl", "RAINClth", "RAINConc", "RAIN",
172 "RAINGlas", "RAINInt", "RAINMetl", "RAINPlas", "RAINVege", "RAINWatr", "RAINWood", "ROBTMisc",
173 "ROBTMvmt", "ROBTVox", "ROCKBrk", "ROCKCrsh", "ROCKFric", "ROCKHndl", "ROCKImpt", "ROCKMisc",
174 "ROCKMvmt", "ROCKTonl", "ROPECreak", "ROPEHndl", "ROPEImpt", "ROPEMisc", "ROPEMvmt", "RUBRCrsh",
175 "RUBRFric", "RUBRHndl", "RUBRImpt", "RUBRMisc", "RUBRMvmt", "RUBRTonl", "SCIAlrm", "SCICmpt",
176 "SCIDoor", "SCIEnrg", "SCIImpt", "SCIMach", "SCIMech", "SCIMisc", "SCIRetro", "SCIShip",
177 "SCIVeh", "SCIWeap", "SNOWCrsh", "SNOWFric", "SNOWHndl", "SNOWImpt", "SNOWMisc", "SNOWMvmt",
178 "SPRTCourt", "SPRTField", "SPRTGym", "SPRTIndor", "SPRTMisc", "SPRTSkate", "SPRTTrck", "SPRTWatr",
179 "SPRTWntr", "SWSH", "WHSH", "TOOLGrdn", "TOOLHand", "TOOLMisc", "TOOLPneu", "TOOLPowr",
180 "TOYElec", "TOYMech", "TOYMisc", "TRNBrake", "TRNClak", "TRNDoor", "TRNDiesl", "TRNElec",
181 "TRNHspd", "TRNHorn", "TRNInt", "TRNMech", "TRNMisc", "TRNSteam", "TRNSbwy", "TRNTram",
182 "UIAlert", "UIBeep", "UIClick", "UIData", "UIGlitch", "UIMisc", "UIMvmt", "VEGEGras",
183 "VEGELeaf", "VEGEMisc", "VEGETree", "VEHAlrm", "VEHAntq", "VEHAtv", "VEHBike", "VEHBrake",
184 "VEHBus", "VEHCar", "VEHCnst", "VEHDoor", "VEHElec", "VEHEmrg", "VEHFarm", "VEHFrght",
185 "VEHBy", "VEHHorn", "VEHInt", "VEHJalop", "VEHMech", "VEHMil", "VEHMisc", "VEHMoto",
186 "VEHRace", "VEHSirn", "VEHSkid", "VEHSusp", "VEHTire", "VEHTruck", "VEHUtil", "VEHWagn",
187 "VEHWndw", "VOXAlien", "VOXBaby", "VOXCheer", "VOXChld", "VOXCry", "VOXEfrt", "VOXFem",
188 "VOXFutz", "VOXHist", "VOXLaff", "VOXMale", "VOXMisc", "VOXReac", "VOXScrm", "VOXSing",
189 "VOXWhsp", "WATRBubl", "WATRDran", "WATRDrip", "WATRFizz", "WATRFlow", "WATRFoun", "WATRImpt",
190 "WATRLap", "WATRMisc", "WATRMvmt", "WATRPlmb", "WATRPour", "WATRSplsh", "WATRSpray", "WATRStm",
191 "WATRSurf", "WATRTurb", "WATRUndwtr", "WATRFall", "WATRWave", "WEAPArmr", "WEAPArro", "WEAPAxe",
192 "WEAPBlnt", "WEAPBow", "WEAPKnif", "WEAPMisc", "WEAPPole", "WEAPSiege", "WEAPSwrd", "WEAPWhip",
193 "HAIL", "WTHR", "STORM", "THUN", "WHSTHmn", "WHSTMech", "WHSTMisc", "WINDDsgn",
194 "WIND", "WINDGust", "WINDInt", "WINDTonl", "WINDTurb", "WINDVege", "WNDWCover", "WNDWHdwr",
195 "WNDWKnck", "WNDWMetl", "WNDWMisc", "WNDWPlas", "WNDWWood", "WINGBird", "WINGCrea", "WINGInsc",
196 "WINGMisc", "WOODBrk", "WOODCrsh", "WOODFric", "WOODHandl", "WOODImpt", "WOODMisc", "WOODMvmt",
197 "WOODTonl"};
198
199 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AudioDataset)
200};
201
202} // namespace krotos
Definition AudioDataset.h:6
std::string extractCatID(std::string filename) const
Definition AudioDataset.cpp:311
bool writeCache()
Definition AudioDataset.cpp:228
File getFactoryAssetDirectory() const
Definition AudioDataset.cpp:415
std::map< std::string, std::vector< std::pair< std::string, std::vector< float > > > > m_dataset
Definition AudioDataset.h:96
std::vector< std::pair< std::string, float > > sample(std::string query, std::size_t k=3, bool descending=true) const
Definition AudioDataset.cpp:319
void run() override
Definition AudioDataset.cpp:56
std::string fixKeyErrors(std::string key) const
Definition AudioDataset.cpp:214
AudioBuffer< float > resampleAudioBuffer(const AudioBuffer< float > &buffer, double sampleRate, double targetRate)
Definition AudioDataset.cpp:40
std::array< std::string, 753 > CatIDSet
Definition AudioDataset.h:102
~AudioDataset()
Definition AudioDataset.cpp:14
bool cacheExists()
Definition AudioDataset.cpp:307
std::set< std::string > getPathsSet() const
Definition AudioDataset.cpp:200
AudioDataset()
Definition AudioDataset.cpp:6
File getDatasetFile() const
Definition AudioDataset.cpp:425
bool readCache()
Definition AudioDataset.cpp:274
std::vector< File > findValidFiles() const
Definition AudioDataset.cpp:16
std::string m_version
Definition AudioDataset.h:95
bool assetsChanged()
Definition AudioDataset.cpp:134
bool deleteCache()
Definition AudioDataset.cpp:309
bool runAnalysis()
Definition AudioDataset.cpp:146
Definition AirAbsorptionFilter.cpp:2