SuperCollider Live Stream 2017.07.26 TempoClock, Patterns, Sounds

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 ธ.ค. 2024

ความคิดเห็น • 14

  • @SoundEngraver
    @SoundEngraver 7 ปีที่แล้ว +4

    Eli, thanks. You're giving me great ideas for live performance. Like your input at the end on blending tonality with more experimental stuff to make it unexpected. Loved my education, but there were those who vehemently opposed tonality. I believe there's always room for that in experimentation. Your music is refreshing. Keep up the awesome work.

  • @seanwalker2555
    @seanwalker2555 6 ปีที่แล้ว

    cool sounds

  • @violatoad
    @violatoad 2 ปีที่แล้ว

    Hi, Eli, thanks for all your helpful videos. One thing I've been stuck on is making a TempoClock do a continuous acceleration or deceleration. It seemed reasonable to use VarLag or Line in combination with t.tempo_ but the TempoClock seems to only respond to specific values. Do you know of a way to do this so the user can have dynamic control of acceleration/deceleration of the tempo in real time?

    • @elifieldsteel
      @elifieldsteel  2 ปีที่แล้ว +2

      Yep. This is actually pretty easy, and you don't have to mess around with UGens at all. TempoClock is language-side, so UGens will just make things more complicated. All you have to do is schedule a repeating function on the TempoClock. The function should perform a conditional check to see if the current tempo is at the desired value, and if not, adjust the tempo by some increment. Here's a simple accelerando from 90 to 180 bpm:
      (
      ~bpm = 90;
      ~target = 180;
      t = TempoClock(~bpm/60);
      t.schedAbs(0, {t.beats.postln; 1}); // post every beat for visual aid
      )
      (
      ~tempoChangeFn = {
      if( t.tempo < (~target/60)) { // if not there yet,
      ~bpm = ~bpm + 5; // increment tempo and update clock
      t.tempo_(~bpm/60);
      ("tempo is: " ++ ~bpm).postln;
      1; // do this on every beat
      } {
      t.tempo_(~bpm/60); // otherwise, just set tempo as target tempo
      ("tempo is: " ++ ~bpm).postln;
      nil; // and unschedule this funcntion
      };
      }
      )
      t.schedAbs(t.nextBar, { ~tempoChangeFn.value; }); // execute tempo change starting next bar

    • @violatoad
      @violatoad 2 ปีที่แล้ว

      @@elifieldsteel wow, thank you so much! I really appreciate you taking the time to share this. I've learned so much from your tutorials and classes. Wishing you the best!

  • @SoundEngraver
    @SoundEngraver 7 ปีที่แล้ว

    Hi, Eli. I'm trying to incorporate more silence in my rhythmic patterns. I see from the Help file that you can use \type for rests, and I see you did this for your \beepSwitch instrument (6:48):
    \type, Prand([
    ote,
    est], inf),
    Are
    ote and
    est equally distributed in this case? I definitely hear space between my sounds with this example but would like to understand the score a little better. Thank you!

    • @elifieldsteel
      @elifieldsteel  7 ปีที่แล้ว

      With Prand and two items in the Array, think of it as a coin flip. Approximately half of the time, it'll be a note event, and half rest events.
      Note that you can also put symbols into any frequency pattern (freq, midinote, note, degree) and the corresponding event will become a rest-type event. Your timing is good -- I actually covered this just yesterday in the Week 13 live stream.

    • @SoundEngraver
      @SoundEngraver 7 ปีที่แล้ว

      Thanks, Eli! I noticed your recent upload today. I'm glad you're covering this in detail.

  • @octaviogaspar2704
    @octaviogaspar2704 7 ปีที่แล้ว

    Awesome : ) Thank you !

  • @seanwalker2555
    @seanwalker2555 6 ปีที่แล้ว

    nice sub bass

  • @mkutuber
    @mkutuber 7 ปีที่แล้ว

    Eli, Great stuff. Thanks for all the ideas. I am learning a lot from your videos. I pulled your code from the Github site and for some reason when compiling, it fails on the makeBufDict entry. I am using SC 3.8.0. Is this new in 3.9dev or is it available someplace else? I was able to workaround this using add.entries.collect, but makeBufDict is cleaner. Your thoughts would be appreciated. Keep the videos coming! They are very helpful.

    • @elifieldsteel
      @elifieldsteel  7 ปีที่แล้ว +1

      makeBufDict is an extension to PathName that I created. It's available as a gist: gist.github.com/elifieldsteel/396cd1326d3c981ba1fd2a3c47d90ea3

    • @mkutuber
      @mkutuber 7 ปีที่แล้ว

      Thanks for this Eli. For others, I put the code in a myMethods.sc file and under Linux, stored it in a '~/.local/share/SuperCollider/Extensions/' folder, reboot SuperCollider and it worked like a champ.

  • @irissaladino6788
    @irissaladino6788 7 ปีที่แล้ว

    ^_^ so awsome!!! thnx!!!