gadgets-OSC/generators/moresinus.pl

64 lines
1.3 KiB
Perl
Executable File

#!/usr/bin/perl -w
use Net::OpenSoundControl::Client;
use Data::Dumper qw(Dumper);
use Getopt::Std;
my $client;
my $verbose = 0;
my $dhost = "localhost";
my $dport = 9000;
# ----------------------------------------------------------
sub AskErase($)
{
my $b = shift;
$client->send(['/joystick/b', 'i', $b, 'i', 1]);
$client->send(['/joystick/b', 'i', $b, 'i', 0]);
}
# ----------------------------------------------------------
print "--- Moresinus $$ ---\n";
getopts('d:v', \%options);
if (defined $options{"d"}) {
# print Dumper $options{"d"};
($dhost, $dport) = split /:/, $options{"d"};
}
$verbose = 1 if (defined $options{"v"});
print "trashing ", $dhost, " on port ", $dport, "\n";
$client = Net::OpenSoundControl::Client->new(
Host => $dhost, Port => $dport)
or die "Could not start client: $@\n";
print Dumper $client if $verbose;
# ----------------------------------------------------------
AskErase(50);
srand($$);
print " ", rand(1000), "\n";
my ($t, $v, $r1, $r2, $phi);
$r1 = rand(100) + 1600;
$r2 = rand(100) + 3200;
$phi = rand(3124) / 1000.0;
print " $r1 $r2 $phi\n" if $verbose;
for ($t = -32000; $t < 32000; $t+=150) {
$v = 15000 * (sin($t / $r1) + cos($phi + ($t / $r2)));
# print $t, " --> ", $v, "\n";
$client->send(['/joystick/xy', 'i', $t, 'i', $v]);
sleep 1 if (($t % 16) == 0);
}