schicksalslied

schicksalslied

a poetry sequencer for norns


with thanks to @Justmat, whose crow talk script provided the foundation for this script’s UI, @dan_derks and @jaseknighter, whose norns/habitus workshop got me much more interested in scripting with softcut than I’d ever been before, @infinitedigits, whose Tone to Drone class helped me learn SuperCollider, and @alanza, who provided invaluable guidance and support throughout the process of this script’s creation, particularly with regard to the grid concatenation features and incorporation of the FormantTriPTR SuperCollider UGen from lamination

“What is a poet? A poet is an unhappy being whose heart is torn by secret sufferings, but whose lips are so strangely formed that when the sighs and the cries escape them, they sound like beautiful music.”
-Søren Kierkegaard, Either/Or

Demonstration

audio

video

Requirements

Encouraged

Documentation

note: you will need to restart norns after installing this script, in order for the LiedMotor synth engine to install

Entering Text

Schicksalslied begins with a text field. You can input text into the field in two ways:

  1. by attaching a keyboard to one of norns’s usb ports and typing (20 characters max)
  2. loading a .txt file into norns and importing it into schicksalslied using the “text file” feature in the params menu

For method 1, you can hit enter on your keyboard to send your line to schicksalslied. Each line you enter will be added to history. History items can be accessed by hitting the “up” arrow on your keyboard. The currently-selected history item will appear in the text field. Then you can hit enter again to make that line the active line.

History items can also be accessed with a grid. When a line is added to history, a square on the grid will be soft-lit. That square holds the line. You can access the line again by pressing that button. When the button is held down, the line it holds will be displayed in schicksalslied’s text field. When the button is released, that line becomes the active line. It will not be re-entered into history. You can also combine lines with grid, by holding down multiple buttons and releasing them simultaneously. The lines will be combined in the order in which the buttons are pressed. Combined lines are not added to history.

For method 2, your imported .txt file will be broken up by line breaks. There is no character limit for lines entered in this way. Each line will be added to history and will get its own square on the grid. If your file exceeds 128 lines, only the first 128 lines will be available on the grid. But no line will be active by default. You’ll need to select one. You can do this with a keyboard or a grid, using the methods described above. If you’re looking for somewhere to store your .txt files on norns, there’s a “text files” folder located within the “lib” folder for schicksalslied. There’s one poem there already, to get you started.

Turning Text into Music

Once you’ve entered your text, there are three ways to turn it into music. They can all be used simultaneously.

  1. with the LiedMotor synth engine
  2. with imported audio files
  3. with crow

LiedMotor
Once you’ve got an active line, you can activate the LiedMotor engine by pressing K3. But by default, you won’t hear any sound yet. You’ll need to choose one or more voices. LiedMotor has six voices:

  1. sinsin (an FM voice with a sine wave modulated by another sine wave)
  2. trisin (an FM voice with a triangle wave modulated by a sine wave)
  3. ringer (a pinged resonant filter with variable decay)
  4. tritri (an FM voice with two oscillators based on the Mannequins Mangrove module, patched “square to air”)
  5. karplu (a karplus-strong-style physical modeling string synthesis voice)
  6. resonz (a pinged resonant filter without variable decay)

You can activate each of these voices by turning up its “amp” parameter in the LiedMotor section of the parameters menu. Each of the voices interprets your text in its own way. You might think of them as a jazz combo “playing the changes.” In this sense, a “chord” would correspond to a line. You can change between chords by entering more lines or choosing different lines from history using the “up” arrow or grid button presses.

You can also shape the timbre of each voice in the LiedMotor section of the parameters menu. There are a lot of parameters. MIDI mapping can be very helpful for managing them all. You can also modulate any of these parameters with LFOs, using the LFOs section of the parameters menu.

Audio Files
You can import up to 3 audio files into schicksalslied using the “audio file” features in the params menu. Then you can start your files playing with K2. Schicksalslied will use norns’s softcut features to manipulate your audio files in ways that are determined by the text in the line you’ve entered. There are three manipulated-audio voices available. Each interprets your line to manipulate audio in its own way. You can load three different files or load one file into all 3 slots, to traverse different sections of a single recording. The three voices’ levels can be adjusted in the params menu.

Crow
You can activate crow features using K1. This works in essentially the same way as the krähenlied script for crow and druid. Documentation for krähenlied can be found here. As with krähenlied, the text you’ve entered will determine the following:

  1. pitch (v/8) from crow outputs 1 & 3
  2. slew time between pitches from outputs 1 & 3
  3. AR envelope shapes from outputs 2 & 4
  4. sequences for 6 Just Friends synth voices
  5. level for each note event on Just Friends in synthesis mode
  6. repeats and divisions for Just Friends geode rhythms
  7. quantization value for Just Friends in geode mode
  8. virtual voltages to be sent to the run jack on Just Friends
  9. playback speed and direction for w/tape
  10. creation, activation, and deactivation of loops on w/tape
  11. playhead position on w/tape
  12. clock synch divisions for all of the above

Unlike krähenlied, schicksalsleid can also play w/syn’s 4 voices or a karplus-strong string synthesizer in w/del mode. W/syn’s “this” and “that” inputs will be set up to modulate its “ramp” and “curve” parameters, respectively, by default. Other timbral parameters can be shaped in the parameters menu. They can also be modulated with LFOs.

A Note on Clock Divs

