1#ifndef __CALF_WAVETABLE_H
2#define __CALF_WAVETABLE_H
16#define WAVETABLE_WAVE_BITS 8
18class wavetable_audio_module;
26 float fracslice = (slice & 255) * (1.0 / 256.0);
30 float value1 = 0.f, value2 = 0.f;
32 for (
int j = 0;
j < 8;
j++)
36 float frac = (cphase & (
SCALE - 1)) * (1.0f /
SCALE);
38 value2 +=
dsp::lerp((
float)waveform2[wpos], (
float)waveform2[wpos2], frac);
39 cphase += cphasedelta;
42 return dsp::lerp(value1, value2, fracslice) * (1.0 / 8.0) * (1.0 / 32768.0);;
84 return (
note != -1) && (
amp.get_active()) && !
envs[0].stopped();
137 float *o[2] = {
outs[0] + offset,
outs[1] + offset };
148 basic_synth::render_to(buf, nsamples);
153 o[0][
i] = gain*buf[
i][0];
154 o[1][
i] = gain*buf[
i][1];
Controller controller
Definition main.C:5
static long waveform[8]
Definition adlibemu.c:197
float * params[wavetable_metadata::param_count]
Definition giface.h:527
float * outs[(wavetable_metadata::out_count !=0) ? wavetable_metadata::out_count :1]
Definition giface.h:526
audio_module()
Definition giface.h:533
mod_matrix_impl(dsp::modulation_entry *_matrix, calf_plugins::mod_matrix_metadata *_metadata)
Definition modmatrix.cpp:31
void send_configures(send_configure_iface *)
Definition modmatrix.cpp:113
Definition wavetable.h:95
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition wavetable.h:167
uint32_t process(uint32_t offset, uint32_t nsamples, uint32_t inputs_mask, uint32_t outputs_mask)
process function copied from Organ (will probably need some adjustments as well as implementing the p...
Definition wavetable.h:136
float modwheel_value
Unsmoothed mod wheel value.
Definition wavetable.h:115
dsp::inertia< dsp::linear_ramp > inertia_pitchbend
Smoothed pitch bend value.
Definition wavetable.h:111
dsp::modulation_entry mod_matrix_data[mod_matrix_slots]
Rows of the modulation matrix.
Definition wavetable.h:109
virtual void note_off(int channel, int note, int velocity)
Handle MIDI Note Off.
Definition wavetable.h:174
bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
ControlSnapshot control_snapshots[MaxSnapshots]
Definition wavetable.h:122
int16_t tables[wt_count][129][256]
Definition wavetable.h:107
virtual char * configure(const char *key, const char *value)
DSSI configure call.
wavetable_voice * last_voice
Definition wavetable.h:116
virtual void pitch_bend(int channel, int value)
Handle pitch bend message.
Definition wavetable.h:179
virtual void channel_pressure(int channel, int value)
Handle MIDI Channel Pressure.
bool panic_flag
Definition wavetable.h:104
virtual const dsp::modulation_entry * get_default_mod_matrix_value(int row) const
virtual void control_change(int channel, int controller, int value)
Handle MIDI Control Change.
dsp::inertia< dsp::linear_ramp > inertia_pressure
Smoothed channel pressure value.
Definition wavetable.h:113
virtual void send_configures(send_configure_iface *sci)
Send all understood configure vars (none by default).
Definition wavetable.h:185
uint32_t get_crate() const
Definition wavetable.h:133
void make_snapshot(int index)
Definition wavetable.h:159
bool get_layers(int index, int generation, unsigned int &layers) const
Definition wavetable.h:184
virtual void note_on(int channel, int note, int velocity)
Handle MIDI Note On.
Definition wavetable.h:173
uint32_t crate
Definition wavetable.h:103
dsp::voice * alloc_voice()
Definition wavetable.h:127
Definition wavetable.h:47
virtual bool get_active()
check if voice can be removed from active voice list
Definition wavetable.h:82
void channel_pressure(int value)
virtual int get_current_note()
return the note used by this voice
Definition wavetable.h:79
const int16_t * get_last_table(int osc) const
dsp::triangle_lfo lfo2
Definition wavetable.h:68
void note_on(int note, int vel)
a note was pressed
void steal()
very fast note off
void set_params_ptr(wavetable_audio_module *_parent, int _srate)
float ** params
Definition wavetable.h:54
dsp::triangle_lfo lfo1
Definition wavetable.h:68
float last_oscshift[OscCount]
Last oscillator shift (wavetable index) of each oscillator.
Definition wavetable.h:63
float velocity
Current MIDI velocity.
Definition wavetable.h:59
wavetable_audio_module * parent
Definition wavetable.h:53
void note_off(int)
a note was released
float cur_oscamp[OscCount]
Current osc amplitude.
Definition wavetable.h:67
void reset()
reset voice to default state (used when a voice is to be reused)
void render_block(int current_snapshot)
int note
Definition wavetable.h:52
float last_oscamp[OscCount]
Last oscillator amplitude of each oscillator.
Definition wavetable.h:65
float moddest[wavetable_metadata::moddest_count]
Current calculated mod matrix outputs.
Definition wavetable.h:61
@ MaxSampleRun
Definition wavetable.h:49
@ OscCount
Definition wavetable.h:49
@ BlockSize
Definition wavetable.h:49
@ Channels
Definition wavetable.h:49
@ EnvCount
Definition wavetable.h:49
wavetable_oscillator oscs[OscCount]
Definition wavetable.h:56
dsp::decay amp
Definition wavetable.h:55
float output_buffer[BlockSize][Channels]
Definition wavetable.h:50
dsp::adsr envs[EnvCount]
Definition wavetable.h:57
void calc_derived_dests(float env0)
Definition wavetable.h:86
void fill_snapshots(int nsamples)
Definition synth.h:140
@ MaxSnapshots
Definition synth.h:137
Definition primitives.h:281
register unsigned j
Definition inflate.c:1576
unsigned v[N_MAX]
Definition inflate.c:1584
register unsigned i
Definition inflate.c:1575
static PuglViewHint int value
Definition pugl.h:1708
JSAMPIMAGE data
Definition jpeglib.h:945
unsigned short uint16_t
Definition mid.cpp:99
unsigned int uint32_t
Definition mid.cpp:100
short int16_t
Definition mid.cpp:96
Definition benchmark.cpp:53
@ MAX_SAMPLE_RUN
Definition giface.h:38
@ LG_REALTIME_GRAPH
Definition giface.h:181
T lerp(T v1, T v2, U mix)
Definition primitives.h:267
void zero(float &v)
Set a float to zero.
Definition primitives.h:41
T clip(T value, T min, T max)
Clip a value to [min, max].
Definition primitives.h:231
png_structrp int mode
Definition png.h:1139
'provides live line graph values' interface
Definition giface.h:198
Definition wavetable.h:118
float pitchbend
Definition wavetable.h:119
Definition wavetable.h:21
int16_t(* tables)[256]
Definition wavetable.h:23
@ SCALE
Definition wavetable.h:22
@ SIZE
Definition wavetable.h:22
@ MASK
Definition wavetable.h:22
float get(uint16_t slice)
Definition wavetable.h:24
voice_array active_voices
Voices currently playing.
Definition synth.h:290
int sample_rate
Current sample rate.
Definition synth.h:282
virtual void control_change(int ctl, int val)
Definition synth.cpp:156
virtual void setup(int sr)
Definition synth.h:302
virtual void note_off(int note, int vel)
Definition synth.cpp:123
virtual void note_on(int note, int vel)
Definition synth.cpp:102
virtual void pitch_bend(int amt)
amt = -8192 to 8191
Definition synth.h:317
Single entry in modulation matrix.
Definition modmatrix.h:31
uint32_t phasedelta
Per-sample phase delta (phase increment), equal to 2^32*freq/sr.
Definition osc.h:40
uint32_t phase
Phase (from 0 to 0xFFFFFFFF).
Definition osc.h:38
ZCONST char * key
Definition crypt.c:587