Связать виртуальное пианино с миди-клавиатурой

мне нужно связать миди-пианино с виртуальным пианино ... Я не знаю, как создать мероприятие для этого. У меня есть связь с веб-миди и реактивным пианино, но я не знаю, как связать миди-пианино с виртуальным пианино. Я получаю входную информацию и номер ключа, но не знаю, как играть на виртуальном пианино, когда нажимаю на миди пианино.

const noteRange = {
  first: MidiNumbers.fromNote('c1'),
  last: MidiNumbers.fromNote('f5'),
};

export default class ResponsivePiano extends React.Component {

  state = {
    midiNote:'',
  }
  onNoteOnMidiKeyboard=(event) => {
    this.setState({
      midiNote: event.note
    });
  }

  componentDidMount(){

    WebMidi.enable((err) => {
      if (err) {
        console.info(' WebMidi n\'a pas pu être activé. ', err);
      } else {
        console.info(' WebMidi activé! ');
      }

      const input = WebMidi.inputs[0];
      input.addListener('noteon', 'all', this.onNoteOnMidiKeyboard.bind(this));

      console.info(WebMidi.inputs);
      console.info(WebMidi.outputs);

    });

  }


  render(){
    const { midiNote } = this.state;

    return (
      <div>
        <p>
        Midi number: {midiNote.number}


        </p>
        <DimensionsProvider>
          {({ containerWidth, containerHeight }) => (
            <SoundfontProvider
              instrumentName = "acoustic_grand_piano"
              audioContext = {audioContext}
              hostname = {soundfontHostname}
              render = {({ isLoading, playNote, stopNote }) => (
                <Piano
                  onChange = {this.onCurrentNote}
                  noteRange = {noteRange}
                  width = {containerWidth}
                  onPlayNote = {playNote}
                  onStopNote = {stopNote}
                  disabled = {isLoading}
                />
              )}
            />
          )}
        </DimensionsProvider>
        {}
      </div>
    );

  }


  }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
164
1

Ответы 1

react-piano принимает опору playbackNotes, которая должна помочь. Когда вы устанавливаете эти ноты, они воспроизводятся.

<Piano
  // ...other props
  playbackNotes = {[this.state.midiNote.number]}
/>

Если у вас когда-нибудь возникнут какие-либо вопросы о react-piano, не стесняйтесь писать кросс-пост на React-Piano проблемы с GitHub! Я слежу за этим более внимательно.

Другие вопросы по теме