Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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
                });
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
		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;
		}
Example #6
0
		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;
		}