Beep 사용 방법
Beep(음의 높낮이, 음의 출력 시간);
도레미파솔라시도
12-TET(12-Tone Equal Temperament, 12평균율) 방식을 사용해 각 음의 주파수를 계산했습니다.
12평균율에서 주파수는 다음 공식을 사용해 계산했습니다.
계산 방법은 아래의 블로그에서 참고.
https://people-analysis.tistory.com/255
피치란 무엇인가?
옥타브 Note name은 소리의 각 음을 A1#과 같이 기호로 표현한 것 Midi number는 Note name을 숫자로 표현한 것 각 옥타브는 12개의 음으로 구성되어 있다. 한 옥타브의 차이는 진동수 2배 차이가 난다. 각
people-analysis.tistory.com
도레미파솔라시도 코드
#include <windows.h> // Beep 함수를 사용하기 위한 헤더 파일
#include <iostream> // 입출력을 위한 헤더 파일
void playSimpleMelody() {
// 간단한 멜로디 (C D E F G A B C)
int melody[] = {
261, // C4
294, // D4
329, // E4
349, // F4
392, // G4
440, // A4
493, // B4
523 // C5
};
int duration = 300; // 각 음표의 지속 시간 (밀리초)
int melodySize = 8;
std::cout << "도레미파솔라시도" << std::endl;
// 멜로디 재생
for (int i = 0; i < melodySize; i++) {
Beep(melody[i], duration);
Sleep(50); // 음표 간의 짧은 휴식
}
std::cout << "음악 재생 완료!" << std::endl;
}
int main() {
playSimpleMelody();
return 0;
}
활용 코드
Beep 함수는 Windows API를 통해 호출할 수 있는 함수.
#include <windows.h> // Beep 함수를 사용하기 위한 헤더 파일
#include <iostream> // 입출력을 위한 헤더 파일
#include <thread>
// Zelda - Song of Time
void playMusic() {
while (true) { // 무한 반복
Beep(880, 500); // A5 1-2
Beep(587, 1000); // D5 1
Beep(698, 500); // F5 1-2
Beep(880, 500); // A5 1-2
Beep(587, 1000); // D5 1
Beep(698, 500); // F5 1-2
Beep(880, 250); // A5 1-4
Beep(1046, 250); // C6 1-4
Beep(987, 500); // B5 1-2
Beep(783, 500); // G5 1-2
Beep(698, 250); // F5 1-4
Beep(783, 250); // G5 1-4
Beep(880, 500); // A5 1-2
Beep(587, 500); // D5 1
Beep(523, 250); // C5 1-4
Beep(659, 250); // E5 1-4
Beep(587, 850); // D5 3-4
Sleep(150);
}
}
int main() {
int a;
std::thread musicThread(playMusic);
std::cout << "브금 재생 중" << std::endl;
std::cin >> a;
return 0;
}
코드는 아래의 영상들을 참고하여 제작했습니다.
https://www.youtube.com/watch?v=g0wUVcgTj54
https://www.youtube.com/watch?v=R0svMCWbdrU
'게임 개발 공부 > 게임 제작' 카테고리의 다른 글
텍스트 게임의 제목과 엔딩 크레딧 만들기 (0) | 2025.01.14 |
---|---|
간단한 플랫폼 게임 제작 (0) | 2024.12.20 |