New tool (experimental build) Maciulxochitl

So on Friday night I decided that I would also like to write some extension for Renoise.
I didn’t know how to do it so I watched a few videos about Lua on YT.
On Saturday morning I read some minimum about the Renoise API and got into it.
Here is the first result.

cz.martblek.Macuilxochitl_04_03_22.xrnx (39.6 KB)

The code is ugly but it still works.
I have a few more things in my head but I wouldn’t like to learn
some ugly things in Lua that I would get used to very quickly.
I would like you to reveal to me all the errors I have in the code.
Just don’t write to me that I use “tonumber” a lot there,
I forgot to clean it up :slight_smile:
thanks for the comments.



What is it? What does it do?

It is in short a mixer of 3 sine waves
into one enriched by Gaussian cutting which is divided into 5 parts with separate control.
I forgot to write info :slight_smile:
the menu is in the sample section of the editor.

1 Like

That’s impressive progress!


You can do a bit of optimization in the frame_in_buffer loop by localizing math.sin, math.random and math.pi and call those instead.

    local sin, random, pi = math.sin, math.random, math.pi

    for frame_in_buffer=1, SAMPLE_FRAMES do
        if random() > 0.5 then
       et c
1 Like

Very nice, thnx! :sunglasses: :clap:

Pretty damn neat! Please remove the info pop-up, since it’s already in the info portion of the tool? I just wanna get to work, because I’m inna hurrrrry :smiley:

Also, may we please have preset “sample cycle” buttons, like one for 168, 336, etc., so we can get cycled loops immediately?

Finally, can it be set to “auto-loop” forward, so I don’t have to press a key on the piano keyboard first to hear the sound - instead just press a key on my typing keyboard? It may already do this, but not on my first try. It seems to happen sometimes, and sometimes not.

1 Like

dope! :fire: :metal: :fire:

thanks for this great lil tool!

I’ll definitely be using it for some lead tones :alien:

A request: Please add a keybind?

And another: possible to add other basic waveforms?

1 Like

Is it faster because it avoids a method look-up on Math for each call?

1 Like

It seems to improve performance a bit, because LUA is weird and looks up global helper stuff in an _ENV table or so:

Nice tool. I am not sure what for it is needed? I guess chiptune waveforms?

Ideas for improvements:

  • Currently it does not generate a perfectly loopable waveform, maybe this is not fully possible, but at least for the lowest frequency?
  • It could auto-activate loop
1 Like

interesting reading

Great Tool!!
Thanks !!

here’s a keybind to add add to main.lua if anyone else wants it:

name = “Global: Tools: Macuilxochitl”,
invoke = function()

1 Like

I will definitely add, so far I have cleaned the code a bit and optimized the routines,
now it runs much better. I completely changed the preset storage system / I said that it would happen:) /
Added some new features,
I still have enough and I hope to catch version 0.011 by Sunday;)


Great news!

looking forward to it.
Really like some of the tones coming out of this tool :+1:

1 Like

I had some time and so some little progress was made.
cz.martblek.Macuilxochitl_v011.xrnx (66.0 KB)


Splitting the source code into parts
GUI changes
Removed welcome screen :slight_smile:
Sample length is limited to specified values
Added waveforms other than sine wave with view to better repetition
Redesigned saving program settings
Midi mappings and key shortcut added
Some optimizations

still some bugs i cannot found /partially working midi / and refresh sample loopers start/end.


Thanks, very nice!

MUCH BETTER!!! There’s a solid feeling to this now - less scattered, and the idea translates better while designing waveforms.

Very nice work @martblek!

one little bug I’ve noticed is that the operator relationships are not read anew on loading, so they must be selected manually to reset them.

I wonder if this would be helpful for selecting period lengths, although these values would shift depending on the sampling rate the project is in
might be useful to have a selectable base note frame length that adjusts to sampling rate… if you’re looking for more to do with this :upside_down_face:

love this tool, man! It’s great!

implemented in hurry and everything is tuned ± few cents.
update tommorow :slight_smile:


I apologize for the slight delay.
There is a lot of work now. Only minor repairs.

cz.martblek.Macuilxochitl_v012.xrnx (45.1 KB)

Bug with refreshing OPs and Details in OSCs seems to be gone.
Sample buffer values changed to “C” length
Added custom sample buffer widget for modify length
New wave added /sin to tan/