MilkyWaves - A New Set of Generators

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! :slight_smile:

====================================

= 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

  • Shout out to @esaruoho for the comments!

Version 1.4 (beta) :

  • 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!)

  • Revealed the final two generators!

  • Fixed stereo generation (Thanks, @mikobuntu!)

NOTE: You will have to uninstall the previous version manually.

Version 1.1:

  • Differentiate between Lite and Full

Version 1.0:

  • Inital post of Lite version

io.jengamon.MilkyWaves.xrnx (22.8 KB)

1 Like

Nice1!

Would be nice to have tool gui control over the noise tab volume as well, no?

It would also be nice to have the tool to be able to generate stereo samples . thanks :slight_smile:

Nice tool, thanks!

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:

  1. press [+] button to add an empty sample slot.
  2. 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.

Thanks for all the suggestions! I’ll be working on adding them soon!

@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. :slight_smile:

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.

Hi Jengamon, thanks for the tool.

Questions:

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 :slight_smile:

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.

Feel free to unzip the plugin and modify it, you just should share the love and post it back here.