Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Yadgar
Beiträge: 958
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von Yadgar » 10.04.2022 03:03:49

Hi(gh)!

Mir schwebt folgendes vor: anhand von Samples aus einer elektronischen Orgel (konkret: Technics SX-G5) ebendiese Orgel als "virtuelles Instrument" nachzuprogrammieren, erst mal nur konsolen-/skriptbasiert (nicht bash, sondern eine selbst zu entwickelnde Skriptsprache), genauer: im RAW-Format (64bit float) vorliegende Audiodaten entweder direkt zur Ausgabe an die Soundkarte senden oder aus diesen Rohdaten skriptgesteuert (das Skript würde Angaben zu Lautstärke, Tonhöhe, Tondauer und Stimmenanzahl enthalten) fertige Sounddateien erzeugen. Gibt es einführende Literatur zur Soundkartenprogrammierung speziell für Linux? Oder sind derartige Hand-/Lehrbücher systemübergreifend gehalten?
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

DeletedUserReAsG

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von DeletedUserReAsG » 10.04.2022 08:35:27

Lo(hw)!

Du könntest du dein Instrument samplen, bzw. die Samples in ein passendes Format bringen, und dann via MIDI verwenden – wie’s alle Anderen auch machen. Wenn dir das zu profan sein sollte, wäre LV2 ein immerhin noch sinnvoller Weg, aber möglicherweise schon weit hinter deinen Fähigkeiten (no offense intended).

Wenn du aber wirklich auf Hardwareebene agieren willst („Soundkarten-Programmierung“), wäre die Doku unter kernel.org der passende Einstiegspunkt – mag dann aber je nach Vorwissen einige Jahre dauern, bis du tatsächlich zum Programmieren deiner Hardware kommst. Vorher würde ich aber auch nicht mit der „zu entwickelnden“ Scriptsprache anfangen – weil: bringt ja nix, wenn du da einige Jahre versenkst, und es dann mit dem Treiber für deine Karte doch nix wird ;)

OT: was ist eigentlich aus deinem virtuellen Afghanistan geworden?

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von brummer » 10.04.2022 10:03:04

schau dir mal faust an: https://faust.grame.fr/
Damit wirst du wahrscheinlich schneller zum ziel kommen.

Benutzeravatar
debilian
Beiträge: 1199
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von debilian » 10.04.2022 10:36:31

leicht angestaubt aber:

http://wiki.datentraeger.org/index.php?title=Hauptseite

da steht auch einiges...
-- nichts bewegt Sie wie ein GNU --

Benutzeravatar
Yadgar
Beiträge: 958
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von Yadgar » 10.04.2022 12:42:37

Hi(gh)!
niemand hat geschrieben: ↑ zum Beitrag ↑
10.04.2022 08:35:27
Du könntest du dein Instrument samplen, bzw. die Samples in ein passendes Format bringen, und dann via MIDI verwenden – wie’s alle Anderen auch machen.
Also als VST-Plugin für z. B. Cubase?
niemand hat geschrieben: ↑ zum Beitrag ↑
10.04.2022 08:35:27
OT: was ist eigentlich aus deinem virtuellen Afghanistan geworden?
Die Entwicklung des virtuellen Afghanistan (= Khyberspace) schreitet langsam, aber stetig voran... der aktuelle Stand des Heightfields für die Region Kabul ("Kabulmodul") ist hier zu sehen... alles von Hand mit GIMP gepixelt, angefangen hatte ich im Herbst 2004 (mit langen Unterbrechungen), seit zwei Monaten bin ich wieder intensiv dabei.

Diese sowjetische topographische Karte aus den 1980er Jahren (1:100000) ist allerdings nicht die einzige Vorlage, dazu kommen noch die westlich und nördlich angrenzenden Regionen in 1:200000 (dann natürlich auf doppelte Größe skaliert), mit der Fertigstellung des Geländereliefs rechne ich optimistisch bis 2040 - es sei denn, es gelingt mir, ein Interpolationsprogramm für die Höhenlinien zu entwickeln, dann ginge es natürlich wesentlich schneller! Allerdings müsste ich auch dann wahrscheinlich nacheditieren...

Ich weiß, dass es auch fertige Höhendaten (z. B. von der ASTER-Radarvermessungsmission von NASA und JAXA) gibt, habe auch mit diesen schon experimentiert - allerdings haben die ASTER-Daten eine geringere "horizontale" Auflösung (30 m/Messpunkt, die sowjetische Karte dagegen ca. 12,5 m) und sind von vornherein auf sphärisch gekrümmte, d. h. der Erdkrümmung folgende Reliefs ausgelegt, was zwar realistischer ist (wäre merkwürdig, von Kabul bis nach Kandahar sehen zu können...), aber die Platzierung von Objekten auf dem Relief und die spätere Animation technisch erschwert. Ich fahre da zweigleisig... erst einmal dieses "flache" Heightfield fertigstellen oder zumindest soweit vervollständigen, dass schon sinnvolle Demo-Szenen möglich sind - vielleicht finde ich ja irgendwann (afghanische?) Mitstreiter!

