Compare commits

..

No commits in common. "9d0dc6298c243cd2a0aa8e640db49015abf0a503" and "2de2d1bc6bf1444729710a88f2f51a7e6c16c2ea" have entirely different histories.

6 changed files with 136 additions and 133 deletions

View file

@ -109,8 +109,6 @@ bool AceStep::requestGeneration(SongItem song, QString requestTemplate, QString
if (!song.vocalLanguage.isEmpty()) if (!song.vocalLanguage.isEmpty())
requestObj["vocal_language"] = song.vocalLanguage; requestObj["vocal_language"] = song.vocalLanguage;
requestObj["use_cot_caption"] = song.cotCaption;
// Write the request file // Write the request file
QFile requestFileHandle(request.requestFilePath); QFile requestFileHandle(request.requestFilePath);
if (!requestFileHandle.open(QIODevice::WriteOnly | QIODevice::Text)) if (!requestFileHandle.open(QIODevice::WriteOnly | QIODevice::Text))
@ -124,7 +122,7 @@ bool AceStep::requestGeneration(SongItem song, QString requestTemplate, QString
QStringList qwen3Args; QStringList qwen3Args;
qwen3Args << "--request" << request.requestFilePath; qwen3Args << "--request" << request.requestFilePath;
qwen3Args << "--lm" << qwen3ModelPath; qwen3Args << "--model" << qwen3ModelPath;
progressUpdate(30); progressUpdate(30);
@ -180,7 +178,7 @@ void AceStep::qwenProcFinished(int code, QProcess::ExitStatus status)
// Step 2: Run ace-synth to generate audio // Step 2: Run ace-synth to generate audio
QStringList ditVaeArgs; QStringList ditVaeArgs;
ditVaeArgs << "--request"<<request.requestLlmFilePath; ditVaeArgs << "--request"<<request.requestLlmFilePath;
ditVaeArgs << "--embedding"<<request.textEncoderModelPath; ditVaeArgs << "--text-encoder"<<request.textEncoderModelPath;
ditVaeArgs << "--dit"<<request.ditModelPath; ditVaeArgs << "--dit"<<request.ditModelPath;
ditVaeArgs << "--vae"<<request.vaeModelPath; ditVaeArgs << "--vae"<<request.vaeModelPath;
ditVaeArgs << "--wav"; ditVaeArgs << "--wav";

View file

@ -698,8 +698,7 @@ bool MainWindow::savePlaylistToJson(const QString &filePath, const QList<SongIte
songObj["caption"] = song.caption; songObj["caption"] = song.caption;
songObj["lyrics"] = song.lyrics; songObj["lyrics"] = song.lyrics;
songObj["vocalLanguage"] = song.vocalLanguage; songObj["vocalLanguage"] = song.vocalLanguage;
songObj["uniqueId"] = static_cast<qint64>(song.uniqueId); songObj["uniqueId"] = static_cast<qint64>(song.uniqueId); // Store as qint64 for JSON compatibility
songObj["use_cot_caption"] = song.cotCaption;
songsArray.append(songObj); songsArray.append(songObj);
} }
@ -780,20 +779,31 @@ bool MainWindow::loadPlaylistFromJson(const QString &filePath, QList<SongItem> &
SongItem song; SongItem song;
if (songObj.contains("caption")) if (songObj.contains("caption"))
{
song.caption = songObj["caption"].toString(); song.caption = songObj["caption"].toString();
}
if (songObj.contains("lyrics")) if (songObj.contains("lyrics"))
{
song.lyrics = songObj["lyrics"].toString(); song.lyrics = songObj["lyrics"].toString();
}
// Load vocalLanguage if present
if (songObj.contains("vocalLanguage")) if (songObj.contains("vocalLanguage"))
{
song.vocalLanguage = songObj["vocalLanguage"].toString(); song.vocalLanguage = songObj["vocalLanguage"].toString();
}
// Load uniqueId if present (for backward compatibility)
if (songObj.contains("uniqueId")) if (songObj.contains("uniqueId"))
{
song.uniqueId = static_cast<uint64_t>(songObj["uniqueId"].toInteger()); song.uniqueId = static_cast<uint64_t>(songObj["uniqueId"].toInteger());
}
else else
{
// Generate new ID for old playlists without uniqueId
song.uniqueId = QRandomGenerator::global()->generate64(); song.uniqueId = QRandomGenerator::global()->generate64();
}
song.cotCaption = songObj["use_cot_caption"].toBool(true);
songs.append(song); songs.append(song);
} }

