Skip to content

Commit

Permalink
Add setters
Browse files Browse the repository at this point in the history
  • Loading branch information
paulfd committed Jan 27, 2024
1 parent 98d9493 commit b221eae
Show file tree
Hide file tree
Showing 20 changed files with 3,255 additions and 4,000 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@
[submodule "external/st_audiofile/thirdparty/wavpack"]
path = external/st_audiofile/thirdparty/wavpack
url = https://github.com/dbry/WavPack.git
[submodule "external/invoke.hpp"]
path = external/invoke.hpp
url = https://github.com/BlackMATov/invoke.hpp.git
2 changes: 1 addition & 1 deletion cmake/SfizzConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ endif()

# Set macOS compatibility level
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
endif()

# If using C++17, check if aligned-new has runtime support on the platform;
Expand Down
5 changes: 5 additions & 0 deletions cmake/SfizzDeps.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ else()
sfizz_add_vendor_abseil()
endif()

# C++14 std::invoke
# add_subdirectory("external/invoke.hpp")
add_library(invoke_hpp INTERFACE)
target_include_directories(invoke_hpp INTERFACE "external/invoke.hpp/headers")

# The jsl utility library for C++
add_library(sfizz_jsl INTERFACE)
add_library(sfizz::jsl ALIAS sfizz_jsl)
Expand Down
10 changes: 9 additions & 1 deletion common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,10 @@ SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/external/atomic_queue/include

SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/external/filesystem/include

# invoke.hpp dependency

SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/external/invoke.hpp/headers

### Abseil dependency