Ars longa, vita brevis - hoffentlich machen die transhumanistischen Technologien in den kommenden Jahrzehnten derart Fortschritte, dass ich noch davon profitiere (und dann in der Lage bin, mehrere Jahrhunderte lang am Khyberspace zu arbeiten) und/oder ich finde Leute, die das Projekt nach meinem Ableben weiterführen...
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

DeletedUserReAsG

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von DeletedUserReAsG » 10.04.2022 13:51:30

Yadgar hat geschrieben: ↑ zum Beitrag ↑
10.04.2022 12:42:37
Also als VST-Plugin für z. B. Cubase?
Wenn du Windows nutzen willst, wäre das auch eine Option. Ansonsten würde man für MIDI einfach einen Soundfont daraus erstellen, und es mit etwa Debianfluidsynth verwenden. Oder halt ein LV2-Plugin draus basteln – die können eine ähnliche Funktionalität wie VST-Plugins haben.
Yadgar hat geschrieben: ↑ zum Beitrag ↑
10.04.2022 12:42:37
Die Entwicklung des virtuellen Afghanistan (= Khyberspace) schreitet langsam, aber stetig voran... der aktuelle Stand des Heightfields für die Region Kabul ("Kabulmodul") ist hier zu sehen.
Geht’s also nur um das Ausmalen der Karte mit Blau und Grün? Wenn du die breitgezogenen Abgrenzungslinien weglassen würdest, könntest du eine Normalmap erstellen, und so die Terrainform etwa in Blender ohne größeren Aufwand in 3D rendern. Oder gar mit Unity oder so „begehbar“ machen.

Bis bald in der Rhealithät!

Benutzeravatar
Yadgar
Beiträge: 958
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von Yadgar » 10.04.2022 15:01:05

Hi(gh)!
niemand hat geschrieben: ↑ zum Beitrag ↑
10.04.2022 13:51:30
Geht’s also nur um das Ausmalen der Karte mit Blau und Grün? Wenn du die breitgezogenen Abgrenzungslinien weglassen würdest, könntest du eine Normalmap erstellen, und so die Terrainform etwa in Blender ohne größeren Aufwand in 3D rendern. Oder gar mit Unity oder so „begehbar“ machen.
Nein, es ist kein einfaches "Ausmalen"... das Heightfield soll in POV-Ray verwendet werden (eventuell später auch mit X3D oder three.js), und POV-Ray verwendet für Geländereliefs (neben einfachen 8-bit-Graustufen-Maps) 24-bit-Grafiken, von denen allerdings nur der Rot- und Grünkanal in die Berechnung der Höhen eingehen (das Blau auf meinem Heightfield dient nur zur besseren optischen Unterscheidung der Grünstufen), was 256 * 256 = 65536 mögliche Höhenwerte ergibt.

Beim Füllen der topographischen Karte mit diesen Höhenfarben gehe ich folgendermaßen vor: erst ziehe ich die vorhandenen Höhenlinen (üblicherweise im 40-m-, vereinzelt auch 20-m-Intervall) mit reinen Rotwerten (willkürlich festgelegt: 2000 m = rgb <100, 0, 0>) nach, dann trage ich in der Mitte des Zwischenraums in "naiver Teilungsinterpolation" erst die jeweilige 128er Grünstufe ein, dann jeweils entsprechend in den verbleibenden Zwischenräumen die 64er, 32er, 16er, 8er, 4er, 2er und Einer-Grünstufen ein, bis der ganze Raum zwischen den ursprünglichen Original-Höhenlinien gefüllt ist; dabei berücksichtige ich natürlich auch Wasserläufe und Steilränder.

Das fertig gerenderte Relief (ein Beispiel vom Februar 2007, als ich mit dem nordöstlichen (ungefähr) Viertel fertig war) sieht dann so aus:

http://www.bergisch-afghanistan.de/kabu ... smooth.jpg (Blick vom Gharb Ghar nach Osten auf das Koh-e Safi-Gebirge und den Eingang zur Tang-e Gharu-Schlucht)

http://www.bergisch-afghanistan.de/kabu ... smooth.jpg (Blick aus ca. 10000 m Höhe auf dem gesamten Nordostquadranten)

Die Textur ist bis jetzt nur eine einfache "Standard-Wüstentextur"; in Zukunft werde ich mehrfarbige Texturen basierend auf Original-Luftaufnahmen und Bodenbedeckungskarten verwenden und auf diesen dann entsprechend der jeweiligen Farbe Vegetations-Objekte platzieren...
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

Benutzeravatar
Yadgar
Beiträge: 958
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von Yadgar » 13.04.2022 01:47:47

