본문 바로가기
개발일지/기타

[QT] QT creator - 간단 작곡 코드 생성 프로그램 만들기(C++) - 4 효과음, 배경음악 넣기

by 라이티아 2024. 5. 20.

현재 듣고있는곡

라비닌(러비닝) - 유즈키 유카리

몽환적인 분위기를 느낄수 있는 곡이다

 

유명하지 않은 곡이라 슬프다

 

 

현재 음악을 넣기 위해서 코드를 짜고 있다

이 영상을 많이 참고하며 제작하던 도중

 

 music->setMedia(QUrl("C:/Users/Yukari/Downloads/rabinin.mp3"));

이 코드에서 nonamedmember오류가 나왔다

 

분명 영상에서는 문제가 없었기에 뭐가 문제인지 확인하던 도중 본 영상이 9년전 영상인것을 확인하고

QT버전 문제임을 확인했다

 

이전까지는


#include <QMediaPlayer>
QMediaPlayer * music = new QMediaPlayer();

music->setMedia(QUrl("C:/Users/Yukari/Downloads/rabinin.mp3"));
music->play();

이렇게만 해주어도 정상작동 했던 것 같다

 

하지만 QT버전이 6으로 올라감에 따라 변경되었기에 이에 맞추어 번경해준다

 

우선 헤더에 아웃풋을 추가로 넣어주어야 한다


QAudioOutput *audioOutput;

 

그후 cpp에서 새로 포인터를 만들어준다

 

QAudioOutput * Aout = new QAudioOutput;

 

이제 여기에 맞추어 setMedia를 setSource로 변경, 오디오 아웃풋도 세팅해준다

 

테스트 결과는 성공이다!

 

 

이제 프로그램, 보이스 로이드를 사용해서 버튼을 누르면 효과음을 넣어주자

 

보이스 로이드를 이용해 아나우스 보이스를 만들어준다

 

사용된 버전은 1.5버전을 사용한다

 

파일을 리소스 폴더에 담아준다

 

그후 QMediaPlayer을 배열로 만들고 배치한다

 

그후 버튼 이벤트들에 play()를 담아준다

 

 

문제가 생겼다

이렇게 하니까 소리가 v3밖에 나지 않는다

 

이를 해결하기 위해서 Qaudio를 각자 배치해보자

 

이렇게 하니 문제없이 작동한다

 

이제 문제는 모든 버튼이 true가 된 뒤, 다시 2번 버튼, 혹은 1번 버튼을 누를시 보이스가 겹치는 문제가 있는 것 이다

 

이는 if문 사용으로 해결해보자

추가로 들어갈 보이스를 넣어준다

 

그후 if문으로 엮어준다

 

 

 

또 문제가 생겼다

어차피 이렇게 해버리면 버리면 클릭이 되는걸 막을 수 없다

 

그냥 빈 함수를 하나 만들어서 해결하자

 

메인 헤더에 새로운 함수를 정의한 뒤,

 

버튼 이벤트를 복사한 함수를 하나 만든다

 

그리고 버튼 이벤트 내에서 버튼 이벤트를 복사한 함수를 실행하도록 한다

 

 

문제없이 작동한다