- Add a MATLAB Function block to your Simulink model.
- Inside the MATLAB Function block, use the “coder.extrinsic()” function to declare the “midireceive()” function as an extrinsic function.
- To receive MIDI data from the MIDI controller, use the “midireceive()” function.
- Use the “cell()” function to transform the “mxarray” into a cell array.
- Loop over the elements of the cell array and extract the MIDI message using the “midimsg()” function.
- To detect whether a MIDI message is a "NoteOn" or "NoteOff" message, look at the message's status byte.
- Similarly you can extract other details like “channel”, “note”,” velocity” etc.
How to extract MIDI data from mxarray in simulink ?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello,
For a project, I need to use a MIDI controller that sends MIDI files for the keys pressed (so the MIDI message is a 'NoteOn' or 'NoteOff'). To do so, I chose to use a matlab function block and inside it, i wrote a code using midireceive('MidiInput') function (In order to do that, i used coder.extrinsic('midireceive'). Unfortunately, the results from that is that I got the data from my MIDI controller in a mxarray and I don't know how to extract the data correctly (I juste have to know when a key is pressed and which one it is).
댓글 수: 0
채택된 답변
Swaraj
2023년 3월 9일
To extract the MIDI data correctly from the “mxarray” received by the “midireceive()” function in Simulink, you can use the following steps:
For more details you can go through the following Documentations.
Documentation for “midireceive”.
Documentation for “mxArrays”.
Documentation for Cell Arrays.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Musical Instrument Digital Interface (MIDI)에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!