Пример #1
0
 private static void DumpDeviceManager(StringBuilder builder, IAudioDeviceManager manager)
 {
     foreach (var device in manager.Devices)
     {
         DumpDevice(builder, device);
     }
 }
Пример #2
0
        public AudioDevice(IAudioDeviceManager deviceManager, IMMDevice device, Dispatcher foregroundDispatcher)
        {
            _device        = device;
            _deviceManager = new WeakReference <IAudioDeviceManager>(deviceManager);
            _dispatcher    = foregroundDispatcher;
            _id            = device.GetId();

            Trace.WriteLine($"AudioDevice Create {_id}");

            if (_device.GetState() == DeviceState.ACTIVE)
            {
                _deviceVolume = device.Activate <IAudioEndpointVolume>();
                _deviceVolume.RegisterControlChangeNotify(this);
                _deviceVolume.GetMasterVolumeLevelScalar(out _volume);
                _isMuted       = _deviceVolume.GetMute() != 0;
                _isRegistered  = true;
                _meter         = device.Activate <IAudioMeterInformation>();
                _channels      = new AudioDeviceChannelCollection(_deviceVolume, _dispatcher);
                _sessions      = new AudioDeviceSessionCollection(this, _device, _dispatcher);
                _sessionFilter = new FilteredCollectionChain <IAudioDeviceSession>(_sessions.Sessions, _dispatcher);
                Groups         = _sessionFilter.Items;
            }
            else
            {
                Groups = new ObservableCollection <IAudioDeviceSession>();
            }

            ReadProperties();
        }
Пример #3
0
 public RecordFileTest()
 {
     videoEncoder       = Resolve <IVideoEncoder>();
     videoDeviceManager = Resolve <IVideoDeviceManager>();
     aacEncoder         = Resolve <IAacEncoder>();
     audioDeviceManager = Resolve <IAudioDeviceManager>();
 }
Пример #4
0
        protected HardwareAppBinding(DeviceCollectionViewModel deviceViewModel, IAudioDeviceManager audioDeviceManager)
        {
            _deviceCollectionViewModel = deviceViewModel;
            _audioDeviceManager        = audioDeviceManager;
            _commandControlMappings    = new List <CommandControlMappingElement>();

            _settings = StorageFactory.GetSettings();
        }
Пример #5
0
 public SettingsViewModel(SystemConfig config,
                          IAudioDeviceManager audioDeviceManager,
                          CameraDeviceService cameraDeviceService,
                          VideoDeviceAliasService videoDeviceAliasService)
 {
     _config                  = config;
     _audioDeviceManager      = audioDeviceManager;
     _cameraDeviceService     = cameraDeviceService;
     _videoDeviceAliasService = videoDeviceAliasService;
 }
Пример #6
0
        public HardwareManager(DeviceCollectionViewModel deviceCollectionViewModel,
                               IAudioDeviceManager audioDeviceManager)
        {
            bindings = new Dictionary <Type, HardwareAppBinding>();

            RegisterAppBinding(new MidiAppBinding(deviceCollectionViewModel, audioDeviceManager));
            RegisterAppBinding(new DeejAppBinding(deviceCollectionViewModel, audioDeviceManager));

            Current = this;
        }
Пример #7
0
        static string DumpDevices(IAudioDeviceManager manager)
        {
            StringBuilder sb = new StringBuilder();

            foreach (var device in manager.Devices)
            {
                sb.Append(device == manager.Default ? $"[Default {manager.Kind}] " : "");
                sb.AppendLine(DumpDevice(device));
            }
            return(sb.ToString());
        }
Пример #8
0
        static string DumpDevices(IAudioDeviceManager manager)
        {
            StringBuilder sb = new StringBuilder();

            foreach (var device in manager.Devices)
            {
                sb.Append(device == manager.DefaultPlaybackDevice ? "[Playback Default] " : "");
                sb.Append(device == manager.DefaultCommunicationDevice ? "[Communications Default] " : "");
                sb.AppendLine(DumpDevice(device));
            }
            return(sb.ToString());
        }
Пример #9
0
 public App()
 {
     MidiDevices.Manager           = new Midi.ManagedMidi.MidiManager();
     audioDeviceManager            = new NAudioDeviceManager();
     deviceViewModel               = new DeviceViewModel();
     logViewModel                  = new LogViewModel();
     DispatcherUnhandledException += (sender, args) =>
     {
         logViewModel.Logger.LogError(args.Exception, "Unhandled exception");
         args.Handled = true;
     };
 }
