Jump to content


Photo

New Tool: Progressor


  • Please log in to reply
91 replies to this topic

#1 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 26 August 2010 - 22:03

I've just uploaded new script that matches chords progression to a lead using algorythmic method. Script takes notes from selected track and matches most propper chords using selected instrument on added track. In current version only major keys and 3 voiced polyphony are available. For each key family and number of voices in chord separate two (7x12) matrices has to be calculated, that's why for now only one is implemented.

Progressor works on specified range in patterns sequence set with first two value boxes ('Range'). User has to choose key of major family that lead is in with popup list. Lead can run outside the key and play any of 12 tones in octave. In this case most similar key is matched for any note played outside the root key. 'Match' button runs the matching algorythm.

I hope this script will add some jazz to Renoise tracks smile.gif

Script is available for download below and published on tools page.

Future versions will match 3 or 4 voice polyphony to major and minor keys, will rotate the chords to let them follow the lead moving up and down the scale and skipping will be added to skip some tones that not require attaching new chord.

Happy progressing to all!

Attached Files


Edited by Laffik, 01 August 2017 - 19:28.

  • Conner_Bw, Djeroek, sodiufas and 1 other like this
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#2 Guest_Bantai_*

Guest_Bantai_*
  • Guests

Posted 27 August 2010 - 00:41

RenoiseSmith! :badteethslayer:

3oGFogwcx-E

Seriously cool, man!

#3 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6713 posts
  • Gender:Male
  • Location:Borneo

Posted 27 August 2010 - 01:30

Seriously cool, man!



#4 Conner_Bw

Conner_Bw

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 7084 posts
  • Gender:Male
  • Location:Montreal, Quebec, Canada

Posted 27 August 2010 - 01:43

This is pretty cool.

But, I can't change the range? It's always 1/1

What is the range supposed to do anyway?

cpu Lenovo X220, Intel i7-2640M @ 2.80GHz ×4 os Windows 10 / Ubuntu 16.04 LTS
My Homepage » : My Renoise Tools » : Normalize Your Sig » : One million clicks! »


#5 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 27 August 2010 - 06:18

This is pretty cool.

But, I can't change the range? It's always 1/1

What is the range supposed to do anyway?


Range defines first and last pattern in pattern sequence that Progressor works on. Range is always 1/1 probably because your song contain only one pattern.
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#6 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 27 August 2010 - 07:16

I've never seen songsmith before. Well, it looks like we are having concept collision with Microsoft here :) However, in my opinion, Renoise and Progressor gives much more independancy than Songsmith.
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#7 maes

maes

    Guruh Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 952 posts
  • Gender:Male
  • Location:.se
  • Interests:musics

Posted 27 August 2010 - 08:11

RenoiseSmith! :badteethslayer:


lol'd




#8 Suva

Suva

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 2642 posts
  • Gender:Male
  • Location:Tallinn, Estonia

Posted 27 August 2010 - 09:24

That tool just invalidates the campaign Taktik or someone came up with... "Renoise - Songsmith it ain't." It sure is now. :D

Good work!

Minor scales plz, I hate happy music.

#9 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 27 August 2010 - 09:40

Minor scales coming soon...
For now Progressor needs a bit of beta testing, so everyone is invitated. For any tune each chord should contain played note and should have maximum possible number of common tones with previous chord. Check if this rule works for your leads.

Edited by Laffik, 27 August 2010 - 09:47.

Laffik's mp3 downloads webpage:
http://www.laffik.com/

#10 eeter

eeter

    Guruh Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 807 posts
  • Gender:Male
  • Location:Estonia, Jõgeva
  • Interests:Renoise, music, party, psychedelics, beer(<3!!!), travelling.

Posted 27 August 2010 - 10:30

eew :S That was creepy!! :blink:

The vid I mean not the tool :P

Edited by eeter, 27 August 2010 - 10:31.


#11 Conner_Bw

Conner_Bw

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 7084 posts
  • Gender:Male
  • Location:Montreal, Quebec, Canada

