2 * A simple example showing how to load and play a sound.
14 int main(int argc
, char *argv
[])
16 alure::ArrayView
<const char*> args(argv
, argc
);
20 std::cerr
<< "Usage: "<<args
.front()<<" [-device \"device name\"] files..." <<std::endl
;
25 alure::DeviceManager devMgr
= alure::DeviceManager::getInstance();
28 if(args
.size() > 2 && args
[0] == alure::StringView("-device"))
30 dev
= devMgr
.openPlayback(args
[1], std::nothrow
);
31 if(!dev
) std::cerr
<< "Failed to open \""<<args
[1]<<"\" - trying default" <<std::endl
;
34 if(!dev
) dev
= devMgr
.openPlayback();
35 std::cout
<< "Opened \""<<dev
.getName()<<"\"" <<std::endl
;
37 alure::Context ctx
= dev
.createContext();
38 alure::Context::MakeCurrent(ctx
);
40 for(;!args
.empty();args
= args
.slice(1))
42 alure::Buffer buffer
= ctx
.getBuffer(args
.front());
43 alure::Source source
= ctx
.createSource();
45 std::cout
<< "Playing "<<args
.front()<<" ("
46 << alure::GetSampleTypeName(buffer
.getSampleType())<<", "
47 << alure::GetChannelConfigName(buffer
.getChannelConfig())<<", "
48 << buffer
.getFrequency()<<"hz)" <<std::endl
;
50 while(source
.isPlaying())
52 std::cout
<< "\r "<<source
.getSampleOffset()<<" / "<<buffer
.getLength() <<std::flush
;
53 std::this_thread::sleep_for(std::chrono::milliseconds(25));
59 ctx
.removeBuffer(buffer
);
62 alure::Context::MakeCurrent(nullptr);