Max/MSP Tutorial | A granular synthesiser built with [codebox] in gen~

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

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

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

    Amazing. My own granular attempts are quite primitive when I look at this. I'll have to re-watch this a few more times and get my brain around these new ideas. Huge thanks.

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

      Thanks Matt. Hope it eventually helps you to make some music with it and gives you more confidence with codebox!

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

    very interesting. I would love to see some codebox programming of physical modeling, something other than karplus-strong

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

      Thanks for watching. That's quite a challenging topic, but I will look into it

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

      buraz pa daj neki live coding na sledecem koncertu tapatapatapate :D

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

      @@ilijadjordjevic9087 ne želim prepast djevojke

  •  2 หลายเดือนก่อน

    Thanks for the great tutorial! It's a bummer that the for loop doesn't work, my fix was to make it into an mc.gen~ and set voices to mc_channelcount. Then the first argument for make_grain could be mc_channel-1. For many more voices I also had to increase the max density.

  • @TimShatnyy
    @TimShatnyy 3 หลายเดือนก่อน

    Thank you very much! Amazing and very clear tutorial!

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

    Ty for providing this info. I plan on building it this weekend :)

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

    thanks for the great tutorial, really helpful. wondering if you could share some insight in how to use the in1 on the gen~ instead of the buffer. trying to implement something similar to this in my eurorack system with daisy, but for that i need to use in 1 as the input instead of a buffer. i have a sample going in to in1 and looping and have been trying to change the Buffer smpl ("smpl") to something like smpl = in1; but that obviously didnt work. any tips for a newbie?? thanks!

    • @martypants88
      @martypants88 ปีที่แล้ว

      any idea :))?

    • @martypants88
      @martypants88 11 หลายเดือนก่อน +1

      i got this to work by using poke to write in1 to a data node within gen~ with a counter. also built a little system to trigger the recording when a sound is present at the input. just wondering what to do with this line of code in the codebox: c = counter(p,in1,voices); this in1 should be changed to something eles i think

    • @giorgioalloatti4558
      @giorgioalloatti4558 2 หลายเดือนก่อน

      @@martypants88 hi trying to figure out to do the same thing as i got also a daisy patch could be good to share some infos about

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

    First time looking at genexpr and looks quite an elegant language. I like the way how you can return multiple values and decompose them like you did with pan_left, pan_right.

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

      Ok lol and then 30:44 happened

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

      @@bigmistqke Yep - it has its limitations!! But it is great to be able to incorporate code into your patches so easily. And returning multiple values from a function is really nice. Thanks for watching!

    • @00Dakka
      @00Dakka 2 ปีที่แล้ว

      @@toneparticle btw, you can optimise this by using a for loop with the accumulator inside instead of unrolling the loop

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

      @@00Dakka thanks for this. I don't think it's possible as long as there are latch and delta objects within the loop. I'm going to make a video soon of how I've managed to make a granular Synth with a for loop

  • @_trashcode
    @_trashcode ปีที่แล้ว

    hi. thanks for this amazing video. it helped me a lot. did you ever made the loop work?

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

    Awesome , great tutorial

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

    Thanks for this great tutorial! - I'm new to gen~ but have exp wi other programming - so this is a great help in my learning about GenExpr. I took a look at the loop problem. I got it to work by setting a lower loop number for(i = 0; i < 10; i += 1) {... The strange thing is that the upper limit it will tolerate changes. Yesterday I could only go up to i < 5. Today the limit is higher - I was changing this value gradually, then restarting DSP, and got up to 20 voices. Then later it wouldn't go above 10... I speculate that it is some problem with internal to Max. It would be good to post this in the cycling74 Gen forum. I'm so new to gen I'm hesitant as I may be missing something. Your thoughts on this would be appreciated. The loop problem is definitely worth solving -- cut & pasting those code blocks is really ugly! I'm already building on this with a function to allow for different windowing options for amp. The Hann window is great, but with granular I find that interesting results can come from different amp envelopes. Would love to communicate more on this.
    I also found that the pitch spread Param didn't work quite as I expected. When I set it to 0, I don't get any audio output, and as I increase from 0 - .01 it seems that the output amplitude is rising as the sound starts to become audible. I hear nothing at 0. So when I'm testing the loop, I had to make sure that spread was not 0.

  • @WeztMAADmusic
    @WeztMAADmusic หลายเดือนก่อน +2

    What command or menu you use for create the Density element in 6:25 ? and what is his name?? Thank you!

    • @ThomasOwens-t2f
      @ThomasOwens-t2f 12 วันที่ผ่านมา

      I need this... did you find out what it is called?

    • @ThomasOwens-t2f
      @ThomasOwens-t2f 12 วันที่ผ่านมา

      Oh press 'A' as a command lol

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

    This was great! Have you gotten it working with for loops yet? That's the part of Gen~ that I'm most curious about, as I haven't really had experience with that sort of code as it applies to sound.

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

      I have indeed. I'll do another shorter tutorial soon

  • @massimilianomascaro
    @massimilianomascaro ปีที่แล้ว

    thanks a lot

  • @damienpascoe8025
    @damienpascoe8025 ปีที่แล้ว

    this tutorial is epic..
    next step, learn how to export to raspberry pi devices. so much more fun making your own synths

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

    great! thx!

  • @christdolphin69
    @christdolphin69 ปีที่แล้ว

    how would you use that buffer~ smpl in rnbo? everything else seems to be pretty easy to migrate over
    this rules, by the way. thanks for sharing

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

      Thanks. I've migrated a more complicated version of this over to RNBO and I swear there's a bug with the buffer referencing. The only way round for me was to only have a buffer reference in the max patch outside and the gen~ patch inside the RNBO

    • @christdolphin69
      @christdolphin69 ปีที่แล้ว

      @@toneparticle can i see that anywhere? im trying to incorporate a good granular sampler into a react project for class and it needs to be rnbo.
      thanks for the tip, i'm just very weak with max in general

  • @martypants88
    @martypants88 11 หลายเดือนก่อน

    anyone else get a lot of clicks when increasing the spray param? any good way to smooth that out ideas??

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

    Very nice.
    However mine seems to play back at a lot higher pitch. When loading a sound with a constant pitch into the buffer and just playing the buffer back using a play~ object the granular is wayyyy higher. Any thoughts?
    I have checked the code to the best of my ability, but I can't see anything wrong.

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

      Thanks for watching and following along. Feel free to send me your code via my website and I'll take a look

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

      just tested mine. no difference unless the sample was recorded at a different sample rate to what i'm using on max

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

    How did you learn this ? :)

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

      by looking at the code tab in normal gen~ patches, trial + error and the occasional "eureka" moment in the shower