Audio unter Linux
- Lincoln Six Echo
- Beiträge: 138
- Registriert: Di 26. Aug 2014, 16:42
- OS, Lazarus, FPC: Win10, Debian
- CPU-Target: I7/I9/Q9650/u.a.
- Wohnort: Hamburg
Audio unter Linux
Bin kein Linuxexperte aber von Linux recht angetan. Vor allem weil da auch Lazarus läuft.
Wie geht Audio unter Linux ? Ich meine jetzt nicht "playsound(...)" oder ähnliches sondern wirklicher Zugriff auf Treiber & Hardware.
Hat jemand einen Tip wo ich da anfange ?
Wie geht Audio unter Linux ? Ich meine jetzt nicht "playsound(...)" oder ähnliches sondern wirklicher Zugriff auf Treiber & Hardware.
Hat jemand einen Tip wo ich da anfange ?
- Lincoln Six Echo
- Beiträge: 138
- Registriert: Di 26. Aug 2014, 16:42
- OS, Lazarus, FPC: Win10, Debian
- CPU-Target: I7/I9/Q9650/u.a.
- Wohnort: Hamburg
Re: Audio unter Linux
Danke dir, aber die binden auch nur eine Library (BASS Audio) ein.
Re: Audio unter Linux
Das ganze Betriebssystem besteht aus einem ein Haufen Libraries.Lincoln Six Echo hat geschrieben: Sa 21. Okt 2023, 16:40 Danke dir, aber die binden auch nur eine Library (BASS Audio) ein.
Wieso willst du denn da an die Hardware ran?
- Lincoln Six Echo
- Beiträge: 138
- Registriert: Di 26. Aug 2014, 16:42
- OS, Lazarus, FPC: Win10, Debian
- CPU-Target: I7/I9/Q9650/u.a.
- Wohnort: Hamburg
Re: Audio unter Linux
Es geht nicht darum einfach nur Audiodaten abzuspielen sondern um prof. Audio Anwendungen. Das erfordert nicht nur die Ausgabe, sondern auch das Audio-Input. Bei einer Q32 Konsole habe ich z.B. 32 Ein- und 32 Ausgänge.
Es geht um Musikproduktion, Tonstudio, Rundfunk, etc.
Unter Windows habe ich ASIO, ich habe für unsere Anwendungen eine eigene Engine geschrieben die das erledigt. Die kann 128 Ein und Ausgänge und das bei einer Latenz von < 3 msec. mir der üblichen Hardware.
Die Idee ist nun das alles auch für Linux zur Verfügung zu stellen, insofern das überhaupt geht. Audio wird hier nicht über die Soundkarte geleitet sondern über externe Hardware die meist über USB angeschlossen ist.
Bisher dachte ich das die Hersteller entsprechende Treiber bereitstellen. Machens sie auch aber nicht für Linux.
Trotzdem laufen die meisten Interfaces aber sehr gut mit den Linuxtreibern.
Das Audioinput muss mit dem Output synchronisiert sein, ansonsten ist z.B. keine Monitorfunktion möglich.
Soetwas mit universal-Libs wie BASS Audio oder anderen hinzubekommen geht vielleicht für einen Mediaplayer aber nicht für prof. Anwendungen in der Tontechnik.
Es geht um Musikproduktion, Tonstudio, Rundfunk, etc.
Unter Windows habe ich ASIO, ich habe für unsere Anwendungen eine eigene Engine geschrieben die das erledigt. Die kann 128 Ein und Ausgänge und das bei einer Latenz von < 3 msec. mir der üblichen Hardware.
Die Idee ist nun das alles auch für Linux zur Verfügung zu stellen, insofern das überhaupt geht. Audio wird hier nicht über die Soundkarte geleitet sondern über externe Hardware die meist über USB angeschlossen ist.
Bisher dachte ich das die Hersteller entsprechende Treiber bereitstellen. Machens sie auch aber nicht für Linux.
Trotzdem laufen die meisten Interfaces aber sehr gut mit den Linuxtreibern.
Das Audioinput muss mit dem Output synchronisiert sein, ansonsten ist z.B. keine Monitorfunktion möglich.
Soetwas mit universal-Libs wie BASS Audio oder anderen hinzubekommen geht vielleicht für einen Mediaplayer aber nicht für prof. Anwendungen in der Tontechnik.
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Audio unter Linux
Am besten mit SDLWie geht Audio unter Linux ?
Code: Alles auswählen
uses
... sdl, sdl_mixer;
var
music: PMix_Music;
scratch PMix_Chunk;
procedure TForm1.FormCreate(Sender: TObject);
begin
if SDL_Init(SDL_INIT_AUDIO) < 0 then begin
Writeln('Kann SDL nicht öffnen: ', SDL_GetError);
end;
if Mix_OpenAudio(48000, MIX_DEFAULT_FORMAT, 2, 4096) = -1 then begin
Write('Kann Audio nicht öffnen');
end;
music := Mix_LoadMUS('doom.mid');
if music = nil then begin
WriteLn('Kann Musik nicht laden');
end;
scratch := Mix_LoadWAV('scratch.wav');
if scratch = nil then begin
WriteLn('Kann Sound nicht laden');
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Mix_FreeChunk(scratch);
Mix_FreeMusic(music);
Mix_CloseAudio;
SDL_Quit;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- Lincoln Six Echo
- Beiträge: 138
- Registriert: Di 26. Aug 2014, 16:42
- OS, Lazarus, FPC: Win10, Debian
- CPU-Target: I7/I9/Q9650/u.a.
- Wohnort: Hamburg
Re: Audio unter Linux
Ein schönes Beispiel. Das ist in etwa so wie mmSystem unter Windows. Für einen Player völlig ausreichend.
Für prof. Anwendungen völlig unbrauchbar.
Als Code kann das so aussehen:
AudioInput wird 1 / 96000 mal pro Sekunde vom Treiber beliefert und muss dann in der Anwendung entsprechend verarbeitet werden bevor der nächste Interrupt kommt. Audiodaten sind single, double, integer, int64 oder auch smallint. Bei 24Bit hast du array[0..ChannelMax-1 of array[0..2] of byte und musst evtl noch Sampleraten in Echtzeit umrechnen. Plus Little Endian nach Big Endian und umgekehrt.
Und alles dito beim AudioInput.
Das soetwas nicht mit PlaySound(Data) zu lösen ist, erklärt sich von selbst.
Für prof. Anwendungen völlig unbrauchbar.
Als Code kann das so aussehen:
Code: Alles auswählen
function AudioInput(Buffer : pointer;SPC : word) : integer; cdecl;
var
c : integer:
begin
with pAudioDataBuffer(Buffer)^[InputChannel] do
for c := 0 to SPC-1
begin
L := L+Channel[0][c]*Volume;
R := R+Channel[1][c]*Volume;
end;
if Host <> NIL then Host.ProcessAudio(L,R,SPC);
end;
Und alles dito beim AudioInput.
Das soetwas nicht mit PlaySound(Data) zu lösen ist, erklärt sich von selbst.
Re: Audio unter Linux
Wenn du professionell sein willst, dann kannst du auch selber googlen.
Ich würde mal hier anfangen:
https://de.wikipedia.org/wiki/Advanced_ ... chitecture
https://www.alsa-project.org/wiki/Main_Page
https://github.com/fredvs/alsa_sound
https://www.freedesktop.org/wiki/Software/PulseAudio/
https://github.com/andrewd207/fpc-pulseaudio
Aber frag mich nicht.

Ich würde mal hier anfangen:
https://de.wikipedia.org/wiki/Advanced_ ... chitecture
https://www.alsa-project.org/wiki/Main_Page
https://github.com/fredvs/alsa_sound
https://www.freedesktop.org/wiki/Software/PulseAudio/
https://github.com/andrewd207/fpc-pulseaudio
Aber frag mich nicht.
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Audio unter Linux
Ich habe gerade das Beispiel auf https://github.com/fredvs/alsa_sound ausprobiert.
Ich dachte im ersten Moment, ich sein mit GW-BASCI unterwegs.
Den Link muss ich mir unbedingt merken.
Ich dachte im ersten Moment, ich sein mit GW-BASCI unterwegs.

Den Link muss ich mir unbedingt merken.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- kupferstecher
- Beiträge: 431
- Registriert: Do 17. Nov 2016, 11:52
Re: Audio unter Linux
Schau dir mal PortAudio an, es gibt einen Freepascal-Wrapper dafür.
Über einen Callback übergibt man die Datenblöcke (bzw. bekommt sie). Funktioniert unter Linux und Windos einwandfrei, ohne Aussetzer. Habe es bisher nur zur Ausgabe eines eizigen Streams benutzt. Ob es für deine Anforderungen reicht, weiß ich nicht.
Über einen Callback übergibt man die Datenblöcke (bzw. bekommt sie). Funktioniert unter Linux und Windos einwandfrei, ohne Aussetzer. Habe es bisher nur zur Ausgabe eines eizigen Streams benutzt. Ob es für deine Anforderungen reicht, weiß ich nicht.
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Audio unter Linux
Also als erstes mal die Faustregel, Low Level Audiogeräte ansteuern unter Linux ist der schnellste weg dich in den Wahnsinn zu treiben (mehrere Konfigurationsdateien mit tausenden zeilen erwarten dich).
Für einen guten einstieg schau dir mal das hier an: https://wiki.archlinux.org/title/Sound_system
Du kannst direkten Zugriff auf die Audiogeräte über ALSA haben, aber normalerweise geht die meiste Software einen Level höher über Audioserver wie JACK oder PulseAudio (was wiederum auch noch mal den Umweg über JACK gehen kann).
Im Grunde ist das vermutlich das level auf dem du Einsteigen willst. Audacity z.B. benutzt auch Jack um die Audiogeräte anzusprechen.
Für einen guten einstieg schau dir mal das hier an: https://wiki.archlinux.org/title/Sound_system
Du kannst direkten Zugriff auf die Audiogeräte über ALSA haben, aber normalerweise geht die meiste Software einen Level höher über Audioserver wie JACK oder PulseAudio (was wiederum auch noch mal den Umweg über JACK gehen kann).
Im Grunde ist das vermutlich das level auf dem du Einsteigen willst. Audacity z.B. benutzt auch Jack um die Audiogeräte anzusprechen.
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Audio unter Linux
kenn mich absolut nicht aus, lese begeistert mit und sehe auch interessehalber mal in die Links,
aber das hier sieht mir doch genau nach dem professionellen Level aus das von Lincoln gesucht wird??
- Lincoln Six Echo
- Beiträge: 138
- Registriert: Di 26. Aug 2014, 16:42
- OS, Lazarus, FPC: Win10, Debian
- CPU-Target: I7/I9/Q9650/u.a.
- Wohnort: Hamburg
Re: Audio unter Linux
Das einzige was geht ist ALSA.
Alles andere sind im Grunde Allround-Frameworks, die sind klasse für PlaySound-Apps aber nicht mehr.
Audacity ist ein Waveeditor, aber sicher keine prof. Audio-Anwendung, schon gar nicht seit der Übernahme durch MUSE.
ALSA ist sehr durchdacht und ganz gut dokumentiert. Die Möglichkeiten sind, anders als unter Windows, sehr viele. Das erklärt mir jetzt auch warum es so gut wie keine Anwendungen im Profibereich für Linux gibt. Der Entwicklungsaufwand ist ungleich höher als bei Win und Mac. Dabei ist Linux als Betriebssystem für Studios und Musikproduzenten eigentlich ideal.
Ich denke da MS ja gerade mit neuen Lizenzbestimmungen zur kompromisslosen Totalüberwachung und -Zensur gewechselt ist, wird sich das sehr bald ändern.
Alles andere sind im Grunde Allround-Frameworks, die sind klasse für PlaySound-Apps aber nicht mehr.
Audacity ist ein Waveeditor, aber sicher keine prof. Audio-Anwendung, schon gar nicht seit der Übernahme durch MUSE.
ALSA ist sehr durchdacht und ganz gut dokumentiert. Die Möglichkeiten sind, anders als unter Windows, sehr viele. Das erklärt mir jetzt auch warum es so gut wie keine Anwendungen im Profibereich für Linux gibt. Der Entwicklungsaufwand ist ungleich höher als bei Win und Mac. Dabei ist Linux als Betriebssystem für Studios und Musikproduzenten eigentlich ideal.
Ich denke da MS ja gerade mit neuen Lizenzbestimmungen zur kompromisslosen Totalüberwachung und -Zensur gewechselt ist, wird sich das sehr bald ändern.
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Audio unter Linux
Dies würde sich sogar noch viel schneller ändern, wen neue PCs und Laptops mit Linux anstelle von M$ verkauft würden.Ich denke da MS ja gerade mit neuen Lizenzbestimmungen zur kompromisslosen Totalüberwachung und -Zensur gewechselt ist, wird sich das sehr bald ändern.
Dies wird noch der einzige Grund sein um Windows aufrecht zu halten. Einzig was Windows Linux noch voraus hat, es ist eine gute Spielkonsole mit dem DirectX.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- Lincoln Six Echo
- Beiträge: 138
- Registriert: Di 26. Aug 2014, 16:42
- OS, Lazarus, FPC: Win10, Debian
- CPU-Target: I7/I9/Q9650/u.a.
- Wohnort: Hamburg
Re: Audio unter Linux
Im Moment ist die Entwicklung in der IT wirklich übel.
YouTube zwingt Leute schwachsinnige Werbung zu sehen. MS betreibt offen Totalüberwachung und willkürliche Zensur. Andere Portale löschen komplette User-Accounts nach einer EMail der Behörden. Auch im Linuxbereich : Da vertreiben Leute Tools die mit Flutter gebaut wurden, installiert man sich das zieht man sich direkt Google Software auf den eigenen Rechner.
Übrigens nicht alles nur die "bösen" USA, vieles ist im Ideensumpf der EU gewachsen.
Aber das ist hier wohl am Thema vorbei
YouTube zwingt Leute schwachsinnige Werbung zu sehen. MS betreibt offen Totalüberwachung und willkürliche Zensur. Andere Portale löschen komplette User-Accounts nach einer EMail der Behörden. Auch im Linuxbereich : Da vertreiben Leute Tools die mit Flutter gebaut wurden, installiert man sich das zieht man sich direkt Google Software auf den eigenen Rechner.
Übrigens nicht alles nur die "bösen" USA, vieles ist im Ideensumpf der EU gewachsen.
Aber das ist hier wohl am Thema vorbei
