BWAudioProgramming
BWAudioProgramming
  • 16
  • 10 275
Max/MSP Polyphonic FM Synth Tutorial Part 3: Final Features and Designing the Interface
This is the concluding video of my polyphonic FM Synth Tutorial series for Max/MSP.This final part covers the addition of a pitch-bend wheel, as well as an optional stereo effect done with Haas effect. It ends by covering how to design and organize the interface.
*This is also the first of my videos to have background music so let me know if you liked or disliked that addition
0:00 Intro
1:07 Adding Pitch-Bend
6:03 Stereo Haas Effect in Gen
11:34 MISTAKE! Should have done ( * 1000. ) with the period
11:57 Designing the Interface
16:29 Final Result/Test
17:00 Quick Spectroscope Fix
18:20 Outro
Переглядів: 903

Відео

Max/MSP Polyphonic FM Synthesizer Demo Part 2: Polyphony with mc. objects
Переглядів 2 тис.Рік тому
This video is part 2 in a three part series on creating a polyphonic FM synthesizer in Max/MSP. The previous video dealt with creating the FM parameters and basic MIDI control for a monophonic synth. This tutorial expands on that by adding support for polyphony by using mc.objects in conjunction with the noteallocator~ object and mc.target. The third part in this series will added the final ste...
Max/MSP Polyphonic FM Synthesizer Part 1
Переглядів 4,4 тис.Рік тому
This video is the first part in my tutorial on making an Polyphonic FM synthesizer. This part will focus on creating the FM structure, and describing the principles of FM. It also includes how to receive MIDI input from an external device to control the parameters monophonically. Part 2 will go into how to extend this structure to create a complete polyphonic synthesizer. 0:00 Intro/Overview 2:...
Building an Interpolating Wavetable Oscillator in Max/MSP
Переглядів 1,1 тис.Рік тому
Hello! This video is a tutorial on how to make a wavetable oscillator in Max/MSP. The end result will be a simple oscillator that allows you to draw 2 waveforms and use a slider to interpolate between them, creating a new waveform. I start off by building a simple wavetable oscillator using the buffer~ and wave~ objects, and then expand on that to include an interpolating algorithm to mix betwe...
Max/MSP/Jitter Audio-Visual Piece: Convolved Spaces
Переглядів 93Рік тому
This is a recording of a generative audio visual system I created with Max/MSP's Jitter system. All of the visual elements were made with jitter, I then incorporated one of my previous compositions as the audio element within the piece. The visuals react, generatively, to the audio in the system.
Building an Additive Oscillator in Max/MSP
Переглядів 1,2 тис.Рік тому
In this video, I go through how to build an additive oscillator in Max/MSP, specifically with the mc.gen~ tool. I wanted to share this patch because I thought it was a very elegant solution to an additive oscillator and is a very nice way to play around with additive synthesis. It is also useful for anyone who wants a simple additive oscillator with a GUI slider for easily controlling harmonic ...
Granular Processor in C Demo
Переглядів 28Рік тому
Hello Viewers! This video was made to highlight my Granular processor project written in the C coding language. I started this project in an audio programming class I took in college, and have been making slight changes to improve the usability of it. This demo quickly highlights the 4 main parameters available, and how those changes alter the sound. If interested, you can download this plugin ...
Sample Sequencer Promotional Video
Переглядів 80Рік тому
This is a promotional video to highlight my Max4Live device, the "Sample Sequencer". If you're interested in trying this plugin out yourself, you can find it on my GitHub.
Polygone - Audio/Visual Performance
Переглядів 57Рік тому
Hi. I made some audio, and some visual. I put them together to make this. Enjoy
Ben Ward Berklee EPD Final Project
Переглядів 148Рік тому
I am Ben Ward I study EPD at Berklee This is my final project video
EP-491 Final Showcase Video
Переглядів 48Рік тому
This video was made for the final EPD department showcase presentation. It features the "Dynamic Convolution" plugin I made; along with a demonstration, and an excerpt from my composition "Aubade".
All I Do Is Day Dream - Live Performance
Переглядів 70Рік тому
Live performance of All I Do is Day Dream's IDYLL, PillowFort, and Oasis, featuring Nathan Rantala, Tristan Harrison, Donovan Millner, and Ben Ward.
Aubade - Ben Ward - Electronic Performance
Переглядів 37Рік тому
I am Ben Ward This is a piece called Aubade This is my electronic performance of that piece using the Qu-bit Nebulae module, the Behringer Arp 2600, and my own custom convolution plugin being controlled with the MPK 225.
Sonification of MBTA
Переглядів 303 роки тому
Sonification of MBTA
Delecleuse Solo #1
Переглядів 204 роки тому
This is video of me playing Delecleuse's Snare solo #1.
Snap Crackle Drum Solo
Переглядів 934 роки тому
Snap Crackle Drum Solo

