public void Remove(int requestCode, bool isSynchronous) { lock (_locker) { ManagedPlugin managedPlugin = _managedPlugins.FirstOrDefault(m => m.RequestCode == requestCode && m.IsSynchronous == isSynchronous); if (managedPlugin == null) { return; } _managedPlugins.Remove(managedPlugin); } }
private IDictionary <int, ICollection <ManagedFeature> > GenerateFeatures(ManagedPlugin plugin, float[] fSampleData, bool showProgress = true) { int i = 0; int j = 0; IDictionary <int, ICollection <ManagedFeature> > retVal = new ConcurrentDictionary <int, ICollection <ManagedFeature> >(); BeatsAndBarsProgress progressDlg = new BeatsAndBarsProgress(); if (showProgress) { progressDlg.Show(); } int stepSize = plugin.GetPreferredStepSize(); double progressVal = 0; uint frequency = (uint)m_audioModule.Frequency; if (frequency != 0) { float[] fSamples = new float[plugin.GetPreferredBlockSize()]; for (j = 0; ((fSampleData.Length - j) >= plugin.GetPreferredBlockSize()); j += stepSize) { progressVal = (j / (double)fSampleData.Length) * 100.0; progressDlg.UpdateProgress((int)progressVal); Array.Copy(fSampleData, j, fSamples, 0, fSamples.Length); plugin.Process(fSamples, ManagedRealtime.frame2RealTime(j, (uint)m_audioModule.Frequency)); } Array.Clear(fSamples, 0, fSamples.Length); Array.Copy(fSampleData, j, fSamples, 0, fSampleData.Length - j); plugin.Process(fSamples, ManagedRealtime.frame2RealTime(j, (uint)m_audioModule.Frequency)); progressDlg.Close(); retVal = plugin.GetRemainingFeatures(); } return(retVal); }
public void Add(int requestCode, bool isSynchronous) { lock (_locker) { ManagedPlugin managedPlugin = _managedPlugins.FirstOrDefault(m => m.RequestCode == requestCode && m.IsSynchronous == isSynchronous); if (managedPlugin != null) { return; } _managedPlugins.Add(new ManagedPlugin { RequestCode = requestCode, IsSynchronous = isSynchronous }); } }
public void DoBeatBarDetection(ICollection <IMarkCollection> markCollection) { if (m_audioModule.Channels != 0) { m_plugin = new QMBarBeatTrack(m_audioModule.Frequency); m_bSamples = m_audioModule.GetSamples(0, (int)m_audioModule.NumberSamples); m_fSamplesAll = new float[m_audioModule.NumberSamples]; m_fSamplesPreview = new float[(int)(m_audioModule.Frequency * PREVIEW_TIME)]; int dataStep = m_audioModule.BytesPerSample; for (int j = 0, sampleNum = 0; j < m_bSamples.Length; j += dataStep, sampleNum++) { m_fSamplesAll[sampleNum] = dataStep == 2 ? BitConverter.ToInt16(m_bSamples, j) : BitConverter.ToInt32(m_bSamples, j); } Array.Copy(m_fSamplesAll, m_fSamplesPreview, (int)Math.Min((m_audioModule.Frequency * PREVIEW_TIME), m_fSamplesAll.Length)); BeatsAndBarsDialog bbSettings = new BeatsAndBarsDialog(m_audioModule); bbSettings.PreviewData = GeneratePreviewData(); bbSettings.MarkCollectionList = markCollection.ToList(); DialogResult result = bbSettings.ShowDialog(); if (result == DialogResult.OK) { m_plugin.SetParameter("bpb", bbSettings.Settings.BeatsPerBar); m_plugin.Initialise(1, (uint)m_plugin.GetPreferredStepSize(), (uint)m_plugin.GetPreferredBlockSize()); BuildMarkCollections(markCollection, bbSettings.Settings); } } if (markCollection.Any() && !markCollection.Any(x => x.IsDefault)) { markCollection.First().IsDefault = true; } }
private IDictionary<int, ICollection<ManagedFeature>> GenerateFeatures(ManagedPlugin plugin, float[] fSampleData, bool showProgress = true) { int i = 0; int j = 0; IDictionary<int, ICollection<ManagedFeature>> retVal = new ConcurrentDictionary<int, ICollection<ManagedFeature>>(); BeatsAndBarsProgress progressDlg = new BeatsAndBarsProgress(); if (showProgress) { progressDlg.Show(); } int stepSize = plugin.GetPreferredStepSize(); double progressVal = 0; uint frequency = (uint)m_audioModule.Frequency; if (frequency != 0) { float[] fSamples = new float[plugin.GetPreferredBlockSize()]; for (j = 0; ((fSampleData.Length - j) >= plugin.GetPreferredBlockSize()); j += stepSize) { progressVal = ((double)j / (double)fSampleData.Length) * 100.0; progressDlg.UpdateProgress((int)progressVal); Array.Copy(fSampleData, j, fSamples, 0, fSamples.Length); plugin.Process(fSamples, ManagedRealtime.frame2RealTime(j, (uint)m_audioModule.Frequency)); } Array.Clear(fSamples, 0, fSamples.Length); Array.Copy(fSampleData, j, fSamples, 0, fSampleData.Length - j); plugin.Process(fSamples, ManagedRealtime.frame2RealTime(j, (uint)m_audioModule.Frequency)); progressDlg.Close(); retVal = plugin.GetRemainingFeatures(); } return retVal; }
public List<MarkCollection> DoBeatBarDetection(List<MarkCollection> markCollection) { List<MarkCollection> retVal = markCollection; if (m_audioModule.Channels != 0) { m_plugin = new QMBarBeatTrack(m_audioModule.Frequency); m_bSamples = m_audioModule.GetSamples(0, (int)m_audioModule.NumberSamples); m_fSamplesAll = new float[m_audioModule.NumberSamples]; m_fSamplesPreview = new float[(int)(m_audioModule.Frequency * PREVIEW_TIME)]; int dataStep = m_audioModule.BytesPerSample; for (int j = 0, sampleNum = 0; j < m_bSamples.Length; j += dataStep, sampleNum++) { m_fSamplesAll[sampleNum] = dataStep == 2 ? BitConverter.ToInt16(m_bSamples, j) : BitConverter.ToInt32(m_bSamples, j); } Array.Copy(m_fSamplesAll, m_fSamplesPreview, (int)Math.Min((m_audioModule.Frequency * PREVIEW_TIME), m_fSamplesAll.Length)); BeatsAndBarsDialog bbSettings = new BeatsAndBarsDialog(m_audioModule); bbSettings.PreviewData = GeneratePreviewData(); bbSettings.MarkCollectionList = markCollection; DialogResult result = bbSettings.ShowDialog(); if (result == DialogResult.OK) { m_plugin.SetParameter("bpb", bbSettings.Settings.BeatsPerBar); m_plugin.Initialise(1, (uint)m_plugin.GetPreferredStepSize(), (uint)m_plugin.GetPreferredBlockSize()); retVal = BuildMarkCollections(markCollection, bbSettings.Settings); } } return retVal; }