Jump to content


Photo

New Tool (3.1): PhraseMate

phrases zxx

  • Please log in to reply
78 replies to this topic

#26 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 July 2016 - 02:35

I don't understand what the slice processing option means... but in any case, the update seems to solve the problem I brought up earlier :)

 

I'm really looking forward to using this from now on. Thank you so much!



#27 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

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

Posted 02 July 2016 - 07:40

I don't understand what the slice processing option means...

 

When running the tool collecting everything on a finished song, it can take a while to finish...you'd be clicking away a bunch of 'script is taking to long' notices in the process. The slice processing feature gets rid of these notices, I think at the expense of taking somewhat longer(?), but it is optional now..so choose your destiny :) 



#28 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 July 2016 - 08:10

When running the tool collecting everything on a finished song, it can take a while to finish...you'd be clicking away a bunch of 'script is taking to long' notices in the process. The slice processing feature gets rid of these notices, I think at the expense of taking somewhat longer(?), but it is optional now..so choose your destiny :)

 

Okay. So what do the different options mean? Does "Disabled" mean that I won't have to click the notices away (but it may take a bit longer)?

 

@danoise the only remaining suggestion I have for you is how it handles duplicate phrases when you disable "include duplicate phrases". Currently, if you have duplicate patterns then it will insert a 0Zxx command in the first pattern, but not in the second one. And in fact this comes up as a bug if you have patterns ABBA – it won't insert a 0Zxx in the second B, or in the second A. So when you play it back, you effectively get ABBB.

 

Perhaps I'm misunderstanding what the "include duplicate phrases" option is intended to do. But it seems useful to not create duplicates if you don't need to... so I think PhraseMate needs to insert a 0Zxx for the correct phrase when it detects a duplicate.

 

I hope that makes sense...


Edited by pat, 02 July 2016 - 08:13.


#29 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

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

Posted 02 July 2016 - 08:22

So what do the different options mean? Does "Disabled" mean that I won't have to click the notices away (but it may take a bit longer)?

 

Try it out :) , disabled means it won't slice process, so you'll get the 'taking to long' notices running the tool on large content sweeps, pattern will process one pattern at a time (less undo's), patt-track will process every matrix block independently (more undo's). 

 

 

 

Perhaps I'm misunderstanding what the "include duplicate phrases" option is intended to do

 

Let's say you're creating phrased instruments from already finished songs, collecting every pattern-track inside. Having duplicates (or empty pattern-tracks) included can save having to manually ctrl+d duplicate a phrase, if you'd quickly like to create variations. It is more an option geared towards content creation I think.  


Edited by Djeroek, 02 July 2016 - 08:24.


#30 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 July 2016 - 08:47

Try it out :) , disabled means it won't slice process, so you'll get the 'taking to long' notices running the tool on large content sweeps, pattern will process one pattern at a time (less undo's), patt-track will process every matrix block independently (more undo's). 

 

 

I tried but it kept raising an error "expected instr_idx to be a number". Try out the DemoSong – Daed – Bears and you'll see the same thing. I selected everything in the pattern matrix, right-clicked and chose "Create phrase from selection".

 

Other songs work fine though. I dig the Patt-track behavior.

 

 

Let's say you're creating phrased instruments from already finished songs, collecting every pattern-track inside. Having duplicates (or empty pattern-tracks) included can save having to manually ctrl+d duplicate a phrase, if you'd quickly like to create variations. It is more an option geared towards content creation I think.  

 

Okay. That makes sense (I think). So I create two patterns with duplicate content. PhraseMate creates two phrases that are duplicates of one another. Then I can modify one without messing with the other one?

 

I definitely prefer the behavior when it's disabled, where it doesn't create a second phrase. But as mentioned above, I think it's buggy – it should insert a 0Zxx command for the duplicate phrases.



#31 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 02 July 2016 - 11:28

Try it out :) , disabled means it won't slice process, so you'll get the 'taking to long' notices running the tool on large content sweeps, pattern will process one pattern at a time (less undo's), patt-track will process every matrix block independently (more undo's).

 
Yes, exactly. You should only have to muck around with this if you are getting a "Script is taking some time to process" dialog from Renoise. 
To further illustrate the point, I made a quick couple of GIFs. 
 
sliced_disabled.gif?raw=1
Without slicing
 
sliced_pattern.gif?raw=1
Slicing set to pattern
 
sliced_pattern-track.gif?raw=1
Slicing set to pattern-track
 
Edit: I was hoping it would be more obvious from these GIFs, but the sliced processing always takes slightly longer time to complete. 
The more often it yields (returns time back to Renoise) the longer it takes. In this case, "pattern-track" slicing takes approx. two or three times as long as without slicing. 
 
 

