Пример #1
0
        // Create a new phrase node with the audio from the clipboard
        // and merge the selected node with this one.
        protected virtual urakawa.command.Command PasteCommandAudio(ProjectView.ProjectView view)
        {
            AudioClipboard c = (AudioClipboard)view.Clipboard;

            //urakawa.media.data.audio.ManagedAudioMedia media = ((PhraseNode)view.Clipboard.Node).Audio.copy(
            urakawa.media.data.audio.ManagedAudioMedia media = view.Presentation.MediaFactory.CreateManagedAudioMedia();

            WavAudioMediaData wavData = ((WavAudioMediaData)((PhraseNode)view.Clipboard.Node).Audio.AudioMediaData).Copy(
                new Time(Convert.ToInt64(c.AudioRange.SelectionBeginTime * Time.TIME_UNIT)),
                new Time(Convert.ToInt64(c.AudioRange.SelectionEndTime * Time.TIME_UNIT)));//sdk2

            media.AudioMediaData = wavData;

            CompositeCommand p = view.Presentation.CreateCompositeCommand(Localizer.Message("paste_audio"));

            if (Node is EmptyNode)
            {
                if (view.TransportBar.CurrentState == Obi.ProjectView.TransportBar.State.Paused)
                {
                    Command pasteCommand = new Commands.Audio.Paste(view, view.TransportBar.SplitBeginTime);
                    p.ChildCommands.Insert(p.ChildCommands.Count, pasteCommand);
                }
                else
                {
                    PhraseNode phrase = view.Presentation.CreatePhraseNode(media);
                    p.ChildCommands.Insert(p.ChildCommands.Count, new Commands.Node.AddNode(view, phrase, ParentForNewNode(phrase), IndexForNewNode(phrase)));
                    p.ChildCommands.Insert(p.ChildCommands.Count, Commands.Node.MergeAudio.GetMergeCommand(view, (EmptyNode)Node, phrase));
                    if (Node is PhraseNode)
                    {
                        p.ChildCommands.Insert(p.ChildCommands.Count, new Commands.UpdateSelection(view, new AudioSelection((PhraseNode)Node, Control, new AudioRange(Node.Duration, Node.Duration + phrase.Duration))));
                    }
                    else if (Node is EmptyNode)
                    {
                        p.ChildCommands.Insert(p.ChildCommands.Count, new Commands.UpdateSelection(view, new NodeSelection(phrase, Control)));
                    }
                }
            }
            else
            {
                PhraseNode phrase = view.Presentation.CreatePhraseNode(media);
                p.ChildCommands.Insert(p.ChildCommands.Count, new Commands.Node.AddNode(view, phrase, ParentForNewNode(phrase), IndexForNewNode(phrase)));
            }
            return(p);
        }
Пример #2
0
        protected override urakawa.command.Command PasteCommandAudio(Obi.ProjectView.ProjectView view)
        {
            AudioClipboard c = (AudioClipboard)view.Clipboard;

            urakawa.media.data.audio.ManagedAudioMedia media = view.Presentation.MediaFactory.CreateManagedAudioMedia();

            WavAudioMediaData wavData = ((WavAudioMediaData)((PhraseNode)view.Clipboard.Node).Audio.AudioMediaData).Copy(
                new Time(Convert.ToInt64(c.AudioRange.SelectionBeginTime * Time.TIME_UNIT)),
                new Time(Convert.ToInt64(c.AudioRange.SelectionEndTime * Time.TIME_UNIT)));//sdk2

            media.AudioMediaData = wavData;

            PhraseNode       phrase = view.Presentation.CreatePhraseNode(media);
            CompositeCommand p      = view.Presentation.CreateCompositeCommand(Localizer.Message("paste_audio"));

            p.ChildCommands.Insert(p.ChildCommands.Count, new Commands.Node.AddNode(view, phrase, ParentForNewNode(phrase), IndexForNewNode(phrase)));
            if (!Node.Used)
            {
                view.AppendMakeUnused(p, phrase);
            }
            return(p);
        }
Пример #3
0
 /// <summary>
 /// Create a new audio node by importing data from a file.
 /// </summary>
 public urakawa.core.TreeNode CreateAudioNode(string filename)
 {
     urakawa.Presentation  p    = getPresentation(0);
     urakawa.core.TreeNode node = p.getTreeNodeFactory().createNode(typeof(AudioNode).Name, DataModelFactory.NS);
     // Update the media data manager to accept this type of file
     if (!p.getMediaDataManager().getEnforceSinglePCMFormat())
     {
         System.IO.FileStream audioStream          = System.IO.File.OpenRead(filename);
         urakawa.media.data.audio.PCMDataInfo info = urakawa.media.data.audio.PCMDataInfo.parseRiffWaveHeader(audioStream);
         audioStream.Close();
         p.getMediaDataManager().setDefaultPCMFormat(info);
         p.getMediaDataManager().setEnforceSinglePCMFormat(true);
     }
     // I'll go ahead and not comment this part
     urakawa.media.data.audio.AudioMediaData audio = p.getMediaDataFactory().createAudioMediaData();
     audio.appendAudioDataFromRiffWave(filename);
     urakawa.media.data.audio.ManagedAudioMedia media =
         (urakawa.media.data.audio.ManagedAudioMedia)p.getMediaFactory().createAudioMedia();
     media.setMediaData(audio);
     urakawa.property.channel.ChannelsProperty prop = p.getPropertyFactory().createChannelsProperty();
     prop.setMedia(FindChannel("bobi.audio"), media);
     node.addProperty(prop);
     return(node);
 }