/// ---------------------------------------------------------------------------------------- public static OralAnnotationRecorderDlgViewModel Create(ComponentFile file, AudioRecordingType annotationType) { return(annotationType == AudioRecordingType.Careful ? new CarefulSpeechAnnotationRecorderDlgViewModel(file) as OralAnnotationRecorderDlgViewModel : new OralTranslationAnnotationRecorderDlgViewModel(file)); }
/// ------------------------------------------------------------------------------------ /// <summary> /// If user clicks OK and recordings were made or changed, the full path to the EAF /// file is returned. Otherwise null is returned. /// </summary> /// ------------------------------------------------------------------------------------ public string RecordAnnotations(Form frm, AudioRecordingType annotationType) { try { Program.SuspendBackgroundProcesses(); using (var viewModel = OralAnnotationRecorderDlgViewModel.Create(this, annotationType)) using (var dlg = OralAnnotationRecorderBaseDlg.Create(viewModel, annotationType)) { if (dlg.ShowDialog(frm) != DialogResult.OK || !viewModel.WereChangesMade) { viewModel.DiscardChanges(); return(null); } Analytics.Track("Changes made using Oral Annotation Recorder"); var eafFileName = viewModel.Tiers.Save(PathToAnnotatedFile); GenerateOralAnnotationFile(viewModel.Tiers, frm, GenerateOption.ClearAndRegenerateOnDemand); return(eafFileName); } } finally { Program.ResumeBackgroundProcesses(true); } }
/// ------------------------------------------------------------------------------------ private WaveStreamProvider GetWaveStreamForOralAnnotationSegment(string filename, AudioRecordingType annotationType) { var provider = WaveStreamProvider.Create(_output1ChannelAudioFormat, filename); if (provider.Error != null && !(provider.Error is FileNotFoundException)) { var msg = LocalizationManager.GetString( "SessionsView.Transcription.GeneratedOralAnnotationView.ProcessingAnnotationFileErrorMsg", "There was an error processing a {0} annotation file.", "The parameter is the annotation type (i.e. careful, translation)."); var type = annotationType.ToString().ToLower(); if (_synchInvoke.InvokeRequired) { _synchInvoke.Invoke((Action)(() => ErrorReport.NotifyUserOfProblem(_srcRecStreamProvider.Error, msg, type)), null); } else { ErrorReport.NotifyUserOfProblem(_srcRecStreamProvider.Error, msg, type); } } return(provider); }
/// ------------------------------------------------------------------------------------ protected virtual void HandlePlaybackTypeMenuItemClicked(object sender, EventArgs e) { var menuItem = sender as ToolStripMenuItem; if (menuItem != null) { PlaybackType = (AudioRecordingType)menuItem.Tag; } _grid.Play(); }
/// ------------------------------------------------------------------------------------ private void CreateAnnotationFile(AudioRecordingType fileType, float start, float end) { if (!Directory.Exists(_model.OralAnnotationsFolder)) { Directory.CreateDirectory(_model.OralAnnotationsFolder); } if (fileType == AudioRecordingType.Careful) { File.OpenWrite(Path.Combine(_model.OralAnnotationsFolder, TimeTier.ComputeFileNameForCarefulSpeechSegment(start, end))).Close(); } else { File.OpenWrite(Path.Combine(_model.OralAnnotationsFolder, TimeTier.ComputeFileNameForOralTranslationSegment(start, end))).Close(); } }
/// ------------------------------------------------------------------------------------ private IEnumerable <AnnotationPlaybackInfo> GetAnnotationMediaInfo(AudioRecordingType playbackType) { var carefulSpeechFile = GetCurrentSegment().GetFullPathToCarefulSpeechFile(); var oralTranslationFile = GetCurrentSegment().GetFullPathToOralTranslationFile(); if ((playbackType & AudioRecordingType.Source) == AudioRecordingType.Source) { yield return(GetOriginalAnnotationPlaybackInfo()); } if ((playbackType & AudioRecordingType.Careful) == AudioRecordingType.Careful) { if (File.Exists(carefulSpeechFile)) { yield return new AnnotationPlaybackInfo { MediaFile = carefulSpeechFile } } ; else if (playbackType == AudioRecordingType.Careful) { yield return(GetOriginalAnnotationPlaybackInfo()); } } if ((playbackType & AudioRecordingType.Translation) == AudioRecordingType.Translation) { if (File.Exists(oralTranslationFile)) { yield return new AnnotationPlaybackInfo { MediaFile = oralTranslationFile } } ; else if (playbackType == AudioRecordingType.Translation) { yield return(GetOriginalAnnotationPlaybackInfo()); } } }
/// ------------------------------------------------------------------------------------ private void CreateModelAndAnnotationFileForType(AudioRecordingType modelType, AudioRecordingType fileType, float start, float end) { if (Directory.Exists(_model.OralAnnotationsFolder)) { Directory.Delete(_model.OralAnnotationsFolder, true); } _model.Dispose(); _model = OralAnnotationRecorderDlgViewModel.Create(_componentFile.Object, modelType); Directory.CreateDirectory(_model.OralAnnotationsFolder); if (fileType == AudioRecordingType.Careful) { WriteWavFile(Path.Combine(_model.OralAnnotationsFolder, TimeTier.ComputeFileNameForCarefulSpeechSegment(start, end))); } else { WriteWavFile(Path.Combine(_model.OralAnnotationsFolder, TimeTier.ComputeFileNameForOralTranslationSegment(start, end))); } }
/// ------------------------------------------------------------------------------------ private void CreateModelAndAnnotationFileForType(AudioRecordingType modelType, AudioRecordingType fileType) { CreateModelAndAnnotationFileForType(modelType, fileType, 25f, 30f); // REVIEW _model.SelectSegmentFromTime(TimeSpan.FromSeconds(30f)); }