I tried but it kept raising an error "expected instr_idx to be a number". Try out the DemoSong – Daed – Bears and you'll see the same thing. I selected everything in the pattern matrix, right-clicked and chose "Create phrase from selection".

 
Yes, this indeed breaks the tool. Thanks for reporting!
I think it's because of the pattern sequence order, third pattern is an "alias": patt 0, 1, 1 (here it breaks).

Tracking with Stuff. API wishlist | Soundcloud


#32 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 02 July 2016 - 15:19

It's a regular tool sprint - v1.54 is out now  :)

http://www.renoise.c...ools/phrasemate

FIXME Detect when pattern sequence is using aliased patterns (skip processing)
FIXME (When removing duplicates in post-processing stage) use source phrase-index when replacing notes
FIXME When inserting phrase trigger-notes, take the existing visible column into consideration (never hide already visible columns)
FIXME Ignore when note-off (with no instrument number) are the the first thing to appear during collection
FEATURE Update UI + ability to abort while sliced task is running

  • Djeroek likes this

Tracking with Stuff. API wishlist | Soundcloud


#33 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 July 2016 - 16:05

Okay! This is awesome.

 

There's one last thing I found :)

 

If you have an empty pattern, and disable "include empty phrases" then it inserts a phrase into the empty pattern. I think it should do a NOTE OFF at the end of the previous pattern / start of the empty pattern...

 

So for example, if you have:

 

A

empty

B

A

B

 

then with both "include empty phrases" and "include duplicate phrases" disabled, you get:

 

Z01

Z02

Z02

Z01

Z02

 

I think it should result in:

 

Z01 (... OFF on last line?)

empty (or OFF on first line?)

Z02

Z01

Z02


  • vtrekker likes this

#34 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 July 2016 - 16:18

hrm... I think that scenario is a bit trickier than I first anticipated. It works fine on drums, for example...

 

but let's say I'm using 1-bar patterns, and have a pad sequence. I play a chord in the first bar. No notes in the second bar (the pad is sustaining) and then a chord change in the third bar.

 

With the current behavior of disabling "include empty phrases", it would re-trigger the notes in bar 2. But enabling "include empty phrases" would insert an empty phrase, stopping the pad sound.

 

I'm not sure of a good way to handle that...

 

It would be cool if extracting phrases led to a result that sounded exactly the same as the original. But I don't know if that's possible?



#35 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 02 July 2016 - 16:37

It would be cool if extracting phrases led to a result that sounded exactly the same as the original. But I don't know if that's possible?

 
As long as we are collecting phrases while limiting ourselves to the pattern threshold, sound which extend/play beyond this boundary is tricky to deal with. 
Another thing that can lead to different sounding results is the fact that the collected phrases are looped by default. I've thought of setting this to OFF (or even making it an option). 
 
But yeah, we should try to get as close to a 1:1 representation as possible. It's tricky, but I'm pretty sure it can be done. And hopefully without making the tool a complicated mess to deal with :-D
 
Btw: I have no plans of releasing a new version in the next few days, so there's plenty of time to give it a good spin.
I'm pretty sure there are still a few "actual" bugs lurking too in v1.54

Edit: hold on - you were actually describing a bug and not some "philosophical issue" ? 
 

A
empty
B
A
B
 
then with both "include empty phrases" and "include duplicate phrases" disabled, you get:
 
Z01
Z02
Z02
Z01
Z02


Re-reading this, I now understand what you meant. Yes, the 'empty' should not be turned into a phrase trigger but rather, be left out with these settings. This is a bug and should of course be fixed. 

 