Posted 27 August 2010 - 13:09

Range defines first and last pattern in pattern sequence that Progressor works on. Range is always 1/1 probably because your song contain only one pattern.


Ok, yes. That explains it.

Thanks!

cpu Lenovo X220, Intel i7-2640M @ 2.80GHz ×4 os Windows 10 / Ubuntu 16.04 LTS
My Homepage » : My Renoise Tools » : Normalize Your Sig » : One million clicks! »


#12 silverwings

silverwings

    Advanced Member

  • Normal Members
  • PipPipPip
  • 102 posts
  • Gender:Male
  • Location:up in the dutch skies

Posted 27 August 2010 - 14:44

thank you. this great.. minor coming ? .. sweet.

#13 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6713 posts
  • Gender:Male
  • Location:Borneo

Posted 28 August 2010 - 02:32

Feature request:

Is it possible instead of the first pattern being 1 in your range-selection, this can be 0?

#14 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 28 August 2010 - 06:28

Well, 1 means first pattern in the patterns list (pattern sequence). This pattern can be zero or any other pattern. Do you mean start counting patterns in the sequence from 0 instead of 1?
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#15 hektic

hektic

    Local Chief Member

  • Normal Members
  • PipPipPipPipPip
  • 242 posts

Posted 28 August 2010 - 14:26

I think this reminds me of a very basic verion of Stephen Kay's KARMA software, which is used on several of the Korg workstations. (Which I've really never managed to figure out to anywhere near it's potential). This sounds pretty cool!

I'm quite impressed with what you can accomplish with Renoise scripting. I had thought several months back Taktik said scripting would allow for basic procedures, but much of the stuff I'm seeing seems pretty advanced to me!

#16 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6713 posts
  • Gender:Male
  • Location:Borneo

Posted 28 August 2010 - 15:09

Do you mean start counting patterns in the sequence from 0 instead of 1?


Yes! I don't know how your default Renoise song looks like, but mine starts at 0 for the first pattern.

For example:
0 to 3 in the sequencer in my song = 1 to 4 in the range selection in your tool.

#17 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 28 August 2010 - 15:35

ok, this is not a problem to apply it. BTW pattern sequence don't have visible index numbers in Renoise (maybe it is a hidden option?). I tried to make Progressor to work on selection in pattern sequence, but I couldn't find API for that.
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#18 Conner_Bw

Conner_Bw

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 7084 posts
  • Gender:Male
  • Location:Montreal, Quebec, Canada

Posted 28 August 2010 - 21:26

When I press [Match], the interface disappears.

But, I want to undo and try another key.

Can you keep the interface open? And pass undo to the pattern editor?

Thanks.

cpu Lenovo X220, Intel i7-2640M @ 2.80GHz ×4 os Windows 10 / Ubuntu 16.04 LTS
My Homepage » : My Renoise Tools » : Normalize Your Sig » : One million clicks! »


#19 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 28 August 2010 - 21:47

Keeping Progressor open is not a problem, but if is there an API for passing shortcuts to Renoise? I'm not sure. I'll check the documentation again.
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#20 vV

vV

    God's or Borg's Chief and Ruler of All Species

  • Moderator
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 16855 posts
  • Gender:Male
  • Location:Netherlands

Posted 29 August 2010 - 14:45

Keeping Progressor open is not a problem, but if is there an API for passing shortcuts to Renoise? I'm not sure. I'll check the documentation again.


Simply "return key" is enough to send back the pressed key combination to the Renoise process (2.6B54!). However the pattern editor should have keyboard-focus if patern editor specific keys are pressed.(Only global keyboard shortcuts act everywhere)
Vv....


cpu Intel Core i7-4820K @3.70GHz
chipset Intel X79 chipset
mem 32 Gb 2400Mhz
os Win 7 64-bit SP1, DirectX 11
audio ESI ESP1010e - > Driver rev:2.0.6.0
video nVidia Geforce GTX780 - > Driver rev:335.23


