Doble ss y doble oo. = Bassoon.
I missed one “o”!!! Bassooooooooon!!! Ok! Thanks!
I do not rule out that there are more spelling mistakes…
Doble ss y doble oo. = Bassoon.
I missed one “o”!!! Bassooooooooon!!! Ok! Thanks!
I do not rule out that there are more spelling mistakes…
Don’t have in mind.
Oh, why I bought Volumeshaper and other tools?
This is looking great. VDPRO seems to have everything.
ThatVPDpro. Arpeggia tool looks pretty amazing. I only would remove “VPDpro” from the name. Does it draw beyond pattern boundaries, so continues then in the next pattern?
Wondered, what does VPD stand for Raul?
Oh, why I bought Volumeshaper and other tools?
This is looking great. VDPRO seems to have everything.
Thank you! Possibly increase a little more until I finish it…
I have finished both Automa32 and Arpeggia. All I have to do is fill in some tables with numbers for all the curves and envelopes of the presets and that costs a lot.With the automation editor it is possible to control any parameter of any device. If it were more advanced, more developed, it would have enormous potential. That’s why I created these tools. I wish it were all integrated and easier to use, without the need to resort to tools. But hey, a well-made tool is better than an external VST. Also, it’s free!
ThatVPDpro. Arpeggia tool looks pretty amazing. I only would remove “VPDpro” from the name. Does it draw beyond pattern boundaries, so continues then in the next pattern?
In the drop-down menus it will appear as “Arpeggia…”, or “Automa32…”. But these tools are daughters of VPDpro. In fact they can not work well without the main tool. Everything is integrated to be able to always use the same controls. Even if you have the Arpeggia window open, you are controlling VPDpro with the keyboard commands. It is a whole.Also from the VPDpro main window, you can invoke the other windows.
Arpeggia works without skipping the pattern.I have thought that it is better to follow Renoise’s idea of being squared, and to work pattern by pattern, separately.
I think it would be possible to program to cover two or more patterns, but it would be more expensive. Also, programming for the automation editor is a bit more messy than in other areas. I have some strange doubts derived with problems between the limits of the pattern and line. The initial pattern limit is 0.000 but the end I do not know exactly if it is x.999 or x.994 or what. And does not the second value seem to match the second to last, 0.004 and 0.996? 0.999?
Also, I think I have found a bug, related to the above.For some reason, it is not possible to eliminate the last possible point in a pattern using clear_range():
-- Remove all existing points in the given [from, to) time range from the
-- automation.
renoise.song().patterns[].tracks[].automation[]:clear_range(from_time, to_time)
the maximum to_time is:
-- Maximum number of lines that can be present in a pattern.
renoise.Pattern.MAX_NUMBER_OF_LINES
renoise.Pattern.MAX_NUMBER_OF_LINES = 512 (lines) or 512.0000000000 lines
But in reality, the last point is the 512.999xxxxxx (time) approx.So, I do not know how todelete (clear) the last point in the case that has 512 lines in the selected pattern using clear_range. It is a special case. In summary, make tools that avoid errors because of the limits is a bit messy, because in addition to inserting points, you have to delete what was previously in the same area of each block; delete first, and then insert everything in the same function.
Now Arpeggia works fine, but it will only work on each pattern, without covering the next or the following ones.I just need to fill this table to the presets:
--presets (rang 0.00 to 1.00, sections of 0.05 always)
VPD_ARP_PRESET = {
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.55 , 0.50 , 0.45 , 0.50 , 0.55 , 0.50 , 0.45 , 0.50 , 0.55 , 0.50 , 0.45 , 0.50 , 0.55 , 0.50 , 0.45 }, --1
{ 0.00 , 0.05 , 0.10 , 0.15 , 0.20 , 0.25 , 0.30 , 0.35 , 0.40 , 0.45 , 0.50 , 0.55 , 0.60 , 0.65 , 0.70 , 0.75 }, --2
{ 0.25 , 0.30 , 0.35 , 0.40 , 0.45 , 0.50 , 0.55 , 0.60 , 0.65 , 0.70 , 0.75 , 0.80 , 0.85 , 0.90 , 0.95 , 1.00 }, --3
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --4
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --5
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --6
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --7
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --8
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --9
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --10
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --11
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --12
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --13
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --14
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --15
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --17
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --18
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --19
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --20
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --21
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --22
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --23
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --24
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --25
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --26
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --27
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --28
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --29
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --30
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --31
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --32
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --33
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --34
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --35
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --36
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --37
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --38
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --39
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --30
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --41
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --42
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --43
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --44
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --45
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --46
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --47
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --48
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --49
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --50
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --51
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --52
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --53
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --54
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --55
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --56
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --57
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --58
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --59
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --50
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --61
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --62
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --63
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --64
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --65
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --66
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --67
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --68
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --69
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --60
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --71
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --72
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --73
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --74
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --75
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --76
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --77
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --78
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --79
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --70
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --81
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --82
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --83
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --84
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --85
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --86
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --87
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --88
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --89
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --80
--1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --91
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --92
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --93
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --94
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --95
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --96
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --97
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --98
{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --99
--{ 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 , 0.50 }, --100
}
Wondered, what does VPD stand for Raul?
V = Volume
P = Panning
D = Delay
Ledger, putting the name of a tool can be the most expensive step.
Also, I think I have found a bug, related to the above.For some reason, it is not possible to eliminate the last possible point in a pattern using clear_range():
…But in reality, the last point is the 512.999xxxxxx (time) approx.So, I do not know how todelete (clear) the last point in the case that has 512 lines in the selected pattern using clear_range. It is a special case. In summary, make tools that avoid errors because of the limits is a bit messy, because in addition to inserting points, you have to delete what was previously in the same area of each block; delete first, and then insert everything in the same function.
Yup, you’ll probably find that the last value is 513 Raul. Automation going from 0-64 lines, the user lua table giving point times from 1-65 (on a 64 line pattern.) Not a problem (so much, although it shouldn’t be with a ‘one off’ error) until you get to the maximum pattern length of 512 lines. User can draw in a point at > 512 (in lua point time terms), but lua automation functions only clear/accept the points between 1-512. Just to clarify that this is a little important point (no pun intended) Raul.
Thinking a little out loud, (if there is no other way of clearing that automation point table) as a side note… I don’t know if copying a dummy automation (using copy_from, that hasn’t got any time points > 512), then clearing that could completely clear the automation point/value table on a 512 line pattern (if there are some time points > 512 Raul.)
Yup, you’ll probably find that the last value is 513 Raul. …
I think not. The last value is 512.999xxxxxxx. I believe. If it were the “513” exact, I do not have any problem.By programming, I can write a point in the last time 512,999, but not delete it with clear_range.But I can erase the penultimate time, 512,994 (512,996, I do not remember exactly), using clear_range. It is as if clear_range does not have access to the last point.I mean with all the expanded zoom of the grid. It’s a bit strange.
Maybe, it is possible to add the deletion of this point to the end of the function, but this is what I call “a badly placed patch”.I am trying to make the functions as clean as I know. Therefore, I am surprised that I can not access this point. As you put in clear_range a value greater than 512.999xxxxxxxx (I do not know exactly what number it is), without reaching 513, it will return an error.
Anyway this case is a bit “hidden”. I never use 512 lines per pattern.But when programming, it is necessary to avoid any malfunction, although it is not a usual case.
User can draw in a point at > 512 (in lua point time terms), but lua automation functions only clear/accept the points between 1-512. Just to clarify that this is a little important point (no pun intended) Raul…
I can use:clear_range( 512, 512.999 ) without error.
If I use :clear_range( 512, 513) return error. 513 is not valid, because is > 512 lines.
*** std::logic_error: 'invalid 'ToTime' value. time must be >= 1 and <= Pattern.MAX_NUMBER_OF_LINES'
*** stack traceback:
*** [C]: in function 'clear_range'
But if I use:clear_range( 512, 512.999 )the range is not able to erase the point with the last possible time (I suppose 512.999 approximately).Yes it is able to erase the immediately previous one, 512,996 I think.
It is an extreme case. I can put :clear_range( 63, 63.999 )and manages to erase the last point with time 63,999.It seems that it is necessary to reach an exact 513 to be able to erase the last point, which is lower than it (512,999).
Do you have any function to print the exact time and value of the last existing point?In this case, 512.999 approx. (time)
These are the kind of situations that cause me to waste more time.The majority has to do with avoiding errors by limits.
Edit:I have no problems inserting points, only when clearing.
Edit2:By the way, all this mess of cleaning is because I need to clear pieces of pattern, not the whole pattern.
Just to point out (no pun intended) I can draw a point in the automation and get a value of 513 in the point/value table here with Linux:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points)
....cut output.....
[4] => table
[time] => 512.99609375
[value] => 0.60227274894714
[5] => table
[time] => 513
[value] => 0.59090906381607
Personally I think you have a point Raul
[1] => table
[time] => 512.9375
[value] => 0.66932272911072
[2] => table
[time] => 512.9921875
[value] => 0.54581671953201
[3] => table
[time] => 512.99609375
[value] => 0.43027889728546
This is what happens with R3.1.1 x64 in Windows 10 x64.These are the 3 times of the 3 points of the previous screenshot:
[time1] => 512.9375 (grid 511:240)
…
[time2] => 512.9921875
[time3] => 512.99609375 (last)
I can not drag the last point to the right.It is not possible to reach 513.
Can you try :clear_range (t1 , t2) to see if it clears up to 513?
Can you try :clear_range (t1 , t2) to see if it clears up to 513?
With a point/value table:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points)
[1] => table
[time] => 509
[value] => 0.7062401175499
[2] => table
[time] => 512.99609375
[value] => 0.75
[3] => table
[time] => 513
[value] => 0.7045311331749
If I execute:
>>> renoise.song().patterns[1].tracks[1].automation[1]:clear_range(1,512.999999999)
I get (here with Linux):
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points)
[1] => table
[time] => 512.99609375
[value] => 0.75
[2] => table
[time] => 513
[value] => 0.7045311331749
If I execute:
>>> renoise.song().patterns[1].tracks[1].automation[1]:clear()
I get:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points)
[1] => table
[time] => 513
[value] => 0.7045311331749
That 513 entry remains.
If I try:
>>> renoise.song().patterns[1].tracks[1].automation[1]:remove_point_at(513)
I get:
*** std::logic_error: 'invalid point time. time must be >= 1 and <= Pattern.MAX_NUMBER_OF_LINES'
If I copy an automation say from track 2 into track 1 with say:
renoise.song().patterns[1].tracks[1].automation[1]:copy_from(renoise.song().patterns[1].tracks[2].automation[1])
I get the points from track 2 into track 1. (There were no points > 512 in track 2):
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points)
[1] => table
[time] => 25
[value] => 0.5
I execute a clear:
>>> renoise.song().patterns[1].tracks[1].automation[1]:clear()
And therefore:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points)
***No output***
To try to answer the difference between Linux and Windows, probably it just comes down to the difference with how embedded lua handles float point numbers between the two systems Raul. Similar to → Small Bug in “Background Blend” values. Is value 51 omitted?
With a point/value table:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points) [1] => table [time] => 509 [value] => 0.7062401175499 [2] => table [time] => 512.99609375 [value] => 0.75 [3] => table [time] => 513 [value] => 0.7045311331749
If I execute:
>>> renoise.song().patterns[1].tracks[1].automation[1]:clear_range(1,512.999999999)
I get (here with Linux):
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points) [1] => table [time] => 512.99609375 [value] => 0.75 [2] => table [time] => 513 [value] => 0.7045311331749
If I execute:
>>> renoise.song().patterns[1].tracks[1].automation[1]:clear()
I get:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points) [1] => table [time] => 513 [value] => 0.7045311331749
That 513 entry remains.
If I try:
>>> renoise.song().patterns[1].tracks[1].automation[1]:remove_point_at(513)
I get:
*** std::logic_error: 'invalid point time. time must be >= 1 and <= Pattern.MAX_NUMBER_OF_LINES'
If I copy an automation say from track 2 into track 1 with say:
renoise.song().patterns[1].tracks[1].automation[1]:copy_from(renoise.song().patterns[1].tracks[2].automation[1])
I get the points from track 2 into track 1. (There were no points > 512 in track 2):
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points) [1] => table [time] => 25 [value] => 0.5
I execute a clear:
>>> renoise.song().patterns[1].tracks[1].automation[1]:clear()
And therefore:
>>> rprint(renoise.song().patterns[1].tracks[1].automation[1].points) ***No output***
To try to answer the difference between Linux and Windows, probably it just comes down to the difference with how embedded lua handles float point numbers between the two systems Raul. Similar to → Small Bug in “Background Blend” values. Is value 51 omitted?
Thanks 4Tey!!
Finally I have solved this issue by adding the cleaning at the end of the function of the exact time of the last point (time = 512.99609375).I do not like much having to resort to these solutions. Apparently, there is a rounding when you insert any point, so that the grid always falls to a value of + -0.00390625.
Now Arpeggia is already fine and there is no deadpoint in clearing a range of times within a 512 lines in selected pattern.
--clear level
function vpd_arp_clear_level( val_1, rns, sp, spt, spa, sli, amp, val_f )
rns = renoise.song()
sp = rns.selected_parameter
spt = rns.selected_pattern_track
sli = rns.selected_line_index
amp = vws["VPD_ARP_AMPLITUDE"].value
val_f = ( val_1 * amp - amp )
if (sp) then
spa = spt:find_automation( sp )
if ( spa and vpd_arp_anchor == true ) then
if ( (sli + val_f + amp) < 513 ) then
spa:clear_range( sli + val_f, sli + val_f + amp )
print("first individual")
elseif ( (sli + val_f + amp) == 513 ) then
spa:clear_range( sli + val_f, sli + val_f + amp -0.001 )
---last point
if spa:has_point_at(512.99609375) then
spa:remove_point_at(512.99609375)
end
print("last individual")
end
end
---
for i = 0, 20 do
vws["VPD_ARP_BT_"..val_1.."_"..i].color = VPD_ARP_CLR[1]
end
end
---
VPD_ARP_BT_LEVEL[val_1] = nil
--print(VPD_ARP_BT_LEVEL[val_1])
--rprint(VPD_ARP_BT_LEVEL)
end
--clear level x4
function vpd_arp_clear_level_x4( value )
for i = value, value + 3 do
vpd_arp_clear_level( i )
end
rprint(VPD_ARP_BT_LEVEL)
end
--clear global level
function vpd_arp_gclear_level( rns, sp, spt, spa, sli, amo, amp )
rns = renoise.song()
sp = rns.selected_parameter
spt = rns.selected_pattern_track
sli = rns.selected_line_index
amo = vws["VPD_ARP_AMOUNT"].value
amp = vws["VPD_ARP_AMPLITUDE"].value
if (sp) then
spa = spt:find_automation( sp )
if ( spa and vpd_arp_anchor == true ) then
if ( ( sli + amo * amp ) < 513 ) then
spa:clear_range( sli, sli + amo * amp )
print("first global")
elseif ( ( sli + amo * amp ) == 513 ) then
spa:clear_range( sli, sli + amo * amp - 0.001 )
---last point
if spa:has_point_at(512.99609375) then
spa:remove_point_at(512.99609375)
end
print("last global")
end
end
end
---
for c = 1, 16 do
for i = 0, 20 do
vws["VPD_ARP_BT_"..c.."_"..i].color = VPD_ARP_CLR[1]
vws["VPD_ARP_BT_G_"..i].color = VPD_ARP_CLR[1]
end
VPD_ARP_BT_LEVEL[c] = nil
end
end
--clear all points
function vpd_arp_clear_all( sli, nol, sp, spt, spa )
sli = renoise.song().selected_line_index + 0.007
nol = renoise.song().selected_pattern.number_of_lines + 1.999
sp = renoise.song().selected_parameter
spt = renoise.song().selected_pattern_track
--there might be no parameter selected...
if (sp) then
spa = spt:find_automation( sp )
if (spa) then
spa = spt:delete_automation( sp )
end
end
end
I enclose the rest of the functions related to erase the envelope or erase only time ranges…
Edit:I believe that as it is now, it will work well in Linux and in Windows.
Apparently, there is a rounding when you insert any point, so that the grid always falls to a value of + -0.00390625.
Automation has a fixed resolution of 256 points per line, so the position of each point does indeed get rounded off to the nearest 1/256th of a line.
You already discovered the magic value:
1 / 256 = 0.00390625
Automation has a fixed resolution of 256 points per line, so the position of each point does indeed get rounded off to the nearest 1/256th of a line.
You already discovered the magic value:
1 / 256 = 0.00390625
Thanks DBlue!
All this talk came by what happens with clear_range at the end of the pattern with the maximum number of lines. If you use :clear_range (512, 512.999),the function is not able to erase the time 512.99609375 of the last point (513 -0.00390625),but it does eliminate the penultimate time (512.9921875).Both times are less than 512.999.
It seems that :clear_range(t1, t2) is not able to clear the last possible time, but it can erase the rest.Should not I be able to erase all the points, including the last one with the maximum possible time?
If you use :clear_range (512, 512.999),the function is not able to erase the time 512.99609375 of the last point
Indeed, I’ve just tried this myself and there seems to be something fishy going on. We’ll try to investigate further.
In the meantime, this will work: (As you’ve already discovered, it seems)
local automation = renoise.song().patterns[1].tracks[1].automation[1]
if automation:has_point_at(512.99609375) then
automation:remove_point_at(512.99609375)
end
Indeed, I’ve just tried this myself and there seems to be something fishy going on. We’ll try to investigate further.
In the meantime, this will work: (As you’ve already discovered, it seems)
local automation = renoise.song().patterns[1].tracks[1].automation[1] if automation:has_point_at(512.99609375) then automation:remove_point_at(512.99609375) end
Yes, for the moment I will leave it like that, work fine.Maybe if clear_range() could handle up to 513 it would be solved for a possible future version of Renoise.It is also possible that there is a small difference between Renoise 3.1.1 for Linux and Windows related to this topic.For some reason, 4Tey can print time 513 on Linux, and I can not print 513 on Windows.
Regardless of all this, I think it would be more successful than the maximum time limit per pattern for clear_range(t1, t2) outside t2 = 513, and not the maximum number of lines, which is 512, itself accept the value 512.999, with 513 return a error.
7782 vpdpro_arpeggia_demo_01.mp3
Here is a experimental song demo made with Arpeggia and a single note, using the VST Korg Wavestation.
In the demonstration, the envelope of the image has been used. You can follow the progress of the sound by looking at the image.
The funny thing is that only one note has been used!Test done in less than a minute, with 0 human creativity (the tool itself has returned the envelope).
Test done in less than a minute, with 0 human creativity (the tool itself has returned the envelope).
I personally appreciate the hours of work that has been put into such an innocent little “random button” .
You’ve become quite the prolific tool author, so I just want to point out that programming is also a creative endeavor
Keep up the good work!
I personally appreciate the hours of work that has been put into such an innocent little “random button” .
You’ve become quite the prolific tool author, so I just want to point out that programming is also a creative endeavor
Keep up the good work!
Thanks Danoise!
I am aware that it is easy not to value the tools made by others. But behind there is a lot of work, more to think than even to write. Personally, I do not stop fighting so that the GUI is as manageable as possible, otherwise the tool becomes useless, however useful its functions may be.
I have already used several random buttons in my tools, and the truth is that they are very effective. They allow you to test things with sounds quickly, and judge later.This helps creativity. It is like a lifeboat when you are your mind stuck, while you are composing.It’s amazing!