Ever wanted to generate more than a plain sine wave? Well, now you can through this new tool: MilkyWaves! Inspired by the ease of generating waves in MilkyTracker, I made this tool to ease your worries! Just right click on a sample, select “Generate Waveform”, and be on your way!
Feel free to add suggestions and stuff!
====================================
= VERSION HISTORY ==================
====================================
Version 1.4.3:
Raised noise frequency count ceiling to 500
When using more than 250 frequencies a dialog pops up, to show calculation progress, and to allow for cancelling. (Let me know how this goes. It does not play nice with auto-generate (because of how notifys currently work, it send on change and not when the change is finished.)
Version 1.4.2:
Added pulse generator for that rectangular not-a-square-wave goodness!
Added basic tooltips
“Updated” to API Version 6
Version 1.4.1 (beta):
Samples now always loop when generated, unless a loop mode has already been set
Anticlick also now includes turning on autofade mode, and has been extended to the Noise generator
You can now audition notes while using the tool (Thanks @Ledger!)
No longer have to generate samples for the tool, as it can create its own samples using reasonable defaults
The ability to define what a reasonable default is will come in the future. For right now, you’ll have to edit the preferences file directly to change it.
? Thinking of how modulation between waveforms will work with my subpar GUI-fu~
Version 1.3:
Fixed click without removing it (it is now an option!)
Fixed noise, so that new noise is generated every time the generate button is pressed
Version 1.2 [FULL]:
Add a few new noise generators
Fix noise generation
Added frequency and volume controls (Thanks, @Djeroek!)
An addition that could be good is a key handler function that passes the qwerty keystrokes back to renoise (without having to re-click back on the renoise gui), so you could audition the created waves.
This is a generic one I have in my scripting template.
-The lock_keyboard focus stuff on line 6+7 is not necessary but it keeps renoise focused rather than the tool after each keypress.
-The return** key ** on line 8 is what passes all keystrokes back to renoise
-The function is passed as the 3rd optional parameter to renoise.app():show_custom_dialog()
--------------
--key Handler
--------------
local function my_keyhandler_func(dialog,key)
--toggle lock focus hack, allows pattern ed to get key input
renoise.app().window.lock_keyboard_focus = not renoise.app().window.lock_keyboard_focus
renoise.app().window.lock_keyboard_focus = not renoise.app().window.lock_keyboard_focus
return key
end
------------------------------------------------------------------------------------------
--Script dialog
------------------------------------------------------------------------------------------
my_dialog = renoise.app():show_custom_dialog(
TOOL_NAME, dialog_content,my_keyhandler_func)
@Jengamon.Is it necessary to always load a sample first to generate the wave?Is not it enough to have an empty sample slot?I think that to avoid this, you could schedule the verification of whether there is a sample or not. If there is no sample, program the added sample in the selected sample slot that is empty.Would not this be possible? You would avoid the pop-up window.
Steps:
press [+] button to add an empty sample slot.
Use the tool directly to generate waves, without the user needing to add a sample before in the empty slot that he just generated.
This tool is great! Thank you very much for sharing!
Another small detail. It is also possible to add a window checker. If you are in the pattern editor or another window,jump to the instrument editor, specifically in the Waveform if you press the generate button , but without generating anything yet.If you are already in the Waveform window, the generate button is already free to generate the new wave.These details help the most direct handling.
@Renoised The length of the sample is cropped to the length of the periods, because the period length is defined relative to the size of the sample.
In all seriousness, I’m really against defining parameters for length in relation to wave because of the different effects that can be achieved by separating the two. A two period wave sounds completely different when given 50 samples vs 500 samples. That’s also the reason, at least in my opinion, MilkyTracker doesn’t automatically generate samples. It leaves more to the imagination and lets users take control. I might port over more stuff from MilkyTracker. Probably. And I will should I have the time.
Could you either make sure the wavefile always starts from 0 (even when rendering noise) so there is no audible click, or automatically set the sample to
renoise.song().selected_sample.autofade
after generation?
because thus far, while the terminal says anticlick=true, I’m most certainly hearing a click because the waveform does not start from 0 amplitude. Triangle and Sawtooth have “0 amplitude starting” Anticlick tickbox, but Noise doesn’t. Sine seems to start from 0 by default
another detail, if i create a secondary sample into the same instrument, and go to that sample-slot, i can create a sinewave into that sample-slot a-ok, but Loop mode is Off. Would be good to always make sure that whichever slot you create the sample to, the loop is always on.