public static void ImportPapagayoTracks(ICollection <IMarkCollection> markCollection) { FileDialog openDialog = new OpenFileDialog(); openDialog.Filter = @"Papagayo files (*.pgo)|*.pgo|All files (*.*)|*.*"; openDialog.FilterIndex = 1; openDialog.InitialDirectory = _lastFolder; if (openDialog.ShowDialog() != DialogResult.OK) { return; } PapagayoDoc papagayoFile = new PapagayoDoc(); string fileName = openDialog.FileName; _lastFolder = Path.GetDirectoryName(openDialog.FileName); papagayoFile.Load(fileName); var fileWithoutExtension = Path.GetFileNameWithoutExtension(fileName); int rownum = 0; foreach (string voice in papagayoFile.VoiceList) { var phraseCollection = new MarkCollection(); phraseCollection.Name = $"{fileWithoutExtension} {voice} Phrases"; phraseCollection.ShowMarkBar = true; phraseCollection.Decorator.Color = Color.FromArgb(205, 242, 162); var wordCollection = new MarkCollection(); wordCollection.Name = $"{fileWithoutExtension} {voice} Words"; wordCollection.ShowMarkBar = true; wordCollection.Decorator.Color = Color.FromArgb(242, 205, 162); var phonemeCollection = new MarkCollection(); phonemeCollection.Name = $"{fileWithoutExtension} {voice} Phonemes"; phonemeCollection.ShowMarkBar = true; phonemeCollection.Decorator.Color = Color.FromArgb(235, 185, 210); var phrases = papagayoFile.PhraseList(voice); foreach (var phrase in phrases) { var mark = new Mark(TimeSpan.FromMilliseconds(phrase.StartMS)); mark.Duration = TimeSpan.FromMilliseconds(phrase.DurationMS); mark.Text = phrase.Text; phraseCollection.AddMark(mark); foreach (var word in phrase.Words) { mark = new Mark(TimeSpan.FromMilliseconds(word.StartMS)); mark.Duration = TimeSpan.FromMilliseconds(word.EndMS) - mark.StartTime; mark.Text = word.Text; wordCollection.AddMark(mark); foreach (var phoneme in word.Phonemes) { mark = new Mark(TimeSpan.FromMilliseconds(phoneme.StartMS)); mark.Duration = TimeSpan.FromMilliseconds(phoneme.EndMS) - mark.StartTime; mark.Text = phoneme.TypeName; phonemeCollection.AddMark(mark); } } } phraseCollection.CollectionType = MarkCollectionType.Phrase; markCollection.Add(phraseCollection); wordCollection.CollectionType = MarkCollectionType.Word; wordCollection.LinkedMarkCollectionId = phraseCollection.Id; markCollection.Add(wordCollection); phonemeCollection.CollectionType = MarkCollectionType.Phoneme; phonemeCollection.LinkedMarkCollectionId = wordCollection.Id; markCollection.Add(phonemeCollection); //phonemeCollection = new MarkCollection(); //phonemeCollection.Name = $"{fileWithoutExtension} {voice} Phonemes Coalesced"; //phonemeCollection.ShowMarkBar = true; //phonemeCollection.Decorator.Color = Color.FromArgb(245, 75, 210); ; //foreach (var phoneme in papagayoFile.PhonemeList(voice)) //{ // var mark = new Mark(TimeSpan.FromMilliseconds(phoneme.StartMS)); // mark.Duration = TimeSpan.FromMilliseconds(phoneme.EndMS) - mark.StartTime; // mark.Text = phoneme.TypeName; // phonemeCollection.AddMark(mark); //} //phonemeCollection.CollectionType = MarkCollectionType.Phoneme; //markCollection.Add(phonemeCollection); rownum++; } string displayStr = rownum + " Voices imported to clipboard as Mark Collctions\n\n"; int j = 1; foreach (string voiceStr in papagayoFile.VoiceList) { displayStr += "Row #" + j + " - " + voiceStr + "\n"; j++; } //messageBox Arguments are (Text, Title, No Button Visible, Cancel Button Visible) MessageBoxForm.msgIcon = SystemIcons.Information; //this is used if you want to add a system icon to the message form. var messageBox = new MessageBoxForm(displayStr, @"Papagayo Import", false, false); messageBox.ShowDialog(); }
private void papagayoImportToolStripMenuItem_Click(object sender, EventArgs e) { string fileName; PapagayoDoc papagayoFile = new PapagayoDoc(); FileDialog openDialog = new OpenFileDialog(); openDialog.Filter = "Papagayo files (*.pgo)|*.pgo|All files (*.*)|*.*"; openDialog.FilterIndex = 1; if (openDialog.ShowDialog() != DialogResult.OK) { return; } fileName = openDialog.FileName; papagayoFile.Load(fileName); TimelineElementsClipboardData result = new TimelineElementsClipboardData() { FirstVisibleRow = -1, EarliestStartTime = TimeSpan.MaxValue, }; result.FirstVisibleRow = 0; int rownum = 0; foreach (string voice in papagayoFile.VoiceList) { List<PapagayoPhoneme> phonemes = papagayoFile.PhonemeList(voice); if (phonemes.Count > 0) { foreach (PapagayoPhoneme phoneme in phonemes) { if (phoneme.DurationMS == 0.0) { continue; } IEffectModuleInstance effect = ApplicationServices.Get<IEffectModuleInstance>(new LipSyncDescriptor().TypeId); ((LipSync)effect).StaticPhoneme = phoneme.TypeName.ToUpper(); ((LipSync)effect).LyricData = phoneme.LyricData; TimeSpan startTime = TimeSpan.FromMilliseconds(phoneme.StartMS); TimelineElementsClipboardData.EffectModelCandidate modelCandidate = new TimelineElementsClipboardData.EffectModelCandidate(effect) { Duration = TimeSpan.FromMilliseconds(phoneme.DurationMS - 1), StartTime = startTime, }; result.EffectModelCandidates.Add(modelCandidate, rownum); if (startTime < result.EarliestStartTime) result.EarliestStartTime = startTime; effect.Render(); } IDataObject dataObject = new DataObject(_clipboardFormatName); dataObject.SetData(result); Clipboard.SetDataObject(dataObject, true); _TimeLineSequenceClipboardContentsChanged(EventArgs.Empty); sequenceModified(); } rownum++; } string displayStr = rownum + " Voices imported to clipboard as seperate rows\n\n"; int j = 1; foreach (string voiceStr in papagayoFile.VoiceList) { displayStr += "Row #" + j +" - " + voiceStr + "\n"; j++; } MessageBox.Show(displayStr, "Papagayo Import", MessageBoxButtons.OK); }
private void papagayoImportToolStripMenuItem_Click(object sender, EventArgs e) { PapagayoDoc papagayoFile = new PapagayoDoc(); FileDialog openDialog = new OpenFileDialog(); openDialog.Filter = @"Papagayo files (*.pgo)|*.pgo|All files (*.*)|*.*"; openDialog.FilterIndex = 1; if (openDialog.ShowDialog() != DialogResult.OK) { return; } string fileName = openDialog.FileName; papagayoFile.Load(fileName); TimelineElementsClipboardData result = new TimelineElementsClipboardData { FirstVisibleRow = -1, EarliestStartTime = TimeSpan.MaxValue, }; result.FirstVisibleRow = 0; int rownum = 0; foreach (string voice in papagayoFile.VoiceList) { List<PapagayoPhoneme> phonemes = papagayoFile.PhonemeList(voice); if (phonemes.Count > 0) { foreach (PapagayoPhoneme phoneme in phonemes) { if (phoneme.DurationMS == 0.0) { continue; } IEffectModuleInstance effect = ApplicationServices.Get<IEffectModuleInstance>(new LipSyncDescriptor().TypeId); ((LipSync)effect).StaticPhoneme = (App.LipSyncApp.PhonemeType)Enum.Parse(typeof(App.LipSyncApp.PhonemeType), phoneme.TypeName.ToUpper()); ((LipSync)effect).LyricData = phoneme.LyricData; TimeSpan startTime = TimeSpan.FromMilliseconds(phoneme.StartMS); EffectModelCandidate modelCandidate = new EffectModelCandidate(effect) { Duration = TimeSpan.FromMilliseconds(phoneme.DurationMS - 1), StartTime = startTime }; result.EffectModelCandidates.Add(modelCandidate, rownum); if (startTime < result.EarliestStartTime) result.EarliestStartTime = startTime; effect.Render(); } IDataObject dataObject = new DataObject(ClipboardFormatName); dataObject.SetData(result); Clipboard.SetDataObject(dataObject, true); _TimeLineSequenceClipboardContentsChanged(EventArgs.Empty); SequenceModified(); } rownum++; } string displayStr = rownum + " Voices imported to clipboard as seperate rows\n\n"; int j = 1; foreach (string voiceStr in papagayoFile.VoiceList) { displayStr += "Row #" + j +" - " + voiceStr + "\n"; j++; } //messageBox Arguments are (Text, Title, No Button Visible, Cancel Button Visible) MessageBoxForm.msgIcon = SystemIcons.Information; //this is used if you want to add a system icon to the message form. var messageBox = new MessageBoxForm(displayStr, @"Papagayo Import", false, false); messageBox.ShowDialog(); }