
Projekt | Musik Übe App
Von Katharina Wurm am 18.06.2025
Im 2. Semester der Masterklasse Mobile lag der Hauptfokus auf der nativen Appentwicklung. Obwohl ich schon einiges an Vorerfahrung mit Kotlin und Swift hatte, konnte ich viel dazulernen und mein Wissen vertiefen. Daher entschied ich mich, als Hauptprojekt für dieses Semester eine iOS-App mit Swift und SwiftUI zu entwickeln, mit welcher ich neue Funktionalitäten ausprobieren konnte.
Ziel der App war es, eine App für angehende Hobby-Musiker*innen (Anfänger*innen) zu programmieren, mit welcher diese kleine Musikstücke üben können. Die Challenge hierbei lag in der Entwicklung eines visuellen Editors, mit welcher ein neues Musikstück hinzugefügt werden kann, sowie das eigentliche Spielen eines ausgewählten Musikstücks (Erkennung der gespielten Noten über das Device-Mikrofon).
Screens und deren Features
Home
Am Homescreen können User*innen ihre lokal gespeicherten Musikstücke verwalten. Musikstücke können über den Plus-Button hinzugefügt, durch Swipe Actions gelöscht oder bearbeitet, oder durch einen Klick auf den Listeneintrag gespielt werden.
Der Stimmgabel-Button bringt User*innen zum „Tuning“ Screen.

Editor
Beim Hinzufügen oder beim Bearbeiten eines Musikstücks kann in erster Linie der Titel des Stücks und die Taktart angegeben werden. Sobald mindestens eine Note Teil des Musikstücks ist, kann die Taktart in der momentanen Appversion nicht mehr verändert werden. Die zuletzt hinzugefügte Note kann allerdings immer gelöscht werden, sodass die Taktart verändert werden kann, sobald keine Noten mehr Teil des Musikstücks sind.
Um eine Note hinzuzufügen, muss nach einem Klick auf den Plus-Button der Notenwert ausgewählt werden. Danach kann durch eine vertikale „Draggesture“ die Tonhöhe einer bestimmten Note verändert werden – beim Verändern dieser wird der jeweilige neue Ton laut abgespielt.
Mit einem Klick auf den „Save“-Button im rechten oberen Eck wird das neue Musikstück bzw. werden die Änderungen am bestehenden Musikstück lokal gespeichert.

Screen zum Spielen des Musikstücks
Momentan funktioniert der Spielmodus so, dass User*innen eine Note nach der anderen für eine bestimmte Dauer halten müssen. Wird die richtige Tonhöhe gespielt, wird die Note leicht grün eingefärbt, sonst wird die gespielte Note rot angezeigt.
Während des Spielens kann der Mikrofoninput durch einen Klick auf den „Pause“-Button pausiert werden. Sobald der*die User*in bereit ist, weiterzuspielen, kann er*sie wieder auf den „Play“-Button klicken. Zusätzlich kann der Spielfortschritt mit einem Klick auf den „Stop“-Button zurückgesetzt werden. Sobald das komplette Musikstück durchgespielt wurde, erscheint ein Popup mit einer Glückwunschnachricht.


Tuning
User*innen können auswählen, welches Instrument gestimmt werden soll. In der Liste werden dann die zu stimmenden Saiten des Instruments angezeigt. Auf der rechten Seite des Screens sehen User*innen ähnlich wie beim Spielen eines Musikstücks, welche Note sie momentan spielen, und welche gespielt werden muss. Anders als beim Spielen eines Musikstücks wird die Note allerdings leicht gelb eingefärbt, wenn die Tonhöhe stimmt, aber nicht komplett akkurat ist.

Challenges und Learnings
Audio in Swift
Die größte Challenge in diesem Projekt war das Arbeiten mit Audio. Gespielte Noten mussten in Echtzeit erkannt werden und ein Klick auf eine Note sollte diese laut abspielen. Hierfür verwendete ich die „AudioEngine“ von AudioKit. Nach viel „Trial and Error“ beim Setup der Audio Engine und einer kleinen Priese KI-Unterstützung zur mathematischen Berechnung einer Note basierend auf der wahrgenommen Frequenz ließen sich diese Anforderungen erfolgreich umsetzen.
SwiftData
In der Vergangenheit konnte ich schon Erfahrung mit CoreData sammeln. Deshalb war ich daran interessiert, auch einmal SwiftData auszuprobieren. Die Implementierung von SwiftData war einfacher als die Implementierung von CoreData, allerdings habe ich gelesen, dass CoreData dafür auch um einiges mächtiger sein soll. Für diese App war SwiftData jedoch völlig ausreichend und eine tolle neue Erfahrung.
Visueller Editor
In meinen bisherigen nativen iOS-Projekten arbeitete ich vor allem mit Elementen, die typisch für mobile Anwendungen sind und in SwiftUI oft bereits schon vorgefertigt zur Verfügung stehen. Für dieses Projekt wollte ich mir allerdings die Challenge setzen, einen visuellen „Musik Sheet Editor“ einzubauen. Mithilfe des GeometryReaders und dem Ausprobieren verschiedener Modifier gelang es mir, diese Aufgabe erfolgreich zu meistern.
Conclusion
Durch dieses Projekt konnte ich nicht nur meine vorhandenen Kenntnisse in Swift und SwiftUI gezielt vertiefen, sondern auch neue Erfahrungen in Bereichen sammeln, mit denen ich bisher wenig Berührung hatte. Dies betrifft vor allem den Umgang mit Audio, SwiftData und die Umsetzung komplexer UI-Elemente für den visuellen Editor. Ich bin stolz auf das Ergebnis und darauf, wie viel ich dabei dazulernen konnte!