Hi, how would I go about creating a startup notifier that runs a couple of settings right whenever Renoise starts with a new document (at startup, or with “New song”)?
I’m basically looking to set “Keep Sequence Sorted” to false, and a few other things.
Also, how to modify the startup notifier to add another notifier that is run whenever a sample is recorded or loaded?
function startup_notifier()
local s=renoise.song()
renoise.song().sequencer.keep_sequence_sorted=false
end
if not renoise.tool().app_new_document_observable:has_notifier(startup_notifier)
then renoise.tool().app_new_document_observable:add_notifier(startup_notifier)
else renoise.tool().app_new_document_observable:remove_notifier(startup_notifier)
end
so, everytime i start a new project, or load a new project i guess, it loads up with keep sequence sorted false.
but what I’m not making much headway is how to make Renoise show the sample that I just loaded, by using a notifier.
I tried this
function sample_loaded_change_to_sample_editor()
renoise.app().window.active_middle_frame=5
end
if renoise.song().selected_sample == nil then return
else
if not renoise.song().selected_sample.sample_buffer_observable:has_notifier(sample_loaded_change_to_sample_editor)
then renoise.song().selected_sample.sample_buffer_observable:remove_notifier(sample_loaded_change_to_sample_editor)
else renoise.song().selected_sample.sample_buffer_observable:add_notifier(sample_loaded_change_to_sample_editor)
end
end
app_new_document_observable: will only run once about 10ms after loading a new song project. This allows many things, including restoring states in your tool.
…
You can iterate between all samples of the selected instrument for all observables.
It is better to think of this as if it were “a samples package”, not as if it were just one sample at a time.
Furthermore, this condition is contradictory:
It really is backwards (remove not):
If it doesn’t have a notifier, it doesn’t make sense use remove_.
If you have notifier, there is no point in using add_ (in fact this will return an error).
A healthy way to do this is to create a “queue function” that will be run every time you change samples. This function should remove all notifiers from all samples of the selected instrument.
So, it only remains to create another function that adds a single notifier in the selected sample.
thanks! i removed the not altogether and it seems like it’s more sensible.
what really weirds me out is this:
if i’m in Sample Waveform, Keyzones, Modulation, FX, and i load a sample, i’m automatically in Waveform. if i’m in Phrase tab, Waveform doesn’t show. if i’m in pattern editor, the waveform doesn’t start displaying.
I used to have it so that if i’m in pattern editor and loaded a sample, i’d be moved to sample waveform tab.
what might have changed? i’m running 3.1.1
function sample_loaded_change_to_sample_editor_v2()
local w=renoise.app().window
if w.active_middle_frame == 1 then
w.active_middle_frame = renoise.ApplicationWindow.MIDDLE_FRAME_INSTRUMENT_SAMPLE_EDITOR
else end
renoise.song().selected_instrument.active_tab=1
renoise.app().window.active_middle_frame=5
renoise.app():show_status("Transport to waveform successful")
end
function startup_notifier()
local s=renoise.song()
renoise.song().sequencer.keep_sequence_sorted=false
renoise.app():show_status("Keep Sequence Sorted = False")
if renoise.song().selected_sample == nil then return
else
if renoise.song().selected_sample.sample_buffer_observable:has_notifier(sample_loaded_change_to_sample_editor_v2)
then renoise.song().selected_sample.sample_buffer_observable:remove_notifier(sample_loaded_change_to_sample_editor_v2)
else renoise.song().selected_sample.sample_buffer_observable:add_notifier(sample_loaded_change_to_sample_editor_v2)
end
end
renoise.app():show_status("Keep Sequence Sorted = Falsadsgasdggasde")
end
if not renoise.tool().app_new_document_observable:has_notifier(startup_notifier)
then renoise.tool().app_new_document_observable:add_notifier(startup_notifier)
else renoise.tool().app_new_document_observable:remove_notifier(startup_notifier)
end