Remastersys and AVLinux Forum
June 19, 2013, 08:36:04 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Remastersys 3.0.4-2 for Ubuntu Lucid and Newer including Quantal Released
 
   Home   Remastersys Home Remastersys downloads Donate Login Register AV LINUX Home Help Search  
Pages: [1]
  Print  
Author Topic: Tweak: Control Ardour transport with Fingerplay MIDI from Android  (Read 1387 times)
0 Members and 1 Guest are viewing this topic.
adaw
Newbie
*
Offline Offline

Posts: 4


« on: January 11, 2011, 06:43:32 PM »

Just managed to use Fingerplay MIDI to control the Ardour transport.  Grin

Here is what I got:

I can use the pads tab from fingerplay midi to control ardour transport.
See script for configured commands.

Get/Install Fingerplay MIDI:
http://thesundancekid.net/blog/fingerplay-midi/
Market link is there.

Get/Install Perl Net::OpenSoundControl
http://search.cpan.org/dist/Net-OpenSoundControl/
Download unpack, compile, install

IP of Android phone must resolve to hostname.
eg. add to /etc/hosts (192.168.0.123 is the Android IP):
192.168.0.123 andi

Fingerplaymidi settings
ServerType: OSC Server
ServerAddress: IP_of_Ardour_PC:8888

save script as fingerplay-ardour.pl, make it executable:
Code:
#!/usr/bin/perl

use Net::OpenSoundControl::Server;
use Data::Dumper qw(Dumper);
use Net::OpenSoundControl::Client;

# pad channels
# 30 31 32 33 34
# 25 26 27 28 29
# 20 21 22 23 24

# http://www.ardour.org/osc_control
# ... recording state). !currently toggles on but not off for 2.0 branch.
#
# pad mappings
# loop_toggle transport_play transport_stop rec_enable_toggle
# goto_start prev_marker add_marker next_marker goto_end

%f2a = (
30 => 'loop_toggle',
        32 => 'transport_play',
        33 => 'transport_stop',
        34 => 'rec_enable_toggle',
        25 => 'goto_start',
26 => 'prev_marker',
27 => 'add_marker',
28 => 'next_marker',
        29 => 'goto_end'
);

my $client = Net::OpenSoundControl::Client->new(
      Host => "127.0.0.1", Port => 3819)
      or die "Could not start client: $@\n";

sub dumpmsg {
my ($sender, $message) = @_;
print "\n\n";     
print "[$sender] ", Dumper $message;
$fingerch=@$message[0];
$fingert=@$message[1];
$fingerv=@$message[2];
$fingerch=~ s%/fingerplay/control/%%;
print "fch: $fingerch\n";
print "fct: $fingert\n";
print "fcv: $fingerv\n";
print "f2a: $f2a{$fingerch}\n";
if (( defined $f2a{ $fingerch }) && ( $fingerv == 127 ))
{
print "\nSEND: /ardour/$f2a{$fingerch}\n";
$client->send(["/ardour/$f2a{$fingerch}", '', 0]) ;
}
}

my $server = Net::OpenSoundControl::Server->new(
Port => 8888, Handler => \&dumpmsg) or
die "Could not start server: $@\n";

$server->readloop();

Start script in terminal
Start Ardour, enable osc
Fingerplay MIDI: Connect to Server

Enjoy!

Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!