Hi joule! Thanks so much for the help!!!
I’m working with the code to deadlines, when I have some time…
The two files of the PIANO GROUP TOOL :
-
ulneiz-Piano-Group-v1_12-OCTAVES.xrns for test:6758 ulneiz-Piano-Group-v1_12-OCTAVES.xrns
-
ulneiz.Piano.GroupV1.xrnx with the code:6759 ulneiz.Piano.GroupV1.xrnx
Instructions:
- Run the song XRNS and install the XRNX. Ready!
- In Track 02 selected, go:" Pattern Editor \ Track \ Create ‘Piano Group’ \ 10 Octaves \ Step 1 - Convert the ‘Track’ in ‘PIANO GROUP (Octaves 0-9)’ ", and run.
- The track selected is converted in “Piano Group” automatically.
- …From now on, need to create the mathematical code to sort the notes! ( Step 2 )
The Code (to see any user):
-- Name: Piano Group
-- Version: V1 (Work OK in R3.1 (W10 64bits)
-- Menu: Pattern Editor / Track / Create 'Piano Group'
-- FUNCTION TRACKS OCTAVES [5,6,7,8,9][0,1,2,3] ---------------------
function insert_track_2(index, name, is_collapsed)
local song = renoise.song()
song:insert_track_at(song.selected_track_index)
local track = song:track(index)
track.color_blend = 10
track.name = name
track.visible_note_columns = 12
track.visible_effect_columns = 0
track.volume_column_visible = false
track.panning_column_visible = false
track.delay_column_visible = false
track.sample_effects_column_visible = false
for note_column = 1, 12 do
track:set_column_name(1, "C do")
track:set_column_name(2, "C#")
track:set_column_name(3, "D re")
track:set_column_name(4, "D#")
track:set_column_name(5, "E mi")
track:set_column_name(6, "F fa")
track:set_column_name(7, "F#")
track:set_column_name(8, "G sol")
track:set_column_name(9, "G#")
track:set_column_name(10, "A la")
track:set_column_name(11, "A#")
track:set_column_name(12, "B si")
end
if is_collapsed then
track.collapsed = true
end
end
-- FUNCTION ONLY "TRACK OCTAVE 4" (OCTAVE BASE!!!!!!) ------------------------
function insert_track_1(index, name, is_collapsed)
local song = renoise.song()
song:insert_track_at(song.selected_track_index + 5)
local track = song:track(index)
track.color_blend = 10
track.name = name
track.visible_note_columns = 12
track.visible_effect_columns = 0
track.volume_column_visible = false
track.panning_column_visible = false
track.delay_column_visible = false
track.sample_effects_column_visible = false
for note_column = 1, 12 do
track:set_column_name(1, "C do")
track:set_column_name(2, "C#")
track:set_column_name(3, "D re")
track:set_column_name(4, "D#")
track:set_column_name(5, "E mi")
track:set_column_name(6, "F fa")
track:set_column_name(7, "F#")
track:set_column_name(8, "G sol")
track:set_column_name(9, "G#")
track:set_column_name(10, "A la")
track:set_column_name(11, "A#")
track:set_column_name(12, "B si")
end
if is_collapsed then
track.collapsed = true
end
end
-- FUNCTION TRACKS AUX ----------------------------------------
function insert_track_0(index)
local song = renoise.song()
song:insert_track_at(song.selected_track_index + 1)
end
-- FUNCTION I: CREATE NEW PIANO GROUP (OCTAVES 0-9), 1 GROUP WITH 10 TRACKS (EACH TRACK WITH 12 NOTE COLUMNS)
function convert_piano_group0_9()
local song = renoise.song()
insert_track_0(song.selected_track_index) -- insert initial track x4 (necessary for construction in cas exist only a track in Pattern Editor)
insert_track_0(song.selected_track_index) -- NOTE: is necessary add 4 tracks because drag 4 positions the "object track" (cursor selected in Pattern Editor)
insert_track_0(song.selected_track_index) -- ...
insert_track_0(song.selected_track_index) -- ...
insert_track_2(song.selected_track_index, "3 OCTAVE", true)
insert_track_2(song.selected_track_index, "2 OCTAVE", true)
insert_track_2(song.selected_track_index, "1 OCTAVE", true)
insert_track_2(song.selected_track_index, "0 OCTAVE", true)
song:select_next_track() -- tab nex x4
song:select_next_track()
song:select_next_track()
song:select_next_track()
insert_track_1(song.selected_track_index, "4 OCTAVE (Base)", false) -- convert the track selected in new track with 12 Note Columns (insert a new track)
song:delete_track_at(song.selected_track_index + 5) -- ... the new track deleted!
song:select_previous_track() -- tab previous x 4 (for insert tracks)
song:select_previous_track()
song:select_previous_track()
song:select_previous_track()
insert_track_2(song.selected_track_index, "9 OCTAVE", true)
insert_track_2(song.selected_track_index, "8 OCTAVE", true)
insert_track_2(song.selected_track_index, "7 OCTAVE", true)
insert_track_2(song.selected_track_index, "6 OCTAVE", true)
insert_track_2(song.selected_track_index, "5 OCTAVE", true)
song:delete_track_at(song.selected_track_index + 7) -- delete track x4 (delete the previous tracks inserted)
song:delete_track_at(song.selected_track_index) --
song:delete_track_at(song.selected_track_index) -- +7 ???
song:delete_track_at(song.selected_track_index) --
-- Group
song:insert_group_at(song.selected_track_index + 1).name = "PIANO GROUP (Octaves: 0-9)" -- the group "PIANO GROUP"
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song:add_track_to_group(song.selected_track_index - 9, song.selected_track_index + 1)
song.tracks[song.selected_track_index].group_parent.collapsed = true -- collapse group
-- Colors (Gold) --
song.tracks[song.selected_track_index].group_parent.color_blend = 27 -- blend group
song.tracks[song.selected_track_index].group_parent.color = {0xFF,0xB5,0x23}
song.tracks[song.selected_track_index - 9].color = {0xEF,0xA5,0x13} --0
song.tracks[song.selected_track_index - 8].color = {0xAF,0x5B,0x00}
song.tracks[song.selected_track_index - 7].color = {0xEF,0xA5,0x13}
song.tracks[song.selected_track_index - 6].color = {0xAF,0x5B,0x00}
song.tracks[song.selected_track_index - 5].color = {0xEF,0xA5,0x13}
song.tracks[song.selected_track_index - 4].color = {0xAF,0x5B,0x00}
song.tracks[song.selected_track_index - 3].color = {0xEF,0xA5,0x13}
song.tracks[song.selected_track_index - 2].color = {0xAF,0x5B,0x00}
song.tracks[song.selected_track_index - 1].color = {0xEF,0xA5,0x13}
song.tracks[song.selected_track_index].color = {0xAF,0x5B,0x00} --10
song:select_previous_track() -- tab previous x 5 (for insert tracks)
song:select_previous_track()
song:select_previous_track()
song:select_previous_track()
song:select_previous_track()
end
renoise.tool():add_menu_entry {
name = "Pattern Editor:Track:Create 'Piano Group':10 Octaves:Step 1 - Convert the 'Track' in 'PIANO GROUP (Octaves 0-9)'",
invoke = function() convert_piano_group0_9() end
}
-- MATHEMATICAL CODE I: SORT NOTES IN PIANO GROUP (OCTAVES 0-9) ========================================================
-- ... sort_piano_group0_9()
-- ...
-- ...
-- ...
-- ...
renoise.tool():add_menu_entry {
name = "Pattern Editor:Track:Create 'Piano Group':10 Octaves:Step 2 - Sort the 'Notes' in 'PIANO GROUP (Octaves 0-9)'",
invoke = function() sort_piano_group0_9() end
}
-- =====================================================================================================================
I know that this Code can be improved. But it works as I want.I had problems with the index, but I have solved. I guess there are more elegant ways to solve the same, but I want a code providing me quick edit control for all (collapse, colors, reorder, etc).Please understand that I’m new at this.If you want to review the code and find something better, it will be a pleasure to study it.
This Code basically converts (not insert) the Original Track in a Group with 10 Tracks,focusing the Original Track in the Track (octave 4 - OCTAVE BASE); Track number 5 inside the Piano Group.
On the "Pattern Editor \ Track \ Create ‘Piano Group’ \ 10 Octaves \ Step 2 - Sort the ‘Notes’ in ‘PIANO GROUP (Octaves 0-9)’ " invoke the mathematical function code missing for sort the notes.Could you do the rest of the code?
The logical steps of use for the composer are:
- Create a new song XRNS.
- Insert a instrument 01.
- With a loaded instrument 01 and keyboard MIDI record a complex melody within any track (name = Original Track, or “Track 01”).
- Use Step 1 to convert the track composed in a Piano Group automatically.
- Use Step 2 to Sort the Notes within the 10 Track Octaves automatically.If this works fine will be very great!!!
- Finish!
Notes:
- Always see the Matrix Editor to understand!!!
- The Piano Group tool should work well regardless of the initially selected track.
- Later it could be reduced the code unlessoctaves (with 2 more mathematical codes):
- 6 octaves: 2 - 7
- 3 octaves: 3 - 5
Joule, if you create mathematical code , then I share the tool in the forum.and I will be eternally grateful!!!
Thanks!!!
Edited:It would be super if when deploying the notes, the empty tracks automatically collapse and open tracks with notes.