sidux.com
Menu

News

Give back
Last 3 Contributions
30-11-2008 20.00
25-11-2008 100.00
25-11-2008 20.00

Donate


Sponsor
hetzner.de

Languages
Preferred language:



Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
brummer
Post subject: faust (Realtime Audio Processing)  PostPosted: Jul 05, 2008 - 05:36 AM



Joined: Dec 02, 2006
Posts: 532

Status: Offline
hi

Faust ist eine compilersprache für Realtime Audio Processing. Wer interresse an sowas hat kann sich faust mit apt-get install faust installieren. Hier ein paar tips die den Einstieg erleichtern.
Nach der installation steht man zunächst ziemlich verlassen da. Keine manpages, und faust --help bringt ein auch nicht viel weiter.
Aber faust bringt eine ganze reihe examples mit, die in /usr/share/doc/faust/examples abgelegt sind. Diesen Ordner sollte man sich erstmal in's $HOME oder auf eine Datenpartition kopieren. Er enthält nicht nur die Examples sondern auch die benötigten MAKEFILES.
Die Dokumentationen findet man als pdf in /usr/share/doc/faust/
Etwas schade ist das die Dateien für das Syntaxhighlight nicht im debianpaket enthalten sind. Wer diese möchte findet sie im sourcepaket.
Okay, nun kann man die examples mal mit ne'm texteditor öffnen und einen ersten Blick auf die faust syntax werfen, sie ist stark an die syntax von dsp (digital signal processing) angelehnt.
Um einen ersten eindruck zu bekommen was faust macht, kann man die examples (.dsp) erstmal compilieren. Eine Konsole im Ordner ~/examples öffnen und make jackgtk
eingeben übersetzt zunachst die .dsp files in .cpp files diese werden dann von gcc compiliert. Die Programme findet man in unterordner jackgtkdir. Wer lieber mit Qt arbeitet benutzt make jackqt, für ladspa plugins make ladspa und so weiter.
Das MAKEFILE für Qt muß man allerdings noch bearbeiten da es von einer default installation in /usr/local ausgeht. Hier müßen die Pfade auf /usr angepasst werden.

Nach ein wenig einarbeitung und nen bischen suchen im netz (nach dsp suchen) findet man schnell eine lösung für jeden zweck.

und so kann ein fertiges Gtk programm dann aussehen

viel spaß

_________________
[ sidux-20070120-d:3]
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
brummer
Post subject: RE: faust (Realtime Audio Processing)  PostPosted: Jul 17, 2008 - 04:52 AM



Joined: Dec 02, 2006
Posts: 532

Status: Offline
Hier noch ein paar gute Seiten zur weiterbearbeitung des Prototyps (my.cpp) in Gtk

http://www.linuxheadquarters.com/howto/ ... ndex.shtml
http://docs.linux.cz/programming/gnome/ ... index.html

und C++
http://www.cpp-entwicklung.de/cpplinux/ ... _main.html
http://www.cppreference.com/

diese Seiten habe mir bisher sehr geholfen Very Happy

brummer

_________________
[ sidux-20070120-d:3]
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
brummer
Post subject: RE: faust (Realtime Audio Processing)  PostPosted: Aug 05, 2008 - 08:25 AM



Joined: Dec 02, 2006
Posts: 532

Status: Offline
wer möchte kann sich das erste release hier anschauen:
https://brain.kicks-ass.org/~hermann/guitarfx.html

faust ist einfach klasse.

_________________
[ sidux-20070120-d:3]
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
khz
Post subject:   PostPosted: Aug 21, 2008 - 05:57 PM



Joined: Mar 16, 2008
Posts: 59

Status: Offline
Hy,
sehe ich das richtig wenn
Code:
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'

ich noch libgtk2.0-dev install muß?
Frage deshalb weil apt dann
Code:
0 aktualisiert, 26 neu installiert, 0 zu entfernen und 1 nicht aktualisiert.

sagt.
Grüße khz
 
 View user's profile Send private message  
Reply with quote Back to top
brummer
Post subject:   PostPosted: Aug 21, 2008 - 06:17 PM



Joined: Dec 02, 2006
Posts: 532

Status: Offline
yup, genau

die andern noch zu installierenden packete sind bestimmt cairo pango und so, die brauchst de später wenn die widget's `schik` machen willst.

gruß brummer

_________________
[ sidux-20070120-d:3]
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
khz
Post subject:   PostPosted: Aug 25, 2008 - 03:08 PM



Joined: Mar 16, 2008
Posts: 59

