waveform~ display as a circle

Jan 17, 2011 at 8:18pm

waveform~ display as a circle

Has anyone managed to display waveform data in the shape of a circle? I would like to view, edit and display buffer data in the shape of a circle. (As opposed to the rectangular boxy format included in the waveform~ object.) Thanks for any insight.

s

#54453
Jan 17, 2011 at 8:24pm

You mean, with the start of the buffer contents at 0deg, the middle at 180 and the end at 359deg?

#196134
Jan 17, 2011 at 8:28pm

Yes.

#196135
Jan 17, 2011 at 8:40pm

Something like this

[attachment=151505,1684]

Attachments:
  1. Picture1a.jpg
#196136
Jan 17, 2011 at 9:34pm

You mean like this?

[attachment=151507,1686]

Attachments:
  1. LiveScreenSnapz002.jpg
#196138
Jan 17, 2011 at 10:24pm

Yes, something like that. Unfortunately, don’t have Max4 live or Abelton hoping there was a way to do it within Max 5.

#196140
Jan 17, 2011 at 11:09pm

I think I can safely say that, certainly in the past 3 years, this request has never appeared on the forum – and in my experience I know that this feature is not readily available in Max; the only objects that I can think of to get anywhere near a solution would be [lcd] or maybe [pictslider], but you would need a 360deg image rendered elesewhere first. Either that, or something like Processing, but your programming would need to be better than mine…..

Brendan

#196141
Jan 18, 2011 at 12:51am

It’s possible to do it in Jitter, but I’m not one of the ones who could put it together very easily. Search/ask on the Jitter forum, how to render a buffer in OpenGL……then do something like apply the formula for a circle to the matrix in some way….I’m being cryptic because I don’t know how lol.

All I know is that it IS doable in Max5, and not just because Nick posted a picture… :p

#196142
Jan 18, 2011 at 1:11am

whoa, that is a great idea!

cassiel’s awesome interface looks like it might be an LCD… or a jit.buffer~ thang…

i do like stanrad’s original picture even more though because it is drawn(perhaps by accident) to look like a plane(over x and z axes) in 3d space where the y-axis could perhaps be used for something else(to show playback position or volume or something much much more).

brilliant idea! now if only i had the time…

#196143
Jan 18, 2011 at 5:08am

Graham did a jit.buffer->jit.gl.mesh patch some time ago:

http://www.cycling74.com/forums/topic.php?id=21071

You could use this as a jumping point, then capture/jit.gl.asyncread it to a texture and then use the texture on a jit.gl.gridshape @circle. I’d probably make the initial rendering/texture extra big so it will look decent when used on the gridshape.

Coming up with a meaningful way to interact with it might be the trickier part.

-Ben

#196144
Jan 18, 2011 at 10:39am

(To the admins: thanks for purging the accidental double post.)

My solution is straight Max5 – it just so happens that I’m working on a Max for Live project. It’s Javascript/JSUI, and probably not quite what you want: it’s a live looped amplitude display rather than a buffer waveform.

I didn’t think about a Jitter/GL solution – that makes a lot of sense – but I was starting from some older JS code which supports click-and-drag interaction, as well as additional text and/or icons.

#196145
Jan 18, 2011 at 2:29pm

Just for the fun… an lcd example:

– Pasted Max Patch, click to expand. –
#196146
Jan 18, 2011 at 3:21pm

and with the playhead…

– Pasted Max Patch, click to expand. –
#196147
Jan 18, 2011 at 3:53pm

WHOA

…and I was planning on doing other things today…

How do you think this kind of approach could work with jit.gl.sketch? On the [lcd] it seems pretty snappy. Maybe the GL isn’t needed after all… with jit.gl.sketch in the past I’ve noticed pretty bad response after this many lines are drawn on there. But it would be pretty rockin especially with the handle and other goodies the GL world would provide.

New Max object: groovecirc~ !

#196148
Jan 18, 2011 at 4:52pm

Wonderful Emmanuel.
I think there is no need for Gl, as you only need to calculate it once. To draw the playhead isn’t that expensive…

#196149
Jan 18, 2011 at 8:39pm

Wow. Pretty Impressive and creative solution Emmanuel. Thanks for everyone else’s valuable insight.

#196150
Jan 18, 2011 at 9:06pm

yummy, that is pretty damn snappy if i do say so myself. just think on what you could do with sectioning off the waveform when you have a portion of it looping.

#196151
Jan 18, 2011 at 9:22pm

Emmanuel bringing the pain hardcore from the brain

#196152
Jan 18, 2011 at 11:38pm

Thanks for the nice comments… Using sprites like in the second example makes it reasonably fast. The major problem we just take samples evenly spaced, and not because they are meaningful, one idea to go further would be to apply some filter lowpass filter, or something like that on the absolute value of the samples (or calculate a RMS) selecting the samples to display, easy to do in mxj for instance, but too complicated/slow in patch.

#196153
Jan 19, 2011 at 12:26am

Nice patch. Rather than calculate an RMS value, I think I would just try and find the minimum and maximum in a given batch of samples.

#196154
Jan 19, 2011 at 10:14am

Nice, Emmanuel… lighter weight than my JS/OpenGL solution, I think. I should do some CPU comparisons.

#196155
Jan 19, 2011 at 10:00pm

FWIW, I’ve posted up a page with a video of my disc in action:

http://wheel.loadbang.net

#196156
Jan 20, 2011 at 12:30pm

that is definetly very easy to do with [lcd] or [jit.lcd].

of course it will lack antialiasing so when you just draw lines
to lcd you might want to make the display not too small.

#196157
Jan 20, 2011 at 4:13pm

Just another example of the subjective Max object space of different users… I’ve done a fair amount of UI design in Javascript over the last few years, yet have hardly ever used [lcd], despite it being much older.

#196158
Jan 21, 2011 at 12:09am

I made a new version in mxj which is way more accurate (find the maximum of a block, instead of the first value…), posted on toolbox.

#196159
Jan 21, 2011 at 6:03am

That is the freaking coolest thing I have seen in a really long time. Bravo. Oddly, I kinda like the java free version bettererer. That is seriously sexy and oddly relevant and helpful for the kind of thing I happend to be doing at the moment. Seriously wow.

#196160
Jan 21, 2011 at 10:42am

@kp*

Actually, it should be “more bettererer”

Brendan

#196161
Jan 24, 2011 at 11:24pm

That looks much more bettererer than the rectangular waveform~ . Looks like a coffee cup stain (from Java nevertheless ;0.) I’m sure it will become of use in the future-seems much easier to navigate and lots of potential for development. nice to see so much interest in this topic.

#196162
Jan 25, 2011 at 12:11am

Well paired with say named transports or loops of different lengths (or just different speeds) it just is so cool to watch the phasing and convergence points… or maybe 2 of them superimposed with waveforms in different colors. Sexy stuff.

#196163
Feb 10, 2011 at 5:00pm

bumping this for a colleague

Brendan

#196164
Feb 10, 2011 at 7:11pm

This is really cool. Want to try with Elastic~ and It would be cool to be able to manipulate the loop with the playhead.

#196165
Feb 11, 2011 at 11:08pm

most interesting thing coming to my mind is : it really reminds me of the gamelan circular notation system

#196166
Feb 25, 2011 at 5:05pm

I caught this thread when it first popped up, came across the patcher again cleaning up files. Would it be possible to do this with scope~ or with an overdubbing buffer? Same idea except realtime, I suppose, but would that be too resource heavy?

Thanks.

#196167

You must be logged in to reply to this topic.