block based processing

This commit is contained in:
Chris
2023-08-16 13:30:39 +02:00
parent 044f42374b
commit 9dc4dd5192
4 changed files with 73 additions and 59 deletions

View File

@@ -1,9 +1,11 @@
#pragma once
namespace trnr {
template <typename t_sample>
struct ivoice {
virtual ~ivoice() = default;
virtual float process_sample() = 0;
//virtual float process_sample() = 0;
virtual void process_samples(t_sample** _outputs, int _start_index, int _block_size) = 0;
virtual bool is_busy() = 0;
virtual void set_samplerate(double samplerate) = 0;
virtual void note_on(int _note, float _velocity) = 0;
@@ -12,7 +14,7 @@ struct ivoice {
};
// check if a template derives from ivoice
template <class derived>
template <class derived, typename sample>
struct is_convertible {
template <class T>
static char test(T*);
@@ -20,6 +22,6 @@ struct is_convertible {
template <class T>
static double test(...);
static const bool value = sizeof(test<ivoice>(static_cast<derived*>(0))) == 1;
static const bool value = sizeof(test<ivoice<sample>>(static_cast<derived*>(0))) == 1;
};
} // namespace trnr