All good now, it is singing away nicely.

1 Like

Thank you for this, its awesome. BTW the link on the github for the documentation page is wrong - its Unauthorized | norns community and it should be glaciers | norns community

1 Like

Thanks - I’ve fixed that. Looks like I was linking to the page editor :sweat_smile:

1 Like

Is the latest update on maiden? I don’t seem to have a buffer page, but maiden shows that my version is up to date.

Edit: nvm, I didn’t realize I have to hold k1

Would it be possible to implement a simple ā€œpositionā€ indicator on each of the four sample pages to show how far you are into the sample playback? Maybe even waveform display and a little bar across the top?

Also …

Would it be possible to implement a course/fine tuning parameter?

1 Like

Definitely possible to do both of those things, it’s just a matter of what makes sense in terms of the script. I kinda like the fact that the position is a bit mysterious at the moment, but also can appreciate why you would want to know where it is.

In terms of a tuning parameter, are you referring to the tuning of the original sample or the harmonics?

2 Likes

Understood about the ā€œmysteryā€ aspect of not knowing the position. I’ve had some entertaining anticipation waiting for some percussive drops.

I’d lust like the stretched samples to be tunable to fit into the context of another piece … pushing the pitch up or down in steps or fine increments.

I’m really enjoying the script!

I do occasionally get some snapping/popping possibly due to CPU load.

1 Like

Cool, that makes sense.

I still do need to do some optimisation, it’s definitely pushing against limits at the moment. Is there any time in particular that you notice clicks (e.g. when changing files, when using longer files, etc)?

I’m mostly using short 5-8 second long files. It’s happened with 3-4 samples being stretched. It may be happening at longer (more than 10) stretching. It also happens with or without the main reverb engaged. SSH into the Norns and use htop to monitor performance and I think you’ll see CPU spikes that coincide with the pops.

1 Like

I’m a huge fan of a bit of mystery, and of course balancing with being musical (or rather: sonic) instrument to interact with.

I tried to sketch, after spending some time looking at glaciers on Google Earth, some ideas to remove numbers from the UI and replace them with more ā€œglacialā€ visuals but didn’t come up with anything splendid yet. For stretch i was imagining a movement of a massive thing over a stable even more massive thing. For the voices, i was just imagining a photo of a different real glacier, maybe as background image…

I am not sure what counts as a glacier scientifically, but I have been to what i naĆÆvely consider to be glaciers, jiehkki and jĆøkel (for me, jƤƤtikkƶ) in Lapland. Where i grew up there are no glaciers nearby but the iceages shaped the geography so that you can clearly see how glacier is a moving thing: loads of long lakes pointing in the same direction, and huge rocks siirtolohkare in places where you wouldn’t expect to find a rock, e.g. on top of a hill. Marks of giants now long gone.

Jaron Lanier, one of these early Virtual Reality imaginaries and developers, musician and also a vocal critic of the internet we have (rather than the internet we could have), said that his ideas for early VR was to become a piano or a mountain range. Norns can be that, in the sonic sphere.

8 Likes

What is the likelihood of record start/save being map-able to a midi note(s)?
I’m using a midi controller for all other aspects of the script, I would love to not have to touch my norns at all. Also, thank you for the time and effort you have put into this script! :raised_hands:

6 Likes

I’m immediately loving this app. Stretching is a big tool for me and I love the panning options. Thank you!

1 Like

The continuing discussion around this scrip, namely how new features may add functionality at the cost of the original scripts character and artistic quirks, makes me think of all the different granular scripts in the Norns library. A solution that makes sense to me is for other people to make other scripts implementing their idea of how Paul Stretch should be implemented in the Norns environment.

1 Like

This is really wonderful, thank you for putting it together. I am having a ball with it.

Question: what is the intended behavior with non-integer values of the stretch parameter?

