Qt Sound
Qt Sound
Hallo.
ich bin gerade am Austesten des QT-Sounds.
Und zwar habe ich eine kleine GUI mit einer UHR, die logischerweise jede Sekunde eine neue Zeit anzeigt.... Das Programm soll unter KDE/GNOME/FVWM2 etc. laufen.
Jetzt möchte ich mein Programm erweitern um 2 Tasks:
1. Ich möchte einen VolumeSlider einbauen, mit dem ich die MASTER-Volume von meimen PC lauter, leiser und muten kann.
2. Ich möchte pro Update von meiner Uhr, d.h. also jede Sekunde, einen Beep-Ton hören (.wav)
Wie mache ich das? Habe Qt 4.7.2 auf SLES11.
Geht das mit QAudioOutput oder QAudioDeviceInfo???????
Phonon hatte ich auch schon mal in der Hand aber das läuft scheinbar nur unter KDE....
Danke schon mal im voraus
#T
ich bin gerade am Austesten des QT-Sounds.
Und zwar habe ich eine kleine GUI mit einer UHR, die logischerweise jede Sekunde eine neue Zeit anzeigt.... Das Programm soll unter KDE/GNOME/FVWM2 etc. laufen.
Jetzt möchte ich mein Programm erweitern um 2 Tasks:
1. Ich möchte einen VolumeSlider einbauen, mit dem ich die MASTER-Volume von meimen PC lauter, leiser und muten kann.
2. Ich möchte pro Update von meiner Uhr, d.h. also jede Sekunde, einen Beep-Ton hören (.wav)
Wie mache ich das? Habe Qt 4.7.2 auf SLES11.
Geht das mit QAudioOutput oder QAudioDeviceInfo???????
Phonon hatte ich auch schon mal in der Hand aber das läuft scheinbar nur unter KDE....
Danke schon mal im voraus
#T
-
- Beiträge: 186
- Registriert: 11. März 2009 18:00
- Wohnort: VS
Kenn mich zwar nicht so sehr mit Phonon aus, aber müsste das nicht plattformunabhängig in Qt sein?
Kannst es ja mal ausprobieren...
Ein Phonon Player:
Und ein Timer, der jede Sekunde nen Slot aufruft:
Und der dazugehörige Slot on_play_beep():
Wobei beep.wav natürlich kürzer als eine Sekunde dauern sollte. Und ich hab keine Ahnung, ob das performancetechnisch so gut ist, kenn mich wie gesagt mit Phonon nicht wirklich aus.
Phonon bringt auch einen VolumeSlider mit, mit dem kannst du für ein Ausgabegerät die Lautstärke einstellen. Vielleicht hilft dir das ja.
/edit
Links:
Kannst es ja mal ausprobieren...
Ein Phonon Player:
Code: Alles auswählen
Phonon::MediaObject *player= Phonon::createPlayer( Phonon::MusicCategory, Phonon::MediaSource("/beep.wav") );
Code: Alles auswählen
QTimer *timer = new QTimer(this);
connect( timer, SIGNAL( timeout() ), this, SLOT( on_play_beep() ) );
timer->start(1000);
Code: Alles auswählen
player->play();
Phonon bringt auch einen VolumeSlider mit, mit dem kannst du für ein Ausgabegerät die Lautstärke einstellen. Vielleicht hilft dir das ja.
/edit
Links:
ohne Phonon
geht das ganze auch ohne Phonon?????
komme ich sonst irgendwie an die soundkarte heran und kann den volume pegel ändern?
komme ich sonst irgendwie an die soundkarte heran und kann den volume pegel ändern?
Re: Qt Sound
Phonon iss nur ne Biblio, kein Daemon, kein Server ...
Normal sollt das Teil überall installierbar sein, wo Du entsprechende Backends zur verfügung hasst (Alsa )
installierst du die qt devel packete ueber deinen packet-manager, wirst du phonon fast sicher schon mit dabei haben ...
weil:
Welchen Pegel ???
lad dir unter Linux mal ne GUI fuern alsa Mixxer. Die meisten Distros haben noch nen Sound-Server drauf (Pulse Audio), welcher Alsa Channels emuliert und wrappt.
Bei mir, (C-Media Oxygen Audio chip) , alle regler sichtbar, sind das 20-30
Die richtigen zu finden iss scho ne Kunst. Und bei jeder Soundkarte heissen die dann anders !
Viel Spass beim Programmieren.
Ausserdem wuerd ich ned moegen, wenn mir andere Programme an meinen Pegeleinstellungen rumfummeln.
Lautstaerke einstellen ja, aber nur fuer dein programm und deine Audioquelle die du grad verwendest ...
und das geht easy wenn fuer dein Phonon AudioOutput da einfach nur die lautstaerke einstellst mit setvolume !!!
Ciao ...
Normal sollt das Teil überall installierbar sein, wo Du entsprechende Backends zur verfügung hasst (Alsa )
installierst du die qt devel packete ueber deinen packet-manager, wirst du phonon fast sicher schon mit dabei haben ...
Das solltest du schleunigst vergessenkomme ich sonst irgendwie an die soundkarte heran und kann den volume pegel ändern?
weil:
Welchen Pegel ???
lad dir unter Linux mal ne GUI fuern alsa Mixxer. Die meisten Distros haben noch nen Sound-Server drauf (Pulse Audio), welcher Alsa Channels emuliert und wrappt.
Bei mir, (C-Media Oxygen Audio chip) , alle regler sichtbar, sind das 20-30
Die richtigen zu finden iss scho ne Kunst. Und bei jeder Soundkarte heissen die dann anders !
Viel Spass beim Programmieren.
Ausserdem wuerd ich ned moegen, wenn mir andere Programme an meinen Pegeleinstellungen rumfummeln.
Lautstaerke einstellen ja, aber nur fuer dein programm und deine Audioquelle die du grad verwendest ...
und das geht easy wenn fuer dein Phonon AudioOutput da einfach nur die lautstaerke einstellst mit setvolume !!!
Ciao ...
Re: Qt Sound
merci. also ich hab es nun doch mit phonon realisiert. funzt.... danke euch für die antworten!!!
Re: Qt Sound
noch ein frage zu phonon.
ich habe genau mediaobject mit genau 1 wav datei (Dauer 3:00 sekunden = piepton mit etwas Hall...).
jetzt möchte ich diese eine wav datei nochmals abspielen aber die andere vorher läuft noch deswegen tut das nicht.
wie kann ich das mit phonon realisieren?
brauche ich dafür mehrere mediaobjects..... die ich dann mit dem 1 audiooutput verknüpfe und abspiele.
stecke gerade in einer sackgasse und verzweifle gerade ein wenig!
danke schon mal für eine antwort!!!
ich habe genau mediaobject mit genau 1 wav datei (Dauer 3:00 sekunden = piepton mit etwas Hall...).
jetzt möchte ich diese eine wav datei nochmals abspielen aber die andere vorher läuft noch deswegen tut das nicht.
wie kann ich das mit phonon realisieren?
brauche ich dafür mehrere mediaobjects..... die ich dann mit dem 1 audiooutput verknüpfe und abspiele.
stecke gerade in einer sackgasse und verzweifle gerade ein wenig!
danke schon mal für eine antwort!!!
-
- Beiträge: 186
- Registriert: 11. März 2009 18:00
- Wohnort: VS
Re: Qt Sound
Willst du sie gleichzeitig abspielen? Also mit dem einen anfangen während das andere noch läuft?
Wenn du sie hintereinander abspielen möchtest, kannst du bei deinem mediaObject das Signal finishedmit nem slot connecten.
In dem slot nochmal play() aufrufen und zählst halt nen Zähler hoch oder so.. Sagen wir du möchtest drei beeps also brauchst halt nen zähler der verhindert dass mehr als 3 mal dein *.wav abgespielt wird.
Also:
Wenn du sie hintereinander abspielen möchtest, kannst du bei deinem mediaObject das Signal finishedmit nem slot connecten.
In dem slot nochmal play() aufrufen und zählst halt nen Zähler hoch oder so.. Sagen wir du möchtest drei beeps also brauchst halt nen zähler der verhindert dass mehr als 3 mal dein *.wav abgespielt wird.
Also:
- my_media_object->finished() auf einen selbstgeschrieben Slot connecten
- Im Slot: Abfragen ob schon oft genug abgespielt (Zählervariable). wenn nicht dann nochmal play aufrufen
- Alternative: MediaObject::setQueue( const QList<MediaSource> & sources ) anschauen und behelfsmäßig den Pointer auf deine mediaSource mehrmals reinstecken
Re: Qt Sound
richtig ich möchte die waves GLEICHZEITIG abspielen!!!
das hintereinanderabspielen funktioniert schon bestens mit den signalen usw.!
also mein problem ist jenes....
ich habe ein MediaObject und AudioOutput über createpath miteinander verbunden.
das MediaObject hat als abspielquelle eine .wav datei.
durch ein event wird mit mediaObject->play() mein wav abgespielt.
[b]UND JETZT KOMMTS: [/b]wir das event nochmals aktiviert während das abspielen des alten eventsaufruf noch läuft,
soll das abspielen der wav-datei ein 2. mal angestoßen werden. d.h. das abspielen der wav-datei vom ersten aufruf läuft noch fertig
aber gleichzeitig wird das abspielen der wav-datei beim 2.ten aufruf auch angestoßen....
hier (http://vir.homelinux.org/blog/archives/ ... ltech.html) habe ich was von einem mixer (1 audioutput mit VIELEN mediaobjects)
gelesen. allerdings finde ich diesen MIXER in der QT4-PHONON-API
danke schon mal für die antworten!
das hintereinanderabspielen funktioniert schon bestens mit den signalen usw.!
also mein problem ist jenes....
ich habe ein MediaObject und AudioOutput über createpath miteinander verbunden.
das MediaObject hat als abspielquelle eine .wav datei.
durch ein event wird mit mediaObject->play() mein wav abgespielt.
[b]UND JETZT KOMMTS: [/b]wir das event nochmals aktiviert während das abspielen des alten eventsaufruf noch läuft,
soll das abspielen der wav-datei ein 2. mal angestoßen werden. d.h. das abspielen der wav-datei vom ersten aufruf läuft noch fertig
aber gleichzeitig wird das abspielen der wav-datei beim 2.ten aufruf auch angestoßen....
hier (http://vir.homelinux.org/blog/archives/ ... ltech.html) habe ich was von einem mixer (1 audioutput mit VIELEN mediaobjects)
gelesen. allerdings finde ich diesen MIXER in der QT4-PHONON-API
danke schon mal für die antworten!
Re: Qt Sound
AHHH mittlerweile habe ich herausgefunden, dass je sich je 1 mediaobject mit je 1 audiooutput GLEICHZEITIG abspielen lassen.
also funzen tut das schon mal. aber die feine englische art ist das noch nicht!!!!
somit bleiben noch 2 fragen:
1. kann ich 1 mediaobject mit 1 audiooutput mit play() mehrmals aufrufen? ODER
2. kann ich viele mediaobject gleichzeitig auf 1 audiooutput abspielen lassen....
danke für die phonon antworten!!!!
also funzen tut das schon mal. aber die feine englische art ist das noch nicht!!!!
somit bleiben noch 2 fragen:
1. kann ich 1 mediaobject mit 1 audiooutput mit play() mehrmals aufrufen? ODER
2. kann ich viele mediaobject gleichzeitig auf 1 audiooutput abspielen lassen....
danke für die phonon antworten!!!!
Re: Qt Sound
also reine theorie, so genau kenn ich mich auch ned aus ...
Ich denk jede Application soll(te) nur 1 Phonon::AudioOutputDevice von einem Bestimmten typ aufmachen ...
Also je nach datenquelle wirst nicht umhinkommen, ein Device fuer PCM (Wave) eines fuer Midi's und eines fuer video ...
Also was am Ende am selber kanal einer Soundkarte landen soll, sollte üeber ein device gehen ...
Sonst regelst dich am Mixer tot. Normal sollte unter Linux mit PulseAudio fuer jedes AudioDevice nen eigener kanal im Mixer aufgehen ....
Aber du kannst natuerlich mehrere QAudioOutput auf ein Phonon::AudioOutputDevice legen, phononsollt dann (iss ja ne lib) in deiner App mixxen ...
Ciao ...
Ich denk jede Application soll(te) nur 1 Phonon::AudioOutputDevice von einem Bestimmten typ aufmachen ...
Also je nach datenquelle wirst nicht umhinkommen, ein Device fuer PCM (Wave) eines fuer Midi's und eines fuer video ...
Also was am Ende am selber kanal einer Soundkarte landen soll, sollte üeber ein device gehen ...
Sonst regelst dich am Mixer tot. Normal sollte unter Linux mit PulseAudio fuer jedes AudioDevice nen eigener kanal im Mixer aufgehen ....
Aber du kannst natuerlich mehrere QAudioOutput auf ein Phonon::AudioOutputDevice legen, phononsollt dann (iss ja ne lib) in deiner App mixxen ...
Ciao ...