Renoise Official Manual

#21 Conner_Bw

Conner_Bw

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 7084 posts
  • Gender:Male
  • Location:Montreal, Quebec, Canada

Posted 29 August 2010 - 15:40

However the pattern editor should have keyboard-focus if patern editor specific keys are pressed. (Only global keyboard shortcuts act everywhere)


Corrections, it's b4 and only global keys are supported. Pattern editor focus is irrelevant.

function my_keyhandler_func(dialog, key) end

-- When no key handler is specified, only the Escape key is used to close the 
-- dialog. For prompts, also the first character of the button labels is used 
-- to invoke the corresponding button.
-- [added B4] When returning the passed key from the key-handler function, the 
-- key will be passed back to Renoises key event chain, in order to allow 
-- processing global Renoise key-bindings from your dialog. This will not work 
-- for modal dialogs. This will also only apply global shortcuts in Renoise, 
-- because your dialog will steal the focus from all other Renoise views like 
-- e.g.: the pattern editor. 

  • Laffik likes this

cpu Lenovo X220, Intel i7-2640M @ 2.80GHz ×4 os Windows 10 / Ubuntu 16.04 LTS
My Homepage » : My Renoise Tools » : Normalize Your Sig » : One million clicks! »


#22 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 29 August 2010 - 15:43

I don't understand... Is "return key" a window property or function? How to use it? :wacko: :blink: :unsure: "return" is ending the procedure and returning value, isn't it?
Can I add 'key_handler' procedure to dialog and execute 'renoise.song():undo()' when ctrl+z is pressed? It's not passing shortcuts to Renoise, but it may work.
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#23 Conner_Bw

Conner_Bw

    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 7084 posts
  • Gender:Male
  • Location:Montreal, Quebec, Canada

Posted 29 August 2010 - 15:50

Have a look at my Randomize Notes script.

[lua]
local function key_handler(dialog, key)
if (key.name == "esc") then
dialog:close()

elseif (key.name == "return") then
invoke_current_random()

elseif (key.name == "up") then
mode_selector.value = math.max(
1, mode_selector.value - 1)

elseif (key.name == "down") then
mode_selector.value = math.min(
#randomize_modes, mode_selector.value + 1)

else
return key
end
end

current_dialog = renoise.app():show_custom_dialog(
"Notes Randomizer", content_view, key_handler)

[/lua]

Above, you see that I do stuff with certain key strokes, and pass the rest off to Renoise for it to do something. This "throws/catches" undo.

In your case, if you aren't using keyboard, you could simply do

[lua]
local function your_function_name(dialog, key)
return key
end

control_example_dialog = renoise.app():show_custom_dialog(
"Progressor v0.1 by Laffik", dialog_content, your_function_name
)
[/lua]

This will do the job.
  • Laffik likes this

cpu Lenovo X220, Intel i7-2640M @ 2.80GHz ×4 os Windows 10 / Ubuntu 16.04 LTS
My Homepage » : My Renoise Tools » : Normalize Your Sig » : One million clicks! »


#24 Laffik

Laffik

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 145 posts
  • Gender:Male
  • Location:London
  • Interests:digital music

Posted 29 August 2010 - 19:37

Got it. It's written in documentation, but it was not clear for me. Thanks for example.
Laffik's mp3 downloads webpage:
http://www.laffik.com/

#25 plasmaniac

plasmaniac

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 195 posts
  • Gender:Male
  • Location:Trier, Germany
  • Interests:drug consumption and satan worship

Posted 30 August 2010 - 10:25

wow, this is so cool! :w00t: thanks, laffik!
it's a great tool for a "musical dyslexic" (at least if it's about notation, chords, scales and stuff) like me! ^_^

might be a little off-topic, but here is a tiny tune with a progressor generated chord line.
it's just a rough sketch after i played around with progressor yesterday:


-- "on a long enough time line, the survival rate for everyone drops to zero."