|
17 | 17 |
|
18 | 18 | #include "../contrib/Argengine/src/argengine.hpp" |
19 | 19 | #include "../contrib/SimpleLogger/src/simple_logger.hpp" |
| 20 | +#include "../infra/midi/export/midi_exporter.hpp" |
20 | 21 | #include "../infra/video/video_generator.hpp" |
21 | 22 | #include "common/utils.hpp" |
22 | 23 | #include "domain/midi_note_data.hpp" |
@@ -67,6 +68,7 @@ Application::Application(int & argc, char ** argv) |
67 | 68 | , m_selectionService { std::make_unique<SelectionService>() } |
68 | 69 | , m_editorService { std::make_unique<EditorService>(m_selectionService) } |
69 | 70 | , m_eventSelectionModel { std::make_unique<EventSelectionModel>() } |
| 71 | + , m_midiExporter { std::make_unique<MidiExporter>(m_automationService) } |
70 | 72 | , m_midiService { std::make_unique<MidiService>() } |
71 | 73 | , m_mixerService { std::make_unique<MixerService>() } |
72 | 74 | , m_playerService { std::make_unique<PlayerService>(m_midiService, m_mixerService, m_automationService, m_settingsService) } |
@@ -258,6 +260,21 @@ void Application::connectApplicationService() |
258 | 260 | connect(m_applicationService.get(), &ApplicationService::liveNoteOnRequested, m_midiService.get(), &MidiService::playNote); |
259 | 261 | connect(m_applicationService.get(), &ApplicationService::liveNoteOffRequested, m_midiService.get(), &MidiService::stopNote); |
260 | 262 | connect(m_applicationService.get(), &ApplicationService::allNotesOffRequested, this, &Application::stopAllNotes); |
| 263 | + |
| 264 | + connect(m_applicationService.get(), &ApplicationService::midiExportRequested, this, &Application::exportToMidi); |
| 265 | +} |
| 266 | + |
| 267 | +void Application::exportToMidi(QString fileName) |
| 268 | +{ |
| 269 | + try { |
| 270 | + m_midiExporter->exportTo(fileName.toStdString(), m_editorService->song()); |
| 271 | + const auto message = QString { "Exported the project to '%1' " }.arg(fileName); |
| 272 | + m_applicationService->statusTextRequested(message); |
| 273 | + } catch (std::exception & e) { |
| 274 | + const auto message = QString { "Failed to export as MIDI: %1 " }.arg(e.what()); |
| 275 | + juzzlin::L(TAG).error() << message.toStdString(); |
| 276 | + m_applicationService->statusTextRequested(message); |
| 277 | + } |
261 | 278 | } |
262 | 279 |
|
263 | 280 | void Application::connectAutomationService() |
|
0 commit comments