Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
494 changes: 251 additions & 243 deletions source/olcSoundWaveEngine.vcxproj

Large diffs are not rendered by default.

268 changes: 146 additions & 122 deletions source/olcSoundWaveEngine.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -1,123 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="swe_system_base.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_winmm.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_wasapi.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_openal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_alsa.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_sdlmixer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_engine.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_wave.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_file.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_view.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_dummy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_prefix.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="olc_swe_template.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="olcSoundWaveEngine.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_osc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_envelope.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_modular.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_pulse.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="swe_system_base.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_winmm.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_wasapi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_openal.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_alsa.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_sdlmixer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_engine.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_wave.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_file.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_view.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_test_basics.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_osc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_envelope.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_modular.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_pulse.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\README.md" />
</ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="swe_system_base.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_winmm.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_wasapi.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_openal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_alsa.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_sdlmixer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_engine.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_wave.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_file.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_wave_view.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_dummy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_prefix.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="olc_swe_template.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="olcSoundWaveEngine.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_osc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_envelope.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_modular.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_system_pulse.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_pinkifier.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_first_order_filter.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_delay.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="swe_synth_n_mixer.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="swe_system_base.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_winmm.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_wasapi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_openal.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_alsa.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_sdlmixer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_engine.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_wave.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_file.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_wave_view.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_test_basics.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_osc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_envelope.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_modular.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_system_pulse.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_pinkifier.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_first_order_filter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_delay.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="swe_synth_n_mixer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\README.md" />
</ItemGroup>
</Project>
23 changes: 23 additions & 0 deletions source/swe_synth_delay.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#pragma once
#include "swe_synth_delay.h"


namespace olc::sound::synth
{
///[OLC_HM] START SYNTH_DELAY_CPP
namespace modules
{
template<size_t max_ms, size_t samplerate>
void Delay<max_ms, samplerate>::Update(uint32_t nChannel, double dTime, double dTimeStep)
{
state[input_index] = input.value * decay.value;
input_index = (input_index + 1) % state.size();

//Determine where we should sample from based on the desired delay amount
size_t out_dist = std::min(state.size() - 1, static_cast<size_t>(delay.value * max_delay * samplerate));
output_index = (input_index - out_dist + state.size()) % state.size();
output = state[output_index];
}
}
///[OLC_HM] END SYNTH_DELAY_CPP
}
26 changes: 26 additions & 0 deletions source/swe_synth_delay.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#pragma once
#include "swe_prefix.h"
#include "swe_synth_modular.h"

namespace olc::sound::synth
{
///[OLC_HM] START SYNTH_DELAY_H
namespace modules
{
template<size_t max_ms, size_t samplerate>
class Delay : public olc::sound::synth::Module {
public:
olc::sound::synth::Property input = 0.0;
olc::sound::synth::Property output = 0.0;
olc::sound::synth::Property decay = 1.0;
olc::sound::synth::Property delay = 1.0;
std::array<double, (max_ms * samplerate) / 1000> state{0.0};
virtual void Update(uint32_t nChannel, double dTime, double dTimeStep) override;
private:
double max_delay = static_cast<double>(max_ms) / 1000.0;
size_t input_index = 0;
size_t output_index = 1;
};
}
///[OLC_HM] END SYNTH_DELAY_H
}
18 changes: 18 additions & 0 deletions source/swe_synth_first_order_filter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#pragma once
#include "swe_synth_first_order_filter.h"


namespace olc::sound::synth
{
///[OLC_HM] START SYNTH_FIRST_ORDER_FILTER_CPP
namespace modules
{
void FirstOrderFilter::Update(uint32_t nChannel, double dTime, double dTimeStep)
{
double new_state = input.value + pole.value * state.value;
output = new_state - zero.value * state.value;
state = new_state;
}
}
///[OLC_HM] END SYNTH_FIRST_ORDER_FILTER_CPP
}
22 changes: 22 additions & 0 deletions source/swe_synth_first_order_filter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once
#include "swe_prefix.h"
#include "swe_synth_modular.h"

namespace olc::sound::synth
{
///[OLC_HM] START SYNTH_FIRST_ORDER_FILTER_H
namespace modules
{
class FirstOrderFilter : public olc::sound::synth::Module {
public:
FirstOrderFilter(double p, double z) : pole(p), zero(z) {};
olc::sound::synth::Property pole;
olc::sound::synth::Property zero;
olc::sound::synth::Property state = 0.0;
olc::sound::synth::Property input = 0.0;
olc::sound::synth::Property output = 0.0;
virtual void Update(uint32_t nChannel, double dTime, double dTimeStep) override;
};
}
///[OLC_HM] END SYNTH_FIRST_ORDER_FILTER_H
}
23 changes: 23 additions & 0 deletions source/swe_synth_n_mixer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#pragma once
#include "swe_synth_n_mixer.h"


namespace olc::sound::synth
{
///[OLC_HM] START SYNTH_N_MIXER_CPP
namespace modules
{
template<size_t N>
void Mixer<N>::Update(uint32_t nChannel, double dTime, double dTimeStep)
{
double out = 0.0;

for (size_t i = 0; i < N; i++) {
out += amplitude[i].value * inputs[i].value;
}

output = out / N;
}
}
///[OLC_HM] END SYNTH_N_MIXER_CPP
}
Loading