< Back to IRCAM Forum

script working but max number of iterations exceeded in connection solver error

HELLO!

I managed to get a functional script! It implements a free-circ-plate and a single-point, with a felt connections.

I think the plate pitch and the single-point frequency might need to be related. Does anyone have information about this?

Other than that, this is the reason why I am posting:

If the plate is excited at a reasonable frequency, say, more than 1 every 2 or 3 seconds, after a few iterations, an error occurs, and the script needs to be reloaded:

“maximum number of iterations exceeded in connection solver”.
then, I get information about the plate vertical position, which is not supposed to change (fix the plate into space), and the felt (equivalent to strike) position at .5 and 1.

Here is the script, and the patch, and a screen capture of the error message.

I am not sure whether it’s the code (but since it works at least at a slow pace, I doubt it), the physics of the objects, the speed of the point motion, or the implementation in Max. Any help will, as usual, be greatly appreciated.

Thanks!

  
new()  
set_precision('float')  

Point1_c1 = make_controller('DYNAMIC',1,-1,1,'Point1@modes')  
Point1_c2 = make_controller('DYNAMIC', 1, -1,[1000.0],'Point1@freqs')  
Point1_c3 = make_controller('DYNAMIC', 1, -1,[1.000000],'Point1@loss')  
Point1_c4 = make_controller('DYNAMIC', 1, -1,[1.000000],'Point1@amps')  
Point1 = make_object('single-point',Point1_c1, Point1_c2, Point1_c3, Point1_c4)  
Point1_pos_in_1 = make_controller('DYNAMIC',1,-1,[1.000000],'Point1@access-in-1-position')  
Point1_access_in_1 = make_access(Point1,Point1_pos_in_1,'NORMAL')  
Point1_pos_out_1 = make_controller('DYNAMIC',1,-1,[1.000000],'Point1@access-out-1-position')  
Point1_access_out_1 = make_access(Point1,Point1_pos_out_1,'NORMAL')  

MyPlate_c1 = make_controller('DYNAMIC',1,-1,160,'MyPlate@modes')  
MyPlate_c2 = make_controller('DYNAMIC',1,-1,0.5,'MyPlate@radius')  
MyPlate_c3 = make_controller('DYNAMIC',1,-1,0.001,'MyPlate@thickness')  
MyPlate_c4 = make_controller('DYNAMIC',1,-1,7800,'MyPlate@density')  
MyPlate_c5 = make_controller('DYNAMIC',2,-1,[2.000000 11.000000],'MyPlate@young')  
MyPlate_c6 = make_controller('DYNAMIC',1,-1,0.3,'MyPlate@poisson')  
MyPlate_c7 = make_controller('DYNAMIC',1,-1,0.2,'MyPlate@freq-loss')  
MyPlate_c8 = make_controller('DYNAMIC',1,-1,0.2,'MyPlate@const-loss')  

MyPlate = make_object('free-circ-plate',MyPlate_c1,MyPlate_c2,MyPlate_c3,MyPlate_c4,MyPlate_c5,MyPlate_c6,MyPlate_c7,MyPlate_c8, )  
MyPlate_pitch = make_controller('DYNAMIC',1,-1,1000.000000,'MyPlate@pitch')  
set_pitch(MyPlate,'radius',MyPlate_pitch)  

MyPlate_pos_in_1 = make_controller('DYNAMIC',2,-1,[0.500000 0.0000],'MyPlate@access-in-1-position')  
MyPlate_access_in_1 = make_access(MyPlate,MyPlate_pos_in_1,'NORMAL')  
MyPlate_pos_in_2 = make_controller('DYNAMIC',2,-1,[0.0000 0.000000],'MyPlate@access-in-2-position')  
MyPlate_access_in_2 = make_access(MyPlate,MyPlate_pos_in_2,'NORMAL')  
MyPlate_pos_out_1 = make_controller('DYNAMIC',2,-1,[0.500000 0.00000],'MyPlate@access-out-1-position')  
MyPlate_access_out_1 = make_access(MyPlate,MyPlate_pos_out_1,'NORMAL')  
MyPlate_pos_out_2 = make_controller('DYNAMIC',2,-1,[0.500000 90.000],'MyPlate@access-out-2-position')  
MyPlate_access_out_2 = make_access(MyPlate,MyPlate_pos_out_2,'NORMAL')  

