Using multiple Synths in a Seq (new Syntax) – nesting sound-properties possible?

Home Forums Gibber Using multiple Synths in a Seq (new Syntax) – nesting sound-properties possible?

Tagged: 

This topic contains 1 reply, has 2 voices, and was last updated by  admin 10 months, 2 weeks ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • June 26, 2012 at 1:27 pm #356

    panca
    Subscriber

    Hi,

    I just started realizing that the capability to use multiple Synths/Slaves for one Seq/Instrument opens a lot of possibilities. Something we tried in the past to achieve reasonable percussive brass-sounds was to mix a short, noisy synth with a sharp attack with a synth, that carries on the actual brass-sound.

    attack = Synth({ frequency : 220, attack : 1, decay : 50, amp : 0.05, waveShape : "pulse" })
    sound = Synth({ frequency : 220, attack : 30, decay : 300, amp : 0.1, waveShape : "sine"});
    

    We can put them together in a Sequencer and they combine nicely without additional requirements:

    q = Seq({ note : [440,480], durations : [_4], amp : [0.1], slaves : { attack, sound } })
    

    This is lovely! But as so often, once a door is open, one suddenly feels the need for something new ;) . So my question is: Can I control the properties of each of these multiple synths separatly? The new Syntax allows to specify frequency, attack, waveShape etc. for each note-event – but what if we have several synths? Can we do something like:

    Seq([ note : [ [1stfreqX,freqY,freqZ],[2ndfreqX,freqY,freqZ],[3rdstfreqX,freqY,freqZ] ], attack : [ [1stattackX,attackY,attackZ],[2ndattackX,attackY,attackZ],[3rdattackX,attackY,attackZ] ], slaves : [x,y,z] ]);
    

    I would like to create sounds that mix the noise-attack with potentially several Synths, where each have their own attack, decay… I guess that would be too expensive for now, but I am very curios whether there is a way to that within the new system, I tried various forms of nested array, but it didn’t seem to work ;)

    Best
    .p.

    July 11, 2012 at 5:00 am #372

    admin
    Key Master

    Somehow I just saw this post now. And, as it happens, I just wrote an email to a friend attempting to solving a similar problem. Here it is:

    Having a tuning for individual voices would be nice. I’ll look into it. In the meantime, you can use chord instead of note so that you at least only need one sequencer:

    s = Synth( {maxVoices:2} );
    
    offset = 1.2;
    
    t = Seq({
    	chord:[ [[440, 440 + offset]], [[880, 880 + offset]], [[660, 660 + offset]] ],
    	durations: [_1],
    	slaves: s,
    });
    
    

    Err… the notation for that is a little weird, but the arrays in chord have to be double wrapped because of the way Seq works. You could do something like this to make it easier to write (and extend to do fancier things with the offsets):

    window.makeDetunedNotes = function(notesArray, numberOfVoices, frequencyOffset) {
       var result = [];
       for (var i = 0; i < notesArray.length; i++) {
           var note = notesArray[i];
           var chord = [ [] ];
    
           for (var j = 0; j < numberOfVoices; j++) {
               chord[0].push(note + j * frequencyOffset);
           }
           result.push(chord);
       }
    
       return result;
    }
    
    s = Synth( {maxVoices:10} );
    
    t = Seq({
    	chord: makeDetunedNotes([440, 880, 660, 550], s.maxVoices, 1),
    	durations: [_1],
    	slaves: s,
    });
    
    
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.

This work is licensed under GPL - 2009 | Powered by Wordpress using a heavily modified version of the theme aav1