In playing around with low values of stretch, I discovered that (by ear) there seems to be a very sharp difference in sound between 1.97 and 2.03. In fact, it sounds like only integer values of stretch are respected, and N.xy always produces an N-fold stretch, even if it is close to (N+1).

If I’m hearing correctly, is this the intended behavior?

I don’t think it’s like a problem to only use integer stretch values, if that is the intended behavior (normally the values will be so large that you won’t notice anyway). But it did catch me off guard, possibly because the presentation of decimal values in the UI suggests they might affect the sound.

I love this idea!

This is totally doable and makes sense. The recording feature uses softcut so the code should be similar to other scripts that already have this functionality.

This makes a lot of sense to me too. I was thinking of creating a lua lib alongside the engine to make interacting with it a bit easier, similar to glut, timber, etc. That way others can use the engine without necessarily having to know supercollider.

Initially I intended it to only be integer values. However the nature of the params curve that I’m using means that non integer values are introduced at the lower range. You’re completely right though, currently what you’re hearing is the jump from 1 to 2, with the fractional part being ignored.

I’ll fix the engine to accept floats instead of integers and that should make those low values a bit more interesting to play with. EDIT: I’ve pushed a fix for this.

6 Likes

I was thinking a bit more about this, and I’m not sure yet how this will fit into my existing implementation of the script, with the different ways that I’m managing state, and my use of params for midi mapping functionality.

However, if you were keen, it wouldn’t be too difficult to implement your own mapping to some of my state functions for your own workflow.

Currently there are four different functions that control the buffer state:

record_input() - call this for "record start"
save_recording() - call this for "record stop"
clear_buffer()
load_file()

There is a really great study on using midi with the norns in the monome docs: monome/docs | monome docs

You could do something like this:

m = midi.connect()

m.event = function(data)
  local d = midi.to_msg(data)

  if d.type == "note_on" then
    if d.note == 60 then
      record_input()
    elseif d.note == 62 then
      save_recording()
    end
  end
end

(this code is untested)

60 and 62 represent C4 (middle C) and D4 - you can swap out these numbers for anything you like. https://www.inspiredacoustics.com/en/MIDI_note_numbers_and_center_frequencies

Note that this will start and stop recording for currently active voice. You can change the voice by changing the value - e.g. voice = 2

Let me know if you get stuck - happy to help.

4 Likes

Kudos to @dwtong, I really like Glaciers and its inviting simplicity. Right upon the initial release in May I loaded up the first samples I came across (lowest possible effort really). Although being faintly familiar with PaulXStretch I was taken aback by some downright distressing textures that emerged within the first few minutes of dabbling. I listened for a long while, leaving it at that.
However, after weeks of being haunted by those chanting children and illusory strings I had to revisit the sketch, make some edits and, importantly, add a video to conclude.

7 Likes

Beautiful and haunting, thanks for sharing!

1 Like

Hi there,

I have been on a mission to make a ā€œall hardwareā€ (well non laptop) super slow-downer toolkit within my own live looping project…

My own (hacky) version of this involved capturing a live loop and then re recording it to other loopers and effects with octave shifts/reverse/loads of reverb etc… it was a fun idea to explore but never quite got me that original ( paulstretch) sound I wanted.

So, upon finding this tool ( and being literally one day into trying to understand LUA) my mind is racing…

Now that you have added Live recording, is there any thoughts towards extending this utility towards having that recording instantly loop ?

Beyond that idea… what about leaving the recording buffer open to add even more notes to the recording whilst the playheads are doing their thing making different harmonic versions of that loop?

beyond THAT - how about haveing ā€œfeedbackā€ in this overdub idea so that the amount of time the audio can be played before being removed can be varied between 1 ( just building no decay) and 0 ( only plays back once befor ebeing removed)

I can think of many ways that I would LOVE to play a simple (eno esque) piano line into a loop that would itself be getting slowed down to minutes/hours/days of changes :slight_smile:

anyway, just some thoughts , but what a wonderful app this is already :slight_smile:

8 Likes