Пример #10
0
        public DeviceCollectionViewModel(IAudioDeviceManager deviceManager, AppSettings settings)
        {
            _settings      = settings;
            _deviceManager = deviceManager;
            _deviceManager.DefaultChanged            += OnDefaultChanged;
            _deviceManager.Devices.CollectionChanged += OnCollectionChanged;
            OnCollectionChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));

            _peakMeterTimer           = new Timer(1000 / 30); // 30 fps
            _peakMeterTimer.AutoReset = true;
            _peakMeterTimer.Elapsed  += PeakMeterTimer_Elapsed;
        }
Пример #11
0
        public DeviceCollectionViewModel(IAudioDeviceManager deviceManager)
        {
            AllDevices = new ObservableCollection <DeviceViewModel>();

            _deviceManager = deviceManager;
            _deviceManager.DefaultChanged            += DeviceManager_DefaultDeviceChanged;
            _deviceManager.Loaded                    += DeviceManager_Loaded;
            _deviceManager.Devices.CollectionChanged += Devices_CollectionChanged;
            Devices_CollectionChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));

            _peakMeterTimer           = new Timer(1000 / 30); // 30 fps
            _peakMeterTimer.AutoReset = true;
            _peakMeterTimer.Elapsed  += PeakMeterTimer_Elapsed;
        }
Пример #12
0
        // Constructors

        public DefaultAudioSwitch(IDisplayManager displayManager,
                                  IAudioDeviceManager audioDeviceManager,
                                  IConfigurationReader configurationReader,
                                  IConfigurationWriter configurationWriter)
        {
            _displayManager      = displayManager;
            _audioDeviceManager  = audioDeviceManager;
            _configurationReader = configurationReader;
            _configurationWriter = configurationWriter;
            _configuration       = CreateDefaultConfigurationIfNecessary(displayManager);
            _lastDisplayNode     = _displayManager.GetCurrentDisplayMode();
            _displayManager.DisplayModeChanged += DisplayModeChanged;
            _displayManager.StartPolling(1000);
        }
Пример #13
0
        public AudioTriggerManager()
        {
            _playbackManager = PlaybackDataModelHost.Current;
            _playbackManager.AppPropertyChanged           += OnAppPropertyChanged;
            _playbackManager.AppAdded                     += (a) => OnAppAddOrRemove(a, AudioAppEventKind.Added);
            _playbackManager.AppRemoved                   += (a) => OnAppAddOrRemove(a, AudioAppEventKind.Removed);
            _playbackManager.DeviceAdded                  += (d) => OnDeviceAddOrRemove(d, AudioDeviceEventKind.Added);
            _playbackManager.DeviceRemoved                += (d) => OnDeviceAddOrRemove(d, AudioDeviceEventKind.Removed);
            _playbackManager.DeviceManager.DefaultChanged += PlaybackDeviceManager_DefaultChanged;
            _defaultPlaybackDevice = _playbackManager.DeviceManager.Default;

            _recordingManager = WindowsAudioFactory.Create(AudioDeviceKind.Recording);
            _recordingManager.DefaultChanged += RecordingMgr_DefaultChanged;
            _defaultRecordingDevice           = _recordingManager.Default;
        }
        public DeejAppBinding(DeviceCollectionViewModel deviceViewModel, IAudioDeviceManager audioDeviceManager) :
            base(deviceViewModel, audioDeviceManager)
        {
            Current    = this;
            lastValues = new Dictionary <CommandControlMappingElement, int>();

            DeejIn.AddGeneralCallback(DeejCallback);

            LoadSettings(SAVEKEY);

            foreach (var command in _commandControlMappings)
            {
                var config = (DeejConfiguration)command.hardwareConfiguration;
                DeejIn._StartListening(config.Port);
            }
        }
Пример #15
0
        internal DeviceViewModel(IAudioDeviceManager deviceManager, IAudioDevice device) : base(device)
        {
            _deviceManager = deviceManager;
            _device        = device;

            Apps = new ObservableCollection <IAppItemViewModel>();

            _device.PropertyChanged          += Device_PropertyChanged;
            _device.Groups.CollectionChanged += Sessions_CollectionChanged;

            foreach (var session in _device.Groups)
            {
                Apps.AddSorted(new AppItemViewModel(session), AppItemViewModel.CompareByExeName);
            }

            UpdateMasterVolumeIcon();
        }
