Ms Pinky's Reformed Max-For-Live device

For topics related to using MsPinky inside the Max/MSP graphical programming environment
Mudo
Posts:340
Joined:Tue Jun 08, 2004 9:22 pm
Location:...Barcelona...

Post by Mudo » Wed Apr 28, 2010 5:57 pm

...

It has any specific library maybe? I'm wondering the possibility of take audio buffer directly inside Ms. Pinky patch and then scratch it.


...
...

Mudo means mute person.


Researching new interface paradigms
...
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Wed Apr 28, 2010 6:18 pm

QUESTION...

So how many tracks are you guys loading into Ableton using this Pinky Patch and the highlighted method?


When things move slow in Ableton is it due to the Pinky Patch trying to load up all of the songs in the File Path?
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Wed Apr 28, 2010 6:54 pm

There's got to be a better way to browse tracks.

hmmmmm :idea:
Mudo
Posts:340
Joined:Tue Jun 08, 2004 9:22 pm
Location:...Barcelona...

Post by Mudo » Wed Apr 28, 2010 7:46 pm

...

I use a lot of clips but I still not make a large session and vinyl control... What kind of test do you need JuanSolo?

I want to help in any way...


...
...

Mudo means mute person.


Researching new interface paradigms
...
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Wed Apr 28, 2010 11:35 pm

I'm not really sure where to begin with this. I am guessing what slows it down is having 2 instances of Pinky. I am guessing when I switch tracks it is trying to reload the umenus on each instance, causing it to slow down?
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Thu Apr 29, 2010 1:27 am

So I deleted all of the umenus and get a much faster response from Ableton, but now I have lost my waveforms.

hmmm
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Thu Apr 29, 2010 4:11 pm

OK so I've made some killer progress in customizing my Pinky patch.

Now I'f I could only figure out how Bento made a Drop Cue button etc...
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Thu Apr 29, 2010 6:21 pm

So after a few hours of rehearsing with this new Pinky set up, I am confident about Ms Pinky's ability.

Ms. Pinky is definitely the way forwards. In the middle of trying to set up Live to use Pinky with 2 decks for a gig on Saturday, I felt like it wasn't going to work. I switched back to Traktor briefly :?. Missing the possibilities I created with Pinky and Ableton, I gave it another stab, and now I am LOVING the Pinky Ableton COMBO!!!

With M4L and Live hopefully making future improvements and more accessible stuff, I can't imagine a need for any other DVS. :D

Still trying to figure out Drop Cue's and other features, but there's no turning back now.
Mudo
Posts:340
Joined:Tue Jun 08, 2004 9:22 pm
Location:...Barcelona...

Post by Mudo » Fri Apr 30, 2010 10:01 am

...

Yeah!


...
...

Mudo means mute person.


Researching new interface paradigms
...
BentoSan
Posts:31
Joined:Tue Feb 09, 2010 5:51 pm

Post by BentoSan » Wed May 05, 2010 3:02 pm

Creating a drop cue function is reaaaaaaaaaaaly easy, you will kick yourself with how easy it is to make.

Earlier in this thread we were talking about how to track the position of the song with a number between 0.00000 -> 1.00000

All you need to do is feed that into the right inlet of a message object, then feed a bang into the left hand side of the object with a button. Feed the message box outlet into the right hand of another message box and attach another button object to the left input of that second message object. Now attach the outlet of the second message object to a "prepend cue" object, then feed that into the the input of the ms pinky object.

The first button drops the cue point, the second button is used to jump back to that cue point.

The problem though is if you want to store that cue point into any of the cue point slots, you can only store it into the last cue point you selected. Thats why i recreated the whole cue point and loop point storage system , so that i could save cue point data into any cue point slot without having to trigger the slot before storing it into that slot.

And yeah... hang in there guys i have not given up on working on this patch despite the fact that you guys have not heard from me in a while.
Last edited by BentoSan on Thu May 06, 2010 5:14 pm, edited 1 time in total.
Mudo
Posts:340
Joined:Tue Jun 08, 2004 9:22 pm
Location:...Barcelona...

Post by Mudo » Wed May 05, 2010 5:29 pm

...

I understand it but we are waiting almost pics!

;)

...
...

Mudo means mute person.


Researching new interface paradigms
...
BentoSan
Posts:31
Joined:Tue Feb 09, 2010 5:51 pm

Post by BentoSan » Fri May 07, 2010 6:17 am

Copy paste this into a max patch and you will get the idea of how to intergrate it into the patch.

Edit: i should not that this only works in relative mode and NOT in absolute mode. Relative mode is the future anyway, so stick with it :)

Code: Select all

