4747#include " service/property_service.hpp"
4848#include " service/recent_files_manager.hpp"
4949#include " service/sampler_controller.hpp"
50+ #include " service/device_rack.hpp"
51+ #include " service/device_rack_controller.hpp"
5052#include " service/selection_service.hpp"
5153#include " service/settings_service.hpp"
5254#include " service/side_chain_service.hpp"
@@ -90,7 +92,9 @@ Application::Application(int & argc, char ** argv)
9092 , m_editorService { std::make_shared<EditorService>(m_selectionService, m_settingsService, m_automationService) }
9193 , m_audioEngine { std::make_shared<AudioEngine>() }
9294 , m_deviceService { std::make_shared<DeviceService>(m_audioEngine) }
93- , m_samplerController { std::make_shared<SamplerController>(std::make_shared<SamplerDevice>()) }
95+ , m_deviceRack { std::make_unique<DeviceRack>(m_deviceService) }
96+ , m_samplerController { std::make_shared<SamplerController>(nullptr ) }
97+ , m_deviceRackController { std::make_shared<DeviceRackController>(m_deviceService, m_samplerController) }
9498 , m_jackService { std::make_shared<JackService>(m_settingsService, m_audioEngine) }
9599 , m_audioService { std::make_shared<AudioService>(m_settingsService, m_jackService, m_audioEngine) }
96100 , m_eventSelectionModel { std::make_shared<EventSelectionModel>() }
@@ -115,7 +119,10 @@ Application::Application(int & argc, char ** argv)
115119 , m_noteColumnModelHandler { std::make_unique<NoteColumnModelHandler>(m_editorService, m_selectionService, m_automationService, m_settingsService) }
116120 , m_engine { std::make_unique<QQmlApplicationEngine>() }
117121{
118- m_deviceService->registerDevice (m_samplerController->sampler ());
122+ m_deviceRack->initialize ();
123+ if (const auto sampler = std::dynamic_pointer_cast<SamplerDevice>(m_deviceService->device (" Sampler 1" ))) {
124+ m_samplerController->setSampler (sampler);
125+ }
119126 m_editorService->setMixerService (m_mixerService);
120127
121128 registerTypes ();
@@ -147,6 +154,7 @@ void Application::registerTypes()
147154 qmlRegisterType<AudioSettingsModel>(" Noteahead" , majorVersion, minorVersion, " AudioSettingsModel" );
148155 qmlRegisterType<AutomationService>(" Noteahead" , majorVersion, minorVersion, " AutomationService" );
149156 qmlRegisterType<ColumnSettingsModel>(" Noteahead" , majorVersion, minorVersion, " ColumnSettingsModel" );
157+ qmlRegisterType<DeviceRackController>(" Noteahead" , majorVersion, minorVersion, " DeviceRackController" );
150158 qmlRegisterType<EditorService>(" Noteahead" , majorVersion, minorVersion, " EditorService" );
151159 qmlRegisterType<EventSelectionModel>(" Noteahead" , majorVersion, minorVersion, " EventSelectionModel" );
152160 qmlRegisterType<KeyboardService>(" Noteahead" , majorVersion, minorVersion, " KeyboardService" );
@@ -181,6 +189,7 @@ void Application::setContextProperties()
181189 m_engine->rootContext ()->setContextProperty (" audioSettingsModel" , m_audioSettingsModel.get ());
182190 m_engine->rootContext ()->setContextProperty (" automationService" , m_automationService.get ());
183191 m_engine->rootContext ()->setContextProperty (" columnSettingsModel" , m_columnSettingsModel.get ());
192+ m_engine->rootContext ()->setContextProperty (" deviceRackController" , m_deviceRackController.get ());
184193 m_engine->rootContext ()->setContextProperty (" deviceService" , m_deviceService.get ());
185194 m_engine->rootContext ()->setContextProperty (" samplerController" , m_samplerController.get ());
186195 m_engine->rootContext ()->setContextProperty (" editorService" , m_editorService.get ());
@@ -320,6 +329,10 @@ void Application::connectServices()
320329
321330void Application::connectDeviceService ()
322331{
332+ connect (m_deviceRackController.get (), &DeviceRackController::samplerDialogRequested, m_applicationService.get (), [this ]() {
333+ emit m_applicationService->samplerDialogRequested ();
334+ });
335+
323336 connect (m_editorService.get (), &EditorService::devicesSerializationRequested, m_deviceService.get (), &DeviceService::serializeToXml);
324337 connect (m_editorService.get (), &EditorService::devicesDeserializationRequested, m_deviceService.get (), &DeviceService::deserializeFromXml);
325338 connect (m_editorService.get (), &EditorService::projectPathChanged, m_deviceService.get (), &DeviceService::setProjectPath);
0 commit comments