Пример #16
0
        internal MainViewModel(IAudioDeviceManager deviceManager)
        {
            Debug.Assert(Instance == null);
            Instance = this;

            AllDevices = new ObservableCollection <DeviceViewModel>();

            _deviceManager = deviceManager;
            _deviceManager.DefaultPlaybackDeviceChanged += DeviceManager_DefaultPlaybackDeviceChanged;
            _deviceManager.PlaybackDevicesLoaded        += DeviceManager_PlaybackDevicesLoaded;
            _deviceManager.Devices.CollectionChanged    += Devices_CollectionChanged;
            Devices_CollectionChanged(null, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));

            _peakMeterTimer           = new Timer(1000 / 30); // 30 fps
            _peakMeterTimer.AutoReset = true;
            _peakMeterTimer.Elapsed  += PeakMeterTimer_Elapsed;
        }
 public VideoLiveAndRecordProvider(ILoggerFacade logger, IAudioDeviceManager audioDeviceManager, int defaultMicrophoneID)
 {
     _logger             = logger;
     _aacEncoder         = new AacEncoder();
     _videoEncoder       = new H264VideoEncoder();
     _audioDeviceManager = audioDeviceManager;
     _useAudioDevice     = _audioDeviceManager.GetAudioDeviceById(defaultMicrophoneID);
     if (_useAudioDevice == null)
     {
         _useAudioDevice = _audioDeviceManager.GetAudioDevices().First();
     }
     _aacEncoder.SetAudioDataSource(_useAudioDevice);
     _videoRecord        = new Record.Record(_videoEncoder, _aacEncoder);
     _videoLiveBroadcast = new LiveBroadcast.LiveBroadcast(_videoEncoder, _aacEncoder);
     _videoLiveBroadcast.OnNetworkInterruption          += _videoLiveBroadcast_OnNetworkInterruption;
     _videoLiveBroadcast.OnNetworkReconnectionFailed    += _videoLiveBroadcast_OnNetworkReconnectionFailed;
     _videoLiveBroadcast.OnNetworkReconnectionSucceeded += _videoLiveBroadcast_OnNetworkReconnectionSucceeded;
 }
        public MidiAppBinding(DeviceCollectionViewModel deviceCollectionViewModel,
                              IAudioDeviceManager audioDeviceManager) : base(deviceCollectionViewModel, audioDeviceManager)
        {
            Current = this;

            MidiIn.AddGeneralCallback(MidiCallback);

            LoadSettings(SAVEKEY);

            _deviceMapping = new ConcurrentDictionary <string, string>();

            foreach (var device in MidiIn.GetAllDevices())
            {
                _deviceMapping[device.Id] = device.Name;
            }

            SubscribeToDevices();
        }
Пример #19
0
 public static IAudioDeviceManager CreateAudioDeviceManager(AudioDeviceKind kind)
 {
     if (kind == AudioDeviceKind.Playback)
     {
         if (s_playbackDevices == null)
         {
             s_playbackDevices = new AudioDeviceManager(AudioDeviceKind.Playback);
         }
         return(s_playbackDevices);
     }
     else
     {
         if (s_recordingDevices == null)
         {
             s_recordingDevices = new AudioDeviceManager(AudioDeviceKind.Recording);
         }
         return(s_recordingDevices);
     }
 }
Пример #20
0
        public AudioDevice(IAudioDeviceManager deviceManager, IMMDevice device)
        {
            _device        = device;
            _deviceManager = new WeakReference <IAudioDeviceManager>(deviceManager);
            _dispatcher    = App.Current.Dispatcher;
            _id            = device.GetId();

            Trace.WriteLine($"AudioDevice Create {_id}");

            _deviceVolume = device.Activate <IAudioEndpointVolume>();

            _deviceVolume.RegisterControlChangeNotify(this);
            _isRegistered = true;
            _meter        = device.Activate <IAudioMeterInformation>();
            _sessions     = new AudioDeviceSessionCollection(this, _device);

            _deviceVolume.GetMasterVolumeLevelScalar(out _volume);
            _isMuted = _deviceVolume.GetMute() != 0;

            ReadDisplayName();
        }
        public InstrumentAudioRecorderSettingsViewModel(IViewServices viewServices, IAudioDeviceManager deviceManager, ModuleSchema schema, string midiName)
        {
            this.viewServices = viewServices;
            this.schema       = schema;
            var groups = schema.InstrumentGroups
                         .Where(ig => ig.Preset)
                         .Select(ig => ig.Description)
                         .ToList();

            groups.Insert(0, "(All)");
            InstrumentGroups        = groups;
            selectedInstrumentGroup = groups[0];
            InputDevices            = deviceManager.GetInputs();

            // Try to guess at a reasonable input based on known inputs including the MIDI name.
            var expectedInputDevices = new[] { $"MASTER ({midiName})", $"IN ({midiName})", $"KICK ({midiName})" };

            SelectedInputDevice = InputDevices.FirstOrDefault(input => expectedInputDevices.Contains(input.Name));

            kitNumber = schema.Kits;
            SelectOutputFileCommand = new DelegateCommand(SelectOutputFile, true);
        }
