in reply to Converting 7 & 8-bit values
Here's a pure perl way to do it (Check it. I may have misunderstood you).
There several changes that would speed this up, but if you want the absolute fastest way, you'd be better looking at Inline::C for this.
sub toMidi { my $out = ''; for my $batch ( unpack '(a7)*', $_[ 0 ] ) { $batch .= chr(0) x ( 7 - length( $batch )); my @bytes = unpack 'C7', $batch; my $h = 0; $h = ( $h >> 1 ) | ( 0x80 & $bytes[ $_ ] ) for 0 .. 6; $bytes[ $_ ] &= 0x7f for 0 .. 6; $out .= pack 'C8', $h >> 1, @bytes; } return $out . chr( 0xf7 ); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Converting 7 & 8-bit values
by fluffy (Scribe) on Dec 03, 2006 at 17:14 UTC |