/// <summary> /// 음표를 생성하여 악보에 추가합니다. /// </summary> /// <param name="pitch">음 높이(0 ~ 127)를 반환하는 함수. 예) () => 60: C4 / () => 64: E4 / () => 67: G4 / () => 72: C5</param> /// <param name="velocity">음 세기(1 ~ 127).</param> /// <param name="rhythm">음표의 길이(1 이상). 4/4박에서 한 마디를 64등분한 길이를 기준으로 합니다. 예) 64: 온음표 / 16: 4분음표 / 4: 16분음표 / 1: 64분음표</param> /// <param name="measure">음표가 위치한 마디 번호(0부터 시작).</param> /// <param name="position">음표의 마디 내 위치(0 ~ 63). 4/4박에서 한 마디를 64등분한 길이를 기준으로 합니다.</param> /// <param name="staff">음표가 놓일 Staff 번호(0 ~ 15). 9번 Staff는 타악기 전용 Staff입니다.</param> public void AddNote(Note.PitchGenerator pitch, int velocity, int rhythm, long measure, int position, int staff = 0) { Note note = new Note(pitch, velocity, rhythm, measure, position, staff); score.Add(note); if (length < rhythm + measure * 64 + position) { length = rhythm + measure * 64 + position; } }
/// <summary> /// 음표를 생성하여 악보에 추가합니다. /// 음 세기는 현재 악기 테마의 반주 악기 음량으로 자동 설정됩니다. /// 반주를 만들 때에만 사용할 수 있습니다. /// </summary> /// <param name="pitch">음 높이(0 ~ 127)를 반환하는 함수. 예) () => 60: C4 / () => 64: E4 / () => 67: G4 / () => 72: C5</param> /// <param name="rhythm">음표의 길이(1 이상). 4/4박에서 한 마디를 64등분한 길이를 기준으로 합니다. 예) 64: 온음표 / 16: 4분음표 / 4: 16분음표 / 1: 64분음표</param> /// <param name="measure">음표가 위치한 마디 번호(0부터 시작).</param> /// <param name="position">음표의 마디 내 위치(0 ~ 63). 4/4박에서 한 마디를 64등분한 길이를 기준으로 합니다.</param> /// <param name="staff">음표가 놓일 Staff 번호(0 ~ 15). 9번 Staff는 타악기 전용 Staff입니다.</param> public void AddNoteInAccompaniment(Note.PitchGenerator pitch, int rhythm, long measure, int position, int staff) { // Note note = new Note(pitch, SFXTheme.CurrentSFXTheme.Instruments[staff].accompanimentVolume, rhythm, measure, position, staff); Note note = new Note(pitch, 127, rhythm, measure, position, staff); score.Add(note); if (length < rhythm + measure * 64 + position) { length = rhythm + measure * 64 + position; } }