But - (and now we're back to the philosophical discussion) - even if the empty space was left alone (the bug was fixed), the "A" phrase would in fact repeat in lieu of the empty space, due to the default looping of phrases. I think it's simply a better/safer choice to leave looping disabled as the default choice. This will also cause sustained chords to continue playing across pattern boundaries...


Edited by danoise, 02 July 2016 - 19:46.

Tracking with Stuff. API wishlist | Soundcloud


#36 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 04 July 2016 - 18:05

 hold on - you were actually describing a bug and not some "philosophical issue" ? 
 


Re-reading this, I now understand what you meant. Yes, the 'empty' should not be turned into a phrase trigger but rather, be left out with these settings. This is a bug and should of course be fixed. 

 

But - (and now we're back to the philosophical discussion) - even if the empty space was left alone (the bug was fixed), the "A" phrase would in fact repeat in lieu of the empty space, due to the default looping of phrases. I think it's simply a better/safer choice to leave looping disabled as the default choice. This will also cause sustained chords to continue playing across pattern boundaries...

 

yes I think it's a bug in all cases

 

the simplest solution is just to set the phrases to not loop, as you said. Then you get the same end result when phrases are extracted and replaced.

 

edit: and it makes sense that the phrases would not loop... they were written as a pattern, and thus were not intended to loop in the first place. Although it may be different if you select something in the pattern sequencer vs the matrix... anyway, I think a simple "loop phrases" checkbox option would do the job.


Edited by pat, 04 July 2016 - 18:06.


#37 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

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

Posted 04 July 2016 - 18:48

About resulting phrases not looping, can this please be made optional? For a lot of stuff i'm generating, for example beat, percussion phrases I want them to!

#38 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 07 July 2016 - 10:59

New version, v1.55, some bug fixes and enhancements: 
http://www.renoise.c...ools/phrasemate
FIXME phrase not allocated when instrument is used in multiple tracks in same pattern
FIXME do not attempt to allocate phrase when pattern-track is empty
FIXME capture all: reset source instrument on each copy
FIXME Check for (non-)existing instrument
TWEAK do not include track/global effect-commands when collecting
FEATURE specify looping mode for collected phrases
Just to demonstrate how far this tool has now gotten, here is a version of the demosong Access Pwd by Medievil Music - completely converted into phrases.
Medievil%20Music%20-%20Access%20Pwd%20(phrasified).xrns
 

About resulting phrases not looping, can this please be made optional?

 
Done now   :)

Edited by danoise, 01 May 2017 - 16:30.

  • Djeroek and pat like this

Tracking with Stuff. API wishlist | Soundcloud


#39 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

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

Posted 26 July 2016 - 23:42

Had this bug tonight;

 

 

'C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.renoise.PhraseMate.xrnx\main.lua' failed in one of its notifiers.

The notifier will be disabled to prevent further errors.
 
Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance...
 
.\source/ProcessSlicer.lua:122: main.lua:1273: attempt to index local 'instr' (a nil value)
stack traceback:
  [C]: in function 'error'
  .\source/ProcessSlicer.lua:122: in function <.\source/ProcessSlicer.lua:107>

 

running on every block in the matrix, capturing all instruments inside the same instrument, not replacing notes with phrases.



#40 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 03 August 2016 - 23:59

Okay I just want to jump back in here and give a big THANK YOU to danoise for making this!

 

I hit on kind of a cool workflow today... it lets me record a song by playing live, and then pimp it out in the computer with Renoise:

  1. Use my MPC to create a basic 16-bar sequence with all the sounds and phrases I want
  2. Record a draft using pad mutes to make the basic arrangement
  3. Export the sequence as a midi file and load it into Renoise
  4. Extract phrases using this sweet tool
  5. Re-create the arrangement using volume = 80 (on) or 00 (off)

It's that last step that is the most tedious... it involves listening to the draft recording repeatedly (autoseek ftw!) and setting my phrases on / off appropriately. That said, I think it'll be worth the effort: once I've got my basic arrangement done in Renoise, I can do all sorts of layering, effects, resampling... all that good stuff.

 

And this tool makes it possible, so thank you danoise for all your hard work!

 

 I'll now be going into a hole and composing non-stop for a while...  :w00t:


  • danoise likes this

#41 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

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

Posted 09 August 2016 - 14:38

Trying to collect a phrase of a multi sample instrument which hits are spread across one group, the tool takes a long time processing each sequence. Although the sliced processing option is set to pattern, I still have to click away 'the script is taking to long...' notice windows around three times a sequence block.

 

Btw the source is set to 'selected instrument' and destination to 'same instrument', notes aren't replaced by phrases and the collected phrases are set to be looped.

 

I decided to terminate processing because it was taking to long and I got;

 

 

'C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.renoise.PhraseMate.xrnx\main.lua' failed in one of its notifiers.

The notifier will be disabled to prevent further errors.
 
Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance...
 
.\source/ProcessSlicer.lua:122: main.lua:1313: Script execution terminated by user.
stack traceback:
  [C]: in function 'error'
  .\source/ProcessSlicer.lua:122: in function <.\source/ProcessSlicer.lua:107>
 
edit;
 
tried the same thing with sliced processing set to disabled and eventually terminated the tool as well, which gave;
 

 

'C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.renoise.PhraseMate.xrnx\main.lua' failed in one of its notifiers.

 
Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance...
 
main.lua:1865: Script execution terminated by user.
stack traceback:
  main.lua:1310: in function 'allocate_phrase'
  main.lua:1865: in function 'do_collect'
  main.lua:1698: in function 'collect_from_matrix_selection'
  main.lua:1418: in function 'fn'
  main.lua:250: in function 'invoke_sliced_task'
  main.lua:570: in function <main.lua:566>

 

In the end, the result would probably not be that useful anyway because each separate hit has its own phrase / isn't merged together to form the complete beat, but though I'd share the bug notices anyway  B) .