You’ll notice that, in addition to the sections mentioned above, there is also a parameters menu section titled “Clock Divs.” This allows you to choose the pace at which a given voice (engine, softcut, or crow) picks its notes from your line. For example, a bass player might not play notes as frequently as a saxophone player. Or they might play more! It’s up to you.

Note that for the clock div settings, higher numbers mean longer (as in, longer pauses between notes), not faster.

Download

from maiden type
;install https://github.com/williamthazard/schicksalslied

v1.0.8 - github link

40 Likes

I’m so excited for this!! It’s been a real pleasure to see this script take shape, and I’m finding that it’s deep.

I had a little noodle with it last night very briefly and recorded this—it was very fun, but I don’t feel like I have anywhere near the level of fluency with it that I would like to, hence the 01 in the title.

Anyway, for the text I used the abstract of my most recent math paper. Friends of the forum might recognize the sample I used for the softcut voices :wink:

8 Likes

That’s amazing, thank you! Any chance to implement record audio in addition to import?

1 Like

I don’t have any immediate plans for this. I’m not sure how I’d go about it because of the way softcut’s being used in the script. I’ll have to give it some thought! For now, you could record audio into w/tape and get an effect that would be very similar to recording into norns for one of the softcut voices

edit: I think I initially took this to mean “playing audio into norns input and schicksalslied manipulating it in real time.” That is not a thing that the script supports, and for the reasons mentioned above, it probably won’t be in the near future. But if what you meant was “record something directly onto norns and then load it into schicksalslied after you’re finished recording it,” that is something you can do. Just record to tape on norns, and then when you go to audio file in schicksalslied, you’ll be able to navigate to your tape and load it in.

5 Likes

:mage: this script is choc full of magic! you are absolutely killing it. thank you for sharing your work! :partying_face:

6 Likes

Nice, this is cool.

I am absolutely positive I won’t be the first one who will open the schicksalslied.lua as poetry. While I lack those input devices, I am looking at adding norns encoders and/or MIDI cc and MIDI notes as input devices for navigating poetry loaded from a file.

Nice job, cool concept!

2 Likes

using norns encoders for navigating history is eminently doable. Let me know if you need any help with this. There isn’t a readily available on-norns way to select the line from history, since all 3 keys are already in use. But if you’ve got a midi button somewhere, that could definitely work! You’d just need to have the button trigger the set function. Let me know if there’s anything else I can help with in putting that together. I don’t think it’d make sense as an update to the main script, but I’d be happy to help you fork it

2 Likes

This is wonderful, the six voices have a different personality each and some of them seem less polite than others, it’s aliiive

Still, I can’t seems to move above two lines moving up with my keyboard (it rememebers only the last two inputs)!

Anyway, lovely, lovely work

4 Likes

I dreamt of this as a sequencer concept a year ago, but never made something from it. I’m really glad to see you have made it take shape and am exited to dive in!

3 Likes

Wonderful concept! Eager to try it later today when in the studio. Just one thing in advance: would be possible to have MIDI out from the script??

Thanks!

2 Likes

maybe! I’ll look into it. Thanks for the suggestion.

yes! Thanks for bringing this to my attention. I was able to reproduce this bug, and I’ll get it taken care of as soon as I can.

edit: happy to report that this bug is now officially squished. Thanks again for letting me know about it @carlosbigne! You can delete schicksalslied and reinstall from GitHub to get the updated version.

7 Likes

I encounter crashes when playing with liedmotor synth params …

ooooo interesting! Thanks for letting me know. What sort of crashes are you running into? Some description of exactly what is happening on norns would be very helpful. And are you getting any error messaging in maiden when these crashes happen? I’d love to hear more about this so I can (hopefully) fix whatever the problem is

I love the concept—and will probably enjoy the sound, too, once I load it up.

I’m not sure norns would even support this, but it’d be rad to be able to send the lines of text being triggered out to a screen for live visualization. I imagine hitting a grid button and the corresponding line appearing on screen, building a sort of sound poem live.

2 Likes

this is one of the use cases I had in mind when creating this script! Norns doesn’t have native support for screen sharing, but there are a couple ways around that. My current method is @Dewb’s ndi-mod. I haven’t gotten to perform live with schicksalslied yet (I’ve only performed with various versions of krähenlied so far), but I hope to soon. The script’s visual behavior might not be quite what you’d expect (unlike lines entered with a keyboard or loaded from a file, lines called up with grid presses don’t persist on the screen; instead, they only appear on screen while the corresponding grid button is being held down, and they disappear once the grid button is released. I’ve found this to be the most useful approach for me, but if you’d like to create a fork where grid-called lines stay on the screen, I can show you what you’d need to change, just DM me). But basically: yes, you can do this.

7 Likes

The current behavior sounds useful, though the persistent text would be a nice option. I must admit I’ve never delved into changing any code on norns scripts, and though this seems like a totally doable endeavor, I can’t say I’d follow through with it with my limited bandwidth at the moment. But if I do start working on a certain project I’m thinking of, I will most assuredly reach out for your aid. I really appreciate the offer for assistance—not to mention this cool script!

2 Likes

One way would be to start a web server on norns (besides maiden) and connect to it with a browser :nerd_face:

1 Like

ok, it looks like crashes only when softcut reverb is on. thanks!

interesting. What does the crash look like? Specifically, what does norns do? And does any message come up in Maiden when it happens?

1 Like

Ok the problem is caused by crow, it causes Norns to crash, not related to specific script.