sequencer
system_common.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <sequencer/assert.hpp>
7 
8 #include <cstdint>
9 
11 {
12  constexpr message_t< 3 > song_position_pointer( std::uint16_t position_in_16th_notes ) noexcept
13  {
14  const auto hex_value = uint16_to_lsb_msb( position_in_16th_notes );
15  return {byte::song_position_pointer, hex_value.first, hex_value.second};
16  }
17 
18  constexpr message_t< 2 > song_select( std::uint8_t song_number ) noexcept
19  {
20  SEQUENCER_ASSERT( song_number < 128 );
21  return {byte::song_select, std::byte{song_number}};
22  }
23 
24  constexpr message_t< 1 > tune_request() noexcept
25  {
26  return {byte::tune_request};
27  }
28 } // namespace sequencer::midi::system::common
constexpr auto song_position_pointer
Definition: byte.hpp:18
constexpr auto song_select
Definition: byte.hpp:19
constexpr message_t< 3 > song_position_pointer(std::uint16_t position_in_16th_notes) noexcept
Definition: system_common.hpp:12
Definition: system_common.hpp:10
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
#define SEQUENCER_ASSERT(cond)
Definition: assert.hpp:8
constexpr message_t< 2 > song_select(std::uint8_t song_number) noexcept
Definition: system_common.hpp:18
constexpr auto tune_request
Definition: byte.hpp:20
constexpr message_t< 1 > tune_request() noexcept
Definition: system_common.hpp:24
constexpr std::pair< std::byte, std::byte > uint16_to_lsb_msb(std::uint16_t value) noexcept
Definition: util.hpp:34