-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.py
More file actions
55 lines (43 loc) · 1.92 KB
/
Copy pathMain.py
File metadata and controls
55 lines (43 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pathlib import Path
from c_adapters.Controller import TwoPartCounterpointController
from c_adapters.config import AppConfig
from c_adapters.FileSystemAdapter import FileSystemAdapter
from c_adapters.MuseScoreXmlAdapter import MuseScoreXmlAdapter
from b_application.generate_counterpoint_use_case import GenerateCounterpointUseCase
from b_application.build_note_events_use_case import BuildNoteEventsUseCase
from b_application.use_case_interactor import UseCaseInteractor
from d_frameworks_drivers.musescore.exporter import MuseScoreFileExporter
from d_frameworks_drivers.midiFluidSynth.driver import FluidSynthPlaybackDriver
from d_frameworks_drivers.musescore.config import MuseScoreConfig
def main() -> int:
base = Path(__file__).resolve().parent
app_cfg = AppConfig()
ms_cfg = MuseScoreConfig()
# Adapter/Driver für MuseScore-Export (alle Abhängigkeiten hier gebaut)
fs = FileSystemAdapter(base)
xml = MuseScoreXmlAdapter()
score_exporter = MuseScoreFileExporter(project_root=base, app_cfg=app_cfg, ms_cfg=ms_cfg, fs=fs, xml=xml)
# Playback-Driver (FluidSynth) – nutzt Default-Konfiguration
playback_driver = FluidSynthPlaybackDriver(project_root=base)
# Application-Use-Cases und Interactor
generate_uc = GenerateCounterpointUseCase()
sequencer = BuildNoteEventsUseCase()
interactor = UseCaseInteractor(generate_uc=generate_uc, sequencer=sequencer)
ctrl = TwoPartCounterpointController(
config=app_cfg,
score_exporter=score_exporter,
playback_port=playback_driver,
interactor=interactor,
)
# 1) Domänenobjekte aufbauen
choral = ctrl.build_choral()
kontrapunkt = ctrl.generate_counterpoint(choral)
# 2) Export
ctrl.export_musescore(kontrapunkt)
# 3) Wiedergabe
ctrl.playback_realtime(choral, kontrapunkt)
return 0
if __name__ == "__main__":
raise SystemExit(main())