2014-07-13 2 views
0

C# MIDI Toolkit을 사용하여 MIDI 파일에 쓸 수있는 방법을 찾으려고했습니다. 그러나 시간 동기화 문제가 끊임없이 발생하고 있습니다. 결과 MIDI 파일은 항상 박자가 맞습니다. 좀 더 정확히 말하자면, 그것은 자신과 관련하여 올바른 리듬을 가지고 있지만, 시퀀서로 가져올 때, 템포 정보를 포함하지 않는 것 같습니다 (이것은 프로그램 내에서 결코 지정하지 않기 때문에 이해할 수 있습니다). 이 작업을 수행하는 방법에 대한 문서는 없습니다.C#의 MIDI 파일에 쓰기

다음 코드를 사용하여 트랙에 음표를 삽입하고 있습니다.

public const int NOTE_LENGTH = 32; 

private static void InsertNote(Track t, int pitch, int velocity, int position, int duration, int channel) 
{ 
    ChannelMessageBuilder builder = new ChannelMessageBuilder(); 
    builder.Command = ChannelCommand.NoteOn; 
    builder.Data1 = pitch; 
    builder.Data2 = velocity; 
    builder.MidiChannel = channel; 
    builder.Build(); 
    t.Insert(position * NOTE_LENGTH, builder.Result); 
    builder.Command = ChannelCommand.NoteOff; 
    builder.Build(); 
    t.Insert((position + duration) * NOTE_LENGTH, builder.Result); 
} 

결과 출력은 들리지만 템포 정보가 없으므로 메모 자체는 괜찮습니다. 내 트랙이 포함 된 Sequence 개체에 템포 정보를 어떻게 입력합니까? NOTE_LENGTH 당신이`Sequence`를 구성 했는가

+0

(3)에 의해 균일하게 궁리 해 낼 수있는이어야한다 : –

+0

구성이 없습니다. 방금 클래스의 객체를 인스턴스화했습니다. 즉,'Sequence seq = new Sequence()'와 같이 추가되었습니다. 생성자는 그다지 제공하지 않으며 속성은 잘 설명되어 있지 않습니다. –

+0

SMF 파일과 속성이 같지 않습니까? –

답변

0

는 무차별 대입하여 답하려고 우연히?