Nova3 Generative Sequencer - bugfix version, 0.8
-
- KVRian
- Topic Starter
- 621 posts since 13 Aug, 2005
Yes, the white rovers move at normal speed and the black rovers move at half speed. I was going to include a button on the rover palette to toggle the palette between normal speeds and slow speeds but decided not to do that in order to keep the interface simpler.dreadnought wrote:I don't have the interface in front of me right now, but what is the difference between the rovers in white and the ones in black? Are they the same, except that one set is moves twice as fast? That was my best guess at the time, but it seemed odd that the rover palette was duplicated just for that.
I'm not too keen on tooltips since they take CPU cycles just to check if the mouse is hovering or not but I might put them in, or at least print the name of the selected item somewhere as a second-best alternative.dreadnought wrote:Second, I'd still love some tooltips for the obstacle palette. I know you were in some pretty deep discussions about the obstacle palette earlier in this thread, though, so maybe you're holding off until you completely revamp that part.
That is simpler for plain inserts. The complication arises when clicking to cycle through the rover directions and obstacle types. If the cycle-to-the-next-type behavior was taken out then interaction would be much simpler: left-click to insert or replace selected thing, right click to clear cell. Or maybe: left-click to insert selected thing, right click to cycle selected "type" (cycle rover direction when rover is selected, cycle obstacle type when obstacle is selected), and add an empty cell to the palette so that selecting the empty cell then left-clicking any cell would clear that cells contents. Opinions ??dreadnought wrote:I wonder, though, why the obstacle palette doesn't just work like the rover palette - i.e., you click on an obstacle, and that's what you get when you click in the sequencing matrix. So, click on a particular rover, and a single left click inserts that rover. Click on an obstacle instead, and a single left click inserts that obstacle. Seems simple and makes the most sense to me.
The humanizer control varies the note start and the note length, independently, for up to 15 milliseconds. I'll consider separating out the length jitter or maybe adding an additional length jitter if the humanization is not enough.dreadnought wrote:The new repetition probability helps with dialing in a little variety, as does the velocity jitter. Would there be some way, though, to add some sort of note length jitter as well? If each note length weren't precisely the same, it would help reduce the mechanical quality of the sound. I realize the note length is based on tempo, but maybe the jitter could mean a certain probability that note length is one increment (maybe an eighth) longer or shorter?
-
- KVRist
- 83 posts since 30 Apr, 2004
dreadnought wrote:I wonder, though, why the obstacle palette doesn't just work like the rover palette - i.e., you click on an obstacle, and that's what you get when you click in the sequencing matrix. So, click on a particular rover, and a single left click inserts that rover. Click on an obstacle instead, and a single left click inserts that obstacle. Seems simple and makes the most sense to me.
I envisioned it the first way: No cycle-to-next-type behavior, so you simply left-click to insert an obstacle or rover, and right-click to remove. All the features you've added are great, but at some point the complexity may begin to overwhelm the simple fun of clicking in the matrix and creating sequenced notes. I think making that part as intuitive as possible helps mitigate against that possibility.ToneCarver wrote:That is simpler for plain inserts. The complication arises when clicking to cycle through the rover directions and obstacle types. If the cycle-to-the-next-type behavior was taken out then interaction would be much simpler: left-click to insert or replace selected thing, right click to clear cell. Or maybe: left-click to insert selected thing, right click to cycle selected "type" (cycle rover direction when rover is selected, cycle obstacle type when obstacle is selected), and add an empty cell to the palette so that selecting the empty cell then left-clicking any cell would clear that cells contents. Opinions ??
dreadnought wrote:The new repetition probability helps with dialing in a little variety, as does the velocity jitter. Would there be some way, though, to add some sort of note length jitter as well? If each note length weren't precisely the same, it would help reduce the mechanical quality of the sound. I realize the note length is based on tempo, but maybe the jitter could mean a certain probability that note length is one increment (maybe an eighth) longer or shorter?
I thought the Humanize control was just creating an offset at the start of the note, so it's evidently not affecting the note length enough for me to sense much of a difference. And 15 milliseconds, while sufficient for a little offset at the start of the note, doesn't seem like it would provide enough variance in total note length. I would much rather have a separate control just for note length jitter. I think it would go a long way toward the goal of humanization.ToneCarver wrote:The humanizer control varies the note start and the note length, independently, for up to 15 milliseconds. I'll consider separating out the length jitter or maybe adding an additional length jitter if the humanization is not enough.
Thanks for taking this stuff into consideration - I'm sure whatever you decide to do will be very cool.
Dan
-
- KVRian
- 783 posts since 6 Jan, 2006 from Premià
Hey this plugin is growing nicely with each beta, from very good to simply great
Here's some feedback after testing 0.4:
- The rover palette is great, I would extend its behavior to the obstacle palette as well. As suggested above, +1 for entirely ditching the "cycling" when inserting elements: just consider all elements (rovers and obstacles) as one big palette, and whatever you select on the palette (rover or obstacle), you insert in the sequencer with a simple left-click. And whatever you right-click on the sequencer, it gets deleted. I find the cycling unintuitive and confusing, plus it needs way more mouse clicks on average to get to the desired element than simple select+leftclick.
- Another +1 to separating length jitter from humanizer, plus 15ms might be enough for humanizing the note timing but I think the note length lends itself to bigger variations, which would cover not just humanizing but other creative uses... particularly if implemented in conjunction with a length tilt.
Ideally I'd suggest assigning the 2 most relevant "modifiers" to every note attribute, as follows:
- Note occurrence: Probability + Tilt
- Note timing: Humanising + Swing
- Note length: Jitter + Tilt
- Note velocity: Jitter + Tilt
Just a thought.
- I'm experiencing an issue in energyXT2: only about half the notes are properly generated when a rover hits a wall, even for default values (note probability = 1) and simple situations (a couple of rovers, no obstacles). For the other half, only the note-off is generated and thus no sound, although the wall lights up as if the note-on was being generated as well... (?)
Apparently this issue was introduced in beta 0.3, it didn't happen in 0.2 but it still happens in 0.4. Plus I can only reproduce it in energyXT2 so far, in Reaper it works as expected, no issues. Can anyone reproduce this in eXT2?
- The rover palette is great, I would extend its behavior to the obstacle palette as well. As suggested above, +1 for entirely ditching the "cycling" when inserting elements: just consider all elements (rovers and obstacles) as one big palette, and whatever you select on the palette (rover or obstacle), you insert in the sequencer with a simple left-click. And whatever you right-click on the sequencer, it gets deleted. I find the cycling unintuitive and confusing, plus it needs way more mouse clicks on average to get to the desired element than simple select+leftclick.
- Another +1 to separating length jitter from humanizer, plus 15ms might be enough for humanizing the note timing but I think the note length lends itself to bigger variations, which would cover not just humanizing but other creative uses... particularly if implemented in conjunction with a length tilt.
Ideally I'd suggest assigning the 2 most relevant "modifiers" to every note attribute, as follows:
- Note occurrence: Probability + Tilt
- Note timing: Humanising + Swing
- Note length: Jitter + Tilt
- Note velocity: Jitter + Tilt
Just a thought.
- I'm experiencing an issue in energyXT2: only about half the notes are properly generated when a rover hits a wall, even for default values (note probability = 1) and simple situations (a couple of rovers, no obstacles). For the other half, only the note-off is generated and thus no sound, although the wall lights up as if the note-on was being generated as well... (?)
Apparently this issue was introduced in beta 0.3, it didn't happen in 0.2 but it still happens in 0.4. Plus I can only reproduce it in energyXT2 so far, in Reaper it works as expected, no issues. Can anyone reproduce this in eXT2?
The mind boggles.
-
- KVRAF
- 10376 posts since 2 Sep, 2003 from Surrey, UK
Yep, I am referencing the scales folder itself. With some trials, I think that the path is too long:ToneCarver wrote:Are you including the name of the folder that contains the scales as part of the path definition in the .ini file ? For example, if you have your scales in a folder at "x:\mymachine\data\nova\scales" then use that whole path as the value in the .ini file.DarkStar wrote:(a) when I click on the Scale arrow it takes me to the folder containing the "scales" folder not into the "scale" folder itself. I've tried several variations of the scalefoldername in the .ini file.
...\Tonecarver\scales works (the full path name is 112 characters)
but ...\Tonecarver\Nova3\scales does not (the full path name is 118 characters)
and ...\Tonecarver1\scales does not (the full path name is 113 characters)
-- as the folder is in "Documents & Settings" I surrounded the path name by " marks,
-- a guess, could it be that the max line length in the .ini file is 128 charcters?
-- PS the comment in the .ini file refers to a txt file: ;ScaleFolder c:\somefolder\otherfolder\Nova\scales.txt
OK, that all makes sense. Thank you.ToneCarver wrote:The default scale is D A Bb C D E F A C which is one of the scales used by the Hang Drum. There are several YouTube videos of the Hang that are worth checking out if you have never heard one. The default scale is baked into the plugin so that it still makes notes even if there are not any scale files present or loaded.DarkStar wrote:(d) what scale is the 00-default.txt. Would it be more useful if the default were the Western Major scale?
It seems useful to be able to define a DefaultScale in the .ini file that would cause that scale to be loaded when a new instance of the plugin is inserted .. that is not possible now but it could show up in a future release. In the mean time you could edit the contents of 00-default.txt to be whatever scale you want, or copy the Western Major scale file to something like 000-major.txt so that it sorts alphabetically before 00-default.txt, and load the scale after inserting the plugin. Once a scale has been loaded the plugin remembers the scale notes internally so you should not have to reload it after saving and restoring a project.
-
- KVRAF
- 10376 posts since 2 Sep, 2003 from Surrey, UK
Not quite the same findings here:Juanjo wrote:- I'm experiencing an issue in energyXT2: only about half the notes are properly generated when a rover hits a wall, even for default values (note probability = 1) and simple situations (a couple of rovers, no obstacles). For the other half, only the note-off is generated and thus no sound, although the wall lights up as if the note-on was being generated as well... (?)
Apparently this issue was introduced in beta 0.3, it didn't happen in 0.2 but it still happens in 0.4. Plus I can only reproduce it in energyXT2 so far, in Reaper it works as expected, no issues. Can anyone reproduce this in eXT2?
-- i have seen a few Note-ons and Note-offs missing,
-- some note lengths generated by Nova3 seem to be invalid - and are interpreted as very large or negative in XT2 but are ignored in other hosts.
-- here are a couple of screenshots showing Nova outputs recorded in XT2 and simultaneously in eXT1.


Big pics:
http://img402.imageshack.us/img402/5295/nova3xt210a.png
http://img823.imageshack.us/img823/286/nova3xt210c.png
Uploaded with ImageShack.us
-----------------
Also
(a) the velocity of the generated notes is one less than the Velocity control
(b) If I set Note Velocity to 80, Note Jitter to 5, generate some notes, then set Jitter back to 0 and generate more notes, then most of those notes have a velocity of 79 but some are 89.
-
- KVRian
- 584 posts since 12 Jul, 2007 from Sweden
-
- KVRian
- Topic Starter
- 621 posts since 13 Aug, 2005
Yes, you are right. (sorry to put you through that, nice detective work though). That will be increased in the next release.DarkStar wrote:Yep, I am referencing the scales folder itself. With some trials, I think that the path is too long:ToneCarver wrote:Are you including the name of the folder that contains the scales as part of the path definition in the .ini file ? For example, if you have your scales in a folder at "x:\mymachine\data\nova\scales" then use that whole path as the value in the .ini file.DarkStar wrote:(a) when I click on the Scale arrow it takes me to the folder containing the "scales" folder not into the "scale" folder itself. I've tried several variations of the scalefoldername in the .ini file.
...\Tonecarver\scales works (the full path name is 112 characters)
but ...\Tonecarver\Nova3\scales does not (the full path name is 118 characters)
and ...\Tonecarver1\scales does not (the full path name is 113 characters)
-- as the folder is in "Documents & Settings" I surrounded the path name by " marks,
-- a guess, could it be that the max line length in the .ini file is 128 charcters?
Thanks, will correct that in the next release.DarkStar wrote:-- PS the comment in the .ini file refers to a txt file: ;ScaleFolder c:\somefolder\otherfolder\Nova\scales.txt
-
- KVRian
- Topic Starter
- 621 posts since 13 Aug, 2005
Nova3 does not generate note lengths, per se. It generates note on events and note off events but those do not carry any duration or length information. It is up to the host to determine the note length from the difference in time between the two events. I installed a demo version of eXT 2.5.4 and haven't observed any missing notes or out of range note times so if you have specific scenarios where the problem shows up let me know and I can try to reproduce them here for debugging.DarkStar wrote:Not quite the same findings here:Juanjo wrote:- I'm experiencing an issue in energyXT2: only about half the notes are properly generated when a rover hits a wall, even for default values (note probability = 1) and simple situations (a couple of rovers, no obstacles). For the other half, only the note-off is generated and thus no sound, although the wall lights up as if the note-on was being generated as well... (?)
Apparently this issue was introduced in beta 0.3, it didn't happen in 0.2 but it still happens in 0.4. Plus I can only reproduce it in energyXT2 so far, in Reaper it works as expected, no issues. Can anyone reproduce this in eXT2?
-- i have seen a few Note-ons and Note-offs missing,
-- some note lengths generated by Nova3 seem to be invalid - and are interpreted as very large or negative in XT2 but are ignored in other hosts.
-- here are a couple of screenshots showing Nova outputs recorded in XT2 and simultaneously in eXT1.
Big pics:
http://img402.imageshack.us/img402/5295/nova3xt210a.png
http://img823.imageshack.us/img823/286/nova3xt210c.png
Uploaded with ImageShack.us
Yes, good catch, the velocity is off by one and will be fixed in the next release. The velocity jump to 89 that you are seeing is probably due to having multiple strikes at the same time on the same note value. When multiple strikes occur on the same note at the same time only one note is output but its velocity is increased by (10 x number of strikes) to give some emphasis to the multiple hits.DarkStar wrote:Also
(a) the velocity of the generated notes is one less than the Velocity control
(b) If I set Note Velocity to 80, Note Jitter to 5, generate some notes, then set Jitter back to 0 and generate more notes, then most of those notes have a velocity of 79 but some are 89.
-
- KVRAF
- 10376 posts since 2 Sep, 2003 from Surrey, UK
No problem, fixes are always good.ToneCarver wrote:Yes, you are right. (sorry to put you through that, nice detective work though). That will be increased in the next release.DarkStar wrote:-- a guess, could it be that the max line length in the .ini file is 128 characters?
I'll try to create a project that reliably creates the issue.ToneCarver wrote:Nova3 does not generate note lengths, per se. It generates note on events and note off events but those do not carry any duration or length information. It is up to the host to determine the note length from the difference in time between the two events. I installed a demo version of eXT 2.5.4 and haven't observed any missing notes or out of range note times so if you have specific scenarios where the problem shows up let me know and I can try to reproduce them here for debugging.
ToneCarver wrote:Yes, good catch, the velocity is off by one and will be fixed in the next release. The velocity jump to 89 that you are seeing is probably due to having multiple strikes at the same time on the same note value. When multiple strikes occur on the same note at the same time only one note is output but its velocity is increased by (10 x number of strikes) to give some emphasis to the multiple hits.DarkStar wrote:Also
(a) the velocity of the generated notes is one less than the Velocity control
(b) If I set Note Velocity to 80, Note Jitter to 5, generate some notes, then set Jitter back to 0 and generate more notes, then most of those notes have a velocity of 79 but some are 89.
-
- KVRian
- 783 posts since 6 Jan, 2006 from Premià
Well of course, "note length" is nothing more than the time distance between a note-on event and its corresponding note-off. What I'm seeing is Nova, since 0.3, consistently and regularly failing to generate half the note-on events in energyXT 2.6 beta (latest version available)... let me illustrate:ToneCarver wrote:Nova3 does not generate note lengths, per se. It generates note on events and note off events but those do not carry any duration or length information. It is up to the host to determine the note length from the difference in time between the two events. I installed a demo version of eXT 2.5.4 and haven't observed any missing notes or out of range note times so if you have specific scenarios where the problem shows up let me know and I can try to reproduce them here for debugging.
http://img600.imageshack.us/img600/4595/novaissue.gif
This is after a few bars, default Nova values, one single rover and no obstacles. Note in the midi monitor how all expected note-off events are registered but half of the note-on ones are missing. Also note how there's some kind of regular pattern i.e. 2 note-ons ok, then 2 missing. In the gui, I always see the corresponding wall tile light up when the rover touches the wall, even when the actual note-on events aren't generated.
As I said, this only happens in eXT2 2.6 beta with Nova 0.3 and 0.4, it doesn't happen with Nova 0.2 (I just checked in the same system under the exact same circumstances) and it doesn't happen in either energyXT 1.41 or Reaper4 beta7...
The mind boggles.
-
- KVRist
- 326 posts since 25 Sep, 2007
+1 for separating length jitter from humanizer
+1 for entirely ditching the cycling when inserting elements and replacing with selecting from palette with left click
BTW, many thanks ToneCarver.
With each update this thing just keeps getting better and better!
+1 for entirely ditching the cycling when inserting elements and replacing with selecting from palette with left click
BTW, many thanks ToneCarver.
With each update this thing just keeps getting better and better!
-
- KVRian
- Topic Starter
- 621 posts since 13 Aug, 2005
Thanks, excellent description. I'll download the eXT2 beta and have a look.Juanjo wrote:What I'm seeing is Nova, since 0.3, consistently and regularly failing to generate half the note-on events in energyXT 2.6 beta (latest version available)... let me illustrate:
http://img600.imageshack.us/img600/4595/novaissue.gif
This is after a few bars, default Nova values, one single rover and no obstacles. Note in the midi monitor how all expected note-off events are registered but half of the note-on ones are missing. Also note how there's some kind of regular pattern i.e. 2 note-ons ok, then 2 missing. In the gui, I always see the corresponding wall tile light up when the rover touches the wall, even when the actual note-on events aren't generated.
As I said, this only happens in eXT2 2.6 beta with Nova 0.3 and 0.4, it doesn't happen with Nova 0.2 (I just checked in the same system under the exact same circumstances) and it doesn't happen in either energyXT 1.41 or Reaper4 beta7...
-
- KVRAF
- 10376 posts since 2 Sep, 2003 from Surrey, UK
More info
Here, I get the wrong-length notes when there is a Note_Off first without its Note_On. As if the host is remembering the unused Note_Off and using it at a later stage; the negative length is calculated by the host as the Note_Off precedes the Note_Nn.
Have a look at this:
-- the first event is a Note_Off for A2
-- later notes are generated correctly (ringed in yellow in the midimonitor and highlighted orange in the MIDI clip)
-- at some point the long note is generated (but it does not sound)

