New Tool (3.0,3.1): xStream

This tool is pretty awesome :drummer: , can’t code for shit myself, but the models present can generate useful results for sure, hope you guys create a lot of them :slight_smile: .

New model: Exponential Delay (v1.31)
The famous bouncing ball and many other effects can be achieved with this one.

  • Discovered a small bug which ignores the state of checkboxes when recalling presets - will fix.

HOWTO: download the file, paste into the xStream “models” folder and re/start tool

Finally!

Version 1.35 has arrived. As usual, download from the tools page.

Just a small maintenance update, mostly fixing a couple of bugs I found and adding the exponential delay model.

Also switched to a new graphic on the tools page :slight_smile:

Version 1.35 has arrived.

champion.

Another update, 1.40. Grab it from the tools page.

The focus this time has been on making xStream more friendly as a development environment.

In particular, not having to fire up another text editor (scripting console) in order to tweak/add arguments - this can all be done inline now.

Also, a supporting class, xObservable, makes the task of figuring out which parameters you can bind to (and what their ranges are) a no-brainer.

All in all, this means that there is less “domain specific stuff” to learn - no need to understand some arbitrary syntax that I have invented to describe arguments, or to have the Renoise API documentation around to learn which observables you can bind to.

Full list of changes:

+ inline editing, creation of arguments (no need to open .lua file)
+ 'wizard' style creation/import of models (e.g. paste model as string)
+ reordering of presets and arguments
+ ability to name presets (default is no name, shown as "Preset #x")
+ callback: check the 'output_mode' (streaming,track,selection)
+ callback: ability to set argument values (updates controls too)
+ using HSL color space for highlights (looks more Renoise native)
+ various small UI tweaks, improved icon set
+ detect longstrings and block comments before saving a model
+ renamed argument displays (please update models accordingly)
  boolean --> checkbox
  string --> textfield

Another quick update, 1.41. Download from the tool page

Seems I overlooked a few special cases when using the new argument editing features from 1.40

And overall, when the logic in a callback is flawed, it will simply use the existing pattern data (wonder why I didn’t do this to begin with?)

Also, there is a wonderful new model to play with - Chord Memory.

This is the first model to make use of the new “settable arguments”, so it will require xStream 1.40 or newer.

Feature request: Possibility to write to multiple tracks.

Got this with the latest version I guess, updated through renoise auto-update system;

‘C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.renoise.xStream.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…

std::logic_error: ‘invalid sequence_pos index ‘21’. valid values are (1 to 8).’

stack traceback:

[C]: in function ‘pattern’

.\source/xLib/xSongPos.lua:141: in function ‘get_pattern_num_lines’

.\source/xLib/xSongPos.lua:339: in function ‘increase_by_lines’

.\source/xLib/xStreamPos.lua:141: in function ‘set_pos’

.\source/xLib/xStreamPos.lua:209: in function ‘track_pos’

.\source/xStream.lua:1469: in function ‘on_idle’

.\source/xStream.lua:246: in function <.\source/xStream.lua:245>

I had run the tool in a previous song session, trying out the new chord memory model, tweaking the gui while playing back a pattern. After playing I closed the tool and started a new empty song, also have loaded different songfiles and suddenly this error. (windows 10, 32 bit renoise)

I had run the tool in a previous song session, trying out the new chord memory model, tweaking the gui while playing back a pattern. After playing I closed the tool and started a new empty song, also have loaded different songfiles and suddenly this error. (windows 10, 32 bit renoise)

I think I know what went wrong: pattern(s) got removed from the sequence - xStream doesn’t really like this ATM.

But there is this option which will let you suspend the tool if the dialog is not visible. Did you enable this?

Hey danoise,

regarding your Qxx-shuffle script, I get some errors.

First after loading and pressing play button in xstream:

'/Users/Ju/Library/Preferences/Renoise/V3.1.0/Scripts/Tools/com.renoise.xStream.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...

std::logic_error: 'trying to access a nil object of type 'class FilterDeviceParameter'. the object is not or no longer available.'
stack traceback:
  [C]: ?
  [C]: in function '__index'
  [string "do..."]:37: in function <[string "do..."]:35>
  ./source/xStream.lua:1271: in function 'resolve_automation'
  ./source/xStream.lua:1058: in function 'do_output'
  ./source/xStream.lua:65: in function 'callback_fn'
  ./source/xLib/xStreamPos.lua:188: in function 'set_pos'
  ./source/xLib/xStreamPos.lua:209: in function 'track_pos'
  ./source/xStream.lua:1469: in function 'on_idle'
  ./source/xStream.lua:246: in function <./source/xStream.lua:245>

The second appears, I think, when I was “accidentally” changing the target fx column, because the shuffle value was hidden first.

