mirror of https://github.com/haya3218/SDfmL.git
72 lines
2.0 KiB
C
72 lines
2.0 KiB
C
|
// *************************************************************
|
||
|
// File: audio_out.h
|
||
|
// Descr: wrapper to BASS audio library (v0.41)
|
||
|
// Author: Novoselov Anton @ 2017-2018
|
||
|
// URL: https://github.com/ans-hub/audio_out
|
||
|
// *************************************************************
|
||
|
|
||
|
// BASS Library docs placed here: https://www.un4seen.com/doc/
|
||
|
|
||
|
#ifndef AUDIO_OUT_H
|
||
|
#define AUDIO_OUT_H
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <vector>
|
||
|
#include <string>
|
||
|
#include <memory>
|
||
|
|
||
|
#include "BASS/bass.h"
|
||
|
|
||
|
namespace anshub {
|
||
|
|
||
|
class AudioOut
|
||
|
{
|
||
|
public:
|
||
|
using Handle = HSAMPLE;
|
||
|
using SampleNfo = BASS_SAMPLE;
|
||
|
using FileName = std::string;
|
||
|
using VHandles = std::vector<Handle>;
|
||
|
using VSounds = std::vector<std::pair<FileName, Handle>>;
|
||
|
using String = std::string;
|
||
|
using VStrings = std::vector<String>;
|
||
|
|
||
|
AudioOut();
|
||
|
virtual ~AudioOut();
|
||
|
|
||
|
bool Play(const FileName&, bool repeat = false);
|
||
|
bool Stop(const FileName&, bool immediately = true);
|
||
|
Handle Load(const FileName&, bool);
|
||
|
VStrings NowPlaying(bool only_repeated) const;
|
||
|
|
||
|
private:
|
||
|
bool inited_;
|
||
|
VSounds loaded_samples;
|
||
|
|
||
|
Handle FindLoaded(const FileName&) const;
|
||
|
VHandles GetLoadedChannels(const Handle&) const;
|
||
|
bool IsChannelsPlayingNow(const VHandles&) const;
|
||
|
bool StopPlayingImmediately(const Handle&);
|
||
|
bool RemoveLoopFromSample(const Handle&);
|
||
|
|
||
|
}; // class AudioOut
|
||
|
|
||
|
namespace audio_helpers {
|
||
|
|
||
|
using FileName = AudioOut::FileName;
|
||
|
using SampleNfo = AudioOut::SampleNfo;
|
||
|
using Handle = AudioOut::Handle;
|
||
|
|
||
|
bool IsNowPlaying(const AudioOut&, const AudioOut::FileName&);
|
||
|
bool StopAllNowPlaying(AudioOut&, bool only_repeated);
|
||
|
|
||
|
bool IsRepeatedSample(const Handle&);
|
||
|
SampleNfo GetSampleInfo(const Handle&);
|
||
|
bool SetSampleInfo(const Handle&, SampleNfo&);
|
||
|
bool PrintBassError(const std::string& func_name = "unnamed");
|
||
|
bool PrintGeneralError(const std::string& msg);
|
||
|
|
||
|
} // namespace audio_helpers
|
||
|
|
||
|
} // namespace anshub
|
||
|
|
||
|
#endif // AUDIO_OUT_H
|