Big pic: http://img11.imageshack.us/img11/382/xt2nova30403c.png
Uploaded with ImageShack.us
Here, I get the wrong-length notes when there is a Note_Off first without its Note_On. As if the host is remembering the unused Note_Off and using it at a later stage; the negative length is calculated by the host as the Note_Off precedes the Note_Nn.
Have a look at this:
-- the first event is a Note_Off for A2
-- later notes are generated correctly (ringed in yellow in the midimonitor and highlighted orange in the MIDI clip)
-- at some point the long note is generated (but it does not sound)

Big pic: http://img11.imageshack.us/img11/382/xt2nova30403c.png
Uploaded with ImageShack.us
-
- KVRist
- 326 posts since 25 Sep, 2007
I'm not sure if this is a bug or I just don't understand the concept correctly...
For obstacle probability, the readme says "the probability of an obstacle being applied to a rover. 1.0 means obstacles will always affect rovers. 0 means all obstacles are effectively bypassed."
If I set the obstacle probability to 0 and have one rover follow a few squares behind another rover, the second rover does not collide with the second rover after the first rover bounces off a wall and meets with the second rover (which is what I figured would happen). However, if I follow a third rover a few squares after the second rover and the third rover meets the first rover after the first rover bounces back from the wall, there is a collision, sending the third rover in a perpendicular direction.
Also, I don't know if this is worth addressing, if someone has already addressed it, or if it is yet another instance of me not knowing what I'm doing...
I don't know if anyone else is having this problem, but when I set up a pattern starting on beat one (which seems to be with the rover two squares from a wall), I would like to be able to "rewind" the pattern so that it will reset to that position. Currently what I am doing is letting the pattern play so that I try to stop the pattern in the start position.
I hope this all makes sense.
For obstacle probability, the readme says "the probability of an obstacle being applied to a rover. 1.0 means obstacles will always affect rovers. 0 means all obstacles are effectively bypassed."
If I set the obstacle probability to 0 and have one rover follow a few squares behind another rover, the second rover does not collide with the second rover after the first rover bounces off a wall and meets with the second rover (which is what I figured would happen). However, if I follow a third rover a few squares after the second rover and the third rover meets the first rover after the first rover bounces back from the wall, there is a collision, sending the third rover in a perpendicular direction.
Also, I don't know if this is worth addressing, if someone has already addressed it, or if it is yet another instance of me not knowing what I'm doing...
I don't know if anyone else is having this problem, but when I set up a pattern starting on beat one (which seems to be with the rover two squares from a wall), I would like to be able to "rewind" the pattern so that it will reset to that position. Currently what I am doing is letting the pattern play so that I try to stop the pattern in the start position.
I hope this all makes sense.