Edited by Djeroek, 09 August 2016 - 14:54.


#42 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 09 August 2016 - 18:04

@djeroek: thanks for reporting!
 

Trying to collect a phrase of a multi sample instrument which hits are spread across one group, the tool takes a long time processing each sequence.

 

Could you PM me the song? Would be very useful to tracking down this bug..


Tracking with Stuff. API wishlist | Soundcloud


#43 Djeroek

Djeroek

    Probably More God or Borg Than Human Member

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

Posted 10 August 2016 - 05:08

Chickycheck the pm  B)



#44 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 10 August 2016 - 15:00

Ah, it's maxing out the number of phrases you can create in a single instrument (126). 

PhraseMate should skip those phrases (and issue a warning) - don't know why it doesn't.... that's definitely the cause of the problem. 


  • Djeroek likes this

Tracking with Stuff. API wishlist | Soundcloud


#45 Meef Chaloin

Meef Chaloin

    Big GrandDaddy Member

  • Normal Members
  • PipPipPipPipPipPipPipPip
  • 478 posts
  • Gender:Male

Posted 19 August 2016 - 15:47

I'm getting this fairly frequently. At the moment all it takes is open renoise and then press the close button, then this pops up:

'/home/alex/.renoise/V3.1.0/Scripts/Tools/com.renoise.PhraseMate.xrnx/main.lua' failed in one of its notifiers.
The notifier will be disabled to prevent further errors.
Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance...
main.lua:2392: attempt to index global 'rns' (a nil value)
stack traceback:
  main.lua:2392: in function 'detach_from_song'
  main.lua:2459: in function <main.lua:2457>


#46 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 19 August 2016 - 22:07

I've seen something that looks like that too, when quitting Renoise or making a new file. I'll take a closer look next time it happens.



#47 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 20 August 2016 - 10:21

I'm getting this fairly frequently. At the moment all it takes is open renoise and then press the close button

 

Thanks. From a quick glance at the code I can see why it would happen. But - I'm using the tool myself, so it's a bit spooky that I'm not getting those error messages here.

That's definitely why it slipped under the radar  :ph34r:


Tracking with Stuff. API wishlist | Soundcloud


#48 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 September 2016 - 04:48

I don't know if this is a bug, but it's certainly behavior that could be changed to make it way more useful to me :)

 

Scenario: I've got the instrument on program mode, and play G-4 0Z01 to transpose pattern 01 up 7 semitones. Then I run PhraseMate's "write pattern to selection"

Expected: it writes the pattern to the selection, transposed

Actual: it writes the exact pattern

 

So if I have all C-4 notes in my pattern, I would expect "write pattern" to result in all G-4 notes (because I played a G-4 in the pattern editor). Instead it writes all C-4 notes.

 

There might be a special case too (I don't know) with ghost phrases: where I initially play C-4 01 0Z01 and follow it with  G-4 __ 0Z01 – which continues the pattern, but transposes it.

 

If PhraseMate could write out the transposed pattern, it would become even more insanely useful to me :)

 

---

 

I will put together a short XRNS that shows exactly what I want it to output, I think that'll be more helpful.


Edited by pat, 02 September 2016 - 04:49.


#49 pat

pat

    Big Daddy Member

  • Normal Members
  • PipPipPipPipPipPipPip
  • 445 posts
  • Gender:Male

Posted 02 September 2016 - 04:58

Edit: I think I've misunderstood how writing phrases is supposed to work. I thought I could put the phrases in the pattern editor, and then writing phrases would "explode" them and replace each phrase with the corresponding notes. But it looks like it just replaces them with the currently selected phrase.

 

------

 

I think there's definitely a bug writing phrases to a track when using keymap mode.

 

Setup: I have two phrases each assigned to a key in keymap mode. I have a 20 line (hex) pattern. On line 0 I play C-0 and on line 10 I play D-0. I select the whole pattern and choose "write phrase to selection in pattern"

Expected: PhraseMate writes out the phrases exactly

Actual: PhraseMate skips the first line of the second pattern. More specifically, it fails to write the note of the first line. It enters the instrument number on line 10 but not a note number.


Edited by pat, 02 September 2016 - 05:23.


#50 danoise

danoise

    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6474 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 02 September 2016 - 10:21

Yup, PM is currently just 'dumping' the phrase into the pattern. It's definitely planned to make this part more sophisticated!
A lot of the groundwork is already done, but also fraught with edge cases. So realistically it will eventually be able to what you ask, but limited to a single 'source' note column.

I'm currently refactoring some of my tools, PM included - so much shared code going around.. will take a look at the issue you reported, after this is done


Tracking with Stuff. API wishlist | Soundcloud






Also tagged with one or more of these keywords: phrases, zxx