@@ -46,13 +46,25 @@ FftExtractor::FftExtractor() : PatchObject("fft extractor"){
4646
4747 this ->initInletsState ();
4848
49- bufferSize = MOSAIC_DEFAULT_BUFFER_SIZE;
49+ ofxXmlSettings XML;
50+
51+ if (XML.loadFile (patchFile)){
52+ if (XML.pushTag (" settings" )){
53+ bufferSize = XML.getValue (" buffer_size" ,0 );
54+ XML.popTag ();
55+ }
56+
57+ }
5058 spectrumSize = (bufferSize/2 ) + 1 ;
5159
52- isNewConnection = false ;
53- isConnectionRight = false ;
60+ multiplier = 1 .0f ;
5461
55- this ->width *= 2 .0f ;
62+ isNewConnection = false ;
63+ isConnectionRight = false ;
64+
65+ this ->width *= 2 .0f ;
66+
67+ loaded = false ;
5668
5769}
5870
@@ -63,6 +75,8 @@ void FftExtractor::newObject(){
6375 this ->addInlet (VP_LINK_ARRAY," data" );
6476
6577 this ->addOutlet (VP_LINK_ARRAY," fft" );
78+
79+ this ->setCustomVar (multiplier," MULTIPLIER" );
6680}
6781
6882// --------------------------------------------------------------
@@ -113,17 +127,24 @@ void FftExtractor::updateObjectContent(map<int,shared_ptr<PatchObject>> &patchOb
113127 if (this ->inletsConnected [0 ] && !static_cast <vector<float > *>(_inletParams[0 ])->empty () && isConnectionRight){
114128 int index = 0 ;
115129 for (int i=bufferSize;i<bufferSize + spectrumSize;i++){
116- static_cast <vector<float > *>(_outletParams[0 ])->at (index) = static_cast <vector<float > *>(_inletParams[0 ])->at (i);
130+ static_cast <vector<float > *>(_outletParams[0 ])->at (index) = static_cast <vector<float > *>(_inletParams[0 ])->at (i)*multiplier ;
117131 index++;
118132 }
119133 }else if (this ->inletsConnected [0 ] && !isConnectionRight){
120- ofLog (OF_LOG_ERROR," %s --> This object can receive data from audio analyzer object ONLY! Just reconnect it right!" ,this ->getName ().c_str ());
134+ ofLog (OF_LOG_ERROR," %s --> This object can receive data from audio analyzer, or file data, objects ONLY! Just reconnect it right!" ,this ->getName ().c_str ());
135+ }
136+
137+ if (!loaded){
138+ loaded = true ;
139+ multiplier = this ->getCustomVar (" MULTIPLIER" );
121140 }
122141
123142}
124143
125144// --------------------------------------------------------------
126145void FftExtractor::drawObjectContent (ofTrueTypeFont *font, shared_ptr<ofBaseGLRenderer>& glRenderer){
146+ unusedArgs (font,glRenderer);
147+
127148 ofSetColor (255 );
128149}
129150
@@ -162,14 +183,20 @@ void FftExtractor::drawObjectNodeGui( ImGuiEx::NodeCanvas& _nodeCanvas ){
162183
163184// --------------------------------------------------------------
164185void FftExtractor::drawObjectNodeConfig (){
186+ ImGui::Spacing ();
187+ ImGui::PushItemWidth (224 *scaleFactor);
188+ if (ImGui::SliderFloat (" Multiplier" ,&multiplier,1 .0f ,100 .0f )){
189+ this ->setCustomVar (multiplier," MULTIPLIER" );
190+ }
191+
165192 ImGuiEx::ObjectInfo (
166193 " Extracts the FFT (Fast Fourier Transform) from the audio analysis data vector" ,
167194 " https://mosaic.d3cod3.org/reference.php?r=fft-extractor" , scaleFactor);
168195}
169196
170197// --------------------------------------------------------------
171198void FftExtractor::removeObjectContent (bool removeFileFromData){
172-
199+ unusedArgs (removeFileFromData);
173200}
174201
175202OBJECT_REGISTER ( FftExtractor , " fft extractor" , OFXVP_OBJECT_CAT_AUDIOANALYSIS)
0 commit comments