현재 듣고있는곡
ドーピングダンス / miku
종료버튼을 만들어보자
버튼을 하나 만들어 준 뒤,
버튼을 누르면 프로그램이 종료된다
여기에 사운드를 붙여보자
void MainWindow::on_out_btn_clicked()
{
out->play();
//QApplication::quit();
}
이렇게 해주면 소리는 나지만, 문제는 소리가 나기 전에 종료가 되버린다
그렇다면, 소리가 끝난 뒤, 프로그램이 꺼지도록 해보자
out->play();
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, [=]() {
if (out->mediaStatus() == QMediaPlayer::EndOfMedia) {
QApplication::quit();
}
});
timer->start(100);
time을 사용한 방법이다
이제 멜로디를 들을 수 있도록 만들어 보자
QT에 Vocaloid 4 miku의 소리를 각 음계별로 담아두었다
이 소리들을 이용해서 멜로디를 들을 수 있도록 해보려 한다
소리를 들을 수 있는 버튼을 만든다
이제 버튼을 누르면 소리가 나오게 세팅해보자
문제가 생겼다
높은 도부터는 make_chord 함수로 만들어도 랜덤으로 들어가게 만들어 놔서 이렇게 하면 음계가 맞지 않다
해결할려면 make_chord함수를 수정해야 한다
높은음도 생성하도록 찢어주자
그저 노가다....
전부 찢어주었다
void MainWindow::on_voice_clicked()
{
disconnect(p_voice, &QMediaPlayer::mediaStatusChanged, this, &MainWindow::handleMediaStatusChanged);
//connect(p_voice, &QMediaPlayer::mediaStatusChanged, this, &MainWindow::handleMediaStatusChanged);
connect(p_voice, &QMediaPlayer::mediaStatusChanged, this, &MainWindow::handleMediaStatusChanged);
currentMelodyIndex = 0;
playNextMelody();
}
void MainWindow::handleMediaStatusChanged(QMediaPlayer::MediaStatus status)
{
if (status == QMediaPlayer::EndOfMedia)
{
currentMelodyIndex++;
if (currentMelodyIndex < 32)
{
playNextMelody();
qDebug() << currentMelodyIndex;
}
else
{
qDebug() << "Melody playback completed.";
}
}
}
void MainWindow::playNextMelody()
{
switch (melody[currentMelodyIndex])
{
case 'C':
p_voice->setSource(QUrl("qrc:/sounds/voice/C.wav"));
break;
case 'D':
p_voice->setSource(QUrl("qrc:/sounds/voice/D.wav"));
break;
case 'E':
p_voice->setSource(QUrl("qrc:/sounds/voice/E.wav"));
break;
case 'F':
p_voice->setSource(QUrl("qrc:/sounds/voice/F.wav"));
break;
case 'G':
p_voice->setSource(QUrl("qrc:/sounds/voice/G.wav"));
break;
case 'A':
p_voice->setSource(QUrl("qrc:/sounds/voice/A.wav"));
break;
case 'B':
p_voice->setSource(QUrl("qrc:/sounds/voice/B.mp3"));
break;
case 'c':
p_voice->setSource(QUrl("qrc:/sounds/voice/CH.mp3"));
break;
case 'd':
p_voice->setSource(QUrl("qrc:/sounds/voice/DH.mp3"));
break;
case 'e':
p_voice->setSource(QUrl("qrc:/sounds/voice/EH.mp3"));
break;
case 'f':
p_voice->setSource(QUrl("qrc:/sounds/voice/FH.mp3"));
break;
case 'g':
p_voice->setSource(QUrl("qrc:/sounds/voice/GH.mp3"));
break;
default:
return;
}
p_voice->play();
}
그후 버튼을 누르면 차례대로 멜로디가 나오도록 만들어준다
'개발일지 > 기타' 카테고리의 다른 글
[유니티 X 아두이노] mpu6050센서로 움직이는 유니티 오브젝트 (0) | 2024.05.29 |
---|---|
[QT] QT creator - 간단 작곡 코드 생성 프로그램 만들기(C++) - END (0) | 2024.05.20 |
[QT] QT creator - 간단 작곡 코드 생성 프로그램 만들기(C++) - 4 효과음, 배경음악 넣기 (0) | 2024.05.20 |
[QT] QT creator - 간단 작곡 코드 생성 프로그램 만들기(C++) - 3 (0) | 2024.05.20 |
[QT] QT creator - 간단 작곡 코드 생성 프로그램 만들기(C++) - 2 (0) | 2024.05.19 |