brummer hat geschrieben: ↑ zum Beitrag ↑
10.04.2022 10:03:04
schau dir mal faust an: https://faust.grame.fr/
Damit wirst du wahrscheinlich schneller zum ziel kommen.
Habe ich mir angesehen, konnte es sogar als Paket für Bull's Eye installieren (an der Kompilierung wäre ich andernfalls schon gescheitert)... habe mir die Syntax des Compilers angesehen und dann das erste kleine Beispiel in der Einführung

Code: Alles auswählen

process = +;
nach C++ kompiliert... das klappte noch, aber g++ konnte danach mit dem generierten C++-Code nicht viel anfangen, es kam eine lange kryptische Latte von Fehlermeldungen (soll ich die hier wirklich posten?)

Code: Alles auswählen

process.cpp:27:26: error: expected class-name before ‘{’ token
   27 | class mydsp : public dsp {
      |                          ^
process.cpp:35:16: error: ‘Meta’ has not been declared
   35 |  void metadata(Meta* m) {
      |                ^~~~
process.cpp:111:34: error: ‘UI’ has not been declared
  111 |  virtual void buildUserInterface(UI* ui_interface) {
      |                                  ^~
process.cpp: In member function ‘void mydsp::metadata(int*)’:
process.cpp:36:6: error: request for member ‘declare’ in ‘* m’, which is of non-class type ‘int’
   36 |   m->declare("compile_options", "-lang cpp -es 1 -scal -ftz 0");
      |      ^~~~~~~
process.cpp:37:6: error: request for member ‘declare’ in ‘* m’, which is of non-class type ‘int’
   37 |   m->declare("filename", "process.dsp");
      |      ^~~~~~~
process.cpp:38:6: error: request for member ‘declare’ in ‘* m’, which is of non-class type ‘int’
   38 |   m->declare("name", "process");
      |      ^~~~~~~
process.cpp: In member function ‘virtual void mydsp::buildUserInterface(int*)’:
process.cpp:112:17: error: request for member ‘openVerticalBox’ in ‘* ui_interface’, which is of non-class type ‘int’
  112 |   ui_interface->openVerticalBox("process");
      |                 ^~~~~~~~~~~~~~~
process.cpp:113:17: error: request for member ‘closeBox’ in ‘* ui_interface’, which is of non-class type ‘int’
  113 |   ui_interface->closeBox();
      |                 ^~~~~~~~
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

Benutzeravatar
Yadgar
Beiträge: 958
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von Yadgar » 14.04.2022 02:21:05

Hi(gh)!

Tja, das war wohl nichts... offensichtlich ist Faust nicht in der Lage, fehlerfreien C++-Code zu generieren - und von den anderen Export-Sprachen habe ich noch weniger Ahnung!

Was will ich denn? Ich will gesamplete E-Orgel-Klänge per MIDI steuern - und zwar über ein "VR-Interface", will heißen, die besagte Orgel als (mehr oder weniger) fotorealistisches 3D-Objekt, das man über MIDI-Keyboard(s) (und -Basspedal) "spielt". Das Ganze soll außerdem webgängig sein, das Orgel-Interface müsste also mit X3D oder three.js modelliert sein... wie bekomme ich meine RAW-Samples in ein MIDI-taugliches Format, und wie bringe ich MIDI und X3D bzw. three.js zusammen? Geht das überhaupt?
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von eggy » 14.04.2022 06:02:45

Yadgar hat geschrieben: ↑ zum Beitrag ↑
14.04.2022 02:21:05
offensichtlich ist Faust nicht in der Lage, fehlerfreien C++-Code zu generieren
Offensichtlich fehlt da eher die Angabe der Lib. Aber zum Glück haben ja immer die anderen Schuld.

Benutzeravatar
Yadgar
Beiträge: 958
Registriert: 22.11.2010 22:11:08
Wohnort: Qal'a-ye Nil, Bergisch-Afghanistan (linksrheinische Exklave)
Kontaktdaten:

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von Yadgar » 14.04.2022 17:23:23

Hi(gh9!
eggy hat geschrieben: ↑ zum Beitrag ↑
14.04.2022 06:02:45
Yadgar hat geschrieben: ↑ zum Beitrag ↑
14.04.2022 02:21:05
offensichtlich ist Faust nicht in der Lage, fehlerfreien C++-Code zu generieren
Offensichtlich fehlt da eher die Angabe der Lib. Aber zum Glück haben ja immer die anderen Schuld.
Und wie finde ich heraus, wie die Library heißt?
If operating systems were countries, Linux would be pre-1978 Afghanistan: an all-time favourite among alternative globetrotters, but shunned by mainstream tourists because of its lack of fancy beaches, shortage of alcoholic beverages and its fondness of beards...

brummer
Beiträge: 181
Registriert: 19.02.2007 19:21:23

Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?

Beitrag von brummer » 15.04.2022 06:38:02

Im Netz findest du jede menge Tutorials.
https://faustdoc.grame.fr/
Auch sind etliche examples bei Faust dabei.
https://github.com/grame-cncm/faust/tre ... v/examples

Antworten