@@ -845,20 +845,15 @@ void SpikeDetector::saveCustomParametersToXml (XmlElement* xml)
845845void SpikeDetector::loadCustomParametersFromXml (XmlElement* xml)
846846{
847847
848- // std::cout << "Spike detector loading params" << std::endl;
849-
850848 Array<const DataStream*> availableStreams = getDataStreams ();
851849
852850 for (auto * spikeParamsXml : xml->getChildIterator ())
853851 {
854- // std::cout << spikeParamsXml->getTagName() << std::endl;
855852
856853 if (spikeParamsXml->hasTagName (" SPIKE_CHANNEL" ))
857854 {
858855 String name = spikeParamsXml->getStringAttribute (" name" , " " );
859856
860- // std::cout << "SPIKE CHANNEL NAME: " << name << std::endl;
861-
862857 double sample_rate = spikeParamsXml->getDoubleAttribute (" sample_rate" , 0 .0f );
863858 String stream_name = spikeParamsXml->getStringAttribute (" stream_name" , " " );
864859 int stream_source = spikeParamsXml->getIntAttribute (" stream_source" , 0 );
@@ -871,25 +866,50 @@ void SpikeDetector::loadCustomParametersFromXml(XmlElement* xml)
871866
872867 if (streamId > 0 )
873868 {
874- // std::cout << "STREAM ID: " << streamId << std::endl;
875-
869+ // Create new spike channel with thresholder set to abs value
876870 SpikeChannel* spikeChannel = addSpikeChannel (type, streamId, -1 , name);
877871
872+ // Load local channels
878873 spikeChannel->getParameter (" local_channels" )->fromXml (spikeParamsXml);
879-
880874 SelectedChannelsParameter* param = (SelectedChannelsParameter*)spikeChannel->getParameter (" local_channels" );
881875 param->getSpikeChannel ()->localChannelIndexes = param->getArrayValue ();
882-
883- spikeChannel->getParameter (" thrshlder_type" )->fromXml (spikeParamsXml);
884-
885- for (int ch = 0 ; ch < SpikeChannel::getNumChannels (type); ch++)
876+
877+ // Load abs threshold parameters
878+ for (int ch = 0 ; ch < spikeChannel->getNumChannels (); ch++)
886879 {
887880 spikeChannel->getParameter (" abs_threshold" + String (ch+1 ))->fromXml (spikeParamsXml);
881+ spikeChannel->thresholder ->setThreshold (
882+ ch,
883+ (float ) spikeChannel->getParameter (" abs_threshold" + String (ch+1 ))->getValue ());
884+ }
885+
886+ // Load std dev threshold parameters
887+ spikeChannel->thresholder .reset ();
888+ spikeChannel->thresholder =
889+ std::make_unique<StdDevThresholder>(
890+ spikeChannel->getNumChannels ());
891+ for (int ch = 0 ; ch < spikeChannel->getNumChannels (); ch++)
892+ {
888893 spikeChannel->getParameter (" std_threshold" + String (ch+1 ))->fromXml (spikeParamsXml);
894+ }
895+
896+ // Load dynamic threshold parameters
897+ spikeChannel->thresholder .reset ();
898+ spikeChannel->thresholder =
899+ std::make_unique<DynamicThresholder>(
900+ spikeChannel->getNumChannels ());
901+ for (int ch = 0 ; ch < spikeChannel->getNumChannels (); ch++)
902+ {
889903 spikeChannel->getParameter (" dyn_threshold" + String (ch+1 ))->fromXml (spikeParamsXml);
890904 }
905+
906+ // Load saved thresholder type
907+ spikeChannel->getParameter (" thrshlder_type" )->fromXml (spikeParamsXml);
908+ parameterValueChanged (spikeChannel->getParameter (" thrshlder_type" ));
891909
910+ // Load saved waveform type
892911 spikeChannel->getParameter (" waveform_type" )->fromXml (spikeParamsXml);
912+ parameterValueChanged (spikeChannel->getParameter (" waveform_type" ));
893913 }
894914 }
895915 }
0 commit comments