@@ -440,7 +440,7 @@ struct Event {
440440
441441 switch (messageType ()) {
442442 case MessageType::ChannelVoice10: return m_data[0 ] & 0x7F ;
443- case MessageType::ChannelVoice20: return scaleDown (m_data[1 ] >> 16 , 16 , 7 );
443+ case MessageType::ChannelVoice20: return static_cast < uint8_t >( scaleDown (m_data[1 ] >> 16 , 16 , 7 ) );
444444 default : assert (false );
445445 }
446446 return 0 ;
@@ -471,7 +471,7 @@ struct Event {
471471 assertOpcode ({ Opcode::NoteOn, Opcode::NoteOff });
472472
473473 switch (messageType ()) {
474- case MessageType::ChannelVoice10: return scaleUp (m_data[0 ] & 0x7F , 7 , 16 );
474+ case MessageType::ChannelVoice10: return static_cast < uint16_t >( scaleUp (m_data[0 ] & 0x7F , 7 , 16 ) );
475475 case MessageType::ChannelVoice20: return static_cast <uint16_t >(m_data[1 ] >> 16 );
476476 default : assert (false );
477477 }
@@ -592,9 +592,11 @@ struct Event {
592592 {
593593 uint32_t val = data ();
594594 if (messageType () == MessageType::ChannelVoice20) {
595- return scaleDown (val, 32 , 7 );
595+ val = scaleDown (val, 32 , 7 );
596+ } else if (messageType () == MessageType::ChannelVoice10 && opcode () == Opcode::PitchBend) {
597+ val = scaleDown (val, 14 , 7 );
596598 }
597- return val;
599+ return val & 0x7F ;
598600 }
599601
600602 uint32_t data14 () const
@@ -836,7 +838,7 @@ struct Event {
836838 // D2.3
837839 case Opcode::AssignableController:
838840 case Opcode::RegisteredController: {
839- std::vector<std::pair<uint8_t , uint8_t > > controlChanges = {
841+ std::vector<std::pair<uint8_t , uint32_t > > controlChanges = {
840842 { (opcode () == Opcode::RegisteredController ? 101 : 99 ), bank () },
841843 { (opcode () == Opcode::RegisteredController ? 100 : 98 ), index () },
842844 { 6 , data () >> 25 }, // first 7 bits
0 commit comments