Something with “return a nil value”…

regarding your Qxx-shuffle script, I get some errors.

Thanks, will look into it.

I created the Qxx script with a slightly more recent (unreleased) version of xStream, so I might need to test a bit before release a new version.

Version 1.45 of xStream is released

gui_1.45.png?raw=1

What’s new:

* FEATURE Rewritten GUI - the "compact mode" is gone, favorites and options are now dialogs
* FEATURE Ability to "pin" the favorites window so it will appear on top
* FEATURE Ability to MIDI-map arguments (CMD/CTRL+M) 
* FIXED A couple of bugs have been fixed here and there
* DOCUMENTATION!

The ability to MIDI map arguments is the most important one, but I’ve also have taken the time to document the tool a bit more.

You can check out the manual here(work in progress):
https://github.com/renoise/xrnx/tree/master/Tools/com.renoise.xStream.xrnx

Notice that, as always, you need to backup any custom models you’ve made before installing the new version.
Storing data outside the tool folder is a planned for the next version, and will solve this once and for all.

A quick follow-up: v1.46 is released

Thanks to some quick feedback I managed to squeeze a couple more bugs:

FIXED filename lower/uppercase issue on linux
FIXED expand_columns not working when targeting Nth column (not starting from 1)
FIXED better "recovery" when deleting patterns while streaming

Thanks kopias - linux testingis much appreciated

Another update (v1.47), get it from the tools page

FIXED Stop streaming when loading a new song while streaming 
FIXED A few out-of-bounds song position issues (strengthened checks)
FEATURE Tabbed arguments - see Args-Tabbed model for an example
FEATURE Linkable arguments - a "sub-feature" of tabbed arguments
FEATURE Locked and linked argument state now saved as part of a preset
FEATURE Custom userdata folder - containing models, preset and favorites

This is the last time you will need to backup your files before updating, as you can now specify a custom user-data folder - if you want.
Also, the Euclidean Rhythms model got a nice treatment with the addition of tabbed arguments:

Euclidean-tabs.gif?raw=1

Note the small “link” icon next to each tabbed argument: clicking it will synchronize the value between all tabs.
It will automatically appear when the argument has a similarly-named argument present in another tab.

I’ve just started making a model with some usable chord functions here: https://github.com/snabeljoel/Chord-manipulation-model

In case anyone feel like having a look at the “documentation” and get some idea about additional chord manipulations that could be included, feel free to provide any ideas.

The functions you outline seems like a perfect candidate for a supporting class?
Then, those methods would be available anywhere and not just in a single model

In any case, looking forward to seeing (hearing) what you’ll do with it!

OK, version 1.5 is out!

http://www.renoise.com/tools/xstream

+ MIDI Support (send/receive)
+ Voice Manager
+ Buffer access (scheduling)
+ Events handlers for 
  * Model events (MIDI, VOICE)
  * Renoise events (a whole lot)
  * Arguments (if any)
+ Various bug fixes and enhancements

It’s pretty crazy stuff … the voice manager alone is powerful enough to warrant 2 new models to demonstrate the feature.

One model triggers live MIDI messages which gets routed into Renoise (selected track/instrument). The other one will record directly into the pattern and was also used for testing the scheduling (quantize to beats and bars)

Both of them offers control of the polyphony limit and automatic note-column allocation.

Think I’ll come up with a hybrid model which will combine the best parts of both, to deliver a truly “enhanced keyboard” for Renoise.

Ideas are welcome :slight_smile:

And as always, if something is not working as expected - please let me know…

if something is not working as expected - please let me know…

Thanks to kopias, a bug on linux was fixed and I found another one too:

Quick-fix release v1.51 (might take a few minutes before download link is working)

http://www.renoise.com/tools/xstream

Another release, 1.52 - tool page

Last one for the next few days, I promise :slight_smile:

FIXED Automation output accidentally got broken in 1.51
FIXED Event notification no longer fired on inactive models
FIXED Model "modified" state no longer reset when stream starts
FEATURE Renamed models - simple demonstrations are now prefixed by 'Demo-'
FEATURE Skip evaluation of callback if main contains no code (comment only)
FEATURE Scheduling a note or effect column now able to merge with existing content
FEATURE New models, ColumnEraser and Arpeggiator

I was burning the midnight oil yesterday and came up with a nice, functional arpeggiator.

It works nicely, but - for now - only with a live MIDI keyboard. So you need to specify your controller in the xStream MIDI options before giving it a go.

Another new model is the ColumnEraser. It allows you to “punch out” (erase) individual columns in a track, simply by muting them.

It’s very nice to generate complex Euclideanrhythms and then use this model to adjust things afterwards.

Wow if you could put such energy into renoise core… :slight_smile: