Welche programier Sprache für Audio Software?

2 Antworten

Von Experte Erzesel bestätigt

kann dir jetzt schon garantieren, dass das nix wird. Du hast Grundkenntnisse im Webdesign und willst eine Software schreiben, an der ganze Unternehmen jahrelang schreiben?

Mach dich an kleine Projekte ran.. Lern die Grundlagen von C die wirst du überall brauchen. Noch dazu ist es eine der schnellsten Programmiersprachen, was im Pro Audio Bereich mehr als Sinn macht. Wenn du ein paar Programme mit C geschrieben hast kannst du ja immer noch versuchen eigene Plugins für eine daw zu schreiben. Aber mach halblang! Kein großer Entwickler der auch nur ansatzweise was erreicht hat in seinem Leben hat sich direkt an so ein großes Projekt gemacht. Aus gutem Grund. Das kann selbst das beste Gehirn nicht. Das braucht Training und Erfahrung bzw. wie gesagt, an so einer Software schreibt ein großes Team zusammen! Das sind n paar Milliarden Zeilen an Code wenns schickt.

Fang klein an ✌🏽

Woher ich das weiß:Berufserfahrung – Backend Developer
WeissBrot965  18.04.2024, 20:40

Besser hätte man es nicht formulieren können

1

Für so ein Projekt würde sich C++ in Kombination mit dem JUCE-Framework sehr gut eignen.

C++ selbst erlaubt dir direkten Systemzugriff, über den du Daten schnell (und konsistent) in Echtzeit verarbeiten kannst (Bsp.: SIMD für DSP-Algorithmen). Es gibt Schnittstellen/Wrapper für low-level APIs mit Audiofunktionalitäten wie CoreAudio, DirectX und OpenAL oder etliche Bibliotheken, die dir beispielsweise bei dem Einlesen oder Schreiben von Audiodaten helfen (z.B. Aquila, Essentia, PortAudio, RtAudio, usw.).

Ein weiterer Vorteil ist, dass du mit C++ objektorientiert arbeiten kannst. So kannst du dein Projekt besser strukturieren.

Das JUCE-Framework wiederum hat bereits verschiedene Funktionalitäten zur Audiohandhabung (siehe hier oder hier) vorimplementiert und zusätzlich gibt es mehrere Bibliotheken aus der Community (schau z.B. hier). Des Weiteren ermöglicht es dir die Entwicklung von (meiner Meinung nach schönen) grafischen Oberflächen (direkt zugeschnitten auf Audiosoftware), die auf verschiedenen Plattformen (Android, iOS, macOS, Windows) portierbar sind.

Alternativ würde sich auch Qt zur Entwicklung der grafischen Oberfläche eignen.

Hinsichtlich einer Vorbereitung für dein Projekt wäre es gut, zunächst mit den C++-Grundlagen (sowie klassenbasierter OOP) vertraut zu werden. Andernfalls macht ein Projektstart noch keinen Sinn.

Richte dir zuerst eine passende Entwicklungsumgebung ein, damit du möglichst früh mit dem, was du lernst üben/experimentieren kannst. Ein paar gute Optionen wären CLion, der QtCreator oder (nur für Windows) Visual Studio.

Bezüglich Lernquellen solltest du solche verwenden, die mindestens C++ 17 behandeln. Online kann ich hierbei auf LearnCpp verweisen. Empfehlenswerte Autoren für feste Literatur sind m.E. Nicolai M. Josuttis, Torsten T. Will, Thomas Theis oder Ulrich Breymann. In diesem Stackoverflow-Beitrag werden noch andere Empfehlungen angebracht.

Solltest du nach Lernkursen (Videos/Tracks) suchen, schau auf Codecademy, Coursera, Educative, in die JetBrains Academy oder auf Udemy.

Zu externen Bibliotheken/Frameworks findest du in der Regel genügend in deren jeweiligen Online-Dokumentationen.

Das ist aber soweit noch längst nicht alles. Zum einen müsstest du dich noch tief in das Thema Audioverarbeitung eingraben (was ziemlich mathematiklastig werden kann) und zum anderen solltest du wissen, wie du deine Anwendung am besten strukturiert aufbauen kannst.

Letzteres betrifft die Softwareplanung. Mach dich zu Architektur-/Entwurfsmustern schlau. Grundsätzlich macht es Sinn, die Anwendung modular nach MVC- oder MVVM-Aufteilung aufzubauen.

Damit du den Überblick nicht verlierst und Einbahnstraßendesign vermeidest, solltest du im Vorfeld analysieren, was du erreichen möchtest, brauchst und wie die benötigten Ressourcen ineinandergreifen. Ein paar Stichworte hierzu wären Anforderungsanalyse und UML (use cases, activities, object-/class-diagram, ...).

Zur Audioentwicklung kann ich dir ebenfalls ein paar nützliche Quellen mitgeben. Du solltest aber auch selbst noch weiter recherchieren.

  • Schau nach Büchern von Will Pirkle
  • ThinkDSP von A. B. Downey
  • The Audio Programming Book von R. Boulanger, V. Lazzarini
  • The Scientist and Engineer’s Guide to Digital Signal Processing von Steven W. Smith, Ph.D.
  • Musimathics, Vol. 2 von G. Loy
  • An Introduction to the Mathematics of Digital Signal Processing von F. R. Moore
  • Auf YouTube findest du einige Videos von der Audio DevCon (ADC), die interessant sein können