1 |
/* |
/* |
2 |
* Copyright (c) 2016 - 2017 Christian Schoenebeck |
* Copyright (c) 2016 - 2018 Christian Schoenebeck |
3 |
* |
* |
4 |
* http://www.linuxsampler.org |
* http://www.linuxsampler.org |
5 |
* |
* |
20 |
|
|
21 |
namespace LinuxSampler { |
namespace LinuxSampler { |
22 |
|
|
23 |
|
/// Whether release trigger sample(s) should be played and if yes under which circumstance(s). Options are bit flags to be able to combine them bitwise. |
24 |
|
enum release_trigger_t { |
25 |
|
release_trigger_none = 0, ///< Don't play release trigger sample. |
26 |
|
release_trigger_noteoff = 1, ///< Play release trigger sample on MIDI note-off event. |
27 |
|
release_trigger_sustain_maxvelocity = (1 << 1), ///< Play release trigger sample on sustain pedal up, use 127 as MIDI velocity. |
28 |
|
release_trigger_sustain_keyvelocity = (1 << 2) ///< Play release trigger sample on sustain pedal up, use latest MIDI note-on velocity on key. |
29 |
|
}; |
30 |
|
|
31 |
|
/// convenience macro for checking playing release trigger sample by sustain pedal in general |
32 |
|
#define release_trigger_sustain \ |
33 |
|
(release_trigger_sustain_maxvelocity | release_trigger_sustain_keyvelocity) |
34 |
|
|
35 |
|
// remove strictness of C++ regarding raw bitwise operations (on type release_trigger_t) |
36 |
|
inline release_trigger_t operator|(release_trigger_t a, release_trigger_t b) { |
37 |
|
return (release_trigger_t) (a | b); |
38 |
|
} |
39 |
|
inline release_trigger_t& operator|=(release_trigger_t& a, release_trigger_t b) { |
40 |
|
a = (release_trigger_t) (a | b); |
41 |
|
return a; |
42 |
|
} |
43 |
|
|
44 |
/** |
/** |
45 |
* Abstract base class of its deriving @c Note class, this class (NoteBase) |
* Abstract base class of its deriving @c Note class, this class (NoteBase) |
46 |
* is not intended to be instantiated directly. It just provides access to |
* is not intended to be instantiated directly. It just provides access to |