Sines

this looks like just the thing i need. thank you. i’ll try and refactor using this at the weekend.

3 Likes

@zebra trying out a modifed zsin engine you posted, and i think i’ve removed those errors i was experincing. great!

what would you suggest to implement a basic looping AD envelope?

Using amp_ = LagUD.ar(K2A.ar(amp), amp_atk, amp_rel); from your engine doesn’t see to work, but maybe I don’t understand what it is really doing. changing amp_atk and amp_rel from the lua doesn’t affect the volume of the envelope…

edit:

amp_ = EnvGen.ar(Env.circle([0, 1, 0], [amp_atk, amp_rel, 0.001]), levelBias: 0.0); seems ok.

2 Likes

No more dead voices for me, mapping of vol and fm index works…although fm only works when I am not on the first page of the script… I haven’t tried the envelopes yet.
LOVELY. Thanks so much!

2 Likes

Trying to reproduce midi errors that @doomglue is seeing. Not having any luck. I think I’ve squashed the bad sc development errors described upthread (thanks @zebra).

Anyone care to update and test out midi mapping?

To explain: everything works, however mapped fm control does not work when I am on the first page of the script. No fm changes can be heard. While being on other pages such as the midi map page etc it works fine and has an effect.

Matron output from 1st page when I turn the midi encoder mapped to fm ind1:
lua:

Summary

/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua: /home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>
lua:
/home/we/norns/lua/lib/musicutil.lua:345: attempt to perform arithmetic on a nil value (local ‘note_num’)
stack traceback:
/home/we/norns/lua/lib/musicutil.lua:345: in function ‘musicutil.note_num_to_name’
/home/we/dust/code/sines/sines.lua:257: in function ‘redraw’
/home/we/dust/code/sines/sines.lua:134: in field ‘event’
/home/we/norns/lua/core/midi.lua:409: in function </home/we/norns/lua/core/midi.lua:399>

1 Like

Hi,

tried the latest version of Sines. Using the default midi mappgings (starting with 32) I can select the sines but not adjust the volume, it stays at 0. I checked with the Midi Monitor and my controler mapping is ok.

I also am not clear about how to midi map the fm_index controls. If voice volumes go from 32 to 47 do the fm_index controls start with 48 (and go up to 64)?

Ah, and before I forget: All sines sound (using the encoder controls); so thanks a lot for the fix!

1 Like

Cool. Need to sort the midi mapping obviously :confused:

Will dig in tonight.

1 Like

OK, I’ve pushed a change to fix the silly midi mapping errors.

The script is now totally decoupled from hard-coded 16n cc numbers. Existing saved psets will continue to work, but if you want to use a controller with this script, you will have to set up mappings in the norns map page. You should only have to do the midi mapping once - the last saved pset is automatically loaded on start.

Still working on this, more tweaks to come. Thanks @doomglue for helping me debug.

9 Likes

Everything works as expected. Many thanks for your work!

2 Likes

Yup, all great here as well!

Made a few slight changes and I think this works well now. Midi map for important parameters. Install from Norns project manager.

6 Likes

Really enjoying Sines, thanks for sharing. Very relaxing to play and stare out the window at winter right now.

10 Likes

super fun! I tried to get some of the frequency ratio to index values into a harsh realm but I think it’s the envelopes that keep it smooth. It could be cool to put in arc support for some of the envelopes. :thinking:

3 Likes

wow. im finally getting the shot to mess with this script a bit and im in love. its really beautiful and inspiring, thanks so much for it. thoughts that come to mind are things like “oh, i’d really love to be able to add some sort of drift modulation to certain parameters based on threshold” or “would be cool if i could change the bpm in order to have slower pulse envelopes (didnt seem to be able to change the clock speed in >param>edit>clock)”

but all around, a very beautiful instrument you have created! love the simplicity of the interface too.

1 Like

I won’t be able to do this, sorry. I don’t have an arc to test with… that’s not to say someone else couldn’t do this and PR? or maybe a fork?

2 Likes

Yes I think the next version should have some kind of global LFO/animation system. BTW - the current envelopes have no relation to the global clock. They are simply looping envelopes.

I’ve created a develop branch. Will start working on some of this stuff in the new year.

8 Likes

I could only help with testing it. Arc/grid is here.
However, some kind of LFO bank would be cool, not sure if it would overload the script, but this cc lfo by @Markeats is really cool.
Other ideas: bitcrush/decimation sounds great on simple waveforms, also a combo script with @Justmat’s otis (see oats) could be great but I am unsure if this would mean running two engines which I am unsure if that is possible.
I think the script is supercool as it is already.

2 Likes

sold.

thank you for this btw. very cool

*edit: why couldn’t they make the digitone do this? that would be so dope to have this on a synth like that. it’s like the operator from ableton. its genius

2 Likes

I have this week off the day job. I’ll give this a try.

3 Likes

There is a sample/bit rate reduction update on the develop branch if anyone wants to test it out. You’ll need to git checkout develop on Norns over ssh. You won’t be able to get this from maiden just yet.

6 Likes