Fade out sound
I have been a Qt developer for 5 years and C++ for developer for 12 years but never really did any audio programming. For a big project I am working on 2 multitouch applications. One of which needs basic audio support, looping an audio file, being able to stop it at any time with a fadeout. I was hoping to use Phonon for this but it doesn't seem to work with Mingw. Since I want to use the same Qt SDK for both apps and I already finished the other app using Mingw, I am a bit puzzled how to get the audio working without setting up a separate Visual C++ environment for the second app.
I looked at Qt multimedia classes, this could be an option, but I found no support for fade out. Any suggestions? I have limited time on this but the audio support I need is so simple, yet trivial part of the app experience.
Have a look at "QMediaPlayer":http://doc.qt.nokia.com/qtmobility-1.1.3/qmediaplayer.html
Thanks, but that appears to be available in Qt Mobility only?! My apps are desktop apps running on windows 7
Qt Mobility is not only for mobile platforms. It also contains some support (limited afaik) for desktop platforms
Still I am afraid since this not an option since I have to port my already finished app to Qt Mobility. I would be surprised if it would work the same as on plain Qt, since it is a 52 inch multitouch application using heavy QGraphicsView stuff. But thanks for the effort.
all you need is link QtM to your app and start use it, there is no needance for rewriting
Okay, that would be cool. I will look into it. Thanks!
I'm having problems getting Qt Mobility to work. First I thought it was because I was using Qt SDK 2010.05. So I installed the latest SDK (1.1.2) from http://qt.nokia.com/downloads/. Which claims to contain Qt Mobility version 1.1.3. However after installing I created a simple app from Qt documentation using QMediaPlayer, see http://doc.qt.nokia.com/qtmobility-1.1.3/quickstart.html.
If I try to compile it complains about the following:
#include <QMediaPlayer> main.cpp:2:24: error: QMediaPlayer: No such file or directory
QTM_USE_NAMESPACE main.cpp:6: error: expected constructor, destructor, or type conversion before 'int'
I must be missing out on something. Should I build Qt Mobility myself. I even can't seem to find the source files for it in the SDK directories :-s
AFAIK desktop Qt in QtSDK doesn't contain QtMobility. You have to build it manually or use one precompiled (if you use some package-based linux distro it will be easy to install it from repos).
It does contain it. The create project wizard even supports creating a mobile project. Which still feels weird since I am targeting a 52" inch desktop environment ;-)
This is the .pro file created (and my changes):
Add files and directories to ship with the application
by adapting the examples below.
file1.source = myfile
dir1.source = mydir
DEPLOYMENTFOLDERS = # file1 dir1
symbian:TARGET.UID3 = 0xE80DF1B4
Smart Installer package's UID
This UID is from the protected range
and therefore the package will fail to install if self-signed
By default qmake uses the unprotected range value if unprotected UID is defined for the application
and 0x2002CCCF value if protected UID is given to the application
#symbian:DEPLOYMENT.installer_header = 0x2002CCCF
Allow network access on Symbian
symbian:TARGET.CAPABILITY += NetworkServices
If your application uses the Qt Mobility libraries, uncomment
the following lines and add the respective components to the
CONFIG += mobility
MOBILITY += multimedia
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Please do not modify the following two lines. Required for deployment.
And here is my main.cpp:
int main(int argc, char *argv)
QApplication app(argc, argv);
MainWindow mainWindow; mainWindow.setOrientation(MainWindow::ScreenOrientationAuto); mainWindow.showExpanded(); return app.exec();
And it does not compile for previous posted reasons!
Qt Creator is only part of Qt SDK and another part is Qt library itself. Your errors really looks like QtM is missing, aren't they?
Do you have
and more importantly, did you select Qt Mobility APIs in the Updater?
Yes, QtM appears to be missing. But when I go this url it says QtM is part of the SDK:
That's also claimed on this page, from where I downloaded and installed the SDK:
Check these screenshots from my system for more details:
It can be part of mobile libraries (symbian, maemo), I'm not sure on this btw (I'm using mostly selfbuilded Qt or Qt from my linux repo).
Try copying the mobility.prf from QtSDK/Simulator/Qt/gcc/mkspecs/features to QtSDK/Desktop/Qt/gcc/mkspecs/features
EDIT: This might not work. Don't be disappointed if it doesn't.
Okay, thanks for your efforts anyway :-)
I did. Same errors after reloading and rebuilding the project.
Finally I succeeded achieving this in Phonon on Windows 7. I just adjusted the volume level to create the fade out.