try putting this into your MidiActions.lua, located intot he “Scripts” folder (at the end of the file is fine):
local int_frame_buffer_pointer = 1;
add_action("Selected Sample:Sample Buffer Writer [Set]",
function(message)
local sample = song().selected_sample;
local buffer = sample.sample_buffer;
local int_frames = buffer.number_of_frames;
local int_chans = buffer.number_of_channels;
if message:is_rel_value() then
--todo
elseif message:is_abs_value() then
local real_value = 2*message.int_value/127-1;
local int_chan;
for int_chan = 1, int_chans do
buffer:set_sample_data(int_chan, int_frame_buffer_pointer, real_value);
end
buffer:finalize_sample_data_changes();
-- app():show_error(tostring(real_value));
end
int_frame_buffer_pointer = int_frame_buffer_pointer + 1;
if int_frame_buffer_pointer > int_frames then
int_frame_buffer_pointer = 1;
end
end)
now create a small sample, assign this new action to a MIDI controller via the Midi Map panel (on “Global Mappings => Selected Sample => Sample Buffer Writer”, then go to the sample editor and tweak the MIDI controller you have chosen: you will see your movements drawn on the sample editor window
if you now put a note for this instrument on the pattern and play it, you can hear the wave changing while moving the MIDI controller.
using MIDI Yoke and programs such as Plogue Bidule, you can do weird things such as transform amplitude value of your microphone input into MIDI signals and literally record your own voice in small loops.