[전기공학실험3] [ARM7] 결과8 (MIDI)

등록일 2002.12.25 MS 워드 (doc) | 27페이지 | 가격 700원

소개글

전기공학실험3 (ARM7 코어 프로그래밍)
서울대학교 전기공학부
성원용 교수님 강좌
2002년 2학기

정답이 아닐 수 있으니 참고만 하세요.

목차

1. [exp8_2] 화음이 없는 단일한 음색에 대해 음표의 장단, 음의 강약, 쉼표 등을 표현하여 간단한 악보(애국가, 엘리제를 위하여 등)를 합성하여 출력하는 프로그램
(1) “midi.c” 소스 코드
(2) “main.c” 소스 코드
2. [exp8_3] 몇 가지 다른 악기 소리를 M, f1, f2 값을 변형하여 만들고, 화음과 여러 음색으로 이루어진 악보에 대해 합성하고 출력하는 프로그램
(1) “midi.c” 소스 코드
(2) “main.c” 소스 코드
3. 악보를 위한 데이터 구조
4. 보너스 점수 사항
5. 참고 문헌

본문내용

void play_sound_double(int N, int order, short volume)
// 더블 버퍼링을 이용한 소리 재생
{
if(double_flag==0) {
dac_init(rec_buf1, 1000); // 이미 만들어진 소리를 재생
generate_data(rec_buf2, N, order, volume); // 다음에 재생될 소리를 생성
double_flag=1; // 플래그 교환
}
else {
dac_init(rec_buf2, 1000); // 이미 만들어진 소리를 재생
generate_data(rec_buf1, N, order, volume); // 다음에 재생될 소리를 생성
double_flag=0; // 플래그 교환
}

// 소리 출력이 끝날 때까지 기다린다.
while(!playing_done);
}

void split_play(int nextsize, int N, short volume)
// 소리를 쪼개어 재생하는 함수
// 여기서 nextsize는 이미 실제 size가 1000으로 나눠진 값이다.
{
if (volume>16) // 볼륨이 16 이상이면 안 되므로 에러 처리
volume=16;
nn=0; // circular buffer index는 소리의 전체 size에 대해 작용하므로 여기서 설정한다.
int i;
for (i=0; i<nextsize; i++) // nextsize 만큼 소리를 쪼개어 더블 버퍼링으로 재생 및 생성을 반복
play_sound_double(N, i, volume);
}

참고 자료

서울대학교 전기공학부, <3학년 실험>
서울대학교 전기공학부, <3학년 실험 매뉴얼>
http://www.midist21.com/midi/se06.htm
http://www.midist21.com/midi/tutorial/miditutr.htm
http://ccrma-www.stanford.edu/~jos/SimpleStrings/Karplus_Strong_Algorithm.html

이 자료와 함께 구매한 자료

      최근 구매한 회원 학교정보 보기
      1. 최근 2주간 다운받은 회원수와 학교정보이며
         구매한 본인의 구매정보도 함께 표시됩니다.
      2. 매시 정각마다 업데이트 됩니다. (02:00 ~ 21:00)
      3. 구매자의 학교정보가 없는 경우 기타로 표시됩니다.
      최근 본 자료더보기