{
	"boxes" : [ 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "Cue Play",
				"id" : "obj-9",
				"numinlets" : 1,
				"patching_rect" : [ 172.0, 471.0, 51.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 0,
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "comment",
				"text" : "Cue Drop",
				"id" : "obj-7",
				"numinlets" : 1,
				"patching_rect" : [ 172.0, 415.0, 54.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 0,
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "button",
				"id" : "obj-6",
				"numinlets" : 1,
				"patching_rect" : [ 231.0, 471.0, 20.0, 20.0 ],
				"numoutlets" : 1,
				"outlettype" : [ "bang" ]
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "button",
				"id" : "obj-4",
				"numinlets" : 1,
				"patching_rect" : [ 231.0, 415.0, 20.0, 20.0 ],
				"numoutlets" : 1,
				"outlettype" : [ "bang" ]
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "prepend cue",
				"id" : "obj-3",
				"numinlets" : 1,
				"patching_rect" : [ 270.0, 522.0, 100.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"id" : "obj-2",
				"numinlets" : 2,
				"patching_rect" : [ 270.0, 490.0, 50.0, 16.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "message",
				"text" : "0.",
				"id" : "obj-1",
				"numinlets" : 2,
				"patching_rect" : [ 269.0, 452.0, 50.0, 16.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "- 0.",
				"id" : "obj-327",
				"numinlets" : 2,
				"patching_rect" : [ 300.0, 416.0, 100.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "float" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "t f i",
				"id" : "obj-324",
				"numinlets" : 1,
				"patching_rect" : [ 300.0, 397.0, 100.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 2,
				"outlettype" : [ "float", "int" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "if $f1>0 then $f1",
				"id" : "obj-321",
				"numinlets" : 1,
				"patching_rect" : [ 300.0, 378.0, 100.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "snapshot~ 1",
				"id" : "obj-288",
				"numinlets" : 2,
				"patching_rect" : [ 300.0, 321.0, 71.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "float" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "expr $f1*11.60997732426/$f2",
				"linecount" : 2,
				"id" : "obj-320",
				"numinlets" : 2,
				"patching_rect" : [ 300.0, 348.0, 119.0, 29.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 1,
				"outlettype" : [ "" ],
				"fontsize" : 10.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"text" : "route msec_time duration msec_duration msec_remainder file_type bitrate vinyl_metric vinyl_position read",
				"id" : "obj-173",
				"numinlets" : 1,
				"patching_rect" : [ 436.0, 323.0, 775.0, 19.0 ],
				"fontname" : "Sans Serif",
				"numoutlets" : 10,
				"outlettype" : [ "", "", "", "", "", "", "", "", "", "" ],
				"fontsize" : 11.0
			}

		}
, 		{
			"box" : 			{
				"maxclass" : "newobj",
				"varname" : "mptcfs_sa~",
				"text" : "mptcfs_sa~",
				"id" : "obj-5",
				"numinlets" : 7,
				"patching_rect" : [ 30.0, 301.0, 424.0, 18.0 ],
				"fontname" : "Arial Bold",
				"numoutlets" : 7,
				"outlettype" : [ "signal", "signal", "signal", "signal", "signal", "list", "list" ],
				"fontsize" : 10.0
			}

		}
 ],
	"lines" : [ 		{
			"patchline" : 			{
				"source" : [ "obj-3", 0 ],
				"destination" : [ "obj-5", 0 ],
				"hidden" : 0,
				"midpoints" : [ 279.5, 551.0, 5.0, 551.0, 5.0, 278.0, 39.5, 278.0 ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-6", 0 ],
				"destination" : [ "obj-2", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-4", 0 ],
				"destination" : [ "obj-1", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-2", 0 ],
				"destination" : [ "obj-3", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-1", 0 ],
				"destination" : [ "obj-2", 1 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-327", 0 ],
				"destination" : [ "obj-1", 1 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-173", 2 ],
				"destination" : [ "obj-320", 1 ],
				"hidden" : 0,
				"midpoints" : [ 613.5, 345.0, 409.5, 345.0 ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-320", 0 ],
				"destination" : [ "obj-321", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-288", 0 ],
				"destination" : [ "obj-320", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-5", 4 ],
				"destination" : [ "obj-288", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-5", 6 ],
				"destination" : [ "obj-173", 0 ],
				"hidden" : 1,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-324", 0 ],
				"destination" : [ "obj-327", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-324", 1 ],
				"destination" : [ "obj-327", 1 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
, 		{
			"patchline" : 			{
				"source" : [ "obj-321", 0 ],
				"destination" : [ "obj-324", 0 ],
				"hidden" : 0,
				"midpoints" : [  ]
			}

		}
 ]
}
manic
Posts:11
Joined:Mon Apr 17, 2006 7:12 am

Post by manic » Sun May 16, 2010 6:58 am

Relative mode is the future anyway, so stick with it
Not true for me.

I find relative mode looses positioning when fast back cueing. So any marker on the vinyl becomes useless. I understand that this is unavoidable when using relative mode.

So for me ABSOLUTE MODE is the only way I can perform using pinky.

But I have a problem!

I want to be able to use cue points with absolute mode. Nuts right?

I figure there needs to be a SUPER ABSOLUTE MODE, or something that uses the timecode for positioning but allows you to move the position of the audio track on the vinyl.

So when you hit a cue point in SUPER ABSOLUTE MODE your audio file would move so that the cue point is in the current position of the needle on the record.

I suppose its a case of MATHS on the position code. When you hit the CUE it reads the vinyls current position and the cue points position. It then +/- the difference from the incoming timecode as a kind of playback offset.

Sound like it would work? Perhaps I should start a new thread for this?

I had a look at the MAX/MSP patch and its beyond my understanding. If any one can implement this it would be MASSIVE! For me at least :)
BentoSan
Posts:31
Joined:Tue Feb 09, 2010 5:51 pm

Post by BentoSan » Sun May 16, 2010 8:02 am

Thought about using a midi controller for better jumping around of the playhead in relative mode ?
JuanSOLO
Posts:74
Joined:Tue Dec 01, 2009 5:08 am

Post by JuanSOLO » Sun May 16, 2010 9:03 pm

So I have some questions about improvement.

My number one issue is when loading a track using the "highlighted clip - bento button" method, the other deck will have a slight glitch 90% of the time. Like a tiny needle skip. Any ideas on how to fix this?

Also as in the above post, when back cueing fast in absolute mode, the position may change. Is there a way to fix that issue?


Thanks Bento for the info on cue dropping.
Post Reply