Example CMake use in the Makefile

This commit is contained in:
Geraint 2025-01-29 15:23:56 +00:00
parent db5ac61f09
commit 3b4ca143ce
3 changed files with 29 additions and 18 deletions

View File

@ -1,13 +0,0 @@
cmake_minimum_required(VERSION 3.24)
project(example-cmd VERSION 1.0.0)
set(CMAKE_CXX_STANDARD 11)
add_executable(stretch ${CMAKE_CURRENT_SOURCE_DIR}/cmd/main.cpp)
#if(WIN32)
# find_package(IPP)
# if(IPP_FOUND)
# message(STATUS "Found ipp!")
# target_link_libraries(example-cmd PRIVATE IPP::ippcore IPP::ipps IPP::ippi)
# target_compile_definitions(stretch PRIVATE SIGNALSMITH_USE_IPP)
# endif()
#endif()

View File

@ -7,7 +7,26 @@ out/stretch: ../signalsmith-stretch.h main.cpp util/*.h util/*.hxx ../dsp/*.h
main.cpp -o out/stretch
examples: out/stretch
inputs/run-all.sh out/d1- out/stretch --semitones=-1
mkdir -p out/examples
inputs/run-all.sh out/examples/u2- out/stretch --semitones=2
inputs/run-all.sh out/examples/d2- out/stretch --semitones=-2
inputs/run-all.sh out/examples/u4- out/stretch --semitones=4
inputs/run-all.sh out/examples/d4- out/stretch --semitones=-4
inputs/run-all.sh out/examples/u8- out/stretch --semitones=8
inputs/run-all.sh out/examples/d8- out/stretch --semitones=-8
inputs/run-all.sh out/examples/u16- out/stretch --semitones=16
inputs/run-all.sh out/examples/d16- out/stretch --semitones=-16
inputs/run-all.sh out/examples/t_8- out/stretch --time=0.8
inputs/run-all.sh out/examples/t1_2- out/stretch --time=1.2
inputs/run-all.sh out/examples/t1_5- out/stretch --time=1.5
inputs/run-all.sh out/examples/t2- out/stretch --time=2
inputs/run-all.sh out/examples/t4- out/stretch --time=4
clean:
rm -rf out
rm -rf out
### Example use of CMake
cmake:
cmake -B build -G Xcode -D CMAKE_RUNTIME_OUTPUT_DIRECTORY=../out
cmake --build build --config Release

View File

@ -30,7 +30,8 @@ int main(int argc, char* argv[]) {
size_t inputLength = inWav.samples.size()/inWav.channels;
Wav prevWav; // Used during development, to compare against known-good previous render
if (!prevWav.read(outputWav + "-reference.wav")) {
bool compareReference = (time <= 1.6);
if (compareReference && !prevWav.read(outputWav + "-reference.wav")) {
if (prevWav.read(outputWav)) {
prevWav.write(outputWav + "-reference.wav");
}
@ -103,7 +104,7 @@ int main(int argc, char* argv[]) {
if (!outWav.write(outputWav).warn()) args.errorExit("failed to write WAV");
if (prevWav.result) {
if (compareReference && prevWav.result) {
outWav.read(outputWav);
if (prevWav.length() != outWav.length()) args.errorExit("lengths differ");
double diff2 = 0;
@ -113,7 +114,11 @@ int main(int argc, char* argv[]) {
}
diff2 /= prevWav.samples.size();
double diffDb = 10*std::log10(diff2);
std::cout << "Difference from reference: " << diffDb << " dB\n";
std::cout << "Reference:\n\tdifference: ";
if (diff2 < 1e-6) std::cout << Console::Red;
if (diff2 < 1e-8) std::cout << Console::Yellow;
if (diff2 < 1e-10) std::cout << Console::Green;
std::cout << Console::Bright << diffDb << Console::Reset << " dB\n";
if (diffDb > -60) args.errorExit("too much difference\n");
}
}