Add Windows support.

This commit is contained in:
david 2020-07-04 19:43:08 +01:00
parent ee51f3ee09
commit 683ba5447f
37 changed files with 477 additions and 113 deletions

View file

@ -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;
}

View file

@ -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>;

View file

@ -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)

View 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)
{
}

View 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>;

View file

@ -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);