다음 코드를 사용하여 멜로디를 만들려고합니다. 문제는 에 배열을 rhythmArray에있는 리듬 값을 연주하는 것을 시도하고있다. 기본적으로 음표를 연주하고 지정된 시간 동안 벨로 시티를 실행 한 다음 시퀀스의 다음 음표를 끄고 재생합니다.MusicDevice.h에서 MusicDeviceMIDIEvent를 만드는 방법은 음표 길이에 응답합니까?
도움을 주시면 감사하겠습니다. 당신은 단순히 순서대로 미디 음을 연주하고자하는 경우
int playMidi()
{
//pitch array with constants defined for pitch numbers: ex. C4 = 60
int pitchArray[11] {C4, A5, E4, F3, D4, FS5, BF4, CS3, FS5, C3, DF4};/
//velocity array with constants defined for velocity: ex. QN = 1, EN = 0.5
int velocityArray[11] {FORTE, PIANISSIMO, MEZZO_FORTE, PIANISSIMO, FORTISSIMO,
MEZZO_PIANO, PIANISSIMO, FORTE, MEZZO_PIANO,FORTE, FORTISSIMO};
//rhythm array with constants defined for rhythm values: ex. = 110
double rhythmArray[11] {EN, SN, SN, EN, QN, EN, EN, EN, TSN,TSN, SN};
for(int i=0; i<11; i++)
{
UInt32 noteOnCommand = kMidiMessage_NoteOn << 4 | midiChannelInUse;
std::cout<< "The current pitch is: "
<<pitchArray[i] << "The velocity is: " <<velocityArray[i]
<< " and the rhythmic value is: "<<rhythmArray[i]<< "\n";
MusicDeviceMIDIEvent(synthUnit,
noteOnCommand,
pitchArray[i],
velocityArray[i],
0);
// sleep for a second
sleep(1);
}
return 0;
}
정확히 예상되는 일이 무엇인지 명확히 할 수 있습니까? 그런 다음 정확히 무슨 일이 일어날 수 있습니까? –