Changeset 22002 for lang/perl/Music-AutoPhrase
- Timestamp:
- 10/24/08 01:28:26 (5 years ago)
- Location:
- lang/perl/Music-AutoPhrase/trunk
- Files:
-
- 3 added
- 2 modified
-
lib/Music/AutoPhrase/BeatPattern.pm (modified) (1 diff)
-
lib/Music/AutoPhrase/Channel.pm (modified) (5 diffs)
-
lib/Music/AutoPhrase/NoteSelector.pm (added)
-
t/12_channel.t (added)
-
t/13_selector_base.t (added)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Music-AutoPhrase/trunk/lib/Music/AutoPhrase/BeatPattern.pm
r21910 r22002 17 17 BEAT_CHAR_ON_REGEXP => '(1|2|3|4|9)', 18 18 }; 19 20 use base 'Exporter'; 21 our @EXPORT = qw/ 22 BEAT_STRING_LENGTH 23 /; 19 24 20 25 sub new { -
lang/perl/Music-AutoPhrase/trunk/lib/Music/AutoPhrase/Channel.pm
r21910 r22002 6 6 7 7 use List::MoreUtils qw/uniq/; 8 use Music::AutoPhrase::BeatPattern; 8 9 9 10 use base 'Class::Accessor::Fast'; … … 11 12 inst 12 13 vol 13 octav_range14 blocks15 selector14 _beats 15 _octav_range 16 _selector 16 17 /); 17 18 … … 19 20 MIN_OCTAV => 1, 20 21 MAX_OCTAV => 8, 22 23 DEFAULT_INST => 1, 24 DEFAULT_VOL => 80, 25 DEFAULT_OCTAV_RANGE => [qw/4 5 6/], 21 26 }; 27 28 sub new { 29 my ($class, %arg) = @_; 30 31 my $self = {}; 32 bless $self, $class; 33 34 # set params and defaults 35 $self->inst($arg{inst} || DEFAULT_INST); 36 $self->vol($arg{vol} || DEFAULT_VOL); 37 $self->octav($arg{octav} || DEFAULT_OCTAV_RANGE); 38 $self->_beats([]); 39 40 return $self; 41 } 22 42 23 43 sub push_block { … … 29 49 return; 30 50 } 31 my $bl = $self->b locks;51 my $bl = $self->beats; 32 52 push @$bl, $block; 53 $bl->beats($block); 33 54 } 34 55 35 sub set_octav_range{56 sub octav { 36 57 my ($self, $range) = @_; 58 return $self->_octav_range if !defined $range; 37 59 38 if (!defined $range || ref($range) ne 'ARRAY') { 60 if (!ref($range) && $range =~ /^[1-8]$/) { 61 $range = [qw/$range/]; 62 } 63 if (ref($range) ne 'ARRAY') { 39 64 warn "range must be arrayref"; 40 65 return; … … 51 76 push @selected_octav, $octav; 52 77 } 53 $self-> octav_range(\@selected_octav);78 $self->_octav_range(\@selected_octav); 54 79 } 55 80 81 sub _push { 82 my ($self, $bp) = @_; 83 84 if (!ref($bp) && length($bp) == BEAT_STRING_LENGTH) { 85 $bp = Music::AutoPhrase::BeatPattern->new($bp); 86 } 87 if (!ref($bp) || !$bp->isa('Music::AutoPhrase::BeatPattern')) { 88 warn "beat patter [$bp] musct be a BeatPattern object"; 89 return; 90 } 91 92 my $beats = $self->_beats; 93 push @$beats, $bp; 94 $self->_beats($beats); 95 } 96 97 sub push { 98 my ($self, @beats) = @_; 99 $self->_push($_) for @beats; 100 } 101 102 sub beats { 103 return @{$_[0]->_beats()}; 104 } 105 106 sub selector { 107 108 } 56 109 57 110 1;
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)