Meet Oopsy: Daisy Object for Max/MSP Gen~

@grrrwaaa
First of all, thank you for all your Max involvement over the years. Brilliant.

I have a feature request, and Iā€™m not certain of itā€™s feasibility but here it is:
Iā€™m making a syncable delay, which turned out to be relatively simple BUT I would like to be able to change the pulse-checking timer to listen to 48, 24, 8, 5, 2, and etc PPQ, all the way to a single PPQ. Iā€™ve implemented a ā€œhow many samples per pulseā€ bit of math which I forward to the Delay object and it works great but is currently hardwired to 24PPQ.
The thing is, Iā€™d like to have an on-screen parameter option that is NOT Float. If I only have two options, in one example ā€œis the delay free running or is it clock syncedā€ then I have to scroll through the at least half the length of the parameter value, 1000 decimal places (on the Patch) to get a simple 0/1 or 1/2.
FWIW, I did set ā€œparam FreeSync @min .001 @max .002ā€ and then multiplied by 1000 before a Selector which works for now but is ham-handed.
Is there a way to set Oopsy screen-only parameters to be Zero or 1 integers or 1 through 8 for my delay clock division/multiplier selector?
If not, Iā€™m happy with my .001*1000 workaround, but it doesnā€™t play well with the knobs/CV

1 Like

So, essentially the request is for some parameters to be forced to integer values? [param cv1_int_mode 1 @min 0 @max 8] etc? [param cv2_int_enable 1 @min 0 @max 1] etc?

Iā€™d been thinking about something like this too; have added to the issues list here: https://github.com/electro-smith/oopsy/issues/32

2 Likes

Amazing.
Yes.
Maybe youā€™re still reading my mind and are coming up with a way to not only implement external buffers but also to save them to SD card. The ability to turn Daisy into a recording machine is enticing, maybe even four channel wav files mayyyyybe?
Iā€™m freekin inspired.

1 Like

How can we change the order that our Gen~ objects show up on the Patch screen or the Petalā€™s encoder wheel?

It should be alphabetical based on the gen~ object names. To give a name to each gen~ in a multi-patch, add an @title argument to the gen~ object, e.g. [gen~ @title program1], [gen~ @title program2] etc. would work.

Enjoy my first public Oopsy Daisy made project:
Phaser Super 16 for Petal https://forum.electro-smith.com/t/phasersuper16-petal/1036
IMHO (admires self in mirror) this should be added to the web programmer page :slight_smile:

1 Like

New year, new platform: Noise Engineering Versio devices should be supported in the next update :slight_smile:

3 Likes

ā€œController pickupā€
Little help here, having an unsuccessful time of getting a classic ā€œMIDI fader/knob pickupā€ thing working. Brain melting on a Sunday morning.
Simply put: Trying to make an Oopsy for the Field wherein the buttons bring you to different ā€œparameter pagesā€ for the knobs to manipulate BUT donā€™t want the knobs to auto-dictate the values until they are turned past the current value of the parameter, in a classic MIDI controller mode. This way I can have an oscillator on one button, ADADSR on the next, filter controls the next, etc. BUT only want to pass the value of the knobs on to the objects if the knobs are passing (or near?) the last current valueā€¦ I think you get what I mean, itā€™s a ā€œstandardā€ on some midi control schemes and one that is built into Ableton ā€œMIDI Pickup Modeā€ as an example.

1 Like

Breaking this down into steps:

To tell if a knob has ā€œturned pastā€ a certain value, you can just compare them and see when it changes:

[param knob], [history value] => [> ] -> [change] -> outputs a trigger whenever the knob crosses the value.

For everything else youā€™ll need triggerable logic states. Every time you need a state you probably need a [history] object to store it. You can whip up a latching logic state (one trigger input sends it high, another trigger input sends it low) by looping a [history], [and] and [or]. The and and or 2nd inputs are the triggers to open and close the state.

You can use one of these to know if you are in a particular mode, and another to remember if the knob has passed the stored value for that mode.

That can be fed into a [latch] (a track & hold operator) to feed the knob value through to the stored value for that mode.

Hereā€™s an example below.


----------begin_max5_patcher----------
2037.3oc2bszjihiD9rqeED9vdpVGHIDO1C6Dyefcur25XhJvFU1zMVP.x0i
oiY9su5E1fM1HYavT8kxkdgx7SYlJyTB94SyluL+CR0bm+ky2blM6mOMalrJ
QEyzkmMea7Gqxhqjca9p7saIT17mUswHevj0GSSbXkwq9QJcccizcay2wxHL
4Pc00llHGP9xu+Ogd0csHlsZCenuTRVwTzCBgW39rCLxU7CvEJKwK37GGd9o
z5GOPT2e8zSh+77MxLoTms4IDGf4bB5BbBD.eTbBgsxbd.dId.6IIdO33yCT
FoTsf.MmY.FvLP2GIyXgzka+LSj2nyKuEmsi37Zt07CH5R589CsxB+ArjT92
cStvNHW+5t9ZNkUk9mD4LKnLU0pgy9rfnXg4UoqowYye1Y9qY4wbF6OZ7.nw
ak8a9uWlJ5jpE9Pjn09G54gFbn3Grp.rAxHVFZxCsPJXCR303UxN5dEnWLiU
tKsavCzA3s2F+InzAXoCdE3hZZvA6dB2JHD4zrbGikSQy6T9PWYRZUQV7m0H
T3Hv3nqiw0JxfPC4a3Py2Vqt.lJpKZOH7gOR8EqgO2IB7U61xCF9HuyQkS16
YMgdFHE0w9my6G5N4+tjNZHRsqjxDUzo5ncpKJePjRMyp4VNBklQdiTVklSa
zatddQQipm0XHBH564xGT3y6qJkppBrupRxao0i+PGiK4rCiyK6JURFe3Wai
VunVR414p2bUtXoII4xhPhppPujNOopXAewn9AL+.HgA9psvAJCZ.o1X.Fc.
m3K9qyxW8CRRCOE3KSEDZJsnjTwc6Hlo4f8MmPdMdWF6kt0OZ29dQutZrSci
YyWWlljSEDQq0CQ00SGe+Irx9bSlQ1CZbQGClKFxAlyzXEmI2UsLtTrbsLqo
REWjOOOqcS6GWF4Ult4hTJ8HTjkWb9FKSWu4BicYNuwsW5YKao5kcTUquvkL
XuTE+VazlEmko0fa+3+HlltMlQXopk.n69FIzXNitoZUYdVVK9U0xaczRBWR
eE48zD1lV10Dsv6dZQsPz78qxIoqIUr10whWW0tlJ1mJPuQU6Vp0jegQ1x2c
kcTG35HoUrpM4uWo6XsfVS.3Pb2M0raZNrU8WxrXaSizbVy56zQkisPhQMGx
4cX4bFDw9tK.PLWgHHP4i5wlDOiq6yp2QPan49CGq1DSWSrFQ7htMDAAiDP.
JveQX.GX7BmLHBeaBqQC7sgFA7cL4f.xUAJdhBWFKfiCVDSSrGL7uKfALP52
fu+3BFsil+Hznj37NwIk5nhsvSFY+ucdDx8LHTv7KCAgvfEvCBD0g43NAzN1
vscmW9o8REg2GoBOo6Rddiq4hKIUPXqVXuHfmoh.dQB9dJIBbMFHg21puONP
sOAfu9K9EFMYrQdMvA3FUF7ltvQQbY71ZCj1iLt2HxDEt.IQFWoBSne+FJbG
efAYMvftQGtBber.ykrfJOYLm+gyl7rDqsjhB6wRJBH84F6J43.3jwNZlfVs
WPH3F871UF7AFpxfJBzubvXYHcGyAIcoB7RgHdY4InXu.geOBD3.Okp.lqJH
Mh59UN3CzMt2JF.Enfm5bS9hG7ABce.C04KLAC9n9VDXeTGHOS0KzhB+JD1A
BeWjGPpjXO1gcbmMT.tOXwuDYo.FcW.iu.Yo.bkYo.Fzq8hne0xRAz+9HU7X
xRQO9VAU9VYuf.1TAAOYNZBvSmjyvJ2wUEd0Il9oVcvIsx4+7e+eNhyOqhzx
vQVJkrJeGk07DlLFl.v9fI9lHgMOF..Tm8aD5q4NJ.2604hLsyiAzZj4F2cw
G7kHMF.qwkaLKvXXvDNKFoqcdeCg57CZ9RGdDrUjJmShgskQFrsFY5aOYj5t
WfvJ8IrLaGb+5e7lWVlmmY+AudWNkQO0MQwjTc.FSkHgbh81buKo+AAvRADc
5vlBFVtZe1tQ.QqwnAjIjOa+a6iv69bn7ZiG78jwSnTCBzoF75xJXeI+PqW3
Cg5qi00IFb31NIryel6vhb5Es2MnTkuqbU8hV80OwoMgjPpXoz8W9qucHnVN
N0ri4kIp6TmYBs1RZBO.Mhzp4gAgJLFfD2Mgi.nsoIE4oTVUsKoQK7gR4dfx
47PO2EGJ2M35NLrkgbkHCvWlqPnPUNdkAngQA6KMPqHhbMYFsiFaQVIZYDo4
eRGG3EbyIsfdkiUFxvtxUbOnLAUxRcyPvGLCcprd2LjWj9z77NsDJHRczVv8
kFUAKjM5qFwrXoZayRCk9J1F80gxNt3RBYtc7AiJ7MkJ5UnMHR4boqLuFMKM
PztzC.iVGAFJCpo8lkFJZ22F2bFpUeickXHIBOSWFwCIQ3Zid.XL2nzyTyUc
XQ4LpnpafbfJ40sKAQxjMo6orzPoBXp1qBvGFEf.SUC6CZQ.4YDh8UWt6P0t
ysJACU25fH04lHJMpNbYJu5cdWAAOVGng3w1KUOSIMO3.JlFYCQLXlHMUgUF
mL3ganFL5AaEYCoMTKSg1rJMp5Rg13t13lYGaBEchZZz2TebUa2WGFYqR5M+
08Tu4+3EAMvBOBrPxUqnopYfeS+gW2a5uJu7522+9eQ+ASsOvA3qisUeEKTu
O4Wjsab5Qm+i9gbXsyEshWOVNTywW1izyY1rQz3m.plNQ.rAyD7dLQdi0DgF
qIBNRSj3Y.6SX.bmlHPeSj6ISjRZ+nuL.h43nuH.G80.3zuD.m+q.vweA.ju
8+c8l+KLl7ze8z+WT7B2d
-----------end_max5_patcher-----------
1 Like

(Actually you could reduce the number of history objects by having one history store the current button-selected mode as an integer value, which might be simplerā€¦)

Also found a bug in that patch; the [and] should come afterr the [or]. This fixes it & shows the better mode-value based method:


----------begin_max5_patcher----------
1907.3oc0asziaaCD9r2eED5PQKfyBQR8L.oAAnG5k1BTzaIAFzRbsYhLkgD
85caPxu8xWxVxqrsjskW2KqW9dlONyGGMR7a2MxYZ9SzRGvaAeDLZz2tazHc
UpJFYKOxYA4ojLRotaNI4KVP4Bmwl1DzmD55ohjp53qVjuRjQE5Q3Zqkkp6W
9zu7FDppqKIhj4L9rIEzDgQLP9d26NF.CQ5eb0+fbu2E74syOiWM8PUce+t6
T+Y74pCbAs.rHOkBPcWYfcPY7ceMUFX2UF2NnLHuqtx7HIaEE7PduUHX7ATH
bfVChGtMG4DLkV7i1EWTKhaPUWeHmKJY+KUuxJIyTsY3hmWRMpfSIaFmj4LF
37PVNQpXet1DvIKz8y4CELUmLsHGhFs1Lo6GZ7iT+3aJfpgLpsg55PCjBUSD
dfjn6n6IfdDgnXEqcvC1B344rOTZKrzhtBcw0YbL9pMzVkfnWloqDhbN1oU6
CakorxkYjmqPnnqfhiOMEO13H6E0Q8FMz5MmtVpOuv6eFk+iNCFHmi3pbHDw
Z1CMFDwuDQZUy0SDsvpXVMSZ9yxnORKJY47Z8VhpKWVq5Q0FhBN9RtdhhFuo
JF2TEbSUEzGYUieaGIER0QH0kUEFu9mBp7HrdrEboUUEUldiwJR5s.EaQ4Rq
+pSZ4x6k.e0D3rEj7gAFBSn5mv.MXE.i1BSx84YY4IeklViVVtirjxY7kEzR
IGOQXUfMMmRefrJSLocpulsugVosFak1ajyrBVZNWIDM1NTUWsbRx.eiyPck
Q2CNYYKCVZwIwk8zXoTIWUNkTn1sllUmvTZcmmm0roMiKi9fv17RFmuCJJxW
t+FKXylefwNMW13hCM25VJmrhaZchzvPLoj7XSzVPxxrNqMm9mHb1BhfJXls
.j6lFobhTQmWlTjmk0PeMs7XKsjJMzSnqYoh4MNxR0hr6rkUFQNa1kSYynkh
l0IHyJaVSo3YCnWqpUSsNxSDzERpLwNcP5hvJEkyyWWZ6XkgVc.Xa3z0crqy
70n9CF.TSZveOeMPjCXRYip5Df.xrTXfuxym9I9+Lmp+O.qDjyydFPRDrGMA
NQ.KIEBVxpLRAvDOE6AvZJfTHiSjwAB4f0lO.Ca+aTLFiAe3O+McS54cNoDH
JHJ5KZpbBKE51JE4Exx5Y8s0k8LFmljuhqU.bsFpSBLoQuBp0qVCuaWB+PT8
UrERc4Aag9lH6FCvgt2ijk7Bq4g2drdipN.yxUN.aoqmyRlahoUtMn1MX726
zaD.dDD.CgVHvu9Q8t2BPveHU9RZF8qRan9q4tGQyQw5yphCeUz6FwyzTsmy
TNMOueMF1tFGDWeH6Odu8AHAlf4gAZnvya2Hbd0.j2C75OXDddfguMjeCXfh
u2+XfA5ZAF39CFAmGX3EAuGqXItEgCT+gC+yCNvw2vvAr+vg24AGVhzaOvPF
UCYgMjkSfAw8xvf.iU+DEbb5T2qOrbBbIvKEWxMMvbBrJnKEqxMMvbB7K3KC
+xMGrjLmvmQ6Md3elwoEpiTGC8MlKlbzc8BT6PQrKe.vjuB9Iv77rzdGwNN5
HQraRmjmM4Rnal.10OpcuMCvmaDpZXvCYRHIFdbqfqzwtDdZ+Aiyj7D44qB6
.Go8MBtchA4PO459vB7kAK7wuFwicH5AahLzrDRY98ehKJpmrIUtlrmxXx7g
JCS+7Z0fjMRxJnjzm2Lbve82aS8zR45SS0obRmqoeYu4ZxqS4Zxu2rWdGKSK
nHclVr6KvXOc1lB9+bJGv9WFSUX3MVJGd26NgGjBCuHA5XQCL914b8MYfrg6
Y+SGIJ7XNIXOiSBL7lKcjhB1Lv54Ttg0Qy3TZXa1KYCp2os7H.DDoiBFa9jD
hhprTd08XLOifBY5seC7RDHj8wCrgEdK73AmJo5YFJTbn9.+.Sd8ug3T+09S
ndIdPITTrAIf2NAEtR.LTnvIuf+nSzDGKXCiOguWrw0.dZFAaeO2JRs871K0
qtp81wjx7UEIUaYUO2CnofjRKEL9lW6+G2ni6zu7hTy2RQ2rX6qjE30QIScP
+0UzZYE2inIYOj1VedX.n3NJEp29xvIEccapEwcAKcYNiKr1xXWc7mvXyYGv
3VJY7gBB72Tp8Md2gQY6p2h5c7LbPdPWkB+gTJf8AKbGJovsONAClT32Uova
H2QP8wtXvvBbevhgRJ76J4nJ+Npcj8SKE4oepXYraAQ5ONCC4SUECjBf65lI
1+X7pHecnWdlOGPDN7kkvt1uiX+Mktl7pcWYCO1t0FkUG3s5aE12V5pFg.tO
QHzkcOUxT8G2nzPY442GWmgxAtq.Xki9fHDc1rb.Y06bD5G0RJvU6KXeUElW
eS8BH6mbja3lRWSR.Xe3.tpw6C6gYPG1APQA5mA1bvhoT2AZqYlolA99JfNs
6qPDt98O532WA3s18zv+zzaysRv5EcH0tVh41+cWROrlOquQW2070pwGl8ZO
lrvZAm+BPsqKDzuCqD5RrPdWqEBesVHzIsPFaictfJp0XmKlxNWJkWdgT1+k
QY2Khh9Rnz1EPQ45c22u6+nRjWXA
-----------end_max5_patcher-----------
2 Likes

Thank you @grrrwaaa
LATCH! Duh
Iā€™m definitely running into that ā€œI donā€™t know what objects are in Gen~ā€ wall I bang my head against.

2 Likes

Hey, this possibly deserves its own thread but ā€“

How are daisy projects using the Gen~ library licensed? Is there a separate EULA anywhere? or is it the same as with Gen~ in Cycling74 Max? (as described here https://support.cycling74.com/hc/en-us/articles/360050779193-Gen-Code-Export-Licensing-FAQ#link-0 )

Kind Regards,

Asher

@grrrwaaa
I know Versio support is forthcoming but is Terrarium being added also?
I feel like I could problmaybe write that in myself, if need be, but Iā€™d rather not :slight_smile:

@as-her
As far as I can see Itā€™s the same realm as Cycling74 licensing. Soā€¦ until you make $200,000 with your Gen~ exported code then you are good, as far as money goes.
Honestly I need to re-check the licensing for this specifically but as standard practice itā€™s good karma to attribute code snippets where applicable.
Iā€™m sure Graham can clear this up in a jiffy and Iā€™m just wasting forum space.
As far as your other point goes, YES we need an Oopsy forum header aside from ā€œIntegrationsā€ because I imagine there will be an increasing amount of activity moving forward this year.

1 Like

Agreed!

Weā€™ll set up a dedicated Oopsy category today.

1 Like

The Oopsy category is live!

I moved all existing Oopsy posts into the new category.

1 Like

Hey there,

sorry if this has been brought up already, but is there a way to incorporate buffer objects? Apparently, Oopsy doesnā€™t allow buffer object. Also not sure on how to access sd card files?
Any ideas?

you can use [data] instead for storing values/recording input for granular verbs and beat slicing things

-at this time there is no way for [Oopsy] to access the SD card and load anything into [buffer]
however, this is being worked on by (not me)

Yep, the SDcard support is waiting on some changes upstream in libdaisy ā€“ itā€™s tracked in the github issues here SDcard: using to fill [data] objects Ā· Issue #16 Ā· electro-smith/oopsy Ā· GitHub but nothing to report yet.

BTW probably this conversation should be in #integrations:oopsy-max-msp-gen

1 Like