bool IMenuStripManagerHandler.ExecuteMenuItem(MenuStripManager menuStrip, ToolStripMenuItem menuItem) { if (menuItem == menuStrip.buildObjectToolStripMenuItem) { BuildThis(true /*force*/); return(true); } else if (menuItem == menuStrip.disassembleToolStripMenuItem) { DisassembleThis(); return(true); } else if (menuItem == menuStrip.openAsSampleToolStripMenuItem) { if (BuildThis(false /*force*/)) { NumBitsType numBits = NumBitsType.Max; float[] buffer = (float[])algoSampObject.SampleData.Buffer.Clone(); SampConv.QuantizeAndClampVector(buffer, numBits); // ensure target bit depth is honored SampleObjectRec sampleObject = new SampleObjectRec( mainWindow.Document, buffer, algoSampObject.SampleData.NumFrames, numBits, algoSampObject.NumChannels, algoSampObject.Origin, algoSampObject.LoopStart1, algoSampObject.LoopStart2, algoSampObject.LoopStart3, algoSampObject.LoopEnd1, algoSampObject.LoopEnd2, algoSampObject.LoopEnd3, algoSampObject.SamplingRate, algoSampObject.NaturalFrequency); sampleObject.Name = String.Format("Copy of {0}", algoSampObject.Name); mainWindow.Document.SampleList.Add(sampleObject); new SampleWindow(registration, sampleObject, mainWindow).Show(); } return(true); } else if (menuItem == menuStrip.deleteObjectToolStripMenuItem) { Close(); mainWindow.DeleteObject(algoSampObject, mainWindow.Document.AlgoSampList); return(true); } return(false); }
private ArrayHandleFloat GetSampleMonoArray( ArrayHandleByte sampleName) { string name = sampleName.strings; SampleObjectRec sample = mainWindow.Document.SampleList.Find( delegate(SampleObjectRec candidate) { return(String.Equals(name, candidate.Name)); }); if (sample == null) { throw new EvalErrorException(EvalErrors.eEvalGetSampleNotDefined); } if (sample.NumChannels != NumChannelsType.eSampleMono) { throw new EvalErrorException(EvalErrors.eEvalGetSampleWrongChannelType); } return(new ArrayHandleFloat(sample.SampleData.CopyRawData(ChannelType.eMonoChannel))); }
/* this routine asks for a file and tries to import the contents of that */ /* file as an AIFF sample. it reports any errors to the user. */ public static bool ImportAIFFSample( Registration registration, IMainWindowServices mainWindow, out int index) { index = -1; string path; using (OpenFileDialog dialog = new OpenFileDialog()) { dialog.Title = "Import AIFF Sample"; dialog.Filter = "AIFF Audio File (.aif, .aiff)|*.aif;*.aiff|Any File Type (*)|*"; DialogResult result = dialog.ShowDialog(); if (result != DialogResult.OK) { return(false); } path = dialog.FileName; } using (Stream input = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, Constants.BufferSize)) { try { using (AudioFileReader reader = new AIFFReader(input, true /*allowTruncated*/)) { NumBitsType numBits = reader.NumBits; NumChannelsType numChannels = reader.NumChannels; int numFrames = reader.NumFrames; int samplingRate = reader.SamplingRate; float[] sampleData; try { sampleData = new float[(numFrames + 1) * reader.PointsPerFrame]; } catch (OutOfMemoryException) { throw new AudioFileReaderException(AudioFileReaderErrors.OutOfMemory); } reader.ReadPoints(sampleData, 0, numFrames * reader.PointsPerFrame); if (reader.Truncated) { const string ErrorTooShort = "The file appears to be incomplete. Appending silence to end of sample data."; MessageBox.Show(ErrorTooShort, "Import Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } SampleObjectRec ReturnedSampleObject = new SampleObjectRec( mainWindow.Document, sampleData, numFrames, numBits, numChannels, 0, 0, 0, 0, 0, 0, 0, samplingRate, Constants.MIDDLEC); ReturnedSampleObject.Name = Path.GetFileName(path); index = mainWindow.Document.SampleList.Count; mainWindow.Document.SampleList.Add(ReturnedSampleObject); new SampleWindow(registration, ReturnedSampleObject, mainWindow).Show(); return(true); } } catch (AudioFileReaderException exception) { MessageBox.Show(AudioFileReaderException.MessageFromError(exception.Error), "Import Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } return(false); }
public static void ImportRawSample( Document document, string path, int?truncate, ImportRawSettings settings, out SampleObjectRec ReturnedSampleObject) { float[] data; int frames; bool endedOnFrameBoundary; TryImportRaw( path, truncate, settings.InitialSkip, settings.FramePadding, settings.NumChannels, settings.NumBits, settings.SignMode, settings.Endianness, out data, out frames, out endedOnFrameBoundary); NumBitsType numBits; switch (settings.NumBits) { default: Debug.Assert(false); throw new InvalidOperationException(); case ImportBits.eSample8bit: numBits = NumBitsType.eSample8bit; break; case ImportBits.eSample16bit: numBits = NumBitsType.eSample16bit; break; case ImportBits.eSample24bit: numBits = NumBitsType.eSample24bit; break; } const int DEFAULTSAMPLINGRATE = 44100; ReturnedSampleObject = new SampleObjectRec( document, data, frames, numBits, settings.NumChannels, 0, 0, 0, 0, 0, 0, 0, DEFAULTSAMPLINGRATE, Constants.MIDDLEC); ReturnedSampleObject.Name = Path.GetFileName(path); }
protected override object Load(BinaryReader reader, Document document) { sample = new SampleObjectRec(reader, new LoadContext(Document.CurrentFormatVersionNumber, document, LoadContextState.Paste)); return(sample); }
public SampleClipboard(SampleObjectRec sample, Document document) : base(document) { this.sample = sample; }