├── gfx
├── icoconvert.txt
├── logo.ai
├── logo.ico
├── logo.png
└── logo.xaml
├── src
├── Micser.Engine
│ ├── ManualStart.ps1
│ ├── Properties
│ │ └── launchSettings.json
│ ├── appsettings.json
│ ├── Api
│ │ ├── StatusProcessor.cs
│ │ └── SettingsProcessor.cs
│ ├── ServiceBaseLifetimeHostExtensions.cs
│ └── Micser.Engine.csproj
├── Micser.App.Infrastructure
│ ├── Themes
│ │ ├── Colors.Default.ini
│ │ ├── ResourceRegistry.cs
│ │ ├── IResourceRegistry.cs
│ │ ├── Thumbs.xaml
│ │ └── LinePanel.xaml
│ ├── ToolBars
│ │ ├── ToolBarLabel.cs
│ │ ├── ToolBarSeparator.cs
│ │ ├── ToolBarDescription.cs
│ │ ├── ToolBarButton.cs
│ │ └── IToolBarRegistry.cs
│ ├── Menu
│ │ ├── MenuItemRegistry.cs
│ │ └── IMenuItemRegistry.cs
│ ├── Controls
│ │ ├── EditableSlider.cs
│ │ └── InfoButton.cs
│ ├── Interaction
│ │ └── MessageBoxView.xaml.cs
│ ├── IViewModel.cs
│ ├── Converter
│ │ ├── BooleanToDoubleConverter.cs
│ │ ├── BooleanInvertConverter.cs
│ │ ├── BooleanToVisibilityConverter.cs
│ │ ├── RelativeCenterPlacementConverter.cs
│ │ ├── ConverterExtension.cs
│ │ ├── DoubleToRectConverter.cs
│ │ └── IconToBitmapSourceConverter.cs
│ ├── ISelectable.cs
│ ├── Widgets
│ │ ├── UnsavedAttribute.cs
│ │ ├── AudioWidgetControls.xaml.cs
│ │ ├── IWidgetRegistry.cs
│ │ ├── WidgetRegistry.cs
│ │ ├── IWidgetFactory.cs
│ │ ├── ConnectorViewModel.cs
│ │ ├── WidgetToolbox.cs
│ │ ├── WidgetDescription.cs
│ │ └── ConnectorChangedEventHandler.cs
│ ├── DataAccess
│ │ ├── DesignTimeFactory.cs
│ │ └── AppDbContext.cs
│ ├── IApplicationStateService.cs
│ ├── AssemblyInfo.cs
│ ├── IAppModule.cs
│ ├── Settings
│ │ └── SettingsPanel.cs
│ ├── TypeTemplateSelector.cs
│ ├── ProxyModule.cs
│ ├── Api
│ │ ├── UpdatesRequestProcessor.cs
│ │ ├── StatusApiClient.cs
│ │ ├── ApiEventRequestProcessor.cs
│ │ └── ApiEvent.cs
│ ├── ApplicationStateService.cs
│ ├── CommandBindingToCommand.cs
│ └── Extensions
│ │ └── ItemsControlExtensions.cs
├── Micser.Plugins.Main
│ ├── Themes
│ │ ├── Colors.Light.ini
│ │ └── Generic.xaml
│ ├── Audio
│ │ ├── CompressorType.cs
│ │ ├── FilterDescription.cs
│ │ ├── SpectrumFftProvider.cs
│ │ └── GainSampleProcessor.cs
│ ├── Api
│ │ ├── SpectrumDataEvent.cs
│ │ ├── SpectrumData.cs
│ │ └── SpectrumRequestProcessor.cs
│ ├── Widgets
│ │ ├── GainWidget.xaml.cs
│ │ ├── PitchWidget.xaml.cs
│ │ ├── SpectrumWidget.xaml.cs
│ │ ├── DeviceInputWidget.xaml.cs
│ │ ├── DeviceOutputWidget.xaml.cs
│ │ ├── LoopbackDeviceInputViewModel.cs
│ │ ├── DeviceInputViewModel.cs
│ │ ├── DeviceOutputViewModel.cs
│ │ ├── GainViewModel.cs
│ │ ├── SpectrumWidget.xaml
│ │ └── PitchViewModel.cs
│ ├── Modules
│ │ ├── GainModule.cs
│ │ ├── EqualizerModule.cs
│ │ └── LoopbackDeviceInputModule.cs
│ ├── AssemblyInfo.cs
│ └── MainEngineModule.cs
├── Micser.Vac.Driver
│ ├── VerifyInf.ps1
│ └── kshelper.h
├── Micser.Common
│ ├── Api
│ │ ├── DefaultRequestProcessor.cs
│ │ ├── IApiClientConfiguration.cs
│ │ ├── IApiServerConfiguration.cs
│ │ ├── IApiConfiguration.cs
│ │ ├── IMessageSerializer.cs
│ │ ├── ApiMessage.cs
│ │ ├── ApiConfiguration.cs
│ │ ├── IRequestProcessorFactory.cs
│ │ ├── IApiServer.cs
│ │ ├── IRequestProcessor.cs
│ │ ├── ConnectionState.cs
│ │ ├── ServerState.cs
│ │ ├── ApiResponse.cs
│ │ ├── IApiClient.cs
│ │ ├── MessagePackMessageSerializer.cs
│ │ ├── ApiRequest.cs
│ │ └── RequestProcessorNameAttribute.cs
│ ├── DataAccess
│ │ ├── IDbContextFactory.cs
│ │ ├── DbContextFactory.cs
│ │ └── Entities
│ │ │ ├── Entity.cs
│ │ │ └── SettingValue.cs
│ ├── Settings
│ │ ├── SettingsRegistry.cs
│ │ ├── ISettingsRegistry.cs
│ │ ├── SettingValueDto.cs
│ │ ├── ISettingHandlerFactory.cs
│ │ ├── SettingHandlerFactory.cs
│ │ └── ISettingsService.cs
│ ├── IIdentifiable.cs
│ ├── MissingConfigurationException.cs
│ ├── Updates
│ │ ├── HttpUpdateSettings.cs
│ │ ├── GitHub
│ │ │ ├── Asset.cs
│ │ │ └── Release.cs
│ │ └── UpdateManifest.cs
│ ├── DisposableBase.cs
│ ├── Extensions
│ │ ├── DbContextFactoryExtensions.cs
│ │ ├── ServiceExtensions.cs
│ │ └── ApiClientExtensions.cs
│ ├── Devices
│ │ └── DeviceType.cs
│ ├── Modules
│ │ ├── ModulesExportDto.cs
│ │ ├── SaveStateAttribute.cs
│ │ ├── ModuleDto.cs
│ │ └── ModuleConnectionDto.cs
│ ├── IItemRegistry.cs
│ ├── DependencyOverride.cs
│ ├── Micser.Common.csproj
│ ├── IContainerProvider.cs
│ └── ItemRegistry.cs
├── Micser.App.Prism
│ ├── Navigation
│ │ └── IDestructible.cs
│ ├── Modularity
│ │ ├── ModuleInfo.Desktop.cs
│ │ ├── IModuleGroupsCatalog.cs
│ │ ├── IModuleInfoGroup.cs
│ │ ├── IModuleInfo.cs
│ │ ├── IModuleInitializer.cs
│ │ ├── IConfigurationStore.Desktop.cs
│ │ ├── IAssemblyResolver.Desktop.cs
│ │ ├── IModuleCatalogItem.cs
│ │ ├── InitializationMode.cs
│ │ ├── IModule.cs
│ │ ├── ConfigurationStore.Desktop.cs
│ │ ├── DuplicateModuleException.Desktop.cs
│ │ ├── CyclicDependencyFoundException.Desktop.cs
│ │ ├── ModuleInitializeException.Desktop.cs
│ │ ├── ModuleTypeLoadingException.Desktop.cs
│ │ ├── ModuleTypeLoaderNotFoundException.Desktop.cs
│ │ ├── ModuleNotFoundException.Desktop.cs
│ │ ├── ModulesConfigurationSection.Desktop.cs
│ │ ├── ModuleAttribute.Desktop.cs
│ │ ├── ModuleDependencyAttribute.cs
│ │ ├── ModuleManager.Desktop.cs
│ │ └── IModuleManager.cs
│ ├── Services
│ │ └── Dialogs
│ │ │ ├── ButtonResult.cs
│ │ │ ├── DialogParameters.cs
│ │ │ ├── IDialogWindowExtensions.cs
│ │ │ ├── IDialogResult.cs
│ │ │ ├── DialogWindow.xaml.cs
│ │ │ ├── DialogWindow.xaml
│ │ │ ├── IDialogParameters.cs
│ │ │ ├── DialogResult.cs
│ │ │ ├── IDialogWindow.cs
│ │ │ ├── IDialogService.cs
│ │ │ └── IDialogAware.cs
│ ├── Ioc
│ │ ├── IContainerProvider.cs
│ │ ├── PrismIocExtensions.cs
│ │ ├── IContainerExtension.cs
│ │ ├── IContainerRegistry.cs
│ │ └── IContainerProviderExtensions.cs
│ ├── Interactivity
│ │ ├── DefaultPopupWindows
│ │ │ ├── DefaultWindow.xaml
│ │ │ ├── DefaultWindow.xaml.cs
│ │ │ ├── DefaultNotificationWindow.xaml
│ │ │ └── DefaultNotificationWindow.xaml.cs
│ │ └── InteractionRequest
│ │ │ ├── IConfirmation.cs
│ │ │ ├── INotification.cs
│ │ │ ├── Confirmation.cs
│ │ │ ├── Notification.cs
│ │ │ ├── IInteractionRequest.cs
│ │ │ ├── InteractionRequestTrigger.cs
│ │ │ ├── IInteractionRequestAware.cs
│ │ │ └── InteractionRequestedEventArgs.cs
│ ├── Regions
│ │ ├── SyncActiveStateAttribute.cs
│ │ ├── IRegionBehavior.cs
│ │ ├── IJournalAware.cs
│ │ ├── IRegionNavigationJournalEntry.cs
│ │ ├── IRegionMemberLifetime.cs
│ │ ├── IViewsCollection.cs
│ │ ├── IRegionAdapter.cs
│ │ ├── Behaviors
│ │ │ ├── IHostAwareRegionBehavior.cs
│ │ │ ├── RegionCreationException.Desktop.cs
│ │ │ └── IDestructibleRegionBehavior.cs
│ │ ├── UpdateRegionsException.Desktop.cs
│ │ ├── SingleActiveRegion.cs
│ │ ├── IConfirmNavigationRequest.cs
│ │ ├── ViewRegistrationException.Desktop.cs
│ │ ├── RegionMemberLifetimeAttribute.cs
│ │ ├── IRegionNavigationContentLoader.cs
│ │ ├── ViewSortHintAttribute.cs
│ │ ├── ViewRegisteredEventArgs.cs
│ │ ├── AllActiveRegion.cs
│ │ ├── IRegionNavigationService.cs
│ │ ├── INavigationAware.cs
│ │ └── RegionNavigationJournalEntry.cs
│ ├── Events
│ │ ├── IDelegateReference.cs
│ │ ├── ThreadOption.cs
│ │ ├── IEventAggregator.cs
│ │ ├── DataEventArgs.cs
│ │ ├── IEventSubscription.cs
│ │ └── WeakDelegatesManager.cs
│ ├── Logging
│ │ ├── ILoggerFacade.cs
│ │ ├── Category.cs
│ │ ├── Priority.cs
│ │ ├── EmptyLogger.cs
│ │ ├── TraceLogger.cs
│ │ └── DebugLogger.cs
│ ├── IActiveAware.cs
│ ├── PrismApplication.cs
│ └── Micser.App.Prism.csproj
├── Micser.App.Infrastructure.Test
│ ├── Test.ini
│ └── IniFileTest.cs
├── Micser.Engine.Infrastructure.Test
│ └── Services
│ │ └── ModuleServiceTest.cs
├── Micser.Setup
│ ├── App.config
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Micser.App
│ ├── Views
│ │ ├── AboutView.xaml.cs
│ │ ├── StatusView.xaml.cs
│ │ ├── MainMenuView.xaml.cs
│ │ ├── SettingsView.xaml.cs
│ │ ├── StartupView.xaml.cs
│ │ ├── ToolBarView.xaml.cs
│ │ ├── MainStatusBarView.xaml.cs
│ │ ├── MainView.xaml.cs
│ │ ├── StartupView.xaml
│ │ ├── MainStatusBarView.xaml
│ │ └── ToolBarView.xaml
│ ├── appsettings.json
│ ├── MicserApplication.xaml
│ ├── Settings
│ │ └── ShellState.cs
│ └── ViewModels
│ │ ├── MainStatusBarViewModel.cs
│ │ ├── LibraryInfo.cs
│ │ ├── ToolBarViewModel.cs
│ │ └── MainMenuViewModel.cs
├── Micser.Vac.Package
│ ├── runsdvui.cmd
│ └── Micser.Vac.Package.vcxproj.filters
├── Directory.Build.props
├── Micser.DriverUtility
│ ├── DriverGlobals.cs
│ └── Micser.DriverUtility.csproj
├── Micser.TestCommon
│ ├── Micser.TestCommon.csproj
│ ├── TestOutputLogger.cs
│ ├── TestOutputHelperTarget.cs
│ └── TestFileManager.cs
├── Micser.Engine.Test
│ ├── Api
│ │ └── StatusProcessorTest.cs
│ └── Micser.Engine.Test.csproj
├── Micser.Engine.Infrastructure
│ ├── DataAccess
│ │ └── DesignTimeFactory.cs
│ ├── IEngineModule.cs
│ ├── Audio
│ │ ├── SampleProcessor.cs
│ │ └── ISampleProcessor.cs
│ ├── Extensions
│ │ └── ContainerProviderExtensions.cs
│ └── Micser.Engine.Infrastructure.csproj
├── Micser.Common.Test
│ ├── Extensions
│ │ ├── RegexExtensionsTest.cs
│ │ └── MathExtensionsTest.cs
│ ├── Updates
│ │ └── GitHubUpdateServiceTest.cs
│ ├── Api
│ │ └── ApiTestHelper.cs
│ └── Micser.Common.Test.csproj
├── Micser.sln.DotSettings
└── Micser.Plugins.Main.Test
│ └── Micser.Plugins.Main.Test.csproj
├── docs
├── ReleaseNotes.md
└── audio
│ └── Reiss-Tutorialondynamicrangecompression.pdf
└── .github
└── workflows
└── ci.yml
/gfx/icoconvert.txt:
--------------------------------------------------------------------------------
1 | https://icoconvert.com/
--------------------------------------------------------------------------------
/src/Micser.Engine/ManualStart.ps1:
--------------------------------------------------------------------------------
1 | & .\Micser.Engine.exe --console
--------------------------------------------------------------------------------
/gfx/logo.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/loreggia/micser/HEAD/gfx/logo.ai
--------------------------------------------------------------------------------
/gfx/logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/loreggia/micser/HEAD/gfx/logo.ico
--------------------------------------------------------------------------------
/gfx/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/loreggia/micser/HEAD/gfx/logo.png
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Themes/Colors.Default.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | Name = Default
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Themes/Colors.Light.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | Name = "Light"
3 | Description = ""
--------------------------------------------------------------------------------
/src/Micser.Vac.Driver/VerifyInf.ps1:
--------------------------------------------------------------------------------
1 | & "C:\Program Files (x86)\Windows Kits\10\Tools\x64\infverif.exe" Micser.Vac.Driver.inf /stampinf
--------------------------------------------------------------------------------
/docs/ReleaseNotes.md:
--------------------------------------------------------------------------------
1 | # 2.1.0 (2020-03-05)
2 | * Use official Prism package for .NET Core
3 | * Dialogs refactoring
4 | * Data access refactoring
5 |
--------------------------------------------------------------------------------
/docs/audio/Reiss-Tutorialondynamicrangecompression.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/loreggia/micser/HEAD/docs/audio/Reiss-Tutorialondynamicrangecompression.pdf
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Themes/Generic.xaml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/src/Micser.Common/Api/DefaultRequestProcessor.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | internal class DefaultRequestProcessor : RequestProcessor
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Navigation/IDestructible.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Navigation
2 | {
3 | public interface IDestructible
4 | {
5 | void Destroy();
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Micser.Common/Api/IApiClientConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | public interface IApiClientConfiguration : IApiConfiguration
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Api/IApiServerConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | public interface IApiServerConfiguration : IApiConfiguration
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure.Test/Test.ini:
--------------------------------------------------------------------------------
1 | [Section1]
2 | Key1 = 1
3 |
4 | Key2=Value2
5 | Key3 = "Text value"
6 |
7 | [Section2]
8 | Key1 = 11
9 | #Key2= 42
10 | Key3 =Null
11 |
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Audio/CompressorType.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Audio
2 | {
3 | public enum CompressorType
4 | {
5 | Upward,
6 | Downward
7 | }
8 | }
--------------------------------------------------------------------------------
/src/Micser.Engine/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "profiles": {
3 | "Micser.Engine": {
4 | "commandName": "Project",
5 | "commandLineArgs": "--console"
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/src/Micser.Engine.Infrastructure.Test/Services/ModuleServiceTest.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Engine.Infrastructure.Test.Services
2 | {
3 | public class ModuleServiceTest
4 | {
5 | // todo
6 | }
7 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Api/SpectrumDataEvent.cs:
--------------------------------------------------------------------------------
1 | using Prism.Events;
2 |
3 | namespace Micser.Plugins.Main.Api
4 | {
5 | public class SpectrumDataEvent : PubSubEvent
6 | {
7 | }
8 | }
--------------------------------------------------------------------------------
/src/Micser.Setup/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/ModuleInfo.Desktop.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System;
4 |
5 | namespace Prism.Modularity
6 | {
7 | [Serializable]
8 | public partial class ModuleInfo
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Micser.Common/DataAccess/IDbContextFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 |
3 | namespace Micser.Common.DataAccess
4 | {
5 | public interface IDbContextFactory
6 | {
7 | DbContext Create();
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/AboutView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class AboutView
4 | {
5 | public AboutView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/StatusView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class StatusView
4 | {
5 | public StatusView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/MainMenuView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class MainMenuView
4 | {
5 | public MainMenuView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/SettingsView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class SettingsView
4 | {
5 | public SettingsView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/StartupView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class StartupView
4 | {
5 | public StartupView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/ToolBarView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class ToolBarView
4 | {
5 | public ToolBarView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Settings/SettingsRegistry.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Settings
2 | {
3 | ///
4 | public class SettingsRegistry : ItemRegistry, ISettingsRegistry
5 | {
6 | }
7 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/ToolBars/ToolBarLabel.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure.ToolBars
2 | {
3 | ///
4 | /// A tool bar text item.
5 | ///
6 | public class ToolBarLabel : ToolBarItem
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/MainStatusBarView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class MainStatusBarView
4 | {
5 | public MainStatusBarView()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/GainWidget.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Widgets
2 | {
3 | public partial class GainWidget
4 | {
5 | public GainWidget()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/PitchWidget.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Widgets
2 | {
3 | public partial class PitchWidget
4 | {
5 | public PitchWidget()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Vac.Package/runsdvui.cmd:
--------------------------------------------------------------------------------
1 | cd /d "C:\Users\lucas\Source\Repos\micser\src\Micser.Vac.Package" &msbuild "Micser.Vac.Package.vcxproj" /t:sdvViewer /p:configuration="Debug" /p:platform="Win32" /p:SolutionDir="C:\Users\lucas\Source\Repos\micser\src"
2 | exit %errorlevel%
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IModuleGroupsCatalog.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 |
3 | namespace Prism.Modularity
4 | {
5 | public interface IModuleGroupsCatalog
6 | {
7 | Collection Items { get; }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/SpectrumWidget.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Widgets
2 | {
3 | public partial class SpectrumWidget
4 | {
5 | public SpectrumWidget()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | 2.1.0
4 | latest
5 |
6 |
7 | Debug;Release;Test
8 |
9 |
--------------------------------------------------------------------------------
/src/Micser.Common/Settings/ISettingsRegistry.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Settings
2 | {
3 | ///
4 | /// Registry containing settings definitions.
5 | ///
6 | public interface ISettingsRegistry : IItemRegistry
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/ToolBars/ToolBarSeparator.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure.ToolBars
2 | {
3 | ///
4 | /// A separator item shown as a line in a tool bar.
5 | ///
6 | public class ToolBarSeparator : ToolBarItem
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/DeviceInputWidget.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Widgets
2 | {
3 | public partial class DeviceInputWidget
4 | {
5 | public DeviceInputWidget()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/DeviceOutputWidget.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Widgets
2 | {
3 | public partial class DeviceOutputWidget
4 | {
5 | public DeviceOutputWidget()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Menu/MenuItemRegistry.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 |
3 | namespace Micser.App.Infrastructure.Menu
4 | {
5 | ///
6 | public class MenuItemRegistry : ItemRegistry, IMenuItemRegistry
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Api/IApiConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | ///
4 | /// Contains configuration properties for the API end points.
5 | ///
6 | public interface IApiConfiguration
7 | {
8 | string PipeName { get; }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "ConnectionStrings": {
3 | "DefaultConnection": "Data Source=|DataDirectory|\\Micser.App.sqlite;"
4 | },
5 | "Update": {
6 | "HttpUpdateSettings": {
7 | "ManifestUrl": "https://micser.lloreggia.ch/update/manifest-x64.json"
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Engine/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "ConnectionStrings": {
3 | "DefaultConnection": "Data Source=|DataDirectory|\\Micser.Engine.sqlite;"
4 | },
5 | "Update": {
6 | "HttpUpdateSettings": {
7 | "ManifestUrl": "https://micser.lloreggia.ch/update/manifest-x64.json"
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Controls/EditableSlider.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Micser.App.Infrastructure.Controls
4 | {
5 | ///
6 | /// A slider control with attached input box.
7 | ///
8 | public class EditableSlider : Slider
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Interaction/MessageBoxView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure.Interaction
2 | {
3 | public partial class MessageBoxView
4 | {
5 | ///
6 | public MessageBoxView()
7 | {
8 | InitializeComponent();
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Themes/ResourceRegistry.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 | using System.Windows;
3 |
4 | namespace Micser.App.Infrastructure.Themes
5 | {
6 | ///
7 | public class ResourceRegistry : ItemRegistry, IResourceRegistry
8 | {
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Api/IMessageSerializer.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Threading.Tasks;
3 |
4 | namespace Micser.Common.Api
5 | {
6 | public interface IMessageSerializer
7 | {
8 | Task DeserializeAsync(Stream stream);
9 |
10 | Task SerializeAsync(Stream stream, T value);
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Menu/IMenuItemRegistry.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 |
3 | namespace Micser.App.Infrastructure.Menu
4 | {
5 | ///
6 | /// Contains main menu item registrations.
7 | ///
8 | public interface IMenuItemRegistry : IItemRegistry
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/IViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace Micser.App.Infrastructure
4 | {
5 | ///
6 | /// View model base interface. Derives from .
7 | ///
8 | public interface IViewModel : INotifyPropertyChanged
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/ButtonResult.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Services.Dialogs
2 | {
3 | public enum ButtonResult
4 | {
5 | Abort = 3,
6 | Cancel = 2,
7 | Ignore = 5,
8 | No = 7,
9 | None = 0,
10 | OK = 1,
11 | Retry = 4,
12 | Yes = 6
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Micser.Common/IIdentifiable.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common
2 | {
3 | ///
4 | /// Describes an object with an ID.
5 | ///
6 | public interface IIdentifiable
7 | {
8 | ///
9 | /// Gets or sets the object's ID.
10 | ///
11 | long Id { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Micser.DriverUtility/DriverGlobals.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.DriverUtility
2 | {
3 | public static class DriverGlobals
4 | {
5 | public const string DeviceSymLink = @"\\.\Micser.Vac.Driver.Device";
6 |
7 | public static class IoControlCodes
8 | {
9 | public const uint Reload = 0x800;
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/DialogParameters.cs:
--------------------------------------------------------------------------------
1 | using Prism.Regions;
2 |
3 | namespace Prism.Services.Dialogs
4 | {
5 | public class DialogParameters : NavigationParameters, IDialogParameters
6 | {
7 | public DialogParameters() : base() { }
8 |
9 | public DialogParameters(string query) : base(query) { }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Converter/BooleanToDoubleConverter.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure.Converter
2 | {
3 | ///
4 | /// A value converter that converts a value to a specific value.
5 | ///
6 | public class BooleanToDoubleConverter : BooleanConverter
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Micser.App/MicserApplication.xaml:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Controls/InfoButton.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls.Primitives;
2 |
3 | namespace Micser.App.Infrastructure.Controls
4 | {
5 | ///
6 | /// A that contains an icon and shows it's content as a popup.
7 | ///
8 | public class InfoButton : ToggleButton
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/IDialogWindowExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Services.Dialogs
2 | {
3 | internal static class IDialogWindowExtensions
4 | {
5 | internal static IDialogAware GetDialogViewModel(this IDialogWindow dialogWindow)
6 | {
7 | return (IDialogAware)dialogWindow.DataContext;
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Micser.Common/MissingConfigurationException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.Common
4 | {
5 | public class MissingConfigurationException : Exception
6 | {
7 | public MissingConfigurationException(string section)
8 | {
9 | Section = section;
10 | }
11 |
12 | public string Section { get; }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Api/SpectrumData.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Api
2 | {
3 | public class SpectrumData
4 | {
5 | public SpectrumValue[] Values { get; set; }
6 |
7 | public struct SpectrumValue
8 | {
9 | public float Frequency { get; set; }
10 | public float Value { get; set; }
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Micser.Engine/Api/StatusProcessor.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 | using Micser.Common.Api;
3 |
4 | namespace Micser.Engine.Api
5 | {
6 | [RequestProcessorName(Globals.ApiResources.Status)]
7 | public class StatusProcessor : RequestProcessor
8 | {
9 | public StatusProcessor()
10 | {
11 | AddAction(null, _ => true);
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Themes/IResourceRegistry.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 | using System.Windows;
3 |
4 | namespace Micser.App.Infrastructure.Themes
5 | {
6 | ///
7 | /// Registry containing WPF resource dictionaries from all modules.
8 | ///
9 | public interface IResourceRegistry : IItemRegistry
10 | {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Micser.App/Settings/ShellState.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace Micser.App.Settings
4 | {
5 | public class ShellState
6 | {
7 | public double Height { get; set; }
8 | public double Left { get; set; }
9 | public WindowState State { get; set; }
10 | public double Top { get; set; }
11 | public double Width { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/ISelectable.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure
2 | {
3 | ///
4 | /// Describes an object that is selectable.
5 | ///
6 | public interface ISelectable
7 | {
8 | ///
9 | /// Gets or sets whether the object is selected.
10 | ///
11 | bool IsSelected { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Widgets/UnsavedAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.App.Infrastructure.Widgets
4 | {
5 | ///
6 | /// Declares that the state of the widget is not automatically saved when this property is changed.
7 | ///
8 | [AttributeUsage(AttributeTargets.Property)]
9 | public class UnsavedAttribute : Attribute
10 | {
11 | }
12 | }
--------------------------------------------------------------------------------
/src/Micser.TestCommon/Micser.TestCommon.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.1
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Micser.Common/Updates/HttpUpdateSettings.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Updates
2 | {
3 | ///
4 | /// Contains settings for the .
5 | ///
6 | public class HttpUpdateSettings
7 | {
8 | ///
9 | /// Gets or sets the URL of the update manifest.
10 | ///
11 | public string ManifestUrl { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Micser.App/Views/MainView.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Views
2 | {
3 | public partial class MainView
4 | {
5 | public MainView()
6 | {
7 | InitializeComponent();
8 |
9 | Loaded += MainView_Loaded;
10 | }
11 |
12 | private void MainView_Loaded(object sender, System.Windows.RoutedEventArgs e)
13 | {
14 | WidgetPanel.Focus();
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Converter/BooleanInvertConverter.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure.Converter
2 | {
3 | ///
4 | /// A value converter that inverses a boolean value.
5 | ///
6 | public class BooleanInvertConverter : BooleanConverter
7 | {
8 | ///
9 | public BooleanInvertConverter()
10 | : base(false, true)
11 | {
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/IDialogResult.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Services.Dialogs
2 | {
3 | public interface IDialogResult
4 | {
5 | ///
6 | /// The parameters from the dialog
7 | ///
8 | IDialogParameters Parameters { get; }
9 |
10 | ///
11 | /// The result of the dialog.
12 | ///
13 | ButtonResult Result { get; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/LoopbackDeviceInputViewModel.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common.Devices;
2 | using Micser.Plugins.Main.Modules;
3 | using System;
4 |
5 | namespace Micser.Plugins.Main.Widgets
6 | {
7 | public class LoopbackDeviceInputViewModel : DeviceInputViewModel
8 | {
9 | public override Type ModuleType => typeof(LoopbackDeviceInputModule);
10 |
11 | protected override DeviceType DeviceType => DeviceType.Output;
12 | }
13 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Ioc/IContainerProvider.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Prism.Ioc
4 | {
5 | public interface IContainerProvider
6 | {
7 | object Resolve(Type type);
8 |
9 | object Resolve(Type type, params (Type Type, object Instance)[] parameters);
10 |
11 | object Resolve(Type type, string name);
12 |
13 | object Resolve(Type type, string name, params (Type Type, object Instance)[] parameters);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IModuleInfoGroup.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 |
4 | namespace Prism.Modularity
5 | {
6 | // IList must be supported in Silverlight 2 to be able to add items from XAML
7 | public interface IModuleInfoGroup : IModuleCatalogItem, IList, IList
8 | {
9 | InitializationMode InitializationMode { get; set; }
10 |
11 | string Ref { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Micser.Common/Api/ApiMessage.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | public abstract class ApiMessage
4 | {
5 | public ApiMessage()
6 | {
7 | }
8 |
9 | public ApiMessage(object content)
10 | {
11 | Content = content;
12 | }
13 |
14 | ///
15 | /// Gets or sets the message content.
16 | ///
17 | public object Content { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Widgets/AudioWidgetControls.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure.Widgets
2 | {
3 | ///
4 | /// Control containing the default control elements for an .
5 | ///
6 | public partial class AudioWidgetControls
7 | {
8 | ///
9 | public AudioWidgetControls()
10 | {
11 | InitializeComponent();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.Common/DisposableBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.Common
4 | {
5 | public abstract class DisposableBase : IDisposable
6 | {
7 | ~DisposableBase()
8 | {
9 | Dispose(false);
10 | }
11 |
12 | public void Dispose()
13 | {
14 | Dispose(true);
15 | GC.SuppressFinalize(this);
16 | }
17 |
18 | protected abstract void Dispose(bool disposing);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Extensions/DbContextFactoryExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Micser.Common.DataAccess;
3 |
4 | namespace Micser.Common.Extensions
5 | {
6 | public static class DbContextFactoryExtensions
7 | {
8 | public static TDbContext Create(this IDbContextFactory factory)
9 | where TDbContext : DbContext
10 | {
11 | return (TDbContext)factory.Create();
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/DialogWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace Prism.Services.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for DialogWindow.xaml
7 | ///
8 | public partial class DialogWindow : Window, IDialogWindow
9 | {
10 | public IDialogResult Result { get; set; }
11 |
12 | public DialogWindow()
13 | {
14 | InitializeComponent();
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Micser.Common/Api/ApiConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | ///
4 | public class ApiConfiguration : IApiServerConfiguration, IApiClientConfiguration
5 | {
6 | public ApiConfiguration()
7 | {
8 | }
9 |
10 | public ApiConfiguration(string pipeName)
11 | {
12 | PipeName = pipeName;
13 | }
14 |
15 | public string PipeName { get; set; }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Devices/DeviceType.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Devices
2 | {
3 | ///
4 | /// The type of an audio device.
5 | ///
6 | public enum DeviceType
7 | {
8 | ///
9 | /// An input/capture device (i.e. microphone).
10 | ///
11 | Input,
12 |
13 | ///
14 | /// An output/render device (i.e. speakers).
15 | ///
16 | Output
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Modules/GainModule.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common.Modules;
2 | using Micser.Engine.Infrastructure.Audio;
3 | using Micser.Plugins.Main.Audio;
4 |
5 | namespace Micser.Plugins.Main.Modules
6 | {
7 | public class GainModule : AudioModule
8 | {
9 | public GainModule()
10 | {
11 | AddSampleProcessor(new GainSampleProcessor(this));
12 | }
13 |
14 | [SaveState(0f)]
15 | public float Gain { get; set; }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IModuleInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 |
3 | namespace Prism.Modularity
4 | {
5 | public interface IModuleInfo : IModuleCatalogItem
6 | {
7 | Collection DependsOn { get; set; }
8 | InitializationMode InitializationMode { get; set; }
9 | string ModuleName { get; set; }
10 | string ModuleType { get; set; }
11 | string Ref { get; set; }
12 | ModuleState State { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Interactivity/DefaultPopupWindows/DefaultWindow.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Regions/SyncActiveStateAttribute.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 |
8 | namespace Prism.Regions
9 | {
10 | ///
11 | /// Defines that a view is synchronized with its parent view's Active state.
12 | ///
13 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
14 | public sealed class SyncActiveStateAttribute : Attribute
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/ToolBars/ToolBarDescription.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 |
3 | namespace Micser.App.Infrastructure.ToolBars
4 | {
5 | ///
6 | /// A tool bar subregistry containing its s.
7 | ///
8 | public class ToolBarDescription : ItemRegistry
9 | {
10 | ///
11 | /// Gets or sets the name of the tool bar.
12 | ///
13 | public string Name { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Widgets/IWidgetRegistry.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Micser.App.Infrastructure.Widgets
4 | {
5 | ///
6 | /// Registry containing the widget descriptions of all loaded plugins.
7 | ///
8 | public interface IWidgetRegistry
9 | {
10 | ///
11 | /// Gets the descriptions for all available widgets.
12 | ///
13 | IEnumerable Widgets { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Settings/SettingValueDto.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Settings
2 | {
3 | ///
4 | /// DTO for transferring setting values via API.
5 | ///
6 | public sealed class SettingValueDto
7 | {
8 | ///
9 | /// The setting key.
10 | ///
11 | public string Key { get; set; }
12 |
13 | ///
14 | /// The setting value.
15 | ///
16 | public object Value { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.Vac.Package/Micser.Vac.Package.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {8E41214B-6785-4CFE-B992-037D68949A14}
6 | inf;inv;inx;mof;mc;
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IModuleInitializer.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | namespace Prism.Modularity
4 | {
5 | ///
6 | /// Declares a service which initializes the modules into the application.
7 | ///
8 | public interface IModuleInitializer
9 | {
10 | ///
11 | /// Initializes the specified module.
12 | ///
13 | /// The module to initialize
14 | void Initialize(IModuleInfo moduleInfo);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/ToolBars/ToolBarButton.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 |
3 | namespace Micser.App.Infrastructure.ToolBars
4 | {
5 | ///
6 | /// Describes a tool bar button that executes an when clicked.
7 | ///
8 | public class ToolBarButton : ToolBarItem
9 | {
10 | ///
11 | /// Gets or sets a command that is executed when the button is clicked.
12 | ///
13 | public ICommand Command { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IConfigurationStore.Desktop.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | namespace Prism.Modularity
4 | {
5 | ///
6 | /// Defines a store for the module metadata.
7 | ///
8 | public interface IConfigurationStore
9 | {
10 | ///
11 | /// Gets the module configuration data.
12 | ///
13 | /// A instance.
14 | ModulesConfigurationSection RetrieveModuleConfigurationSection();
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/DialogWindow.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/Micser.Common/DataAccess/DbContextFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using System;
3 |
4 | namespace Micser.Common.DataAccess
5 | {
6 | public class DbContextFactory : IDbContextFactory
7 | {
8 | private readonly Func _factoryFunc;
9 |
10 | public DbContextFactory(Func factoryFunc)
11 | {
12 | _factoryFunc = factoryFunc;
13 | }
14 |
15 | public DbContext Create()
16 | {
17 | return _factoryFunc();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Audio/FilterDescription.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Plugins.Main.Audio
2 | {
3 | public class FilterDescription
4 | {
5 | public FilterDescription()
6 | {
7 | Frequency = 1000;
8 | BandWidth = 18;
9 | PeakGainDb = 0;
10 | Ratio = 1;
11 | }
12 |
13 | public double BandWidth { get; set; }
14 | public double Frequency { get; set; }
15 | public double PeakGainDb { get; set; }
16 | public double Ratio { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IAssemblyResolver.Desktop.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | namespace Prism.Modularity
4 | {
5 | ///
6 | /// Interface for classes that are responsible for resolving and loading assembly files.
7 | ///
8 | public interface IAssemblyResolver
9 | {
10 | ///
11 | /// Load an assembly when it's required by the application.
12 | ///
13 | ///
14 | void LoadAssemblyFrom(string assemblyFilePath);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IModuleCatalogItem.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | namespace Prism.Modularity
4 | {
5 | ///
6 | /// Marker interface that allows both s and s to be
7 | /// added to the from code and XAML.
8 | ///
9 | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1040:AvoidEmptyInterfaces", Justification = "This is a marker interface")]
10 | public interface IModuleCatalogItem
11 | {
12 |
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Modules/EqualizerModule.cs:
--------------------------------------------------------------------------------
1 | using Micser.Engine.Infrastructure.Audio;
2 | using Micser.Plugins.Main.Audio;
3 | using System.Collections.Generic;
4 |
5 | namespace Micser.Plugins.Main.Modules
6 | {
7 | public class EqualizerModule : AudioModule
8 | {
9 | protected EqualizerModule()
10 | {
11 | Filters = new List();
12 |
13 | AddSampleProcessor(new EqualizerSampleProcessor(this));
14 | }
15 |
16 | public List Filters { get; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Regions/IRegionBehavior.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | namespace Prism.Regions
4 | {
5 | ///
6 | /// Interface for allowing extensible behavior on regions.
7 | ///
8 | public interface IRegionBehavior
9 | {
10 | ///
11 | /// The region that this behavior is extending.
12 | ///
13 | IRegion Region { get; set; }
14 |
15 | ///
16 | /// Attaches the behavior to the specified region.
17 | ///
18 | void Attach();
19 |
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Micser.TestCommon/TestOutputLogger.cs:
--------------------------------------------------------------------------------
1 | using NLog;
2 | using NLog.Config;
3 | using Xunit.Abstractions;
4 |
5 | namespace Micser.TestCommon
6 | {
7 | public static class TestOutputLogger
8 | {
9 | public static void Configure(ITestOutputHelper testOutputHelper)
10 | {
11 | var config = new LoggingConfiguration();
12 | config.AddTarget("Test", new TestOutputHelperTarget(testOutputHelper));
13 | config.AddRuleForAllLevels("Test");
14 | LogManager.Configuration = config;
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Events/IDelegateReference.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | using System;
5 |
6 | namespace Prism.Events
7 | {
8 | ///
9 | /// Represents a reference to a .
10 | ///
11 | public interface IDelegateReference
12 | {
13 | ///
14 | /// Gets the referenced object.
15 | ///
16 | /// A instance if the target is valid; otherwise .
17 | Delegate Target { get; }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Modules/ModulesExportDto.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Modules
2 | {
3 | ///
4 | /// DTO used for serializing module data.
5 | ///
6 | public class ModulesExportDto
7 | {
8 | ///
9 | /// Gets or sets the connections between the modules.
10 | ///
11 | public ModuleConnectionDto[] Connections { get; set; }
12 |
13 | ///
14 | /// Gets or sets the modules.
15 | ///
16 | public ModuleDto[] Modules { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Api/IRequestProcessorFactory.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.Api
2 | {
3 | ///
4 | /// Provides functionality to create a request processor for an incoming request.
5 | ///
6 | public interface IRequestProcessorFactory
7 | {
8 | ///
9 | /// Creates a request processor that was registered using the attribute.
10 | ///
11 | /// The processor name.
12 | IRequestProcessor Create(string name);
13 | }
14 | }
--------------------------------------------------------------------------------
/src/Micser.Vac.Driver/kshelper.h:
--------------------------------------------------------------------------------
1 | /*
2 | Module Name:
3 | kshelper.h
4 |
5 | Abstract:
6 | Helper functions for msvad
7 | */
8 | #ifndef __KSHELPER_H_
9 | #define __KSHELPER_H_
10 |
11 | #include
12 | #include
13 |
14 | PWAVEFORMATEX GetWaveFormatEx(IN PKSDATAFORMAT pDataFormat);
15 |
16 | NTSTATUS PropertyHandler_BasicSupport(IN PPCPROPERTY_REQUEST PropertyRequest, IN ULONG Flags, IN DWORD PropTypeSetId);
17 |
18 | NTSTATUS ValidatePropertyParams(IN PPCPROPERTY_REQUEST PropertyRequest, IN ULONG cbValueSize, IN ULONG cbInstanceSize = 0);
19 | #endif
20 |
--------------------------------------------------------------------------------
/src/Micser.Common/IItemRegistry.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Micser.Common
4 | {
5 | ///
6 | /// Generic item registry container.
7 | ///
8 | public interface IItemRegistry
9 | {
10 | ///
11 | /// Gets the items stored in this registry.
12 | ///
13 | IEnumerable Items { get; }
14 |
15 | ///
16 | /// Adds a new item to this registry. Does not check for duplicates.
17 | ///
18 | void Add(T item);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Engine.Test/Api/StatusProcessorTest.cs:
--------------------------------------------------------------------------------
1 | using Micser.Engine.Api;
2 | using System.Threading.Tasks;
3 | using Xunit;
4 |
5 | namespace Micser.Engine.Test.Api
6 | {
7 | public class StatusProcessorTest
8 | {
9 | [Fact]
10 | public async Task GetStatus()
11 | {
12 | var statusProcessor = new StatusProcessor();
13 |
14 | var result = await statusProcessor.ProcessAsync(null, null).ConfigureAwait(false);
15 |
16 | Assert.NotNull(result);
17 | Assert.True(result.IsSuccess);
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Settings/ISettingHandlerFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.Common.Settings
4 | {
5 | ///
6 | /// A factory for creating instances.
7 | ///
8 | public interface ISettingHandlerFactory
9 | {
10 | ///
11 | /// Creates a setting handler of the specified type.
12 | ///
13 | /// The type of the setting handler. Has to implement .
14 | ISettingHandler Create(Type type);
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Regions/IJournalAware.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Regions
2 | {
3 | ///
4 | /// Provides a way for objects involved in navigation to opt-out of being added to the IRegionNavigationJournal backstack.
5 | ///
6 | public interface IJournalAware
7 | {
8 | ///
9 | /// Determines if the current obect is going to be added to the navigation journal's backstack.
10 | ///
11 | /// True, add to backstack. False, remove from backstack.
12 | bool PersistInHistory();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Micser.Common/DataAccess/Entities/Entity.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 | using System.ComponentModel.DataAnnotations.Schema;
3 |
4 | namespace Micser.Common.DataAccess.Entities
5 | {
6 | ///
7 | /// Base class for persisted model objects.
8 | ///
9 | public class Entity : IIdentifiable
10 | {
11 | ///
12 | /// Gets or sets the ID key property.
13 | ///
14 | [Key]
15 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
16 | public long Id { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Interactivity/InteractionRequest/IConfirmation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Prism.Interactivity.InteractionRequest
4 | {
5 | ///
6 | /// Represents an interaction request used for confirmations.
7 | ///
8 | [Obsolete("Please use the new IDialogService for an improved dialog experience.")]
9 | public interface IConfirmation : INotification
10 | {
11 | ///
12 | /// Gets or sets a value indicating that the confirmation is confirmed.
13 | ///
14 | bool Confirmed { get; set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Ioc/PrismIocExtensions.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Unity;
3 |
4 | namespace Prism.Unity
5 | {
6 | public static class PrismIocExtensions
7 | {
8 | public static IUnityContainer GetContainer(this IContainerProvider containerProvider)
9 | {
10 | return ((IContainerExtension)containerProvider).Instance;
11 | }
12 |
13 | public static IUnityContainer GetContainer(this IContainerRegistry containerRegistry)
14 | {
15 | return ((IContainerExtension)containerRegistry).Instance;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Updates/GitHub/Asset.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 |
3 | namespace Micser.Common.Updates.GitHub
4 | {
5 | public class Asset
6 | {
7 | [JsonProperty("content_type")]
8 | public string ContentType { get; set; }
9 |
10 | [JsonProperty("browser_download_url")]
11 | public string DownloadUrl { get; set; }
12 |
13 | [JsonProperty("id")]
14 | public long Id { get; set; }
15 |
16 | [JsonProperty("name")]
17 | public string Name { get; set; }
18 |
19 | [JsonProperty("state")]
20 | public string State { get; set; }
21 | }
22 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/DataAccess/DesignTimeFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.EntityFrameworkCore.Design;
3 |
4 | namespace Micser.App.Infrastructure.DataAccess
5 | {
6 | // ReSharper disable once UnusedMember.Global
7 | public class DesignTimeFactory : IDesignTimeDbContextFactory
8 | {
9 | public AppDbContext CreateDbContext(string[] args)
10 | {
11 | var builder = new DbContextOptionsBuilder();
12 | builder.UseSqlite("DesignTimeAppDb.db");
13 | return new AppDbContext(builder.Options);
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/IApplicationStateService.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.App.Infrastructure
2 | {
3 | ///
4 | /// Provides global application state information.
5 | ///
6 | public interface IApplicationStateService
7 | {
8 | ///
9 | /// Gets a value that indicates whether the program finished loading all available modules.
10 | ///
11 | bool ModulesLoaded { get; }
12 |
13 | ///
14 | /// Initialized the service and registers it's event handlers.
15 | ///
16 | void Initialize();
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/InitializationMode.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Modularity
2 | {
3 | ///
4 | /// Specifies on which stage the Module group will be initialized.
5 | ///
6 | public enum InitializationMode
7 | {
8 | ///
9 | /// The module will be initialized when it is available on application start-up.
10 | ///
11 | WhenAvailable,
12 |
13 | ///
14 | /// The module will be initialized when requested, and not automatically on application start-up.
15 | ///
16 | OnDemand
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/IDialogParameters.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Prism.Services.Dialogs
4 | {
5 | //TODO: this can eventually be replaced with INavigationParameters
6 | public interface IDialogParameters
7 | {
8 | void Add(string key, object value);
9 |
10 | bool ContainsKey(string key);
11 |
12 | int Count { get; }
13 |
14 | IEnumerable Keys { get; }
15 |
16 | T GetValue(string key);
17 |
18 | IEnumerable GetValues(string key);
19 |
20 | bool TryGetValue(string key, out T value);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Micser.Common/Extensions/ServiceExtensions.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common.Settings;
2 |
3 | namespace Micser.Common.Extensions
4 | {
5 | ///
6 | /// Provides extension methods for services.
7 | ///
8 | public static class ServiceExtensions
9 | {
10 | ///
11 | /// Gets the value for the specified setting converted to type .
12 | ///
13 | public static T GetSetting(this ISettingsService settingsService, string key)
14 | {
15 | return settingsService.GetSetting(key).ToType();
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Ioc/IContainerExtension.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Ioc
2 | {
3 | public interface IContainerExtension : IContainerExtension
4 | {
5 | ///
6 | /// The instance of the wrapped container
7 | ///
8 | TContainer Instance { get; }
9 | }
10 |
11 | public interface IContainerExtension : IContainerProvider, IContainerRegistry
12 | {
13 | ///
14 | /// Used to perform any final steps for configuring the extension that may be required by the container.
15 | ///
16 | void FinalizeExtension();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Micser.Engine.Infrastructure/DataAccess/DesignTimeFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.EntityFrameworkCore.Design;
3 |
4 | namespace Micser.Engine.Infrastructure.DataAccess
5 | {
6 | // ReSharper disable once UnusedMember.Global
7 | public class DesignTimeFactory : IDesignTimeDbContextFactory
8 | {
9 | public EngineDbContext CreateDbContext(string[] args)
10 | {
11 | var builder = new DbContextOptionsBuilder();
12 | builder.UseSqlite("DesignTimeEngineDb.db");
13 | return new EngineDbContext(builder.Options);
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Micser.DriverUtility/Micser.DriverUtility.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | netcoreapp3.1
6 | 8
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/Micser.Common/DependencyOverride.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.Common
4 | {
5 | public class DependencyOverride
6 | {
7 | public DependencyOverride(Type dependencyType, object instance)
8 | {
9 | DependencyType = dependencyType;
10 | Instance = instance;
11 | }
12 |
13 | public Type DependencyType { get; }
14 | public object Instance { get; }
15 | }
16 |
17 | public class DependencyOverride : DependencyOverride
18 | {
19 | public DependencyOverride(T instance)
20 | : base(typeof(T), instance)
21 | {
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/Micser.Setup/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: AssemblyTitle("Micser.Setup")]
5 | [assembly: AssemblyDescription("")]
6 | [assembly: AssemblyConfiguration("")]
7 | [assembly: AssemblyTrademark("")]
8 | [assembly: ComVisible(false)]
9 | [assembly: Guid("c9a243e5-6443-4a00-acac-c20a61286264")]
10 | [assembly: AssemblyProduct("Micser Setup")]
11 | [assembly: AssemblyCompany("Lucas Loreggia")]
12 | [assembly: AssemblyCopyright("Copyright © Lucas Loreggia 2019")]
13 | [assembly: AssemblyCulture("")]
14 | [assembly: AssemblyVersion("1.0.*")]
15 | [assembly: AssemblyFileVersion("1.0.0.0")]
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/DeviceInputViewModel.cs:
--------------------------------------------------------------------------------
1 | using Micser.App.Infrastructure.Widgets;
2 | using Micser.Common.Devices;
3 | using Micser.Plugins.Main.Modules;
4 | using System;
5 |
6 | namespace Micser.Plugins.Main.Widgets
7 | {
8 | public class DeviceInputViewModel : DeviceWidgetViewModel
9 | {
10 | public const string OutputConnectorName = "Output1";
11 |
12 | public DeviceInputViewModel()
13 | {
14 | AddOutput(OutputConnectorName);
15 | }
16 |
17 | public override Type ModuleType => typeof(DeviceInputModule);
18 | protected override DeviceType DeviceType => DeviceType.Input;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/DeviceOutputViewModel.cs:
--------------------------------------------------------------------------------
1 | using Micser.App.Infrastructure.Widgets;
2 | using Micser.Common.Devices;
3 | using Micser.Plugins.Main.Modules;
4 | using System;
5 |
6 | namespace Micser.Plugins.Main.Widgets
7 | {
8 | public class DeviceOutputViewModel : DeviceWidgetViewModel
9 | {
10 | public const string InputConnectorName = "Input1";
11 |
12 | public DeviceOutputViewModel()
13 | {
14 | AddInput(InputConnectorName);
15 | }
16 |
17 | public override Type ModuleType => typeof(DeviceOutputModule);
18 |
19 | protected override DeviceType DeviceType => DeviceType.Output;
20 | }
21 | }
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: micser CI
2 |
3 | on: [push]
4 |
5 | jobs:
6 | build:
7 | runs-on: windows-latest
8 |
9 | steps:
10 | - name: Checkout
11 | uses: actions/checkout@v2
12 |
13 | - name: Setup .NET Core
14 | uses: actions/setup-dotnet@v1
15 | with:
16 | dotnet-version: 3.1.100
17 |
18 | - name: Setup Build
19 | uses: warrenbuckley/Setup-MSBuild@v1
20 |
21 | - name: Build
22 | working-directory: src
23 | run: msbuild Micser.sln /p:Platform=x64 /p:Configuration=Debug /restore
24 |
25 | - name: Test
26 | working-directory: src
27 | run: dotnet test Micser.sln --configuration Test
28 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Regions/IRegionNavigationJournalEntry.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System;
4 | namespace Prism.Regions
5 | {
6 | ///
7 | /// An entry in an IRegionNavigationJournal representing the URI navigated to.
8 | ///
9 | public interface IRegionNavigationJournalEntry
10 | {
11 | ///
12 | /// Gets or sets the URI.
13 | ///
14 | /// The URI.
15 | Uri Uri { get; set; }
16 |
17 | ///
18 | /// Gets or sets the NavigationParameters instance.
19 | ///
20 | NavigationParameters Parameters { get; set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Logging/ILoggerFacade.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | namespace Prism.Logging
5 | {
6 | ///
7 | /// Defines a simple logger façade to be used by the Prism Library.
8 | ///
9 | public interface ILoggerFacade
10 | {
11 | ///
12 | /// Write a new log entry with the specified category and priority.
13 | ///
14 | /// Message body to log.
15 | /// Category of the entry.
16 | /// The priority of the entry.
17 | void Log(string message, Category category, Priority priority);
18 | }
19 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/IModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 |
3 | namespace Prism.Modularity
4 | {
5 | ///
6 | /// Defines the contract for the modules deployed in the application.
7 | ///
8 | public interface IModule
9 | {
10 | ///
11 | /// Used to register types with the container that will be used by your application.
12 | ///
13 | void RegisterTypes(IContainerRegistry containerRegistry);
14 |
15 | ///
16 | /// Notifies the module that it has been initialized.
17 | ///
18 | void OnInitialized(IContainerProvider containerProvider);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Settings/SettingHandlerFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.Common.Settings
4 | {
5 | ///
6 | public class SettingHandlerFactory : ISettingHandlerFactory
7 | {
8 | private readonly Func _factoryMethod;
9 |
10 | ///
11 | public SettingHandlerFactory(Func factoryMethod)
12 | {
13 | _factoryMethod = factoryMethod;
14 | }
15 |
16 | ///
17 | public ISettingHandler Create(Type type)
18 | {
19 | return _factoryMethod(type);
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Regions/IRegionMemberLifetime.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using Prism.Regions.Behaviors;
4 |
5 | namespace Prism.Regions
6 | {
7 | ///
8 | /// When implemented, allows an instance placed in a
9 | /// that uses a to indicate
10 | /// it should be removed when it transitions from an activated to deactived state.
11 | ///
12 | public interface IRegionMemberLifetime
13 | {
14 | ///
15 | /// Gets a value indicating whether this instance should be kept-alive upon deactivation.
16 | ///
17 | bool KeepAlive { get; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Widgets/WidgetRegistry.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 | using Micser.Common.Extensions;
3 | using System.Collections.Generic;
4 |
5 | namespace Micser.App.Infrastructure.Widgets
6 | {
7 | ///
8 | public class WidgetRegistry : IWidgetRegistry
9 | {
10 | private readonly IContainerProvider _container;
11 |
12 | ///
13 | public WidgetRegistry(IContainerProvider container)
14 | {
15 | _container = container;
16 | }
17 |
18 | ///
19 | public IEnumerable Widgets => _container.ResolveAll();
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/DialogResult.cs:
--------------------------------------------------------------------------------
1 | namespace Prism.Services.Dialogs
2 | {
3 | public class DialogResult : IDialogResult
4 | {
5 | public IDialogParameters Parameters { get; private set; } = new DialogParameters();
6 |
7 | public ButtonResult Result { get; private set; } = ButtonResult.None;
8 |
9 | public DialogResult() { }
10 |
11 | public DialogResult(ButtonResult result)
12 | {
13 | Result = result;
14 | }
15 |
16 | public DialogResult(ButtonResult result, IDialogParameters parameters)
17 | {
18 | Result = result;
19 | Parameters = parameters;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Micser.TestCommon/TestOutputHelperTarget.cs:
--------------------------------------------------------------------------------
1 | using NLog;
2 | using NLog.Targets;
3 | using Xunit.Abstractions;
4 |
5 | namespace Micser.TestCommon
6 | {
7 | [Target("Test")]
8 | public class TestOutputHelperTarget : TargetWithLayout
9 | {
10 | private readonly ITestOutputHelper _testOutputHelper;
11 |
12 | public TestOutputHelperTarget(ITestOutputHelper testOutputHelper)
13 | {
14 | _testOutputHelper = testOutputHelper;
15 | }
16 |
17 | protected override void Write(LogEventInfo logEvent)
18 | {
19 | var message = Layout.Render(logEvent);
20 | _testOutputHelper.WriteLine(message);
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Widgets/IWidgetFactory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Micser.App.Infrastructure.Widgets
4 | {
5 | ///
6 | /// Provides methods to instantiate widgets and widget view models.
7 | ///
8 | public interface IWidgetFactory
9 | {
10 | ///
11 | /// Creates a instance of the specified type.
12 | ///
13 | WidgetViewModel CreateViewModel(Type widgetVmType);
14 |
15 | ///
16 | /// Creates a corresponding widget view for the specified view model.
17 | ///
18 | Widget CreateWidget(WidgetViewModel viewModel);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Api/IApiServer.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace Micser.Common.Api
4 | {
5 | ///
6 | /// An API endpoint that acts as the server when establishing a connection.
7 | ///
8 | public interface IApiServer
9 | {
10 | ///
11 | /// Gets the current server state.
12 | ///
13 | ServerState State { get; }
14 |
15 | ///
16 | /// Starts listening for connections.
17 | ///
18 | Task StartAsync();
19 |
20 | ///
21 | /// Stops listening for connections.
22 | ///
23 | void Stop();
24 | }
25 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Logging/Category.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | namespace Prism.Logging
5 | {
6 | ///
7 | /// Defines values for the categories used by .
8 | ///
9 | public enum Category
10 | {
11 | ///
12 | /// Debug category.
13 | ///
14 | Debug,
15 |
16 | ///
17 | /// Exception category.
18 | ///
19 | Exception,
20 |
21 | ///
22 | /// Informational category.
23 | ///
24 | Info,
25 |
26 | ///
27 | /// Warning category.
28 | ///
29 | Warn
30 | }
31 | }
--------------------------------------------------------------------------------
/src/Micser.Common/Updates/GitHub/Release.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 |
4 | namespace Micser.Common.Updates.GitHub
5 | {
6 | public class Release
7 | {
8 | [JsonProperty("assets")]
9 | public Asset[] Assets { get; set; }
10 |
11 | [JsonProperty("body")]
12 | public string Body { get; set; }
13 |
14 | [JsonProperty("html_url")]
15 | public string HtmlUrl { get; set; }
16 |
17 | [JsonProperty("id")]
18 | public long Id { get; set; }
19 |
20 | [JsonProperty("name")]
21 | public string Name { get; set; }
22 |
23 | [JsonProperty("published_at")]
24 | public DateTime PublishedAt { get; set; }
25 | }
26 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Modularity/ConfigurationStore.Desktop.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System.Configuration;
4 |
5 | namespace Prism.Modularity
6 | {
7 | ///
8 | /// Defines a store for the module metadata.
9 | ///
10 | public class ConfigurationStore : IConfigurationStore
11 | {
12 | ///
13 | /// Gets the module configuration data.
14 | ///
15 | /// A instance.
16 | public ModulesConfigurationSection RetrieveModuleConfigurationSection()
17 | {
18 | return ConfigurationManager.GetSection("modules") as ModulesConfigurationSection;
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Services/Dialogs/IDialogWindow.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Windows;
4 |
5 | namespace Prism.Services.Dialogs
6 | {
7 | public interface IDialogWindow
8 | {
9 | object Content { get; set; }
10 |
11 | void Close();
12 |
13 | Window Owner { get; set; }
14 |
15 | void Show();
16 |
17 | bool? ShowDialog();
18 |
19 | object DataContext { get; set; }
20 |
21 | event RoutedEventHandler Loaded;
22 |
23 | event EventHandler Closed;
24 |
25 | event CancelEventHandler Closing;
26 |
27 | IDialogResult Result { get; set; }
28 |
29 | Style Style { get; set; }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Logging/Priority.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | namespace Prism.Logging
5 | {
6 | ///
7 | /// Defines values for the priorities used by .
8 | ///
9 | public enum Priority
10 | {
11 | ///
12 | /// No priority specified.
13 | ///
14 | None = 0,
15 |
16 | ///
17 | /// High priority entry.
18 | ///
19 | High = 1,
20 |
21 | ///
22 | /// Medium priority entry.
23 | ///
24 | Medium,
25 |
26 | ///
27 | /// Low priority entry.
28 | ///
29 | Low
30 | }
31 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Interactivity/InteractionRequest/INotification.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Prism.Interactivity.InteractionRequest
4 | {
5 | ///
6 | /// Represents an interaction request used for notifications.
7 | ///
8 | [Obsolete("Please use the new IDialogService for an improved dialog experience.")]
9 | public interface INotification
10 | {
11 | ///
12 | /// Gets or sets the title to use for the notification.
13 | ///
14 | string Title { get; set; }
15 |
16 | ///
17 | /// Gets or sets the content of the notification.
18 | ///
19 | object Content { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Interactivity/InteractionRequest/Confirmation.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace Prism.Interactivity.InteractionRequest
10 | {
11 | ///
12 | /// Basic implementation of .
13 | ///
14 | [Obsolete("Please use the new IDialogService for an improved dialog experience.")]
15 | public class Confirmation : Notification, IConfirmation
16 | {
17 | ///
18 | /// Gets or sets a value indicating that the confirmation is confirmed.
19 | ///
20 | public bool Confirmed { get; set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Ioc/IContainerRegistry.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Prism.Ioc
4 | {
5 | public interface IContainerRegistry
6 | {
7 | IContainerRegistry RegisterInstance(Type type, object instance);
8 |
9 | IContainerRegistry RegisterInstance(Type type, object instance, string name);
10 |
11 | IContainerRegistry RegisterSingleton(Type from, Type to);
12 |
13 | IContainerRegistry RegisterSingleton(Type from, Type to, string name);
14 |
15 | IContainerRegistry Register(Type from, Type to);
16 |
17 | IContainerRegistry Register(Type from, Type to, string name);
18 |
19 | bool IsRegistered(Type type);
20 |
21 | bool IsRegistered(Type type, string name);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/IAppModule.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 |
3 | namespace Micser.App.Infrastructure
4 | {
5 | ///
6 | /// Base interface for all UI modules.
7 | ///
8 | public interface IAppModule
9 | {
10 | ///
11 | /// Initializes the module (after all modules have registered their types in the DI container).
12 | ///
13 | /// The fully registered container.
14 | void OnInitialized(IContainerProvider container);
15 |
16 | ///
17 | /// Lets the module register its types in the DI container.
18 | ///
19 | void RegisterTypes(IContainerProvider container);
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Micser.Common.Test/Extensions/RegexExtensionsTest.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common.Extensions;
2 | using System.Text.RegularExpressions;
3 | using Xunit;
4 |
5 | namespace Micser.Common.Test.Extensions
6 | {
7 | public class RegexExtensionsTest
8 | {
9 | [Fact]
10 | public void ReplaceGroup()
11 | {
12 | var regex = new Regex(@"Assembly(File)?Version\s*\(\s*""(?[^""]+)""\s*\)");
13 | var input = @"
14 | [assembly: AssemblyVersion(""1.0.0.0"")]
15 | [assembly: AssemblyFileVersion(""1.0.0.0"")]
16 | ";
17 |
18 | var output = regex.ReplaceGroup(input, "version", "1.2.3.4");
19 |
20 | Assert.Contains("1.2.3.4", output);
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/Micser.Common/DataAccess/Entities/SettingValue.cs:
--------------------------------------------------------------------------------
1 | namespace Micser.Common.DataAccess.Entities
2 | {
3 | ///
4 | /// Contains a JSON-serialized setting value.
5 | ///
6 | public class SettingValue : Entity
7 | {
8 | ///
9 | /// Gets or sets the unique setting key name.
10 | ///
11 | public string Key { get; set; }
12 |
13 | ///
14 | /// Gets or sets the serialized value.
15 | ///
16 | public string ValueJson { get; set; }
17 |
18 | ///
19 | /// Gets or sets the assembly-qualified type name of the value object.
20 | ///
21 | public string ValueType { get; set; }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/Micser.Engine.Infrastructure/IEngineModule.cs:
--------------------------------------------------------------------------------
1 | using Micser.Common;
2 |
3 | namespace Micser.Engine.Infrastructure
4 | {
5 | ///
6 | /// Base interface for engine plugins.
7 | ///
8 | public interface IEngineModule
9 | {
10 | ///
11 | /// Initializes the module (after all modules have registered their types in the DI container).
12 | ///
13 | /// The fully registered container.
14 | void OnInitialized(IContainerProvider container);
15 |
16 | ///
17 | /// Lets the module register its types in the DI container.
18 | ///
19 | void RegisterTypes(IContainerProvider container);
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Micser.Plugins.Main/Widgets/GainViewModel.cs:
--------------------------------------------------------------------------------
1 | using Micser.App.Infrastructure.Widgets;
2 | using Micser.Common.Modules;
3 | using Micser.Plugins.Main.Modules;
4 | using System;
5 |
6 | namespace Micser.Plugins.Main.Widgets
7 | {
8 | public class GainViewModel : AudioWidgetViewModel
9 | {
10 | private float _gain;
11 |
12 | public GainViewModel()
13 | {
14 | AddInput("Input1");
15 | AddOutput("Output1");
16 | Volume = 1f;
17 | }
18 |
19 | [SaveState(0f)]
20 | public float Gain
21 | {
22 | get => _gain;
23 | set => SetProperty(ref _gain, value);
24 | }
25 |
26 | public override Type ModuleType => typeof(GainModule);
27 | }
28 | }
--------------------------------------------------------------------------------
/src/Micser.App.Infrastructure/Settings/SettingsPanel.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 |
4 | namespace Micser.App.Infrastructure.Settings
5 | {
6 | ///
7 | /// An that hosts a list of settings.
8 | ///
9 | public class SettingsPanel : ItemsControl
10 | {
11 | ///
12 | protected override DependencyObject GetContainerForItemOverride()
13 | {
14 | return new SettingContainer();
15 | }
16 |
17 | ///
18 | /// Always false.
19 | ///
20 | protected override bool IsItemItsOwnContainerOverride(object item)
21 | {
22 | return false;
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/src/Micser.App.Prism/Regions/IViewsCollection.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System.Collections.Generic;
4 | using System.Collections.Specialized;
5 |
6 | namespace Prism.Regions
7 | {
8 | ///
9 | /// Defines a view of a collection.
10 | ///
11 | public interface IViewsCollection : IEnumerable