Révision | dd7cf0a144cf1e7817af6ccb4802926cc3ce8534 (tree) |
---|---|
l'heure | 2020-10-10 04:23:53 |
Auteur | Starg <starg@user...> |
Commiter | Starg |
[sfz] Add support for cutoff and resonance
@@ -826,6 +826,7 @@ enum class OpCodeKind | ||
826 | 826 | AmpKeyCenter, |
827 | 827 | AmpKeyTrack, |
828 | 828 | AmpVelTrack, |
829 | + Cutoff, | |
829 | 830 | DefaultPath, |
830 | 831 | End, |
831 | 832 | HiKey, |
@@ -842,6 +843,7 @@ enum class OpCodeKind | ||
842 | 843 | Pan, |
843 | 844 | PitchKeyCenter, |
844 | 845 | Position, |
846 | + Resonance, | |
845 | 847 | RtDecay, |
846 | 848 | Sample, |
847 | 849 | SequenceLength, |
@@ -1043,6 +1045,7 @@ public: | ||
1043 | 1045 | case OpCodeKind::AmpEG_Sustain: |
1044 | 1046 | case OpCodeKind::AmpKeyTrack: |
1045 | 1047 | case OpCodeKind::AmpVelTrack: |
1048 | + case OpCodeKind::Cutoff: | |
1046 | 1049 | case OpCodeKind::End: |
1047 | 1050 | case OpCodeKind::HiRand: |
1048 | 1051 | case OpCodeKind::HiVelocity: |
@@ -1053,6 +1056,7 @@ public: | ||
1053 | 1056 | case OpCodeKind::Offset: |
1054 | 1057 | case OpCodeKind::Pan: |
1055 | 1058 | case OpCodeKind::Position: |
1059 | + case OpCodeKind::Resonance: | |
1056 | 1060 | case OpCodeKind::RtDecay: |
1057 | 1061 | case OpCodeKind::SequenceLength: |
1058 | 1062 | case OpCodeKind::SequencePosition: |
@@ -1201,6 +1205,7 @@ private: | ||
1201 | 1205 | {"amp_keycenter"sv, OpCodeKind::AmpKeyCenter}, |
1202 | 1206 | {"amp_keytrack"sv, OpCodeKind::AmpKeyTrack}, |
1203 | 1207 | {"amp_veltrack"sv, OpCodeKind::AmpVelTrack}, |
1208 | + {"cutoff"sv, OpCodeKind::Cutoff}, | |
1204 | 1209 | {"default_path"sv, OpCodeKind::DefaultPath}, |
1205 | 1210 | {"end"sv, OpCodeKind::End}, |
1206 | 1211 | {"hikey"sv, OpCodeKind::HiKey}, |
@@ -1217,6 +1222,7 @@ private: | ||
1217 | 1222 | {"pan"sv, OpCodeKind::Pan}, |
1218 | 1223 | {"pitch_keycenter"sv, OpCodeKind::PitchKeyCenter}, |
1219 | 1224 | {"position"sv, OpCodeKind::Position}, |
1225 | + {"resonance"sv, OpCodeKind::Resonance}, | |
1220 | 1226 | {"rt_decay"sv, OpCodeKind::RtDecay}, |
1221 | 1227 | {"sample"sv, OpCodeKind::Sample}, |
1222 | 1228 | {"seq_length"sv, OpCodeKind::SequenceLength}, |
@@ -1767,6 +1773,17 @@ private: | ||
1767 | 1773 | ); |
1768 | 1774 | } |
1769 | 1775 | |
1776 | + if (auto cutoff = flatSection.GetAs<double>(OpCodeKind::Cutoff)) | |
1777 | + { | |
1778 | + s.cutoff_freq = std::clamp(static_cast<int32>(std::round(cutoff.value())), 1, 20000); | |
1779 | + } | |
1780 | + | |
1781 | + if (auto resonance = flatSection.GetAs<double>(OpCodeKind::Resonance)) | |
1782 | + { | |
1783 | + int resoCB = static_cast<int>(std::round(std::clamp(resonance.value(), 0.0, 40.0) * 10.0)); | |
1784 | + s.resonance = static_cast<int16>(std::clamp(resoCB, 0, 960)); | |
1785 | + } | |
1786 | + | |
1770 | 1787 | if (auto seqLen = flatSection.GetAs<double>(OpCodeKind::SequenceLength)) |
1771 | 1788 | { |
1772 | 1789 | s.seq_length = std::clamp(static_cast<int32>(std::round(seqLen.value())), 1, 100); |