9 template <
class Track >
14 using size_type =
typename std::vector< value_type >::size_type;
17 : tracks_( size, Track( track_size ) )
33 return tracks_.begin();
38 return tracks_.begin();
53 return tracks_.size();
56 void set_steps( std::size_t new_steps, std::size_t copy_offset = 0 )
58 for (
auto& track : tracks_ )
60 track.set_steps( new_steps, copy_offset );
66 for (
auto& track : tracks_ )
68 track.set_steps_per_beat( steps );
74 for (
auto& track : tracks_ )
76 track.set_pulses_per_quarter_note( pulses_per_quarter );
82 for (
auto& track : tracks_ )
84 track.set_loop_length( loop_length );
90 for (
auto& track : tracks_ )
92 track.set_speed_multiplier( speed );
96 template <
class Sender >
99 for (
auto& track : tracks_ )
101 track.send_messages( message, sender );
106 std::vector< value_type > tracks_;
109 template <
class Track >
111 make_pattern( std::size_t number_of_tracks, std::size_t number_of_steps,
116 std::uint8_t channel = 0;
117 for (
auto& track : pattern )
119 track.set_channel( channel++ );
typename std::vector< value_type >::size_type size_type
Definition: pattern.hpp:14
pattern_t< Track > make_pattern(std::size_t number_of_tracks, std::size_t number_of_steps, std::size_t pulses_per_quarter_note=default_pulses_per_quarter_note) noexcept
Definition: pattern.hpp:111
void set_pulses_per_quarter_note(std::size_t pulses_per_quarter)
Definition: pattern.hpp:72
auto end() const
Definition: pattern.hpp:46
void set_steps(std::size_t new_steps, std::size_t copy_offset=0)
Definition: pattern.hpp:56
value_type & operator[](size_type i)
Definition: pattern.hpp:21
size_type size() const noexcept
Definition: pattern.hpp:51
Track value_type
Definition: pattern.hpp:13
std::conditional_t< greater_than< number_of_bytes, 0 >::value, std::array< std::byte, number_of_bytes >, std::vector< std::byte > > message_t
Definition: message_type.hpp:18
auto end()
Definition: pattern.hpp:41
constexpr void set_speed_multiplier(double speed) noexcept
Definition: pattern.hpp:88
auto begin()
Definition: pattern.hpp:31
pattern_t(size_type size, size_type track_size)
Definition: pattern.hpp:16
void set_steps_per_beat(std::size_t steps)
Definition: pattern.hpp:64
Definition: pattern.hpp:10
constexpr void set_loop_length(std::size_t loop_length) noexcept
Definition: pattern.hpp:80
void send_messages(message_t< 1 > message, const Sender &sender)
Definition: pattern.hpp:97
auto begin() const
Definition: pattern.hpp:36
const value_type & operator[](size_type i) const
Definition: pattern.hpp:26
constexpr auto default_pulses_per_quarter_note
Definition: constants.hpp:10