| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- (
- // Function to test iDraw OSC connection
- ~testiDrawConnection = {
- var interfaces, ip;
- // Log local IP and port information
- "SuperCollider OSC server info for iDraw OSC connection:".postln;
- "Hostname: %".format(Platform.myHostName).postln;
- "Local IP addresses:".postln;
- try {
- interfaces = "ifconfig".unixCmdGetStdOutLines;
- interfaces.do { |line|
- if(line.containsi("inet ") && line.containsStringAt(0, "inet").not, {
- line = line.replace("\t", "").replace(" ", "");
- ip = line.findRegexp("inet([0-9.]+)")[1][1];
- " %".format(ip).postln;
- });
- };
- } { |err|
- "Could not detect network interfaces: %".format(err).postln;
- };
- // Alternate way to find IP addresses that might work better on some systems
- "Alternative method to find IP addresses:".postln;
- try {
- thisProcess.platform.getNetworkNameList.do { |netname|
- var addr = netname.findRegexp("\\d+\\.\\d+\\.\\d+\\.\\d+");
- if(addr.size > 0, {
- " %".format(addr[0][1]).postln;
- });
- };
- } { |err|
- "Could not use network name list method: %".format(err).postln;
- };
- "OSC Port: 57120".postln;
- "".postln;
- "To connect from iDraw OSC:".postln;
- "1. Ensure iPad/iPhone is on the same WiFi network".postln;
- "2. Open iDraw OSC app".postln;
- "3. Set the host/IP to one of the above addresses".postln;
- "4. Set the port to 57120".postln;
- "5. Ensure iDraw OSC is sending messages with these addresses:".postln;
- " - /touch (x, y, pressure)".postln;
- " - /pen (pen type)".postln;
- " - /color (r, g, b)".postln;
- };
- // Function to simulate iDraw OSC messages for testing
- ~simulateiDrawTouch = { |duration=10|
- var endTime, penTypes, penType, r, g, b;
- endTime = SystemClock.seconds + duration;
- "Simulating iDraw OSC touch events for % seconds".format(duration).postln;
- // Start the effects chain if needed
- if(~effectsChain.isNil, { ~startEffectsChain.value; });
- // First set a pen type
- penTypes = [\pen, \monoline, \marker, \pencil, \crayon, \fountainPen, \waterColor];
- penType = penTypes.choose;
- OSCdef(\penTypeOSC).value(['/pen', penType], nil, nil, nil);
- // Set a random color
- r = 1.0.rand;
- g = 1.0.rand;
- b = 1.0.rand;
- OSCdef(\colorOSC).value(['/color', r, g, b], nil, nil, nil);
- // Generate simulated touch events
- fork {
- while { SystemClock.seconds < endTime } {
- var x = (-0.5 + 1.0.rand);
- var y = (-0.5 + 1.0.rand);
- var pressure = 1 + 7.rand;
- // Send touch message
- OSCdef(\touchOSC).value(['/touch', x, y, pressure], nil, nil, nil);
- // Wait random time between touch events
- rrand(0.1, 0.3).wait;
- // Occasionally change pen type or color
- if(0.1.coin, {
- penType = penTypes.choose;
- OSCdef(\penTypeOSC).value(['/pen', penType], nil, nil, nil);
- "Changed to pen type: %".format(penType).postln;
- });
- if(0.1.coin, {
- r = 1.0.rand;
- g = 1.0.rand;
- b = 1.0.rand;
- OSCdef(\colorOSC).value(['/color', r, g, b], nil, nil, nil);
- "Changed to color: % % %".format(r, g, b).postln;
- });
- };
- "iDraw OSC simulation complete".postln;
- };
- };
- // Run these functions directly
- "iDraw OSC connection test functions loaded.".postln;
- "To test connection info, run: ~testiDrawConnection.value".postln;
- "To simulate iDraw OSC events, run: ~simulateiDrawTouch.value(20)".postln;
- )
|