Add Windows support.
This commit is contained in:
parent
ee51f3ee09
commit
683ba5447f
37 changed files with 477 additions and 113 deletions
|
@ -1,10 +1,10 @@
|
|||
#include "AudioManager.h"
|
||||
|
||||
AudioManager::AudioManager()
|
||||
: mAudioDevices(),
|
||||
mAudioInterface()
|
||||
: mAudioDevices(),
|
||||
mAudioInterface()
|
||||
{
|
||||
mAudioInterface = AlsaInterface::Create();
|
||||
mAudioInterface = AudioInterface::Create();
|
||||
}
|
||||
|
||||
AudioManager::~AudioManager()
|
||||
|
@ -12,22 +12,22 @@ AudioManager::~AudioManager()
|
|||
|
||||
}
|
||||
|
||||
std::shared_ptr<AudioManager> AudioManager::Create()
|
||||
std::unique_ptr<AudioManager> AudioManager::Create()
|
||||
{
|
||||
return std::make_shared<AudioManager>();
|
||||
return std::make_unique<AudioManager>();
|
||||
}
|
||||
|
||||
void AudioManager::AddAudioDevice(AudioDevicePtr device)
|
||||
{
|
||||
mAudioDevices.push_back(device);
|
||||
mAudioDevices.push_back(device);
|
||||
}
|
||||
|
||||
AlsaInterfacePtr AudioManager::GetAudioInterface()
|
||||
AudioInterface* AudioManager::GetAudioInterface()
|
||||
{
|
||||
return mAudioInterface;
|
||||
return mAudioInterface.get();
|
||||
}
|
||||
|
||||
std::vector<AudioDevicePtr> AudioManager::GetAudioDevices()
|
||||
{
|
||||
return mAudioDevices;
|
||||
return mAudioDevices;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "AlsaInterface.h"
|
||||
#include "AudioInterface.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
class AudioManager
|
||||
|
@ -11,22 +11,22 @@ class AudioManager
|
|||
|
||||
private:
|
||||
|
||||
std::vector<AudioDevicePtr> mAudioDevices;
|
||||
AlsaInterfacePtr mAudioInterface;
|
||||
std::vector<AudioDevicePtr> mAudioDevices;
|
||||
AudioInterfaceUPtr mAudioInterface;
|
||||
|
||||
public:
|
||||
|
||||
AudioManager();
|
||||
AudioManager();
|
||||
|
||||
~AudioManager();
|
||||
~AudioManager();
|
||||
|
||||
static std::shared_ptr<AudioManager> Create();
|
||||
static std::unique_ptr<AudioManager> Create();
|
||||
|
||||
void AddAudioDevice(AudioDevicePtr device);
|
||||
void AddAudioDevice(AudioDevicePtr device);
|
||||
|
||||
std::vector<AudioDevicePtr> GetAudioDevices();
|
||||
std::vector<AudioDevicePtr> GetAudioDevices();
|
||||
|
||||
AlsaInterfacePtr GetAudioInterface();
|
||||
AudioInterface* GetAudioInterface();
|
||||
};
|
||||
|
||||
using AudioManagerPtr = std::shared_ptr<AudioManager>;
|
||||
using AudioManagerUPtr = std::unique_ptr<AudioManager>;
|
||||
|
|
|
@ -1,7 +1,26 @@
|
|||
list(APPEND linux_HEADERS
|
||||
audio_interfaces/AlsaInterface.h
|
||||
)
|
||||
|
||||
list(APPEND audio_HEADERS
|
||||
AudioDevice.h
|
||||
AudioManager.h
|
||||
audio_interfaces/AudioInterface.h
|
||||
midi/MidiReader.h
|
||||
midi/MidiTrack.h
|
||||
midi/MidiDocument.h
|
||||
midi/MidiEvent.h
|
||||
midi/MetaMidiEvent.h
|
||||
midi/MidiChannelEvent.h)
|
||||
|
||||
list(APPEND linux_INCLUDES
|
||||
audio_interfaces/AlsaInterface.cpp
|
||||
)
|
||||
|
||||
list(APPEND audio_LIB_INCLUDES
|
||||
AudioDevice.cpp
|
||||
AudioManager.cpp
|
||||
audio_interfaces/AlsaInterface.cpp
|
||||
audio_interfaces/AudioInterface.cpp
|
||||
midi/MidiReader.cpp
|
||||
midi/MidiTrack.cpp
|
||||
midi/MidiDocument.cpp
|
||||
|
@ -9,8 +28,7 @@ list(APPEND audio_LIB_INCLUDES
|
|||
midi/MetaMidiEvent.cpp
|
||||
midi/MidiChannelEvent.cpp)
|
||||
|
||||
|
||||
add_library(audio SHARED ${audio_LIB_INCLUDES})
|
||||
add_library(audio SHARED ${audio_LIB_INCLUDES} ${audio_HEADERS})
|
||||
target_include_directories(audio PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"${PROJECT_SOURCE_DIR}/src/core/file_utilities"
|
||||
|
@ -18,5 +36,11 @@ target_include_directories(audio PUBLIC
|
|||
"${CMAKE_CURRENT_SOURCE_DIR}/audio_interfaces"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/midi"
|
||||
)
|
||||
|
||||
list(APPEND linux_LIBS
|
||||
asound
|
||||
)
|
||||
|
||||
target_link_libraries(audio PUBLIC core asound)
|
||||
target_link_libraries(audio PUBLIC core)
|
||||
set_target_properties( audio PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
|
||||
set_property(TARGET audio PROPERTY FOLDER src)
|
22
src/audio/audio_interfaces/AudioInterface.cpp
Normal file
22
src/audio/audio_interfaces/AudioInterface.cpp
Normal file
|
@ -0,0 +1,22 @@
|
|||
#include "AudioInterface.h"
|
||||
#include "AudioDevice.h"
|
||||
|
||||
AudioInterface::AudioInterface()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
std::unique_ptr<AudioInterface> AudioInterface::Create()
|
||||
{
|
||||
return std::make_unique<AudioInterface>();
|
||||
}
|
||||
|
||||
void AudioInterface::OpenDevice(AudioDevicePtr device)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void AudioInterface::Play(AudioDevicePtr device)
|
||||
{
|
||||
|
||||
}
|
21
src/audio/audio_interfaces/AudioInterface.h
Normal file
21
src/audio/audio_interfaces/AudioInterface.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
|
||||
class AudioDevice;
|
||||
using AudioDevicePtr = std::shared_ptr<AudioDevice>;
|
||||
|
||||
class AudioInterface
|
||||
{
|
||||
public:
|
||||
|
||||
AudioInterface();
|
||||
|
||||
static std::unique_ptr<AudioInterface> Create();
|
||||
|
||||
void OpenDevice(AudioDevicePtr device);
|
||||
|
||||
void Play(AudioDevicePtr device);
|
||||
};
|
||||
|
||||
using AudioInterfaceUPtr = std::unique_ptr<AudioInterface>;
|
|
@ -123,11 +123,11 @@ bool MidiReader::ProcessSetTempoMetaEvent(std::ifstream& file, MetaMidiEvent& ev
|
|||
BinaryFile::GetNextByteAsInt(file, length);
|
||||
mTrackByteCount ++;
|
||||
|
||||
char buffer[length];
|
||||
BinaryFile::GetNextNBytes(file, buffer, length);
|
||||
std::string buffer;
|
||||
BinaryFile::GetNextNBytes(file, buffer.data(), length);
|
||||
mTrackByteCount += length;
|
||||
|
||||
int tempo = ByteUtils::ToInt(buffer, length);
|
||||
int tempo = ByteUtils::ToInt(buffer.data(), length);
|
||||
const int MICROSECONDS_PER_MINUTE = 60000000;
|
||||
std::cout << "Got tempo "<< tempo << "|" << MICROSECONDS_PER_MINUTE/tempo<< std::endl;
|
||||
event.SetValue(tempo);
|
||||
|
@ -331,7 +331,7 @@ bool MidiReader::ProcessTrackChunk(std::ifstream& file, bool debug)
|
|||
mTrackByteCount = 0;
|
||||
MidiTrack track;
|
||||
unsigned iter_count = 0;
|
||||
while(mTrackByteCount < chunkSize)
|
||||
while(mTrackByteCount < unsigned(chunkSize))
|
||||
{
|
||||
std::cout << "-------------" << std::endl;
|
||||
ProcessEvent(file, track);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue