2016-03-19 7 views
1

Я пытался использовать MIDI-событие BASS.NET для создания и воспроизведения, но он не воспроизводится правильно (без звука), вы хотите помочь, спасибо вам, ребята! [Перевод с Google]Использование BASS.NET create MIDI Event no sound

public void build_MIDI() { 
     BASS_MIDI_EVENT[] events ={ 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_TEMPO, 500000, 0, 0,0), 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_PROGRAM, 1, 0, 0,0), 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_NOTE, 60, 100, 0,0), 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_END, 0, 0, 0,0), 
     }; 

     int build_play_midi_steam = BassMidi.BASS_MIDI_StreamCreateEvents(events,96, BASSFlag.BASS_SAMPLE_LOOP, 0); 
     Bass.BASS_ChannelPlay(build_play_midi_steam, false); 
    } 
+0

Я не знаю, на каком языке это; может быть Java, C# или что угодно; но, по крайней мере, я знаю, что это не C. –

+0

Это «midi», см. тег;) – tofro

+0

Инициализация отсутствует; пожалуйста, подтвердите [mcve]. –

ответ

1

Я решил эту проблему, код демонстрирует две ноты, сыгранные в steamEvent. Если вы хотите получить более подробную информацию о API рекомендованной литературы

public void build_MIDI() 
    { 
     BASS_MIDI_EVENT[] events ={ 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_TEMPO, 500000, 0, 0,0), 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_PROGRAM, 0, 0, 0,0), 

     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_NOTE, MAKEWORD(91,100), 0, 0 ,0), 
      new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_NOTE, MAKEWORD(60,100), 0, 0 ,0), 
      new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_NOTE, 91, 0, 48,0), 
      new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_NOTE, 60, 0, 96,0), 
     new BASS_MIDI_EVENT(BASSMIDIEvent.MIDI_EVENT_END, 0, 0, 2000,0), 
     }; 

     int build_play_midi_steam = BassMidi.BASS_MIDI_StreamCreateEvents(events,100, BASSFlag.BASS_MIDI_DECAYEND | BASSFlag.BASS_MIDI_DECAYSEEK | BASSFlag.BASS_MIDI_NOFX, 1); 

     Bass.BASS_ChannelPlay(build_play_midi_steam, false); 

    } 
    ushort MAKEWORD(byte a, byte b) 
    { 
     return (ushort)(a | (b << 8)); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^