Status: Offline
nicht das ichs annähernd 100% gerafft hätte aber der ca. 500 make (; (mischung von verschiedenen examples) hat gefunkt \o/
die syntax ...
 
 View user's profile Send private message  
Reply with quote Back to top
brummer
Post subject:   PostPosted: Aug 25, 2008 - 05:57 PM



Joined: Dec 02, 2006
Posts: 532

Status: Offline
ja, die syntax Laughing
Ich hatte tage da gab meine bash history nurnoch make jackgtk aus. Laughing

Aber, s'macht ja spaß.
Noch eine gut quelle um die syntax besser zu verstehen sind die zu faust gehörenden libs in usr/lib/faust das sind effekt.lib, fillter.lib math.lib musik.lib und osc.lib.
Diese sind in der faustsyntax geschrieben, beinhalten viele vorgefertigte elemente in ihrer faustsyntax und sind voll komentiert. Das macht komplexere Konstruktionen sehr anschaulich und einfach einzubinden oder nachzubauen und den bedürfnissen anzupassen.
und natürlich Professor Julius Orion Smith III
http://www.dsprelated.com/new/searchboo ... ;book=pasp

make svg ist auch sehr cool um zu sehen wo der fehler sitzt.

Auf jeden fall hast du jetzt eine funktionirende jack schnittstelle in ihrer sourceform und kannst dir den code anschauen. Eigendlich ist es garnicht so schwer zu verstehen, wenn man ein kleines funktionierendes beispiel vor sich hat. Jetzt kannst du dir auch mal jack.h daneben aufmachen und gucken ob du die funktionen dadrin findest Wink

Alles was die jackschnittstelle betrift befindet sich unterhalb von dem eintrag JACK AUDIO INTERFACE

du wirst feststellen das es garnicht so viel ist, und du es sogar lesen kannst, naja, mit nem bischen guten willen.

der abschnitt dadrüber beginend mit virtual void compute (int count, float** input, float** output)
ist der audio daten fluß, und wie er(der fluß) bearbeitet wird.

Dadrüber kommen die metoden und funktionen um das Interface zu bilden.

denne brummer

_________________
[ sidux-20070120-d:3]
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
brummer
Post subject:   PostPosted: Aug 26, 2008 - 12:59 PM



Joined: Dec 02, 2006
Posts: 532

Status: Offline
Noch nen kleines beispiel :

Wie kann ich meine jack-gtk application direkt beim start mit den gewünschten ports verbinden ?

der entsprechende abschnitt für die inputports im Source ist :
Code:
    pname = getenv("FAUST2JACK_INPUTS");
    if (pname && *pname) {
       for (int i = 0; i < gNumInChans; i++) {
            snprintf(buf, 256, pname, i + 1);
            jack_connect(client, buf, jack_port_name(input_ports[i]));
        }
    }

Das bedeutet das die connection nur durchgefürt wird wenn die Umgebungsvariable FAUST2JACK_INPUTS gesetzt ist.
Das kannst du z.b. in der Zeile dadrüber tun, mit:
Code:
setenv("FAUST2JACK_INPUTS", "system:capture_%d", 0);

damit würde sich die anwendung beim start mit den ersten Systemports verbinden. Hierbei werden die Ports hochgezählt, bis keine mehr zu verbinden sind. Du kannst auch eine nummer statt der %d angeben, bei dieser Schleife würde das aber dazu führen das sich alle deine Inputports mit dem einen angegebenen port verbinden.
Möchtest du mehreren ports verbindungen zuweisen, kannst du die funktion aufdrösseln und jeden port einzeln verbinden, das würde dan so aussehen (hier für 2 playbackports):
Code:
 
setenv("MYAPP2JACK_OUTPUTS1", "system:playback_1", 0);
 setenv("MYAPP2JACK_OUTPUTS2", "system:playback_2", 0);
    pname = getenv("MYAPP2JACK_OUTPUTS1");
    if (pname && *pname) {
       // for (int i = 0; i < gNumOutChans; i++) {
   int i = 0;
            snprintf(buf, 256, pname, i + 1);
            jack_connect(client, jack_port_name(output_ports[i]), buf);
            i++;
            pname = getenv("MYAPP2JACK_OUTPUTS2");
            snprintf(buf, 256, pname, i + 1);
            jack_connect(client, jack_port_name(output_ports[i]), buf);

      //  }     
      }


hier habe ich die for schleife aufgehoben und zähle perr hand den int i hoch.

_________________
[ sidux-20070120-d:3]
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
khz
Post subject:   PostPosted: Aug 26, 2008 - 04:04 PM



Joined: Mar 16, 2008
Posts: 59

Status: Offline
Smile thx ... u.a. Julius Orion Smith III ist ein super link ...
macht spass ... connect ...
 
 View user's profile Send private message  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2007 The PNphpBB Group
Credits
 
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2006-2008 by sidux e.V., 10407 Berlin, Kniprodestr. 104. sidux e.V. is a Berlin, Germany based non-profit foundation. Consult Impressum and Legal Terms for details. sidux™ is Free Software released under the GNU/GPL license and other compatible licenses.
powered by Zikula & Zafenio