SFIZZ_C_FLAGS += -I$(SFIZZ_DIR)/external/abseil-cpp
Expand Down Expand Up @@ -293,7 +297,11 @@ SFIZZ_SOURCES += \
external/abseil-cpp/absl/synchronization/blocking_counter.cc \
external/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc \
external/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc \
external/abseil-cpp/absl/synchronization/internal/waiter.cc \
external/abseil-cpp/absl/synchronization/internal/waiter_base.cc \
external/abseil-cpp/absl/synchronization/internal/win32_waiter.cc \
external/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc \
external/abseil-cpp/absl/synchronization/internal/sem_waiter.cc \
external/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc \
external/abseil-cpp/absl/synchronization/notification.cc \
external/abseil-cpp/absl/synchronization/mutex.cc
# absl::graphcycles_internal
Expand Down
2 changes: 1 addition & 1 deletion external/abseil-cpp
Submodule abseil-cpp updated 579 files
1 change: 1 addition & 0 deletions external/invoke.hpp
Submodule invoke.hpp added at 2c1eab
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ target_sources(sfizz_internal PRIVATE ${SFIZZ_HEADERS} ${SFIZZ_SOURCES} ${FAUST_
target_include_directories(sfizz_internal PUBLIC "." "sfizz")
target_link_libraries(sfizz_internal
PUBLIC absl::strings absl::span sfizz::filesystem sfizz::atomic_queue sfizz::spin_mutex sfizz::bit_array sfizz::simde sfizz::hiir sfizz::jsl
PRIVATE sfizz::parser sfizz::messaging absl::flat_hash_map Threads::Threads st_audiofile sfizz::pugixml sfizz::spline sfizz::tunings sfizz::kissfft sfizz::cephes sfizz::cpuid sfizz::threadpool sfizz::atomic)
PRIVATE sfizz::parser sfizz::messaging absl::flat_hash_map Threads::Threads st_audiofile sfizz::pugixml sfizz::spline sfizz::tunings sfizz::kissfft sfizz::cephes sfizz::cpuid sfizz::threadpool sfizz::atomic invoke_hpp)
if(SFIZZ_USE_SNDFILE)
target_compile_definitions(sfizz_internal PUBLIC "SFIZZ_USE_SNDFILE=1")
target_link_libraries(sfizz_internal PUBLIC st_audiofile)
Expand Down
1 change: 1 addition & 0 deletions src/sfizz/Defaults.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ FloatSpec loBipolar { -1.0f, {-1.0f, 1.0f}, kPermissiveBounds };
FloatSpec hiBipolar { 1.0f, {-1.0f, 1.0f}, kPermissiveBounds };
UInt16Spec ccNumber { 0, {0, config::numCCs}, 0 };
UInt16Spec smoothCC { 0, {0, 100}, kPermissiveUpperBound };
FloatSpec stepCC { 0.0f, {0.0f, 127.0f}, kPermissiveUpperBound };
UInt8Spec curveCC { 0, {0, 255}, 0 };
UInt8Spec sustainCC { 64, {0, 127}, 0 };
UInt8Spec sostenutoCC { 66, {0, 127}, 0 };
Expand Down
1 change: 1 addition & 0 deletions src/sfizz/Defaults.h
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ namespace Default
extern const OpcodeSpec<float> hiPolyAftertouch;
extern const OpcodeSpec<uint16_t> ccNumber;
extern const OpcodeSpec<uint8_t> curveCC;
extern const OpcodeSpec<float> stepCC;
extern const OpcodeSpec<uint16_t> smoothCC;
extern const OpcodeSpec<uint8_t> sustainCC;
extern const OpcodeSpec<uint8_t> sostenutoCC;
Expand Down
31 changes: 14 additions & 17 deletions src/sfizz/Region.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1126,59 +1126,59 @@ bool sfz::Region::parseEGOpcode(const Opcode& opcode, EGDescription& eg)
eg.vel2sustain = opcode.read(Default::egPercentMod);
break;
case_any_eg("attack_oncc&"): // also attackcc&
if (!setModifier(eg.ccAttack, Default::egTimeMod))
if (!setModifier(eg.ccAttack, Default::egTimeMod))
return false;
break;
case_any_eg("attack_curvecc&"):
if (!setCurve(eg.ccAttack))
if (!setCurve(eg.ccAttack))
return false;
break;
case_any_eg("decay_oncc&"): // also decaycc&
if (!setModifier(eg.ccDecay, Default::egTimeMod))
return false;
break;
case_any_eg("decay_curvecc&"):
if (!setCurve(eg.ccDecay))
if (!setCurve(eg.ccDecay))
return false;
break;
case_any_eg("delay_oncc&"): // also delaycc&
if (!setModifier(eg.ccDelay, Default::egTimeMod))
if (!setModifier(eg.ccDelay, Default::egTimeMod))
return false;
break;
case_any_eg("delay_curvecc&"):
if (!setCurve(eg.ccDelay))
if (!setCurve(eg.ccDelay))
return false;
break;
case_any_eg("hold_oncc&"): // also holdcc&
if (!setModifier(eg.ccHold, Default::egTimeMod))
if (!setModifier(eg.ccHold, Default::egTimeMod))
return false;
break;
case_any_eg("hold_curvecc&"): // also attackcc&
if (!setCurve(eg.ccHold))
if (!setCurve(eg.ccHold))
return false;
break;
case_any_eg("release_oncc&"): // also releasecc&
if (!setModifier(eg.ccRelease, Default::egTimeMod))
if (!setModifier(eg.ccRelease, Default::egTimeMod))
return false;
break;
case_any_eg("release_curvecc&"): // also attackcc&
if (!setCurve(eg.ccRelease))
if (!setCurve(eg.ccRelease))
return false;
break;
case_any_eg("start_oncc&"): // also startcc&
if (!setModifier(eg.ccStart, Default::egPercentMod))
if (!setModifier(eg.ccStart, Default::egPercentMod))
return false;
break;
case_any_eg("start_curvecc&"): // also startcc&
if (!setCurve(eg.ccStart))
if (!setCurve(eg.ccStart))
return false;
break;
case_any_eg("sustain_oncc&"): // also sustaincc&
if (!setModifier(eg.ccSustain, Default::egPercentMod))
if (!setModifier(eg.ccSustain, Default::egPercentMod))
return false;
break;
case_any_eg("sustain_curvecc&"): // also attackcc&
if (!setCurve(eg.ccSustain))
if (!setCurve(eg.ccSustain))
return false;
break;

Expand Down Expand Up @@ -1757,10 +1757,7 @@ bool sfz::Region::processGenericCc(const Opcode& opcode, OpcodeSpec<float> spec,
p.curve = opcode.read(Default::curveCC);
break;
case kOpcodeStepCcN:
{
const OpcodeSpec<float> stepCC { 0.0f, {}, kPermissiveBounds };
p.step = spec.normalizeInput(opcode.read(stepCC));
}
p.step = spec.normalizeInput(opcode.read(Default::stepCC));
break;
case kOpcodeSmoothCcN:
p.smooth = opcode.read(Default::smoothCC);
Expand Down
4 changes: 2 additions & 2 deletions src/sfizz/Region.h
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,8 @@ struct Region {
VelocityOverride velocityOverride { Default::velocityOverride }; // sw_vel
bool checkSustain { Default::checkSustain }; // sustain_sw
bool checkSostenuto { Default::checkSostenuto }; // sostenuto_sw
uint16_t sustainCC { Default::sustainCC }; // sustain_cc
uint16_t sostenutoCC { Default::sostenutoCC }; // sustain_cc
uint8_t sustainCC { Default::sustainCC }; // sustain_cc
uint8_t sostenutoCC { Default::sostenutoCC }; // sostenuto_cc
float sustainThreshold { Default::sustainThreshold }; // sustain_cc
float sostenutoThreshold { Default::sostenutoThreshold }; // sustain_cc

Expand Down
25 changes: 12 additions & 13 deletions src/sfizz/SfzHelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -283,22 +283,21 @@ inline CXX14_CONSTEXPR bool ccModulationIsPerVoice(int cc) {
}

namespace literals {
inline float operator""_norm(unsigned long long int value)
inline float operator""_norm(unsigned long long int value)
{
if (value > 127)
value = 127;

return normalize7Bits(value);
return static_cast<float>(value) / 127.0f;
}

inline float operator""_norm(long double value)
inline float operator""_norm(long double value)
{
if (value < 0)
value = 0;
if (value > 127)
value = 127;

return normalize7Bits(value);
return static_cast<float>(value) / 127.0f;
}
inline float operator""_bend(unsigned long long int value)
{
return static_cast<float>(value) / 8191.0f;
}
inline float operator""_bend(long double value)
{
return static_cast<float>(value) / 8191.0f;
}
}

Expand Down
1 change: 1 addition & 0 deletions src/sfizz/Synth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include "parser/Parser.h"
#include <absl/algorithm/container.h>
#include <absl/memory/memory.h>
#include <absl/strings/str_cat.h>
#include <absl/strings/str_replace.h>
#include <absl/types/optional.h>
#include <absl/types/span.h>
Expand Down
Loading

0 comments on commit b221eae

Please sign in to comment.