Sway

Sway

analysis-driven live audio processing


Sway for monome norns is a single-channel version of the SuperCollider-based live processing system I use in live performance with my computer and a multi-channel audio interface. It is an interactive music system inspired by systems like George Lewis’s Voyager and Pauline Oliveros’s Expanded Instrument System. I was looking for a way to create a live processing system by only playing my instrument and not having to worry about the specifics of the processing within performance. Audio analysis controls the moment-to-moment parameters of each type of processing as well as which processing is currently happening. Processing types are assigned to a grid corresponding to density, pitch clarity, and amplitude. Play in different ways (noise/pitch, fast/slow, loud/soft) to get the system to change the processing.

Requirements

audio input into left channel (1) of norns (mono input only)

Documentation

E1: master volume
K2: switch between grid screen and analysis screen

Usage

  1. Plug an instrument or microphone into input 1 (L) on monome norns
  2. Plug in headphones or connect output 1, 2 or both to external speaker(s)
  3. Start Sway script

Calibration

  1. The system responds based on three parameters, amplitude, density, and pitch clarity. Your current position in the processing grid is represented by the moving dot. If your density increases then your position on the y-axis will increase and vice versa. If you play highly pitched material (versus non-pitched sounds), the x-axis will increase and vice versa. If you stop playing then the dot will gradually return to the center.
  2. In order to change how the system responds based on your individual playing, you must adjust the thresholds for each analysis parameter. These can be found within the parameters menu.
  3. Press key 2 to bring up the analysis screen, this tells you what the current averaged analysis values are. Play in a certain way and see what values come up. You can then adjust the thresholds within the parameters menu to better reflect how you play and what your instrument does.

Experimentation

  1. To experiment with just the processing types, go to the parameters menu
  2. Turn analysis off
  3. Change the processing_type to hear the different options
  4. Turn polarity on and off and listen to how the different processing types respond differently

Roadmap

  • add additional processing types
  • document how individuals can add their own processing
  • rewrite the whole system so that more of the control side of the system runs on the lua end instead of the SuperCollider end

Download

v1.0.0 - Download zip
Github - https://github.com/carltesta/sway
More Info - http://sway.carltesta.net

Installation Options

SFTP

  • To install via SFTP, click the download link above, unzip the folder, change the name of the folder from “sway-master” to “sway”
  • follow this guide to SFTP into norns via cyberduck (or another program)
  • upload the “sway” folder to the dust/code folder
  • reset the audio system using the norns menu by going to SYSTEM -> RESET
  • navigate back to the SELECT menu and choose SWAY

GIT

  • To install using GIT first connect your norns to a wifi network with internet connectivity
  • make a note of the IP address of your norns by pressing button 2 on the Select screen i.e. 192.168.1.10 or some variant
  • SSH into norns (on mac terminal type: ssh we@192.168.1.10 and the login using the username: we and password:sleep
  • once logged in, type cd dust/code and press enter
  • then type git clone https://github.com/carltesta/sway and press enter
  • reset the audio system using the norns menu by going to SYSTEM -> RESET
  • navigate back to the SELECT menu and choose SWAY
  • when using git you can check for updates by following the same ssh procedure above and navigating to the dust/code/sway folder and typing git status. If there are changes you can type git pull to update and then reset the audio system before starting the script so that the changes take effect
42 Likes

Hi, this is really really cool. Does this code exist as just vanilla sc code somewhere? That is, as something (maybe finickly) usable for non-norns users?

Just curious! Certainly will be attempting to make it work for me if not.

This is just very inspiring, or like something I always wanted but never had the right set of ideas.

1 Like

Yes there is but not publicly available yet. I do plan on making a Mac standalone version that automatically runs the SuperCollider code. I need to work on the GUI for that. The norns lua stuff made that part easy :slight_smile:

3 Likes

Some examples of Sway in action…


8 Likes

Absolutely LOVING this script. It’s exactly the kind of sonic terrain I can put to full use in improvising. Thanks @carltesta

1 Like

So glad to hear that! I’d love to hear anything you make with it.

1 Like

Thanks! I look forward to hearing what you make with it!

1 Like

@carltesta – this script is amazing. Cheers!

https://soundcloud.com/charlie-gilb-107384045/wayst

3 Likes

@CharlieGilb, thank you! This is truly beautiful. I was initially hesitant to share Sway because it was more like a personal musical composition than a general musical tool. But to hear these creations out in the world is very special. It’s almost like this script is inspiring music I want to hear. Thanks for sharing!

9 Likes

I’m expecting a crow next week and plan to integrate it into the Sway patch for norns. Do folks have any ideas on how it should be integrated? My initial thoughts include the following options:

  • CV outs for averaged analysis data (clarity, density, amplitude)
  • CV outs for x,y position on grid
  • CV trigger out when position moves into a new quadrant

anything else?

2 Likes

These are great! I was thinking I could also put them in the parameters menu and then folks could choose what data goes to what output.

4 Likes

Also, kinda wanna map an Arc to those 4 parameters…

3 Likes

Could you explain that a bit more? You want to see the values of the parameters on the Arc’s leds? Or somehow control those parameters via Arc?

Personally, I will probably work on modifying the script to allow the Arc to actually override/change the parameters (mostlyjust X and Y axis values).

I understand that is probably counter to the original purpose of Sway, but for me, adding that level of control while still having the cycling fx on each axis could make for a compelling compositional tool.

2 Likes

Ah yes, of course. That makes a lot of sense. It’d be great if you could pull request your changes when you do as I don’t have an Arc and wouldn’t be able to test it out.

1 Like

Arcify makes adding Arc control over parameters super easy. It’s only a matter of a handful of lines of code.

@beepboop I just put together a vanilla SC version tonight. This is very rough around the edges but it should work! This is available as a branch of the norns version.

2 Likes

Oh man, I saw you play a few years back at the library in Santa Monica, and I’ve been thinking about this patch ever since! Don’t have a norns, and my SC chops aren’t up, but I’m exited to look into it!

1 Like

Whoa! Awesome that you were there! The patch didn’t quite work for that performance, haha, but this should be relatively simple to get going. Let me know if you have any questions.

This is so cool, @carltesta! I’ve been experimenting with threshold settings for piano and other keyboard sound inputs. The processed output is often mysterious (but exciting). Can you provide (or point me to) a little more info about each of the built-in processing types? Reverb, delay, amp mod, freeze, pitchbend, filter, textural and cascade…Can I access their parameters within Sway, such as delay time, sample capture sizes for textural and cascade, etc, beyond the threshold settings that trigger them? If not, what are their default settings? I’m especially eager to get more understanding of the textural and cascade processes, because I’m finding they can spiral out of control in my hands. Thanks for this inspiring creation!