Out1_c1 = make_controller('DYNAMIC',1,-1,1,'Out1@gain')  
Out1 = make_point_output(MyPlate_access_out_1,0,Out1_c1)  
Out2_c1 = make_controller('DYNAMIC',1,-1,1,'Out2@gain')  
Out2 = make_point_output(MyPlate_access_out_2,1,Out2_c1)  
PlateVPosition_c1 = make_controller('DYNAMIC',1,-1,0,'PlateVPosition@position')  
PlateVPosition_c2 = make_controller('DYNAMIC',1,-1,1,'PlateVPosition@weight')  
PlateVPosition = make_connection('POSITION',MyPlate_access_in_2,PlateVPosition_c1,PlateVPosition_c2)  
FeltVPosition_c1 = make_controller('DYNAMIC',1,-1,1,'FeltVPosition@position')  
FeltVPosition_c2 = make_controller('DYNAMIC',1,-1,1,'FeltVPosition@weight')  
FeltVPosition = make_connection('POSITION',Point1_access_in_1,FeltVPosition_c1,FeltVPosition_c2)  

Felt_c1 = make_controller('DYNAMIC',1,-1,0.01,'Felt@thickness')  
Felt_c2 = make_controller('DYNAMIC',2,-1,[1.000000 9.000000],'Felt@F0')  
Felt_c3 = make_controller('DYNAMIC',1,-1,6,'Felt@alpha')  
Felt_c4 = make_controller('DYNAMIC',1,-1,0.5,'Felt@epsilon')  
Felt_c5 = make_controller('DYNAMIC',1,-1,1e-05,'Felt@tau')  
Felt_c6 = make_controller('DYNAMIC',1,-1,1,'Felt@weight')  
FeltConnection = make_connection('FELT',Point1_access_out_1,0.00000,MyPlate_access_in_1,0.500000,Felt_c1, Felt_c2, Felt_c3, Felt_c4, Felt_c5, Felt_c6)  

  
----------begin_max5_patcher----------  
3311.3oc2b02iaaaF+uu7ofvX.MYymAIE0KNXcKqMnXCXEK.Kq.C4BNHaQ6S  
sxRZRxWx0hlO66gjRxR1Rxz9rrkS.xcmHojdd9wm2Io9sWbynYQelmNB8ZzG  
P2byu8hatQ1jngaxu9lQqb+77.2T4vFsHHJb8pQiy6xOzeEbIzCdBF9Gonin  
0o7E9AY7DQmEMC2peX.OKsZiwtYyevOb48I74YJZg5XOwbLhXZJ9ks8D7XDk  
NAi9X9836IolnY+7sT6Qad5QqyJd7zxGeh6JNPH2yCcmEvkDadepgm8TLW8d  
GMZLZzL2vkiJeSoYOotmQEulEQIqbkDp03RDp.FHSvh198W7BwOFqIpthml5  
tjW7Fx3eV97G8C7fr2j8f+7eIDFA5OPF0DPR6.HmRj.4Tr.BI3ochjVMijjV  
QqlPoif8C4eBd+6v8vrVRDhJjq1f8gYo9+p7UQD7zgAGLl.MXVFBXvRAF3lA  
ClY02YHHBI65uk36Ff9tn.uCDqZUp5HvqrnkKC3iNPkpbl2vpfs6f4ocycGj  
NkeXVOKnjF5Fm9PT1WPlmJAECAVYgkVdrM6BqHjSqfBXg0suAr.+P9WNoPko  
iTfxvoKnhdbPEsMnJ0eYnaPm1rOBLa15rrnviT6xQocYT7ylfAamKnsiEqCm  
m4ug+dzMobhX697hV45GJ5xDuQvXYhuWZFO99mx86a1ETMa47nfnDEmfm3Lt  
xOHUvmVgTSBS46RJfYZ2LlNsEKVrNrXQpvPhqMxuVncTinMj+abi+UUdnEc4  
wp3JzI1hRrUNEZVCyqQRliq+iMOS2G4d26lkk3CBx7M+UZtPQtTgXlOXMOZQ  
QyEsWEqff8V1lzQsABVeSxzZjEniQC84G9nepewripeo3sT.WwetddwQfKkz  
Bj.KmC.P.9MaBEyLYRHQ0DiNwhXXYXsYTLPRxzxgXWoMk7c9knOdBCg6V5jC  
MnMFwQFzFUZL0D2ULaWpP1ZicoSFi.VVntdjrsgjesL6hqYCq.UEFL.ItFYX  
i8xv1RmELitXXxA5YTZuommpEIm7SuKJ0Wnp+l37+nRRJO2.KnxHKHNTopog  
cWgVXdhCWuuAuDtq2niJ6k7b4L5TAghuP7a85CnavSDK4T8T68avyw5xkt+I  
b9+esNi9lkPzUGQR8DSrRwPBTNNcBWjAlfOv3jmKiqrUtGF+RoALOZ0JNjx6  
NlKwnuE8fahmnTN2El4tFtNyeEGMOJLMyMLC8vSPreI7TenedbpOnK8s0ZzM  
H9AW3173wPKoBysyi3KVLpVjqqCkuQyCUIDiyKzlxfqROzl0RRLFMiu3SBHF  
3+HehPJ4KMkmxt8pc8vvxBKRURPLGkmEqVDgZoxhlZjSQG4pt4uD+uLEg.+z  
po82agwuC30Qf7cO1BtC2PeqVoRb7V6RG+a0uqb92pwd8CgXI.LpHD+BXo1f  
VCCpTJisU1BGgLG+W8bmevRTDkSKlL.GDyr3mMpyf6Scl1L7.Zyr+XbzmdIP  
hiu07UiNR6BjoUsKzVfXNzKAO9t.2LNRH1bW36KqWNPhj6BeKODBM8IjAEiQ  
2E9eA6iKQnOXLgfL+3Xnk2E4mlBlRwSn1vkeWh+xGxTO.YhjDwfdq6pX.Wxa  
xATXaxlq8AhsVV4E2P8KG6xRczn7i8k.aCix3uFEEF7DZcJGw+bbTHLtTDDY  
D5IIZtJxacv5TzKcC8PKf7Bp3g5u9pFQJ5AhTSyEBMyi9U8q1pvl4k.nDIDU  
Q760R4QzDrPH7um63GnATVDhvIln+AzMvybroPHs.udM58OE6O2M.va2YQOx  
QzxQ9mlBOox3ADOqYAQy+EtG.LnEqE2hxUjWkGxhjnUp25jo4OI5DypOHz6g  
vPd812BgeqshVu0DkxmOQdy.zyuEytK7tvFmWcNz4UBQI5qlVkqICgzRPGVF  
Wh4Uz+FH4.9suST2ID5s7EtqAQ7eR33MELM7xEI7+WJ5adIkhgjzvfVMFhNE  
C7AF+pWcWH5ky9jnemIH1Djn5HSD0rSz0KAyJhtjs3XYA+zFaC+zhPUiAAi5  
sQgeSFZ9CPpJbTXzmlbRB3yxQA8RaOT0uZKbOKReh7oA9d7jC0wjISYDHWBR  
svVBAoFKYD63WRKYLZv8DuNq5sTVaiI3yb1TO2JqXUUaiN0py0BjLLqrxZPW  
ccw6FrZE8IuD2kUm17y3qTi8OyWEm8ze4fWSGUDOzb2x1VckvoQK1lLN10Lc  
7osLdsT6xXz2CSqIQAA7jzCQ9hse4KUMplR5b4ScdVqIXkEEQU79IVXioT53  
xUFn8UmoUzsJmo1.KUS3Zge.+Q.rDKvwF4GPFLNtRy0yEak6OqHS6xDY.nT0  
DsroDtX8OT2+l0GwMAv2L.bWmnnuOWVCL4NsArbFt1u1RlTPRalRTKLKQYj2  
Tk9qAqB7HVoNUrDUSoaTTLOzOTDaB3YzMKm3J61S4K79lEXp2+B247Vu41m3  
UK9UTnfRpg2x0JK+c9Ajj+bpxOx9Ccia3VAAO.YZoyTfOWmNyMoxhQULGMJK  
JJndWk2W.eQVd2PlBgaAjYQws2oLii16dVDz4ptd1xdRgThU8dOn0mcunFB0  
GGXlL2LP8G+mcC8WAYPIJGkjcwkcpLV8P5bgIhZ7qpmGanGOPNdN+S9dYOju  
Dwa5AFtebgbznx4XO+k7zr5sk4tLsdK6niBMsdVtd58f49XQdf0GPss3VUkx  
pFLq0dWFN2Zgehb8DtlgviypNfVTGZy2Sa1QsUterJiLqd3M63o1daZnCspV  
8XuGu1M4IpRkWJ7HcL.c83uqiz+Gg2dDsG.YCKU8LTVFM1KHa7r.YbuihcHt  
lglgB5CHTImpJmJbgY2PnA8YAgztjSkqly3yi7ZGHMXH1c9u.V9fHP5A.mpx  
7Qs.Ppfs5Tlkze.dY8qquu0tLv97.+3iGzM5FzKq+IcypT1IpiutMG2ANmN2  
Mfq.5iGtszCtU6BFBCuWyJSutw6pIz1ZRs0SrMe+OQU6doQiGMtxFhR6K2by  
j7xOuyyq50jZWCYZQMKtfke6atWwQBHuF5Ueb3Fdm6Pj0v7Cw7XtnioUkbd5  
Txwocwh5FEZMEd8SiuGkfj.TUVo5hltdpoCFaaXXOpMXEqErRYaJXamnJ6HU  
1ptgwaIreUp+pvEOi18f7fgrE85ov8Mx2Z9FRUBK68BvFW2F7TuzVkWMrYR4  
UqpiHNIJKRPmki6GY+yIR1kfG87hecpklB13CN99yfXaWYO8i0Je7oTlUYiM  
G51e1SFjAd1Scgh+fHBWzGjA77wd.KY4foz9p0dwRpy.GK61cjAncKTucNV2  
QLiCxcDc5o1T3fvWTO5GB6nWhNzq75NsZWqiaxzgmsYiJdPfLUKPVoxanV1a  
qNvXqu1qsGoOpSBw5PpsG0351hZd.9lGqE0BEecsnxtBsnt2fNsjXHq2C5TU  
7t7EUd+fsI8pKnyHO2fmR+ROnWmue4x0qs1qf5UsZMipxCx3XUqcvGhVMw5J  
TqtKW3yC3tI8fGbh5LzSHT0houOW3le0VNXwxfpV3kSulNsxJcXZtWg29Ciq  
cNgtjQJ0e1SycFw1aASmdMuFnAnY8.D5TQNc+KAJoGWQtcNTaWFftnVotw8T  
Zp4APohY0Y+90ne0Z+0Oimze.LIeWnrW.13qV.NAHHNZdVRf7TZc5ikH2+lk  
dqmOg0uVONDzdy9sSrWzaYiVI4XQ+MOMjFsNYdAAjGpDpN26wSy7CK2.heXS  
RQaMvG7873ga6lwyOUdrHjsqkLygRxhMekVzrX0CFJzLQSZVrUFPjgCMSzkl  
oWW3rXKLfLttvYIMyFFzLVSblZOXzAkvm15fCDZ1QWcPxvglY5pC5LbnYCco  
4gievFHkAuePIMSttnY5zCwmhNz7J+ZeYsXL0mNTh7avJEu4p5uz9mS0NxJi  
gyri00mmHptVHaf4tTzLQWblvFNzrt3LY338jnqmHxvwSDgd8kEIQ2ntMGVj  
rVhFCGyy5RxmJTV8EkbyGwR0W2G0oPriOsOGzokaemhx1NhlKChl4FjeF5Je  
.ccj61bt7N9O1Ns84AaqZrchNo64GgNVmmDYiA5AcusuN54KuNXtfdnGrcp5  
iVT9I1R8AVr0Okfcer106Cc0dfBY20KfnBY1VwNGe1M1kZZzZ4OcWU4cUi2Y  
lRW5w1QC5YJ8rQOSqkgSaw0c9vGFUC7gYd9nGSMnmslT6S5wwVG5AedoGhNz  
C47POVZfONmO4Y8nmy37kN1COele1hyuzjio4fhbXLcbd4TcoA5W5YXI7nE5  
b1nl5EYpqIKx4idH5POzFnGxomdFVBOTcbjVufV8K8XMrfmgkgYchJbqPi5a  
xgnC4PNajCUGM8yC5PzIGGF47RO6a5ZKy28okPcLDZc1DdzgZLO1DtT4uu0G  
.MAkr0G9rs9nms6G7r1+Xms8G5L3M+6u3+GvdDXK  
-----------end_max5_patcher-----------