Excited for this, although I didn’t yet use the MPE a lot.
Does this work??? How did you do it?! Just one of those things in renoise i wanted, to have it start somewhere else than sample #0 (without having to 09xx!)
Just YES.
I modded the version I downloaded with buttons to quickly block loop 1/2, 1/4, 1/8, 1/16, and off (in my work these are the only sensible settings for blockloop anyway), Want to see/incorporate?
Im still working out some bugs , but Im having trouble with getting higher resolution from midi controls for the rotary’s . the formula Im using is :
the GUI rotary sets the start selection marker or end marker
the MIDI TRIGGER send its value to the GUI rotary by MULTIPLYING its rounded-up number to the total number of frames for a sample then divided by 127
--sample select start
-----------------
local function fselectstart()
if renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.has_sample_data then
renoise.app().window.active_middle_frame = 4
vb.views.smpstart.min = 1
--dont allow the end selection to go past the start
vb.views.smpend.min = renoise.song().selected_instrument.
samples[renoise.song().selected_sample_index].sample_buffer.selection_start
--dont go past the length of the sample
vb.views.smpstart.max = renoise.song().selected_instrument.
samples[renoise.song().selected_sample_index].sample_buffer.number_of_frames
renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.selection_start =
vb.views.smpstart.value
-- for testing purposes
-- print (vb.views.smpstart.value)
else return
end
end
-----------------
vb:rotary {
tooltip = "Select (START-RANGE) of the sample.",
id = "smpstart",
min = 1,
midi_mapping = "MPE:Sample:Select Start",
notifier = function()
fselectstart()
end
},
the above work for the GUI fine but MIDI is inaccurate and wont go to the very start of the sample only to frame 1 (it says value 0 is invalid)
so far so good
here comes the MIDI part
renoise.tool():add_midi_mapping{
name = "MPE:Sample:Select Start",
invoke = function(message)
if (message.int_value >= 128 or message.int_value == 0 )then return
elseif renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.has_sample_data then
renoise.app().window.active_middle_frame = 4
--end minimum *>
vb.views.smpend.min = renoise.song().selected_instrument.
samples[renoise.song().selected_sample_index].sample_buffer.selection_start
--start minimum *<
vb.views.smpstart.min = 1
--start maximum vb.views.smpstart.max = renoise.song().selected_instrument.
samples[renoise.song().selected_sample_index].sample_buffer.number_of_frames
--set the views value from midi
vb.views.smpstart.value =
renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.number_of_frames
* math.floor(message.int_value) / 128
print("MOUSE :",renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.selection_start,
"GUI :",vb.views.smpstart.value,"MIDIHEX:",message, "MIDIVAL",message.int_value)
else return
end
end
}
renoise.tool():add_midi_mapping{
name = "MPE:Sample:Select Start",
invoke = function(message)
if (message.int_value >= 128 or message.int_value == 0 )then return
elseif renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.has_sample_data then
renoise.app().window.active_middle_frame = 4
--end minimum *>
vb.views.smpend.min = renoise.song().selected_instrument.
samples[renoise.song().selected_sample_index].sample_buffer.selection_start
--start minimum *<
vb.views.smpstart.min = 1
--start maximum vb.views.smpstart.max = renoise.song().selected_instrument.
samples[renoise.song().selected_sample_index].sample_buffer.number_of_frames
--set the views value from midi
vb.views.smpstart.value =
renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.number_of_frames
* math.floor(message.int_value) / 128
print("MOUSE :",renoise.song().selected_instrument.samples[renoise.song().selected_sample_index].sample_buffer.selection_start,
"GUI :",vb.views.smpstart.value,"MIDIHEX:",message, "MIDIVAL",message.int_value)
else return
end
end
}
[/quote]
I’m going to test this myself too, but I think it’s better to 1. not check for 0 value (it’s a valid value for the midi msg and 1 on 128 extra accuracy will be welcome) and 2. make the final math more like
please check if this works / and if so, whether it won’t generate exactly the same bug on the other end of the sample! (That would be a lesser bug though, because you never really want a sample to start at the total end, but everything that gives an error message is annoying
still not accurate maybe thats just midi? if I divide by say 5000 then its accurate and I can even select from the very start of the sample but at its maximum midi controller value the selection is very small.
does not like value 0
*** std::logic_error: 'ViewBuilder: invalid value for rotary encoder: '0'. value must be [1 - 52540].'
i see theres 12 downloads, any suggestions ? I am planning to add:
a block loop button that cycles through the timing
a snap to beat for the sample selection rotary
maybe a redesign of the interface where the rotary knobs are on the right ? so its a wider tool rather than a longer one
just thought I would share this with you all…
sold the mpc2000xl
just purchased a korg nanopad & nano pad2 (spacing on the nano pad2 not as good)
and purchased a korg nano kontrol2 (luv it!)
downloaded reason again (previous version I used v3) and tryed it again (renoise wins-for what i do)
downloaded live again (previous version I used v4) and tryed it again (renoise wins-for what i do)
all function buttons and rotary knobs are midi mappable
sample loop off button
sample loop forward button
sample loop backwards button
sample ping pong button
sync sample transpose/pitch to song bpm (tap tempo first)
timing quantize on or off button
previous sequence button
next instrument button
previous instrument button
add slice marker button
instant sample record
rotary knob to control start selection range of sample
rotary knob to control end selection range of sample
rotary knob to control start loop marker of sample
rotary knob to control end loop marker of sample
F.LEVEL, TIMING.Q, SYNC, LP.OFF/F/B/P, RECORD, OVERDUB will change colour when activated or deactivated
changed :
the sample button work again as it used to press once for sample dialog again to start and stop sample recording
(great if you want more control over the recording options within the dialog)
changed black buttons into more grey colour to be more visible outline in a dark room
Hi, I have access to Quarantine and played around with the tool for a bit.
I can release it if you really want, but:
You have a “Bitmaps/.DS_Store” that should be removed.
I found a bug:
Start a new song with empty samples
Open MPE
Click+drag SELECT-END rotary knob
Load a sample
Click+drag SELECT-END rotary knob
ScriptingEngine: std::logic_error: 'invalid selection start index '0'. valid values are (1-272590).'
stack traceback:
[C]: ?
[C]: in function '__newindex'
[string "do..."]:22: in function
main.lua:717: in function 'fselectend'
main.lua:1734: in function <1733><br>
<br>```
<br>
<br>
Is there any reason why you don't release betas to the thread so hardcore users can test before posting to the Tools page? I know it's not the most elegant release cycle, but it gets the job done?<br>
<br>
Anyway, tell me if you want me to release it with that bug, and I will.<br>
<br>
Cheers.</1733>
[quote=“Conner_Bw, post:95, topic:32580”]
Hi, I have access to Quarantine and played around with the tool for a bit.
I can release it if you really want, but:
You have a “Bitmaps/.DS_Store” that should be removed.
I found a bug:
Start a new song with empty samples
Open MPE
Click+drag SELECT-END rotary knob
Load a sample
Click+drag SELECT-END rotary knob
ScriptingEngine: std::logic_error: 'invalid selection start index '0'. valid values are (1-272590).'
stack traceback:
[C]: ?
[C]: in function '__newindex'
[string "do..."]:22: in function
main.lua:717: in function 'fselectend'
main.lua:1734: in function <1733><br>
<br>```
<br>
<br>
Is there any reason why you don't release betas to the thread so hardcore users can test before posting to the Tools page? I know it's not the most elegant release cycle, but it gets the job done?<br>
<br>
Anyway, tell me if you want me to release it with that bug, and I will.<br>
<br>
Cheers.<br>[/quote]<br>
<br>
Dont release just yet..<br>
Im looking into the bug. Thanks conner_bw. Its just that I had done that before but had not feedback.. how long should I leave it here before re-uploading to tools page? whats the correct procedure?</1733>
Well, there is no correct procedure AFAIK. Release to the Tools page when you feel comfortable, I guess? If you released an attachment before, I didn’t see it. I just assumed you hadn’t released one because people were asking to download. I usually leave an attachment in the thread until it’s on the Tools page.
I noticed the Step and Edit functions only switch on, not toggle though?
Also as a suggestion, it would be cool to have a button for the Enter key in the Sample Editor.
That way you can audition your selection from the midi controller, or is there already a way to do this?