Visualising the Audio Spectrum in 3D - Max/MSP Tutorial

Поділитися
Вставка
  • Опубліковано 1 сер 2024
  • You can create really beautiful and interesting things by the frequency domain analysis of audio. This is a (hopefully) accessible and practical introduction to the world of FFT - in this video, I use [pfft~] to capture the frequency domain data into a Jitter Matrix, and visualise it both as a scrolling display and a 3D image using [jit.gl.mesh] and [jit.gen].
    🎹Patch: github.com/umutreldem/hearing...
    0:00 - Introduction
    0:56 - Setting up [pfft~]
    5:11 - Writing audio data into a matrix
    10:12 - Receiving input/output from [pfft~]
    12:30 - Scrolling matrices with [jit.convolve]
    17:12 - Using dstdim with [jit.matrix]
    19:56 - Setting up a 3D environment
    21:47 - Using [jit.gen] to process the FFT analysis
    25:15 - Creating shapes within [jit.gen]

КОМЕНТАРІ • 72

  • @TheBigLou13
    @TheBigLou13 9 місяців тому +3

    This video made me understand Max/MSP! I never quite understood what was going on before but now it makes sense. You're explaining it very well and it was easy to follow for someone with no prior knowledge of Max/MSP. I know a couple of programming languages and enjoy sound design - so that might have helped - but still: You're a good teacher! Thank you for your lessons and shared knowledge!

  • @avantagonist
    @avantagonist 2 роки тому +4

    I've been wondering how to do this for like 10 years in jitter, thank you!

  • @lastnamefirstname6035
    @lastnamefirstname6035 2 роки тому +1

    Wow I love this! The audio + spinning disk/sphere is soo cool! I wonder what other shapes will work well with this... So many options... Thank you so much for this tutorial!

    • @HearingGlass
      @HearingGlass  2 роки тому

      Thank you for watching and enjoy exploring!

  • @juanchis.investigadorsonoro
    @juanchis.investigadorsonoro 5 місяців тому +1

    This videos have been so helpful! Thanks so much. Max is huge, so this type of videos are so valuable. ❣

  • @freecircles
    @freecircles 2 роки тому +4

    Thank you. Very interesting and inspiring!

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

    This is a great idea and an absolutely excellent tutorial. Thank you for making it.
    I found that expanding the horizontal dimension in the "spectrum" matrix slows the rotation down without getting the choppiness of changing the frame rate. I got a result I liked with 1024. More cells to fill takes more time to fill them.

  • @jack_lion
    @jack_lion 2 роки тому

    Nice work! Thanks for the upload

  • @marcelomellado1969
    @marcelomellado1969 2 роки тому +2

    too much info for my beginner knowledge haha but thank you!!! this one is amazing. Hopefully soon i will return to this and understand all the used logic

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

    I'm a life long visual Artist of over 40 years, recording artist & engineer. I draw with sound based on specific rules such as no sound *no draw* - there would not be a sphere representation, if quiet, draw light/faded (creates distance/depth), draw points or lines to specific side of the page from whatever L/R pan you hear although this is a bit imposed/forced ideology of the music engineer, not the scope of the audio spectrum in 3D space. During the duration of the music you may hear a constant note or a blip a 1/64 for example. I have mapped out other rules. Anyway, ideally, I think that if the interpreting algorithm is correctly made, it should visually produce the same artwork even better than me and if another artists draws by the same rules, they will replicate the same artwork too based on the specific music. Music is math but how to extract it in 3D may reveal hidden images/thoughts and experiences artists had through out the ages.

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

    Thank you for this

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

    This is fkn amazing!

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

    Dude i'm just starting this video and i'm almost too excited to watch. Havent done a max patch since a workshop 20y ago, but have studied mechatronics, enjoy embedded.
    Figured i'd make a visualiser inspired by IRCAM's The Snail as something to get my hand in, looking at the opening patch im so excited git and gen are just made for it. It looks live you have already done 90% of the work.
    Hoping i can then turn it into a shape based tune correction for custom tuning shapes for the multiple oscillators and filters on a synth, esp after seeing that initial patch. Any hints on direction deeply appreciated.

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

    thanks this is great

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

      How could I change the background colour?

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

    thank you !!!!!!!!!!!!!!!!!!!!!!!

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

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

    Hey Hearing Glass!
    Phenominal video! I am using this for a uni project, and I found these a really useful way to analyse different audio files! I really want to save the 3d display (the step before the globe) so I can compare images of different files to eachother. Is that possible with Max 8?
    And is there a way to put a scale in the display to help with comparison?

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

      I can think of a few approaches: You can try to save the Jitter Matrix that goes into the 3d display by sending jit.matrix the "write" message, and then load different matrices in jit.matrix by sending it the "read" message. You can also create multiple copies of jit.gl.mesh in order to visualise multiple analyses at once. Good luck!

  • @user-tl6ou8eb4l
    @user-tl6ou8eb4l Рік тому

    Thank you very much for the video.Very interesting and awesome! I have just started to learn. Could I repost this video to China's video platform so that more people can see?

    • @HearingGlass
      @HearingGlass  Рік тому +1

      As long as you credit me and my channel, go ahead!

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

    Very nice! Would be great to tilt the spectrum somehow to compensate for the FFT results being tilted towards the low frequencies.
    Fabfilter Q3 has a 4.5db/octave tilt.. Any suggestions on how to achieve that?

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

      Good question! I can't think of anything of the top off my head, but probably some kind of shaping function should do the trick.

    • @ampskillmusic
      @ampskillmusic 8 місяців тому +1

      use [jit.op @op + @val 1] into [jit.op @op log] before you pass it into the gen. I'm not sure if this is the same kind of octave tilt as in fab filter, but it gives you the log of the spectrum, which should push more of it into the upper range.

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

    Thanks for the tutorial! How would you go about generating a "shape" out of a separate 3d object (.obj) to use as a shape for the freq spectrum? Like you did with the sphere, but using a 3d object instead.

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

      jit.gl.model is a good place to start. Check out its help file to see how it's implemented into jit.gl.mesh!

    • @hermangritz4234
      @hermangritz4234 Рік тому +1

      @@HearingGlass I've managed to hook the 3d object with gl.mesh, but this way the spectrum and the 3d object are just 2 things independent of each other. My understanding is that the coordinates of the 3d object should be somehow loaded into the gen patch (where you created the sphere). I tried creating a second input in gen and hooking up the object but it seems like there's another step missing. Appreciate your help!

  • @sjweith6758
    @sjweith6758 12 днів тому

    thanks for this great tutorial! for some reason i have a hard time having the same visual result as you. I used your tutorial to do my own and downloaded your patches and the visualisation looks different than your result (somewhat more flat and dense)... what do you think the problem could be ?

    • @HearingGlass
      @HearingGlass  6 днів тому

      I would check your window size and length of the lines in jit.gl.mesh.

  • @abergdahl
    @abergdahl Рік тому +2

    Great video, thanks.. one slight issue for me is that i can't seem to change the color of the lines, color in the mesh does not do anything. Any tips on why would be appreciated :-)

    • @abergdahl
      @abergdahl Рік тому +1

      Sorry found it myself i had to add swiz on rbg to change color.. Of course

    • @hildaer-lb4gv
      @hildaer-lb4gv Рік тому

      @@abergdahl i have the same problem,please help!

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

    Thank you for this video! Im trying to use your project, but I am facing a fairly simple issue (I'm new to MAX). I am not able to click the toggle button to respond. Even my button seems to not respond to clicks. If I try to connect the the button to the microphone input at that instant I get a light blue representation on the button, but it does not stay, please help!

    • @HearingGlass
      @HearingGlass  Рік тому +1

      Do check if your patch is locked when you are trying to click the toggle.

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

      @@HearingGlass Hi tahnk you so much! I ran into another problem after shutting down my laptop. The scroll function doesnt seem to work. I got the sphere runninf too, but the there is just one dimentional matrix that is formed and no scroll of the graph. Please help :/

  • @bernardogonzalez3306
    @bernardogonzalez3306 2 роки тому

    Thank you very much for the video, it looks awesome! Is there any way to connect this device through Max for Live??? I've been trying for days without a solution :(

    • @danjwheatley
      @danjwheatley 2 роки тому +2

      you should be able to replace the ezadc with the live audio in for an audio effect, but you'll only be able to edit the jit.gen if you have full version of max i think

    • @bernardogonzalez3306
      @bernardogonzalez3306 2 роки тому +1

      @@danjwheatley Thanks!!

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

    😓The first time I followed the operation, it was successful. However, there seemed to be an error when I saved it afterward, making it irreversible. Even at the 11-minute mark of the video, when I clicked on the small dots, there was no change in the image. I've tried for several hours but still couldn't find the problem. When I saved it, I had already put them in a folder called "patchers." I wonder if there's any possible solution? thanks a lot for your video teaching

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

      Forget to answer, I just rename the folders and try to follow again and worked : )

  • @Nagality
    @Nagality 3 місяці тому

    Hello, thanks for great tutorial!
    Unfortunately I'm stuck at dstdim section. I can not find the 'dim' node in max. Am I missing a package or something else maybe?
    Thanks in advance!

    • @HearingGlass
      @HearingGlass  3 місяці тому

      Giving the [jit.matrix] object all three attributes should work: "@usedstdim 1 @dstdimstart 0 0 @dstdimend 0 255".

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

    Hi ! Love your patch, looks particularly good :) I've tried to download the repository on git, but seems like you've blocked the access. Do you think I could have an access, I'd like to try it but I only have a free version of Max and can't save the patch i'm doing :/

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

    What did you hit to get the white square in the window after creating setcell at 15:46 ?
    EDIT: I think I got some file path mixed up between FreqAnalysis and FreqVisuals patchers. I might have to rebuild a chunk of it.
    EDIT II: I still seem to be missing something with the setcell.
    EDIT III: Downloaded yours and it works just fine. (Looks amazing by the way). Yours would not scroll when mine was concurrently open, but as soon as I closed mine yours immediately started scrolling. I will compare them to one another some time.
    EDIT IV: LOL. It just randomly worked after opening and closing some files. Strange glitch.

    • @HearingGlass
      @HearingGlass  9 місяців тому +1

      All good if it works in the end!

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

      @@HearingGlass Thanks for sharing your processes behind MaxMSP, by the way
      ! I demoed this one to some friends yesterday and they thought it was like magic.

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

    how would you change the colours or something of this?

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

      You can use the fourth inlet of jit.gl.mesh to set the color of each vertex. Check out the help file.

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

    is this possible to integrate in an ableton project or to receive the audio from ableton instead of the microphone?

    • @HearingGlass
      @HearingGlass  Рік тому +1

      Absolutely, you can easily do this with Max for Live.

  • @Asep-civil
    @Asep-civil 3 місяці тому

    what u click for set specific val on 15:47

    • @HearingGlass
      @HearingGlass  3 місяці тому

      That is a message box with the "setcell 0 1 val 1., bang".

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

    How can you record or export the projections?

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

      Check out the Spout and Syphon packages!

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

    at 10:40 i tried to do the same thing but my pfft object removes the output what could be the issue?

    • @HearingGlass
      @HearingGlass  Рік тому +1

      Did you make sure to save the fft patch in the same folder as your main patch and refer to it as an argument for the pfft object?

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

      @@HearingGlass ahh works now. I just didnt save the main patch yet. Saved it and refreshed and it works . thank you!

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

    Cool. Are you selling this as a solution? Interested.

    • @HearingGlass
      @HearingGlass  7 місяців тому +1

      Everything I post on this channel is free to learn from and to use.

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

    How to zoom In/Out in that visual window?

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

      Same problem....

    • @alercequemado
      @alercequemado 9 місяців тому +1

      use the Alt key, and move the mouse to zoom in and out... also, with the Control key youy can move the entire frame

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

    🙏👍🪻✅

  • @g.porter2633
    @g.porter2633 9 місяців тому

    I love what you have done and I am having a hard time getting the first jit.pwindow to work. My Jit.fpsgui is getting 1x256. and from what I can tell everything matches what you did. Any ideas? I think it has to do with my visual windows. I patched music to play through it all and I see its signal coming into max.
    Another question in the plan field is there a way to leave a not on the X, Y and Z that would stay there the whole time. For example the note for Z would be amplitude.

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

    Hi there! I'm using this as inspiration for one of my own creative coding projects :) my jit.pwindow does not scroll to update with any new fft analysis', do you know why this could be?
    Thanks!

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

      Hard to tell without seeing your patch - something is probably missing, like the result of the fft analysis not updating the Jitter matrix. Try downloading/remaking my patch and comparing yours with that one.

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

    Hello! I tried everything but,---" jit.matrix spectrum 3 float32 250 256 @usedstdim 1 @dstdimstart 0 0 @dstdimend 0 255" , this part just doesn't work for me. The visual stays at the corner of the window it doesn't start to move like your.I think i did everything like you.What could be the problem?

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

      The patch is in the video description, make sure to compare what you have and what I made very closely. Chances are there is a tiny mistake hidden somewhere.

    • @enkisumer
      @enkisumer Рік тому +2

      I had the same issue, the Setcell 0 1, val 1.,bang message
      needs a loadbang.

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

      You just saved me! thx!!@@enkisumer