internal SoundRecorderDialog(ILogger logger, ModuleSchema schema, RolandMidiClient midiClient) : this() { this.logger = logger; this.schema = schema; this.midiClient = midiClient; kitNumber.PreviewTextInput += TextConversions.CheckDigits; userSamples.PreviewTextInput += TextConversions.CheckDigits; cancellationTokenSource = new CancellationTokenSource(); kitNumber.Text = TextConversions.Format(schema.KitRoots.Count); // Capture the input device names, and attempt to guess a reasonable default. var allInputDevices = AudioDevices.GetInputDeviceNames(); var midiName = midiClient.OutputName; var expectedInputDevices = new[] { $"MASTER ({midiName})", $"IN ({midiName})", $"KICK ({midiName})" }; inputDevice.ItemsSource = allInputDevices; inputDevice.SelectedIndex = allInputDevices.FindIndex(inputName => expectedInputDevices.Contains(inputName)); foreach (var group in schema.InstrumentGroups) { instrumentGroupSelector.Items.Add(group.Description); } }
internal InstrumentAudioExplorer(ILogger logger, ModuleAudio audio, string fileName) : this() { this.audio = audio; this.logger = logger; Title = $"{Title} - {fileName}"; capturesByGroup = audio.Captures.ToLookup(c => c.Instrument.Group); var allOutputDeviceNames = AudioDevices.GetOutputDeviceNames(); outputDevice.ItemsSource = allOutputDeviceNames; // Assume that device 0 is the default. That will usually be the case. if (allOutputDeviceNames.Count > 0) { outputDevice.SelectedIndex = 0; } moduleId.Content = audio.Schema.Identifier.Name; userSamples.Content = TextConversions.Format(capturesByGroup[null].Count()); var format = audio.Format; audioFormat.Content = $"Channels: {format.Channels}; Bits: {format.Bits}; Frequency: {format.Frequency}"; timePerInstrument.Content = TextConversions.Format(audio.DurationPerInstrument.TotalSeconds); var groups = capturesByGroup.Select(c => new InstrumentGroupOrUserSample(c.Key)).Distinct(); treeView.ItemsSource = groups; instrumentsGroupBox.Visibility = Visibility.Collapsed; }
internal KitExplorer(ILogger logger, Kit kit, SysExClient midiClient, string fileName) : base(logger, kit.Schema, kit.Data, kit.KitRoot, midiClient, fileName, SaveFileFilter, "Kit explorer") { this.kit = kit; copyToDeviceButton.Content = "Copy kit to device"; defaultKitNumber.Text = TextConversions.Format(kit.DefaultKitNumber); copyToDeviceKitNumber.Text = defaultKitNumber.Text; }
internal SoundRecorderDialog(ILogger logger, ModuleSchema schema, RolandMidiClient midiClient) : this() { this.logger = logger; this.schema = schema; this.midiClient = midiClient; kitNumber.PreviewTextInput += TextConversions.CheckDigits; userSamples.PreviewTextInput += TextConversions.CheckDigits; cancellationTokenSource = new CancellationTokenSource(); inputDevice.ItemsSource = AudioDevices.GetInputDeviceNames(); kitNumber.Text = TextConversions.Format(schema.KitRoots.Count); }
internal InstrumentAudioExplorer(ILogger logger, ModuleAudio audio) : this() { this.audio = audio; this.logger = logger; capturesByGroup = audio.Captures.ToLookup(c => c.Instrument.Group); outputDevice.ItemsSource = AudioDevices.GetOutputDeviceNames(); moduleId.Content = audio.Schema.Identifier.Name; userSamples.Content = TextConversions.Format(capturesByGroup[null].Count()); var format = audio.Format; audioFormat.Content = $"Channels: {format.Channels}; Bits: {format.Bits}; Frequency: {format.Frequency}"; timePerInstrument.Content = TextConversions.Format(audio.DurationPerInstrument.TotalSeconds); var groups = capturesByGroup.Select(c => new InstrumentGroupOrUserSample(c.Key)).Distinct(); treeView.ItemsSource = groups; instrumentsGroupBox.Visibility = Visibility.Collapsed; }