Пример #22
0
        // Constructors

        public MainViewModel(IDisplayManager displayManager,
                             IAudioDeviceManager audioDeviceManager,
                             IAudioSwitch audioSwitch)
        {
            _audioSwitch             = audioSwitch;
            _selectorPanelViewModels = new ObservableCollection <SelectorPanelViewModel>();

            _displayManager = displayManager;
            var audioDevices = audioDeviceManager.GetAllDevices();

            UndoCommand         = new RelayCommand <Object>(UndoChanges);
            ApplyChangesCommand = new RelayCommand <Object>(ApplyChanges);


            var mapping = _audioSwitch.GetConfigMapping();

            foreach (var current in _displayManager.GetAllDisplayModes())
            {
                var currentAudioDeviceId = mapping[current.PresentationDisplayMode];
                var selectorViewModel    = new SelectorPanelViewModel(current, audioDevices.ToArray(), audioDevices.First(x => currentAudioDeviceId.AudioDeviceId == x.DeviceId));
                selectorViewModel.IsDirtyChanged += CheckIfAnySelectorIsDirty;
                _selectorPanelViewModels.Add(selectorViewModel);
            }
        }
 public VideoLiveAndRecordBaseProvider(SystemConfig config, ILoggerFacade logger, IAudioDeviceManager audioDeviceManager, EventSubscriptionManager eventSubscriptionManager)
     : base(logger, audioDeviceManager, config.UseMicrophoneID)
 {
     _config = config;
     SetViedoEncoderParams(true);
     eventSubscriptionManager.Subscribe <ConfigSaveEvent, bool>(null, SetViedoEncoderParams, null);
 }
Пример #24
0
 public DesktopWindowCollectorTest()
 {
     videoEncoder       = Resolve <IVideoEncoder>();
     aacEncoder         = Resolve <IAacEncoder>();
     audioDeviceManager = Resolve <IAudioDeviceManager>();
 }
Пример #25
0
        public InstrumentAudioRecorderViewModel(IViewServices viewServices, ILogger logger, DeviceViewModel deviceViewModel, IAudioDeviceManager deviceManager)
        {
            this.logger = logger;
            device      = deviceViewModel.ConnectedDevice ?? throw new InvalidOperationException("Cannot record audio without a connected device");
            schema      = device.Schema;

            Settings = new InstrumentAudioRecorderSettingsViewModel(viewServices, deviceManager, schema, device.InputName);
            Progress = new InstrumentAudioRecorderProgressViewModel();
            Title    = $"Instrument Audio Recorder ({schema.Identifier.Name})";
            StartRecordingCommand     = new DelegateCommand(StartRecording, false);
            CancelCommand             = new DelegateCommand(Cancel, false);
            Settings.PropertyChanged += (sender, args) => UpdateButtonStatus();
        }
Пример #26
0
 public static void Advise(IAudioDeviceManager deviceManager)
 {
     _deviceManager = deviceManager;
 }
 public TeacherVideoLiveAndRecordProvider(SystemConfig config, ILoggerFacade logger, IAudioDeviceManager audioDeviceManager, ILiveStreamAddressProvider liveStreamAddressProvider, EventSubscriptionManager eventSubscriptionManager)
     : base(config, logger, audioDeviceManager, eventSubscriptionManager)
 {
     _liveStreamAddressProvider = liveStreamAddressProvider;
 }
Пример #28
0
 public AudioDevice(string id, IAudioDeviceManager parent)
 {
     Parent = parent;
     Id     = id;
 }