LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: zentara Date: Fri Dec 8 08:04:24 2006 Subject: Re: accessing midisport 2x2 using ALSA & MIDI::Music...
On Thu, 7 Dec 2006 22:31:38 -0500, rbolen@carolina.rr.com ("Rick Bolen")
wrote:
>I'm trying to get MIDI::Music to send midi data out to the USB connected
>Midisport 2x2. Ifinally got the Midisport initialized via hotplug and
>firmware dowloading, but...
>
>I'm using alsa on Debian testing, and MIDI::Music wants to write to
MIDI::Musis says it needs OSS, not alsa.
>/dev/music (which doesn't exist). I tried creating symlinks from /dev/music
>to /dev/midi[0-3] but MIDI::Music still can't find the port.
>
>Any way to get the data moving?
>Rick
This is from testing a few years ago, I don't have a setup right now
to test, but..............
If you just want to test the USB connection, it usually is device 5.
This script uses MIDI::Realtime to play keys from the computer
keyboard, but you can assign midi_device = 5 and maybe modify the
loop, to get input from the midi keyboard.
Also do "amidi -h" and google for amidi, to see how to do it
with amidi.
#!/usr/bin/perl
use warnings;
use strict;
use MIDI::Realtime;
use Term::ReadKey;
ReadMode('cbreak');
#this works on linux with an SBlive, Alsa 1.0.4, kernel 2.4.22
# on my system, it has a bug when usb-hotplug and usb-midi are used
# and the hotplug-blacklist is not setup properly
my $midi = MIDI::Realtime->new(dev=>'/dev/sequencer',
midi_device=> 5); #1,2,3,4
#5 for external keyboard
#thru USB UM-1 connector
while(1){
my $char;
if (defined ($char = ReadKey(0)) ) {
print ord($char),"\n"; # input was waiting and it was $char
$midi->patch(ord($char)); #change instrument, 127 gives
"exploding keyboard" :-)
$midi->note(50,1,127); #play note
} else {
# no input was waiting
}
}
ReadMode('normal'); # restore normal tty settings
__END__
to send to the keyboard
#!/usr/bin/perl
use warnings;
use strict;
use MIDI::Realtime;
use diagnostics;
#works
my $midi = MIDI::Realtime->new(dev=>'/dev/sequencer',
midi_device=> 5); #1,2,3,4
#5 is USB midi
# Play note 47 with maximum velocity on channel 1
$midi->note(47,1,127);
# Now have some fun with randomness
my @notes = (37 .. 50);
# use all the channels (with extra drums)
my @channels = (1 .. 16, 10, 10, 10);
my @velocities = (70 .. 100);
for (0 .. 127) {
$midi->note($notes[rand(@notes)],
$channels[rand(@channels)],
$velocities[rand(@velocities)]
);
# Wait for a tenth of a second
select(undef,undef,undef, 0.10);
}
__END__
--
I'm not really a human, but I play one on earth.
http://zentara.net/japh.html
| Navigate in group perl.midi at sever nntp.perl.org | |
| Previous | Next |
| © No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |