검색어 입력폼
평가점수B

[전기공학실험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
다운로드 맨위로