Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
        /* 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);
        }
Ejemplo n.º 4
0
        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;
 }