View file

@ -5,16 +5,21 @@
#include "ui_SongDialog.h" #include "ui_SongDialog.h"
#include <QMessageBox> #include <QMessageBox>
SongDialog::SongDialog(QWidget *parent, const QString &caption, const QString &lyrics, const QString &vocalLanguage, bool cotEnabled) SongDialog::SongDialog(QWidget *parent, const QString &caption, const QString &lyrics, const QString &vocalLanguage)
: QDialog(parent), : QDialog(parent),
ui(new Ui::SongDialog) ui(new Ui::SongDialog)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->captionEdit->setPlainText(caption); // Set initial values if provided
ui->lyricsEdit->setPlainText(lyrics); if (!caption.isEmpty())
{
ui->checkBoxEnhanceCaption->setChecked(cotEnabled); ui->captionEdit->setPlainText(caption);
}
if (!lyrics.isEmpty())
{
ui->lyricsEdit->setPlainText(lyrics);
}
// Setup vocal language combo box // Setup vocal language combo box
ui->vocalLanguageCombo->addItem("--", ""); // Unset ui->vocalLanguageCombo->addItem("--", ""); // Unset
@ -105,11 +110,6 @@ QString SongDialog::getVocalLanguage() const
return ui->vocalLanguageCombo->currentData().toString(); return ui->vocalLanguageCombo->currentData().toString();
} }
bool SongDialog::getCotEnabled() const
{
return ui->checkBoxEnhanceCaption->isChecked();
}
void SongDialog::on_okButton_clicked() void SongDialog::on_okButton_clicked()
{ {
// Validate that caption is not empty // Validate that caption is not empty

View file

@ -20,13 +20,12 @@ class SongDialog : public QDialog
public: public:
explicit SongDialog(QWidget *parent = nullptr, const QString &caption = "", const QString &lyrics = "", explicit SongDialog(QWidget *parent = nullptr, const QString &caption = "", const QString &lyrics = "",
const QString &vocalLanguage = "", bool cotEnabled = true); const QString &vocalLanguage = "");
~SongDialog(); ~SongDialog();
QString getCaption() const; QString getCaption() const;
QString getLyrics() const; QString getLyrics() const;
QString getVocalLanguage() const; QString getVocalLanguage() const;
bool getCotEnabled() const;
private slots: private slots:
void on_okButton_clicked(); void on_okButton_clicked();

View file

@ -1,112 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>SongDialog</class> <class>SongDialog</class>
<widget class="QDialog" name="SongDialog"> <widget class="QDialog" name="SongDialog">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>500</width> <width>500</width>
<height>410</height> <height>400</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Song Details</string> <string>Song Details</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0"> <widget class="QLabel" name="captionLabel">
<property name="bottomMargin"> <property name="text">
<number>0</number> <string>Caption:</string>
</property> </property>
<item> <property name="alignment">
<widget class="QLabel" name="captionLabel"> <set>Qt::AlignTop</set>
<property name="text"> </property>
<string>Caption:</string> </widget>
</property> </item>
<property name="alignment"> <item>
<set>Qt::AlignmentFlag::AlignTop</set> <widget class="QTextEdit" name="captionEdit">
</property> <property name="placeholderText">
</widget> <string>Enter song caption (e.g., "Upbeat pop rock anthem with driving electric guitars")</string>
</item> </property>
<item> <property name="maximumHeight">
<widget class="QCheckBox" name="checkBoxEnhanceCaption"> <number>80</number>
<property name="text"> </property>
<string>Enhance Caption</string> </widget>
</property> </item>
<property name="checked"> <item>
<bool>true</bool> <widget class="QLabel" name="lyricsLabel">
</property> <property name="text">
</widget> <string>Lyrics (optional):</string>
</item> </property>
</layout> <property name="alignment">
</item> <set>Qt::AlignTop</set>
<item> </property>
<widget class="QPlainTextEdit" name="captionEdit"/> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="lyricsLabel"> <widget class="QTextEdit" name="lyricsEdit">
<property name="text"> <property name="placeholderText">
<string>Lyrics (optional):</string> <string>Enter lyrics or leave empty for instrumental music</string>
</property> </property>
<property name="alignment"> <property name="minimumHeight">
<set>Qt::AlignmentFlag::AlignTop</set> <number>150</number>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPlainTextEdit" name="lyricsEdit"/> <widget class="QLabel" name="vocalLanguageLabel">
</item> <property name="text">
<item> <string>Vocal Language:</string>
<widget class="QLabel" name="vocalLanguageLabel"> </property>
<property name="text"> <property name="alignment">
<string>Vocal Language:</string> <set>Qt::AlignTop</set>
</property> </property>
<property name="alignment"> </widget>
<set>Qt::AlignmentFlag::AlignTop</set> </item>
</property> <item>
</widget> <widget class="QComboBox" name="vocalLanguageCombo">
</item> <property name="editable">
<item> <bool>true</bool>
<widget class="QComboBox" name="vocalLanguageCombo"> </property>
<property name="editable"> </widget>
<bool>true</bool> </item>
</property> <item>
</widget> <layout class="QHBoxLayout" name="buttonLayout">
</item> <item>
<item> <spacer name="horizontalSpacer">
<layout class="QHBoxLayout" name="buttonLayout"> <property name="orientation">
<item> <enum>Qt::Horizontal</enum>
<spacer name="horizontalSpacer"> </property>
<property name="orientation"> <property name="sizeHint" stdset="0">
<enum>Qt::Orientation::Horizontal</enum> <size>
</property> <width>40</width>
<property name="sizeHint" stdset="0"> <height>20</height>
<size> </size>
<width>40</width> </property>
<height>20</height> </spacer>
</size> </item>
</property> <item>
</spacer> <widget class="QPushButton" name="okButton">
</item> <property name="text">
<item> <string>OK</string>
<widget class="QPushButton" name="okButton"> </property>
<property name="text"> </widget>
<string>OK</string> </item>
</property> <item>
</widget> <widget class="QPushButton" name="cancelButton">
</item> <property name="text">
<item> <string>Cancel</string>
<widget class="QPushButton" name="cancelButton"> </property>
<property name="text"> </widget>
<string>Cancel</string> </item>
</property> </layout>
</widget> </item>
</item> </layout>
</layout> </widget>
</item> <resources/>
</layout> <connections/>
</widget> </ui>
<resources/>
<connections/>
</ui>

View file

@ -16,11 +16,10 @@ public:
uint64_t uniqueId; uint64_t uniqueId;
QString file; QString file;
QString vocalLanguage; QString vocalLanguage;
bool cotCaption;
QString json; QString json;
inline SongItem(const QString &caption = "", const QString &lyrics = "") inline SongItem(const QString &caption = "", const QString &lyrics = "")
: caption(caption), lyrics(lyrics), cotCaption(true) : caption(caption), lyrics(lyrics)
{ {
// Generate a unique ID using a cryptographically secure random number // Generate a unique ID using a cryptographically secure random number
uniqueId = QRandomGenerator::global()->generate64(); uniqueId = QRandomGenerator::global()->generate64();