КОМЕНТАРІ

  • @hocheulpark4948
    @hocheulpark4948 Місяць тому

    hello I am trying to make patch from your video clip. but my max msp shows mc.mixdown~ chans is not a valid attrubutes. I am using version 8. please let me know. thanks

    • @benjaminward9042
      @benjaminward9042 Місяць тому

      Are you using the @ symbol before writing "chans"? The "chans" attribute should be a valid attribute for any mc. object. You need the @ symbol to specify that you are talking about an attribute, and not an object argument. You could also change the output channels in the inspector for the object instead of setting it directly on the object itself. Hopefully that helps.

  • @yveslaporte5808
    @yveslaporte5808 Місяць тому

    I would like to know how to add operators, DX7 has 6 and I figure max has got infinite...

  • @exerhlp
    @exerhlp 2 місяці тому

    Have you tried interpolating that with pattrstore and assigning some dynamic interpolation factor?

    • @benjaminward9042
      @benjaminward9042 2 місяці тому

      I've done pattrstore interpolation before, but not with this patch specifically. I feel like pattrstorage would be unnecessary for this since it already interpolates and there is only 3 parameters, but in a larger project it could probably be useful. Although I'm not sure what you mean by "dynamic" interpolation factor. If you end up incorporating that somehow I'd love to see what you come up with!

  • @LostandMeandering
    @LostandMeandering 2 місяці тому

    This is great tutorial, thanks for taking the time to do this. I do have a question though....how do I connect the synth to a sequencer in max itself? (Im a newbie to max so sorry if this is a dumb question)

    • @benjaminward9042
      @benjaminward9042 2 місяці тому

      Thank you! and no worries, if you want to connect a sequencer, it really depends on what you want the sequencer to control. It could connect to and modulate any of the parameters of the synth (modulator frequency, ratios, filter, etc). However, I assume you want it to sequence pitched notes, in which case you will want to modulate the carrier frequency. That is the dominant frequency in FM and will determine what pitched is perceived. To do that, you could either plugin directly to carrier inlet of the gen device, or an easier way would be to use the already setup MIDI note allocator function and send MIDI notes into that. Basically, replace the virtual MIDI keyboard with your sequencer, and send notes into the left inlet of the [pack i i], and velocities in the right inlet. However, since this is polyphonic, it might be trickier if you want polyphonic sequencing, but it should work easily as a monophonic sequencer. Also, since you're new, I would highly recommend working through the Max tutorials, there is a lot of good information in there and should be a few topics on sequencing. Hopefully that helps!

    • @LostandMeandering
      @LostandMeandering 2 місяці тому

      @@benjaminward9042 Great, thanks for the prompt reply. All working, thanks for your help (as for the Max tutorials, it's easier for me to follow. video tutorial as I have ADHD and written interactions can be difficult for me to understand)

    • @benjaminward9042
      @benjaminward9042 2 місяці тому

      @@LostandMeandering Ahh I understand, well I'm glad the videos helped and you got it working. Happy patching!

    • @LostandMeandering
      @LostandMeandering 2 місяці тому

      @@benjaminward9042 I have a further question if I may, please. I am making a patch and added two of the myths. The ADSR envelope behaved strangely on the second sytth. The notes were coming through from the sequencer, but the envelope was only putting out the odd truncated note. I tried a few times, but whichever synth I added second had the problemAny ideas? (BTW, I didnt use a send/receive for the. ADSR, I used a cable).

    • @benjaminward9042
      @benjaminward9042 2 місяці тому

      @@LostandMeandering Hmm, not sure. It's hard to tell exactly without seeing your patch. You would need two independent ADSRs for each synth so I would make sure you aren't using a single ADSR for both and they each have independent paths. Otherwise it may have something to do with the timing of the ADSR. Maybe the release time is too long? That could interfere with the next trigger for the ADSR, although I don't know why this would cause it to work with one but not the other. Using a cable instead shouldn't be an issue.

  • @eddiebreitweiser6173
    @eddiebreitweiser6173 2 місяці тому

    Fun project - cool idea, and slick execution :)

  • @dendriloquist
    @dendriloquist 4 місяці тому

    brilliant

  • @t_k_tokyo
    @t_k_tokyo 5 місяців тому

    Really great lecture! Shows how FM synthesizers work and the basics of patching.

    • @benjaminward9042
      @benjaminward9042 5 місяців тому

      Thank you! Glad to hear you found it helpful.

  • @axersfall369
    @axersfall369 5 місяців тому

    But I still prefer mc.targetlist @listmode 1 @chans 32 when you do the multislider process.maybe you should check that one out.if you want some "fade-in,fade-out" on your harmonics,mc.slide~ also a good object.

    • @benjaminward9042
      @benjaminward9042 5 місяців тому

      Oh interesting. I haven't used that before but I'll definitely try it out. Already sounds cleaner than my method. Thanks for the tip!

  • @gabrielestrada6165
    @gabrielestrada6165 5 місяців тому

    great series! It's been super helpful, especially the modular frequency and polyphonic bits overall!

    • @benjaminward9042
      @benjaminward9042 5 місяців тому

      Thank you! Glad to hear you're finding it useful.

  • @runner0075
    @runner0075 7 місяців тому

    cool stuff. no background music please...

    • @benjaminward9042
      @benjaminward9042 7 місяців тому

      Thanks! Ya, I was unsure if people would like it or not so your feedback is very appreciated. Will remove from future videos. 👍🏻

    • @priyome
      @priyome 6 місяців тому

      @@benjaminward9042 great tutorial and agreed about the bg music... would be very curious to see a tutorial for implementing more operators and different fm algorithms/topology. thanks!!

  • @alte7062
    @alte7062 8 місяців тому

    at 2:23 when i added the multiplier [*~] to control the amplitude of the output wave, the signal stopped coming through. im still following the rest of the tutorial and the signal isnt there unless i remove the multiplier [*~] I have tried initiating by moving other nobs and clicking the wave type buttons.

    • @benjaminward9042
      @benjaminward9042 8 місяців тому

      That's because we are not multiplying the signal by any value once we send it into the *~ object. We will only get signal out of the *~ object when we multiplying it by a non--zero value or signal, which will come from the adsr~ and be triggered by our MIDI device. If you want to continuously hear the input signal from that object, you can multiply it by 1, although then this has no effect. Hopefully that helps.

    • @melanialofaro4717
      @melanialofaro4717 5 місяців тому

      hey, i got the same problem. did you find any solution?

  • @alte7062
    @alte7062 8 місяців тому

    hey, how do i use the elektron model: cycles as the midi device? I have selected it as the midi device under 'midiin' object, however the message box doesn't receive information from it (its note, or freq)

    • @benjaminward9042
      @benjaminward9042 8 місяців тому

      Sounds like it might be an issue with how elektron cycles sends midi data out. I've used other elektron devices like the analog four and for that you have to go in and program how midi data is sent out since there are a few different ways of sending midi with devices like that (live midi, pattern playback). The first thing I would do is make sure you're getting midi to your computer in any way from the elektron cycles at all. I use a free program called Midi Monitor which is really quick to ensure your getting data, but you can test with other softwares. If you are getting data in other programs except for Max, then I would double check the channel settings for both the elektron cycles, and within the Max settings. Hopefully that helps!

  • @annapolinari8584
    @annapolinari8584 8 місяців тому

    Great tutorial! However if I turn the sustain dial on there's still a c note playing by itself no matter what I play on my midi keyboard. If I turn the sustain off then the synth works as it should, except that of course the notes I play stop at some point even if I'm still pressing the key on the midi controller. How can I resolve this? How can I stop the C note going on even if I'm not pressing anything?

    • @benjaminward9042
      @benjaminward9042 8 місяців тому

      Thank you! It's hard to say what exactly the issue is without looking at your patch, but If you're sure that you've made all the right connections, then it could just be a glitch with one of the "mc" objects, specifically mc.adsr~. That's happened to me before and someone else reached out with a similar issue like that so I would try deleting and re-instantiating that object. If that doesn't work try re-instantiating some other mc objects within the chain. Let me know if that works!

  • @gregross4384
    @gregross4384 8 місяців тому

    Very cool, do you have a link to your GitHub? I didn’t see one anywhere.

    • @benjaminward9042
      @benjaminward9042 6 місяців тому

      No I don't, but that's definitely something I should put on there. I just updated my profile so it should be there now, but here's a link to it anyway github.com/Bohr33

    • @gregross4384
      @gregross4384 6 місяців тому

      Cool thanks

  • @Soy.wawawa
    @Soy.wawawa 8 місяців тому

    Finally a video of Max MSP that explains in a way that my pea brain can understand! Thank you so much

  • @curse2913
    @curse2913 9 місяців тому

    Thank you for saving me this really helped especially the polyphonic bit 🔥🔥🔥

  • @namyyyv
    @namyyyv 9 місяців тому

    My mc.adsr block doesn't work 😢 My sound disappeare going through mc.*~ ; I think adsr = 0 and it multiple my signal to 0. But if my sound goes straight to mc.mixdown from mc.selector~ 4 everything goes correctly... But adsr doesn't work 😢

    • @benjaminward9042
      @benjaminward9042 9 місяців тому

      Hmm, it sounds like it must be an issue with the value sending the setvalue on/off messages. If using mc.adsr, it should be receiving a setvalue message with the channel to trigger, and an on value of “1”. Test sending just a message of “1” to see if the ADSR at least creates output. If it does then it must be an issue with the setvalue messages triggering the ADSR. Double check the last portion of the video which is all about setting mc.adsr. Also, make make sure at the end you send the adsr multichannel signal back into note allocater. That is needed to make sure the release works. Hopefully that helps👍🏻

  • @marzbitenhaussen
    @marzbitenhaussen 9 місяців тому

    when I type setvaue max says: "no such object" sorry learning level here

    • @benjaminward9042
      @benjaminward9042 9 місяців тому

      No worries! That would be because “setvalue” is not an object but a message. It should be placed in a message box (probably with a $1 so incoming values replace that value). Another option would be to use the “prepend” object with argument “setvalue”. That would put the message “setvalue” in front of the incoming values. I don’t remember the exact context I used it in this video, but hopefully that helps.

    • @marzbitenhaussen
      @marzbitenhaussen 9 місяців тому

      thank you

  • @marzbitenhaussen
    @marzbitenhaussen 9 місяців тому

    beautiful

  • @Ibbys_space
    @Ibbys_space 10 місяців тому

    seeing this made in 2024 is awesome <3

  • @midierror
    @midierror 11 місяців тому

    Great tutorial! Thanks

  • @mattkaz9604
    @mattkaz9604 11 місяців тому

    Very good. The only suggestion I'd have is to scale the phasor you use for the saw - a phasor goes from 0-1, so you need to scale it to go form -1 to 1 or it isn't centred around the middle.

    • @benjaminward9042
      @benjaminward9042 8 місяців тому

      Yes you're absolutely right, thanks for catching that!

  • @shadowhills8154
    @shadowhills8154 Рік тому

    very helpful..thank you🎹

  • @marcobidin5796
    @marcobidin5796 Рік тому

    Thanks for sharing. Very helpful.

  • @axgp_
    @axgp_ Рік тому

    thanks for the video! hope you don't mind me sharing a suggestion here- the portion of the patch which feeds the multislider's list into the mc.gen~ could be simplified with: [multislider] → [prepend applyvalues] → [mc.sig~ @chans 32] → [mc.rampsmooth~] and then you could use [mstosamps~] to set rampsmooth's ramp up & down time in milliseconds 13:51 if you wanted to do this, you could just pass another multislider with the above set up into rampsmooth's ramp inlets and define the ramp parameter per channel

    • @benjaminward9042
      @benjaminward9042 Рік тому

      Oh great! Thanks for the suggestion. I'm always happy to learn of better ways of doing things so I appreciate the tip. I completely forgot about rampsmooth~; that would definitely the simpler option for this.

  • @ImSamKnight
    @ImSamKnight Рік тому

    Amazing tutorial thank you BWAudioProgramming!!!

  • @banalytic
    @banalytic Рік тому

    hi! thanks for this video... really like your way to explain... hope you will make more stuff like this :)

    • @benjaminward9042
      @benjaminward9042 Рік тому

      Thank you! I am going to try and make videos like this regularly,. Let me know if you have any topics you'd like me to explore!

    • @banalytic
      @banalytic Рік тому

      sounds good! at the moment i am very interested in concepts how to transform statsistic datas (=numbers) in (experimental) musical context (what methods are possible, who does it work…) in max/msp.@@benjaminward9042

    • @benjaminward9042
      @benjaminward9042 Рік тому

      Oh cool! I haven't done much with statistical data but I'll see if I can find a way to incorporate that somehow. Your channel is sick btw.

    • @leveratan
      @leveratan Рік тому

      @@benjaminward9042 Could you do a video-tutorial on time stretching from incoming audio through the buffer~ object?

    • @benjaminward9042
      @benjaminward9042 9 місяців тому

      Hmm, I can definitely look into. Do you mean incoming audio like live audio from a mic? Or playback from an audio file?

  • @thomaskoner1287
    @thomaskoner1287 Рік тому

    thank you very good

  • @ImSamKnight
    @ImSamKnight Рік тому

    I liked the way you put audio and visual together to make this.

  • @nathanrantala4799
    @nathanrantala4799 Рік тому

    I enjoyed how the audio sounded and how the visuals looked. Thumbs up from me.

  • @abrahaminturbide5786
    @abrahaminturbide5786 3 роки тому

    Niceeeee transcripción? . Please t hx