diff --git a/benchmarks/BM_flacfile.cpp b/benchmarks/BM_flacfile.cpp index 4fedae8c..bd599ee7 100644 --- a/benchmarks/BM_flacfile.cpp +++ b/benchmarks/BM_flacfile.cpp @@ -9,13 +9,16 @@ #include #define DR_FLAC_IMPLEMENTATION #include "dr_flac.h" -#include "ghc/filesystem.hpp" +#include "ghc/fs_std.hpp" #include "absl/memory/memory.h" #include #ifndef NDEBUG #include #endif -// #include "libnyquist/Decoders.h" +#if 0 +#include "libnyquist/Decoders.h" +#endif +#include // readlink class FileFixture : public benchmark::Fixture { public: @@ -23,9 +26,9 @@ public: filePath1 = getPath() / "sample1.flac"; filePath2 = getPath() / "sample2.flac"; filePath3 = getPath() / "sample3.flac"; - if ( !ghc::filesystem::exists(filePath1) - || !ghc::filesystem::exists(filePath2) - || !ghc::filesystem::exists(filePath3) ) { + if ( !fs::exists(filePath1) + || !fs::exists(filePath2) + || !fs::exists(filePath3) ) { #ifndef NDEBUG std::cerr << "Can't find path" << '\n'; #endif @@ -36,7 +39,7 @@ public: void TearDown(const ::benchmark::State& /* state */) { } - ghc::filesystem::path getPath() + fs::path getPath() { #ifdef __linux__ char buf[PATH_MAX + 1]; @@ -45,18 +48,18 @@ public: std::string str { buf }; return str.substr(0, str.rfind('/')); #elif _WIN32 - return ghc::filesystem::current_path(); + return fs::current_path(); #endif } std::unique_ptr> buffer; - ghc::filesystem::path filePath1; - ghc::filesystem::path filePath2; - ghc::filesystem::path filePath3; + fs::path filePath1; + fs::path filePath2; + fs::path filePath3; }; - +#if defined(SFIZZ_USE_SNDFILE) BENCHMARK_DEFINE_F(FileFixture, SndFile)(benchmark::State& state) { for (auto _ : state) { @@ -65,6 +68,7 @@ BENCHMARK_DEFINE_F(FileFixture, SndFile)(benchmark::State& state) { sndfile.readf(buffer->data(), sndfile.frames()); } } +#endif BENCHMARK_DEFINE_F(FileFixture, DrFlac)(benchmark::State& state) { for (auto _ : state) @@ -75,17 +79,26 @@ BENCHMARK_DEFINE_F(FileFixture, DrFlac)(benchmark::State& state) { } } -// BENCHMARK_DEFINE_F(FileFixture, LibNyquist)(benchmark::State& state) { -// for (auto _ : state) -// { -// nqr::AudioData data; -// nqr::NyquistIO loader; -// loader.Load(&data, filePath3.string()); -// benchmark::DoNotOptimize(data); -// } -// } +#if 0 +BENCHMARK_DEFINE_F(FileFixture, LibNyquist)(benchmark::State& state) { + for (auto _ : state) + { + nqr::AudioData data; + nqr::NyquistIO loader; + loader.Load(&data, filePath3.string()); + benchmark::DoNotOptimize(data); + } +} +#endif +#if defined(SFIZZ_USE_SNDFILE) BENCHMARK_REGISTER_F(FileFixture, SndFile); +#endif + BENCHMARK_REGISTER_F(FileFixture, DrFlac); -// BENCHMARK_REGISTER_F(FileFixture, LibNyquist); + +#if 0 +BENCHMARK_REGISTER_F(FileFixture, LibNyquist); +#endif + BENCHMARK_MAIN(); diff --git a/benchmarks/BM_readChunk.cpp b/benchmarks/BM_readChunk.cpp index 01b93aaa..9e533cba 100644 --- a/benchmarks/BM_readChunk.cpp +++ b/benchmarks/BM_readChunk.cpp @@ -8,7 +8,7 @@ #include "Buffer.h" #include #include -#include "ghc/filesystem.hpp" +#include "ghc/fs_std.hpp" #define DR_WAV_IMPLEMENTATION #include "dr_wav.h" #include "AudioBuffer.h" @@ -16,12 +16,13 @@ #ifndef NDEBUG #include #endif +#include // readlink class FileFixture : public benchmark::Fixture { public: void SetUp(const ::benchmark::State& /* state */) { rootPath = getPath() / "sample1.wav"; - if (!ghc::filesystem::exists(rootPath)) { + if (!fs::exists(rootPath)) { #ifndef NDEBUG std::cerr << "Can't find path" << '\n'; #endif @@ -36,7 +37,7 @@ public: void TearDown(const ::benchmark::State& /* state */) { } - ghc::filesystem::path getPath() + fs::path getPath() { #ifdef __linux__ char buf[PATH_MAX + 1]; @@ -45,13 +46,13 @@ public: std::string str { buf }; return str.substr(0, str.rfind('/')); #elif _WIN32 - return ghc::filesystem::current_path(); + return fs::current_path(); #endif } std::unique_ptr> output; SndfileHandle sndfile; - ghc::filesystem::path rootPath; + fs::path rootPath; size_t numFrames; }; diff --git a/benchmarks/BM_readChunkFlac.cpp b/benchmarks/BM_readChunkFlac.cpp index df77f637..26bf9f45 100644 --- a/benchmarks/BM_readChunkFlac.cpp +++ b/benchmarks/BM_readChunkFlac.cpp @@ -8,7 +8,7 @@ #include "Buffer.h" #include #include -#include "ghc/filesystem.hpp" +#include "ghc/fs_std.hpp" #define DR_FLAC_IMPLEMENTATION #include "dr_flac.h" #include "AudioBuffer.h" @@ -16,12 +16,13 @@ #ifndef NDEBUG #include #endif +#include // readlink class FileFixture : public benchmark::Fixture { public: void SetUp(const ::benchmark::State& /* state */) { rootPath = getPath() / "sample1.flac"; - if (!ghc::filesystem::exists(rootPath)) { + if (!fs::exists(rootPath)) { #ifndef NDEBUG std::cerr << "Can't find path" << '\n'; #endif @@ -36,7 +37,7 @@ public: void TearDown(const ::benchmark::State& /* state */) { } - ghc::filesystem::path getPath() + fs::path getPath() { #ifdef __linux__ char buf[PATH_MAX + 1]; @@ -45,13 +46,13 @@ public: std::string str { buf }; return str.substr(0, str.rfind('/')); #elif _WIN32 - return ghc::filesystem::current_path(); + return fs::current_path(); #endif } std::unique_ptr> output; SndfileHandle sndfile; - ghc::filesystem::path rootPath; + fs::path rootPath; size_t numFrames; }; diff --git a/benchmarks/BM_resample.cpp b/benchmarks/BM_resample.cpp index ffd7f902..dd122165 100644 --- a/benchmarks/BM_resample.cpp +++ b/benchmarks/BM_resample.cpp @@ -11,8 +11,10 @@ #include "absl/memory/memory.h" #include #include -#include "ghc/filesystem.hpp" +#include "ghc/fs_std.hpp" #include "hiir/Upsampler2xFpu.h" +#include // readlink + constexpr std::array coeffsStage2x { 0.036681502163648017, 0.13654762463195771, @@ -192,7 +194,7 @@ public: { const auto rootPath = getPath() / "sample1.wav"; - if (!ghc::filesystem::exists(rootPath)) { + if (!fs::exists(rootPath)) { #ifndef NDEBUG std::cerr << "Can't find path" << '\n'; #endif @@ -210,7 +212,7 @@ public: { } - ghc::filesystem::path getPath() + fs::path getPath() { #ifdef __linux__ char buf[PATH_MAX + 1]; @@ -219,7 +221,7 @@ public: std::string str { buf }; return str.substr(0, str.rfind('/')); #elif _WIN32 - return ghc::filesystem::current_path(); + return fs::current_path(); #endif } diff --git a/benchmarks/BM_wavfile.cpp b/benchmarks/BM_wavfile.cpp index a4533195..919e87f0 100644 --- a/benchmarks/BM_wavfile.cpp +++ b/benchmarks/BM_wavfile.cpp @@ -3,17 +3,23 @@ // This code is part of the sfizz library and is licensed under a BSD 2-clause // license. You should have receive a LICENSE.md file along with the code. // If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz + #include "Buffer.h" #include +#if defined(SFIZZ_USE_SNDFILE) #include +#endif #define DR_WAV_IMPLEMENTATION #include "dr_wav.h" -#include "ghc/filesystem.hpp" +#include "ghc/fs_std.hpp" #include "absl/memory/memory.h" +#if 0 +#include "libnyquist/Decoders.h" +#endif #ifndef NDEBUG #include #endif -// #include "libnyquist/Decoders.h" +#include // readlink class FileFixture : public benchmark::Fixture { public: @@ -21,9 +27,9 @@ public: filePath1 = getPath() / "sample1.wav"; filePath2 = getPath() / "sample2.wav"; filePath3 = getPath() / "sample3.wav"; - if ( !ghc::filesystem::exists(filePath1) - || !ghc::filesystem::exists(filePath2) - || !ghc::filesystem::exists(filePath3)) { + if ( !fs::exists(filePath1) + || !fs::exists(filePath2) + || !fs::exists(filePath3)) { #ifndef NDEBUG std::cerr << "Can't find path" << '\n'; #endif @@ -34,7 +40,7 @@ public: void TearDown(const ::benchmark::State& /* state */) { } - ghc::filesystem::path getPath() + fs::path getPath() { #ifdef __linux__ char buf[PATH_MAX + 1]; @@ -43,18 +49,18 @@ public: std::string str { buf }; return str.substr(0, str.rfind('/')); #elif _WIN32 - return ghc::filesystem::current_path(); + return fs::current_path(); #endif } std::unique_ptr> buffer; - ghc::filesystem::path filePath1; - ghc::filesystem::path filePath2; - ghc::filesystem::path filePath3; + fs::path filePath1; + fs::path filePath2; + fs::path filePath3; }; - +#if defined(SFIZZ_USE_SNDFILE) BENCHMARK_DEFINE_F(FileFixture, SndFile)(benchmark::State& state) { for (auto _ : state) { @@ -63,6 +69,7 @@ BENCHMARK_DEFINE_F(FileFixture, SndFile)(benchmark::State& state) { sndfile.readf(buffer->data(), sndfile.frames()); } } +#endif BENCHMARK_DEFINE_F(FileFixture, DrWav)(benchmark::State& state) { for (auto _ : state) @@ -79,17 +86,24 @@ BENCHMARK_DEFINE_F(FileFixture, DrWav)(benchmark::State& state) { } } -// BENCHMARK_DEFINE_F(FileFixture, LibNyquist)(benchmark::State& state) { -// for (auto _ : state) -// { -// nqr::AudioData data; -// nqr::NyquistIO loader; -// loader.Load(&data, filePath3.string()); -// benchmark::DoNotOptimize(data); -// } -// } +#if 0 +BENCHMARK_DEFINE_F(FileFixture, LibNyquist)(benchmark::State& state) { + for (auto _ : state) + { + nqr::AudioData data; + nqr::NyquistIO loader; + loader.Load(&data, filePath3.string()); + benchmark::DoNotOptimize(data); + } +} +#endif +#if defined(SFIZZ_USE_SNDFILE) BENCHMARK_REGISTER_F(FileFixture, SndFile); +#endif BENCHMARK_REGISTER_F(FileFixture, DrWav); -// BENCHMARK_REGISTER_F(FileFixture, LibNyquist); + +#if 0 +BENCHMARK_REGISTER_F(FileFixture, LibNyquist); +#endif BENCHMARK_MAIN(); diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 68145e2d..49c9c0cc 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -18,7 +18,10 @@ sfizz_add_benchmark(bm_mathfuns BM_mathfuns.cpp) sfizz_add_benchmark(bm_gain BM_gain.cpp) sfizz_add_benchmark(bm_divide BM_divide.cpp) sfizz_add_benchmark(bm_ramp BM_ramp.cpp) + +if(0) #FIXME sfizz_add_benchmark(bm_ADSR BM_ADSR.cpp) +endif() sfizz_add_benchmark(bm_add BM_add.cpp) sfizz_add_benchmark(bm_multiplyAdd BM_multiplyAdd.cpp) @@ -39,13 +42,18 @@ sfizz_add_benchmark(bm_random BM_random.cpp) sfizz_add_benchmark(bm_clamp BM_clamp.cpp) sfizz_add_benchmark(bm_allWithin BM_allWithin.cpp) +if(0) #FIXME sfizz_add_benchmark(bm_logger BM_logger.cpp) +endif() + sfizz_add_benchmark(bm_smoothers BM_smoothers.cpp) sfizz_add_benchmark(bm_powerFollower BM_powerFollower.cpp) -if(TARGET sfizz::samplerate) -sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES}) -target_link_libraries(bm_resample PRIVATE sfizz::samplerate sfizz::sndfile sfizz::hiir) +if(SFIZZ_USE_SNDFILE) + if(TARGET sfizz::samplerate) + sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES}) + target_link_libraries(bm_resample PRIVATE sfizz::samplerate sfizz::sndfile sfizz::hiir) + endif() endif() sfizz_add_benchmark(bm_envelopes BM_envelopes.cpp) @@ -56,13 +64,17 @@ target_link_libraries(bm_wavfile PRIVATE sfizz::sndfile) sfizz_add_benchmark(bm_flacfile BM_flacfile.cpp) target_link_libraries(bm_flacfile PRIVATE sfizz::sndfile) -sfizz_add_benchmark(bm_audioReaders BM_audioReaders.cpp ../src/sfizz/AudioReader.cpp) -target_link_libraries(bm_audioReaders PRIVATE st_audiofile sfizz::sndfile) +if(SFIZZ_USE_SNDFILE) + sfizz_add_benchmark(bm_audioReaders BM_audioReaders.cpp ../src/sfizz/AudioReader.cpp) + target_link_libraries(bm_audioReaders PRIVATE st_audiofile sfizz::sndfile) +endif() -sfizz_add_benchmark(bm_readChunk BM_readChunk.cpp) -target_link_libraries(bm_readChunk PRIVATE sfizz::sndfile) -sfizz_add_benchmark(bm_readChunkFlac BM_readChunkFlac.cpp) -target_link_libraries(bm_readChunkFlac PRIVATE sfizz::sndfile) +if(SFIZZ_USE_SNDFILE) + sfizz_add_benchmark(bm_readChunk BM_readChunk.cpp) + target_link_libraries(bm_readChunk PRIVATE sfizz::sndfile) + sfizz_add_benchmark(bm_readChunkFlac BM_readChunkFlac.cpp) + target_link_libraries(bm_readChunkFlac PRIVATE sfizz::sndfile) +endif() sfizz_add_benchmark(bm_interpolators BM_interpolators.cpp) diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt index 22e8b319..8b7d672d 100644 --- a/demos/CMakeLists.txt +++ b/demos/CMakeLists.txt @@ -26,11 +26,22 @@ if(TARGET Qt5::Widgets) set_target_properties(sfizz_demo_stretch_tuning PROPERTIES AUTOUIC ON) endif() -add_executable(eq_apply EQ.cpp) -target_link_libraries(eq_apply PRIVATE sfizz::internal sfizz::sndfile sfizz::cxxopts sfizz::filesystem) - -add_executable(filter_apply Filter.cpp) -target_link_libraries(filter_apply PRIVATE sfizz::internal sfizz::sndfile sfizz::cxxopts sfizz::filesystem) +if(SFIZZ_USE_SNDFILE) + add_executable(eq_apply EQ.cpp) + target_link_libraries(eq_apply PRIVATE + sfizz::cxxopts + sfizz::filesystem + sfizz::internal + sfizz::sndfile + ) + add_executable(filter_apply Filter.cpp) + target_link_libraries(filter_apply PRIVATE + sfizz::cxxopts + sfizz::filesystem + sfizz::internal + sfizz::sndfile + ) +endif() add_executable(sfizz_plot_curve PlotCurve.cpp) target_link_libraries(sfizz_plot_curve PRIVATE sfizz::internal) @@ -38,11 +49,19 @@ target_link_libraries(sfizz_plot_curve PRIVATE sfizz::internal) add_executable(sfizz_plot_wavetables PlotWavetables.cpp) target_link_libraries(sfizz_plot_wavetables PRIVATE sfizz::internal) -add_executable(sfizz_plot_lfo PlotLFO.cpp) -target_link_libraries(sfizz_plot_lfo PRIVATE sfizz::internal sfizz::sndfile sfizz::cxxopts) - -add_executable(sfizz_file_instrument FileInstrument.cpp) -target_link_libraries(sfizz_file_instrument PRIVATE sfizz::internal sfizz::sndfile) +if(SFIZZ_USE_SNDFILE) + add_executable(sfizz_plot_lfo PlotLFO.cpp) + target_link_libraries(sfizz_plot_lfo PRIVATE + sfizz::cxxopts + sfizz::internal + sfizz::sndfile + ) + add_executable(sfizz_file_instrument FileInstrument.cpp) + target_link_libraries(sfizz_file_instrument PRIVATE + sfizz::internal + sfizz::sndfile + ) +endif() add_executable(sfizz_file_wavetable FileWavetable.cpp) target_link_libraries(sfizz_file_wavetable PRIVATE sfizz::internal) diff --git a/demos/FileWavetable.cpp b/demos/FileWavetable.cpp index 9e1fa597..e81a5582 100644 --- a/demos/FileWavetable.cpp +++ b/demos/FileWavetable.cpp @@ -36,8 +36,8 @@ int main(int argc, char *argv[]) sfz::WavetableInfo wt {}; - sfz::FileMetadataReader reader; - if (!reader.open(path)) { + sfz::FileMetadataReader reader(path); + if (!reader.open()) { fprintf(stderr, "Cannot open file\n"); return 1; } diff --git a/demos/PlotLFO.cpp b/demos/PlotLFO.cpp index 17ff452b..86bc288f 100644 --- a/demos/PlotLFO.cpp +++ b/demos/PlotLFO.cpp @@ -92,6 +92,7 @@ int main(int argc, char* argv[]) sfzPath = argv[1]; } + // FIXME: OptionException was replaced by some cxxopts::exceptions::??? catch (cxxopts::OptionException& ex) { std::cerr << ex.what() << "\n"; return 1;