( // Function to test mobile connection ~testMobileConnection = { // Log local IP and port information "SuperCollider OSC server info:".postln; "Hostname: %".format(Platform.myHostName).postln; "Local IP addresses:".postln; try { var interfaces = "ifconfig".unixCmdGetStdOutLines; interfaces.do { |line| if(line.containsi("inet ") && line.containsStringAt(0, "inet").not, { line = line.replace("\t", "").replace(" ", ""); var ip = line.findRegexp("inet([0-9.]+)")[1][1]; " %".format(ip).postln; }); }; } { |err| "Could not detect network interfaces: %".format(err).postln; }; "OSC Port: 57120".postln; "".postln; "To connect from a mobile device:".postln; "1. Ensure mobile device is on the same WiFi network".postln; "2. Use one of the IP addresses above in your mobile OSC app".postln; "3. Set the port to 57120".postln; }; // Function to simulate mobile touch for testing without a mobile device ~simulateMobileTouch = { |duration=10| var endTime = SystemClock.seconds + duration; var touchId = 1000; "Simulating mobile touch events for % seconds".format(duration).postln; // Start the effects chain if needed if(~effectsChain.isNil, { ~startEffectsChain.value; }); // Generate simulated touch events fork { while { SystemClock.seconds < endTime } { var x = 1.0.rand; var y = 1.0.rand; var pressure = 0.3 + 0.7.rand; var state = [\began, \moved, \ended].choose; // Create realistic touch sequences if(state == \began, { touchId = touchId + 1; OSCdef(\touchOSC).value(['/touch', touchId, x, y, \began, pressure], nil, nil, nil); // Simulate some movement for this touch fork { var moveCount = rrand(3, 8); moveCount.do { 0.1.wait; // Slight movement from original position x = (x + 0.1.rand2).clip(0, 1); y = (y + 0.1.rand2).clip(0, 1); OSCdef(\touchOSC).value(['/touch', touchId, x, y, \moved, pressure], nil, nil, nil); }; // End the touch 0.2.wait; OSCdef(\touchOSC).value(['/touch', touchId, x, y, \ended, pressure], nil, nil, nil); }; }); // Wait random time between new touch events rrand(0.2, 1.0).wait; }; "Mobile touch simulation complete".postln; }; }; // Run these functions directly "Mobile connection test functions loaded.".postln; "To test connection info, run: ~testMobileConnection.value".postln; "To simulate mobile touch events, run: ~simulateMobileTouch.value(20)".postln; )