Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
- Yadgar
- Beiträge: 983
- 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?
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?
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?
Bis bald im Khyberspace!
Yadgar
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...
Yadgar
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...
Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
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?
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?
Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
schau dir mal faust an: https://faust.grame.fr/
Damit wirst du wahrscheinlich schneller zum ziel kommen.
Damit wirst du wahrscheinlich schneller zum ziel kommen.
Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
leicht angestaubt aber:
http://wiki.datentraeger.org/index.php?title=Hauptseite
da steht auch einiges...
http://wiki.datentraeger.org/index.php?title=Hauptseite
da steht auch einiges...
-- nichts bewegt Sie wie ein GNU --
- Yadgar
- Beiträge: 983
- 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?
Hi(gh)!
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...
Also als VST-Plugin für z. B. Cubase?niemand hat geschrieben:10.04.2022 08:35:27Du 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.
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.niemand hat geschrieben:10.04.2022 08:35:27OT: was ist eigentlich aus deinem virtuellen Afghanistan geworden?
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...
Bis bald im Khyberspace!
Yadgar
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...
Yadgar
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...
Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
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 fluidsynth verwenden. Oder halt ein LV2-Plugin draus basteln – die können eine ähnliche Funktionalität wie VST-Plugins haben.
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.Yadgar hat geschrieben:10.04.2022 12:42:37Die 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.
Bis bald in der Rhealithät!
- Yadgar
- Beiträge: 983
- 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?
Hi(gh)!
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...
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.niemand hat geschrieben:10.04.2022 13:51:30Geht’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.
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...
Bis bald im Khyberspace!
Yadgar
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...
Yadgar
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...
- Yadgar
- Beiträge: 983
- 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?
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ührungbrummer hat geschrieben:10.04.2022 10:03:04schau dir mal faust an: https://faust.grame.fr/
Damit wirst du wahrscheinlich schneller zum ziel kommen.
Code: Alles auswählen
process = +;
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();
| ^~~~~~~~
Bis bald im Khyberspace!
Yadgar
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...
Yadgar
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...
- Yadgar
- Beiträge: 983
- 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?
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?
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?
Bis bald im Khyberspace!
Yadgar
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...
Yadgar
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...
Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
Offensichtlich fehlt da eher die Angabe der Lib. Aber zum Glück haben ja immer die anderen Schuld.Yadgar hat geschrieben:14.04.2022 02:21:05offensichtlich ist Faust nicht in der Lage, fehlerfreien C++-Code zu generieren
- Yadgar
- Beiträge: 983
- 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?
Hi(gh9!
Und wie finde ich heraus, wie die Library heißt?
Bis bald im Khyberspace!
Yadgar
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...
Yadgar
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...
Re: Einführungsliteratur in die Soundkarten-Programmierung unter Linux?
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
https://faustdoc.grame.fr/
Auch sind etliche examples bei Faust dabei.
https://github.com/grame-cncm/faust/tre ... v/examples