commit efb5a262f0aeca23923e607bb80513e6003d3f4b
parent 867d6795cb0bc2a370009706ad3c88efe0909425
Author: Alexandre Bique <bique.alexandre@gmail.com>
Date: Thu, 23 Oct 2014 17:43:58 +0200
Various updates
Diffstat:
7 files changed, 46 insertions(+), 46 deletions(-)
diff --git a/examples/clap-info/clap-info.c b/examples/clap-info/clap-info.c
@@ -84,7 +84,6 @@ int main(int argc, char **argv)
fprintf(stdout, " chunk_size: %d\n", plugin->chunk_size);
fprintf(stdout, " has_gui: %d\n", plugin->has_gui);
fprintf(stdout, " supports_tunning: %d\n", plugin->supports_tuning);
- fprintf(stdout, " supports_microtones: %d\n", plugin->supports_microtones);
// destroy the plugin
plugin->destroy(plugin);
diff --git a/examples/thyns/plugin.c b/examples/thyns/plugin.c
@@ -203,7 +203,6 @@ thyns_plugin_create(struct clap_host *host,
p->plugin.chunk_size = 1;
p->plugin.has_gui = false;
p->plugin.supports_tuning = true;
- p->plugin.supports_microtones = true;
p->plugin.latency = 0;
p->plugin.get_ports_configs_count = thyns_plugin_get_ports_configs_count;
p->plugin.get_ports_config = thyns_plugin_get_ports_config;
diff --git a/examples/thyns/thyns.h b/examples/thyns/thyns.h
@@ -65,13 +65,47 @@ static double thyns_step(struct thyns *thyns,
return out;
}
+static inline struct thyns_voice *
+thyns_find_voice(struct thyns *thyns, uint8_t note)
+{
+ // XXX
+ return NULL;
+}
+
+static inline void thyns_handle_event(struct thyns *thyns,
+ struct clap_event *ev)
+{
+ switch (ev->type) {
+ case CLAP_EVENT_NOTE_ON:
+ break;
+
+ default:
+ break;
+ }
+}
+
static inline void thyns_process(struct thyns *thyns,
struct clap_process *process)
{
+ struct clap_event *ev = process->events;
+
thyns->steady_time = process->steady_time;
for (uint32_t i = 0; i < process->samples_count; ++i, ++thyns->steady_time) {
- process->output[i] = thyns_step(thyns, process);
+
+ // handle events
+ for (; ev; ev = ev->next) {
+ assert(ev->steady_time >= thyns->steady_time);
+ if (ev->steady_time > thyns->steady_time)
+ break;
+
+ thyns_handle_event(thyns, ev);
+ }
+
+ // process
+ process->output[0][i] = thyns_step(thyns, process);
}
+
+ process->need_processing = thyns->running;
}
#endif /* !THYNS_H */
diff --git a/examples/thyns/voice.h b/examples/thyns/voice.h
@@ -12,10 +12,7 @@ struct thyns_voice
uint32_t sr; // sample rate
double pi_sr; // M_PI / sample_rate
- double pitch;
-
- uint32_t note;
- uint32_t division;
+ float freq;
// osc part
struct thyns_osc osc1;
diff --git a/include/clap/clap.h b/include/clap/clap.h
@@ -171,7 +171,6 @@ enum clap_event_type
CLAP_EVENT_PARAM_SET = 3, // param attribute
CLAP_EVENT_PARAM_RAMP = 4, // param attribute
- CLAP_EVENT_PITCH_SET = 5, // pitch attribute
CLAP_EVENT_PRESET_SET = 6, // preset attribute
CLAP_EVENT_MIDI = 7, // midi attribute
@@ -192,9 +191,8 @@ enum clap_event_type
struct clap_event_note
{
- uint32_t division; // 12 for a standard octave
- uint32_t note; // starts from 0
- float velocity; // 0 .. 1.0f
+ uint8_t key;
+ float pitch;
struct clap_event *events; // events specific to this note
};
@@ -215,11 +213,6 @@ struct clap_event_control
float value; // 0 .. 1.0f
};
-struct clap_event_pitch
-{
- float freq_hz; // usually 440Hz
-};
-
struct clap_event_preset
{
uint32_t id; // the preset id
@@ -245,7 +238,6 @@ struct clap_event
union {
struct clap_event_note note;
struct clap_event_param param;
- struct clap_event_pitch pitch;
struct clap_event_preset preset;
struct clap_event_midi midi;
struct clap_event_control control;
@@ -263,12 +255,7 @@ struct clap_process
void *host_data;
/* audio buffers */
- union {
- float **input_f;
- double **input_d;
- long double **input_ld;
- };
-
+ float **input;
float **output;
uint32_t samples_count;
@@ -360,7 +347,6 @@ struct clap_plugin
bool has_gui;
bool supports_tuning;
- bool supports_microtones;
uint32_t latency; // latency in samples
diff --git a/spec.html b/spec.html
@@ -596,7 +596,7 @@ is used to process the feedback stream:</p>
</span> <span class="kt">uint32_t</span> <span class="n">offset</span><span class="p">;</span>
<span class="c1">// process all the buffer
-</span> <span class="k">for</span> <span class="p">(</span><span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">offset</span> <span class="o"><</span> <span class="n">process</span><span class="o">-></span><span class="n">nb_samples</span><span class="p">;</span>
+</span> <span class="k">for</span> <span class="p">(</span><span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">offset</span> <span class="o"><</span> <span class="n">process</span><span class="o">-></span><span class="n">samples_count</span><span class="p">;</span>
<span class="n">offset</span> <span class="o">+=</span> <span class="n">process</span><span class="o">-></span><span class="n">feedback_chunk_size</span><span class="p">)</span>
<span class="p">{</span>
@@ -1051,7 +1051,6 @@ big endian machine, it should load again successfully.</p>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">" chunk_size: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></span><span class="n">chunk_size</span><span class="p">);</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">" has_gui: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></span><span class="n">has_gui</span><span class="p">);</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">" supports_tunning: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></span><span class="n">supports_tuning</span><span class="p">);</span>
- <span class="n">fprintf</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="s">" supports_microtones: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">plugin</span><span class="o">-></span><span class="n">supports_microtones</span><span class="p">);</span>
<span class="c1">// destroy the plugin
</span> <span class="n">plugin</span><span class="o">-></span><span class="n">destroy</span><span class="p">(</span><span class="n">plugin</span><span class="p">);</span>
@@ -1242,7 +1241,6 @@ big endian machine, it should load again successfully.</p>
</span>
<span class="n">CLAP_EVENT_PARAM_SET</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="c1">// param attribute
</span> <span class="n">CLAP_EVENT_PARAM_RAMP</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span> <span class="c1">// param attribute
-</span> <span class="n">CLAP_EVENT_PITCH_SET</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> <span class="c1">// pitch attribute
</span> <span class="n">CLAP_EVENT_PRESET_SET</span> <span class="o">=</span> <span class="mi">6</span><span class="p">,</span> <span class="c1">// preset attribute
</span>
<span class="n">CLAP_EVENT_MIDI</span> <span class="o">=</span> <span class="mi">7</span><span class="p">,</span> <span class="c1">// midi attribute
@@ -1263,10 +1261,9 @@ big endian machine, it should load again successfully.</p>
<span class="k">struct</span> <span class="n">clap_event_note</span>
<span class="p">{</span>
- <span class="kt">uint32_t</span> <span class="n">division</span><span class="p">;</span> <span class="c1">// 12 for a standard octave
-</span> <span class="kt">uint32_t</span> <span class="n">note</span><span class="p">;</span> <span class="c1">// starts from 0
-</span> <span class="kt">float</span> <span class="n">velocity</span><span class="p">;</span> <span class="c1">// 0 .. 1.0f
-</span>
+ <span class="kt">uint8_t</span> <span class="n">key</span><span class="p">;</span>
+ <span class="kt">float</span> <span class="n">pitch</span><span class="p">;</span>
+
<span class="k">struct</span> <span class="n">clap_event</span> <span class="o">*</span><span class="n">events</span><span class="p">;</span> <span class="c1">// events specific to this note
</span><span class="p">};</span>
@@ -1286,11 +1283,6 @@ big endian machine, it should load again successfully.</p>
<span class="kt">float</span> <span class="n">value</span><span class="p">;</span> <span class="c1">// 0 .. 1.0f
</span><span class="p">};</span>
-<span class="k">struct</span> <span class="n">clap_event_pitch</span>
-<span class="p">{</span>
- <span class="kt">float</span> <span class="n">freq_hz</span><span class="p">;</span> <span class="c1">// usually 440Hz
-</span><span class="p">};</span>
-
<span class="k">struct</span> <span class="n">clap_event_preset</span>
<span class="p">{</span>
<span class="kt">uint32_t</span> <span class="n">id</span><span class="p">;</span> <span class="c1">// the preset id
@@ -1316,7 +1308,6 @@ big endian machine, it should load again successfully.</p>
<span class="k">union</span> <span class="p">{</span>
<span class="k">struct</span> <span class="n">clap_event_note</span> <span class="n">note</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">clap_event_param</span> <span class="n">param</span><span class="p">;</span>
- <span class="k">struct</span> <span class="n">clap_event_pitch</span> <span class="n">pitch</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">clap_event_preset</span> <span class="n">preset</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">clap_event_midi</span> <span class="n">midi</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">clap_event_control</span> <span class="n">control</span><span class="p">;</span>
@@ -1334,14 +1325,9 @@ big endian machine, it should load again successfully.</p>
<span class="kt">void</span> <span class="o">*</span><span class="n">host_data</span><span class="p">;</span>
<span class="cm">/* audio buffers */</span>
- <span class="k">union</span> <span class="p">{</span>
- <span class="kt">float</span> <span class="o">**</span><span class="n">input_f</span><span class="p">;</span>
- <span class="kt">double</span> <span class="o">**</span><span class="n">input_d</span><span class="p">;</span>
- <span class="kt">long</span> <span class="kt">double</span> <span class="o">**</span><span class="n">input_ld</span><span class="p">;</span>
- <span class="p">};</span>
-
+ <span class="kt">float</span> <span class="o">**</span><span class="n">input</span><span class="p">;</span>
<span class="kt">float</span> <span class="o">**</span><span class="n">output</span><span class="p">;</span>
- <span class="kt">uint32_t</span> <span class="n">nb_samples</span><span class="p">;</span>
+ <span class="kt">uint32_t</span> <span class="n">samples_count</span><span class="p">;</span>
<span class="cm">/* feedback loops */</span>
<span class="kt">void</span> <span class="p">(</span><span class="o">*</span><span class="n">feedback</span><span class="p">)(</span><span class="k">struct</span> <span class="n">clap_process</span> <span class="o">*</span><span class="n">process</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">stream_id</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">nb_samples</span><span class="p">);</span>
@@ -1431,7 +1417,6 @@ big endian machine, it should load again successfully.</p>
<span class="kt">bool</span> <span class="n">has_gui</span><span class="p">;</span>
<span class="kt">bool</span> <span class="n">supports_tuning</span><span class="p">;</span>
- <span class="kt">bool</span> <span class="n">supports_microtones</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">latency</span><span class="p">;</span> <span class="c1">// latency in samples
</span>
diff --git a/spec.rst b/spec.rst
@@ -325,7 +325,7 @@ is used to process the feedback stream:
uint32_t offset;
// process all the buffer
- for (offset = 0; offset < process->nb_samples;
+ for (offset = 0; offset < process->samples_count;
offset += process->feedback_chunk_size)
{