console
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
let decoderWorker = null;
try {
decoderWorker = new Worker('decoder-worker.js');
} catch (error) {
console.warn('Audio decoder worker not available:', error);
}
class AudioLoader {
constructor(options = {}) {
this.options = {
username: 'ace-step',
repo: 'ace-step.github.io',
releaseTag: 'latest',
useJsDelivr: true,
formatPreference: ['opus', 'mp3', 'flac'],
localBasePath: '',
useProgressiveLoading: true,
useWorkerDecoding: true,
...options
};
this.cache = new Map();
this.decodedCache = new Map();
if (decoderWorker && this.options.useWorkerDecoding) {
decoderWorker.onmessage = async (e) => {
const { id, decodedData, error, needsMainThreadDecode, audioData } = e.data;
if (id && decodedData) {
this.decodedCache.set(id, decodedData);
if (this.pendingDecodes.has(id)) {
const callbacks = this.pendingDecodes.get(id);
callbacks.forEach(callback => callback(decodedData));
this.pendingDecodes.delete(id);
}
}
else if (id && needsMainThreadDecode && audioData) {
try {
console.log('Falling back to main thread decoding because OfflineAudioContext is not available in worker');
const decodedData = await audioContext.decodeAudioData(audioData);
this.decodedCache.set(id, decodedData);
if (this.pendingDecodes.has(id)) {
const callbacks = this.pendingDecodes.get(id);
callbacks.forEach(callback => callback(decodedData));
this.pendingDecodes.delete(id);
}
} catch (decodeError) {
console.error('Error decoding audio in main thread fallback:', decodeError);
if (this.pendingDecodes.has(id)) {
const callbacks = this.pendingDecodes.get(id);
callbacks.forEach(callback => callback(null, decodeError));
this.pendingDecodes.delete(id);
}
}
}
else if (error) {
console.error('Worker reported error:', error);
if (this.pendingDecodes.has(id)) {
const callbacks = this.pendingDecodes.get(id);
callbacks.forEach(callback => callback(null, new Error(error)));
this.pendingDecodes.delete(id);
}
}
};
this.pendingDecodes = new Map();
}
this._preWarmAudioContext();
}
async _preWarmAudioContext() {
try {
const buffer = audioContext.createBuffer(2, 44100, 44100);
const source = audioContext.createBufferSource();
source.buffer = buffer;
source.connect(audioContext.destination);
source.start(0);
source.stop(0.001);
console.log('Audio context pre-warmed');
} catch (error) {
console.warn('Failed to pre-warm audio context:', error);
}
}
async getAudioUrl(directory, fileName) {
const cacheKey = `${directory}/${fileName}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
for (const format of this.options.formatPreference) {
if (this.options.useJsDelivr) {
const cdnUrl = this.getJsDelivrUrl(directory, fileName, format);
if (await this.checkFileExists(cdnUrl)) {
this.cache.set(cacheKey, cdnUrl);
console.log(`Using CDN for ${fileName}.${format}`);
return cdnUrl;
}
}
const localPath = this.getLocalPath(directory, fileName, format);
if (await this.checkFileExists(localPath)) {
this.cache.set(cacheKey, localPath);
return localPath;
}
}
const fallbackPath = `flac/samples/${directory}/${fileName}.flac`;
this.cache.set(cacheKey, fallbackPath);
return fallbackPath;
}
getJsDelivrUrl(directory, fileName, format) {
if (format === 'opus') {
return `https://cdn.jsdelivr.net/gh/${this.options.username}/${this.options.repo}/opus/samples/${directory}/${fileName}.opus`;
} else if (format === 'mp3') {
return `https://cdn.jsdelivr.net/gh/${this.options.username}/${this.options.repo}/mp3/samples/${directory}/${fileName}.mp3`;
} else {
return `https://cdn.jsdelivr.net/gh/${this.options.username}/${this.options.repo}/flac/samples/${directory}/${fileName}.flac`;
}
}
getLocalPath(directory, fileName, format) {
if (format === 'opus') {
return `${this.options.localBasePath}opus/samples/${directory}/${fileName}.opus`;
} else if (format === 'mp3') {
return `${this.options.localBasePath}mp3/samples/${directory}/${fileName}.mp3`;
} else {
return `${this.options.localBasePath}flac/samples/${directory}/${fileName}.flac`;
}
}
async checkFileExists(url) {
try {
const response = await fetch(url, { method: 'HEAD' });
return response.ok;
} catch (error) {
console.warn(`Error checking file existence for ${url}:`, error);
return false;
}
}
async preDecodeAudio(url, id) {
if (this.decodedCache.has(id)) {
return this.decodedCache.get(id);
}
try {
const response = await fetch(url);
const arrayBuffer = await response.arrayBuffer();
if (decoderWorker && this.options.useWorkerDecoding) {
return new Promise((resolve, reject) => {
if (!this.pendingDecodes.has(id)) {
this.pendingDecodes.set(id, []);
}
this.pendingDecodes.get(id).push((data, error) => {
if (error) {
reject(error);
} else {
resolve(data);
}
});
decoderWorker.postMessage({
id,
audioData: arrayBuffer
}, [arrayBuffer]);
});
} else {
const decodedData = await audioContext.decodeAudioData(arrayBuffer);
this.decodedCache.set(id, decodedData);
return decodedData;
}
} catch (error) {
console.error(`Error pre-decoding audio ${url}:`, error);
return null;
}
}
createOptimizedAudio(url, id) {
const audio = new Audio();
if (this.options.useProgressiveLoading) {
audio.preload = 'none';
audio.dataset.src = url;
audio.dataset.id = id;
audio.addEventListener('play', () => {
if (!audio.dataset.loadStarted) {
audio.src = audio.dataset.src;
audio.load();
audio.dataset.loadStarted = true;
}
});
} else {
audio.src = url;
audio.preload = 'auto';
}
return audio;
}
async preloadAudio(samples, progressCallback = null) {
let loaded = 0;
const total = samples.length;
for (const sample of samples) {
const url = await this.getAudioUrl(sample.directory, sample.fileName);
if (this.options.useWorkerDecoding || audioContext.state === 'running') {
await this.preDecodeAudio(url, sample.id);
} else {
await fetch(url, { method: 'HEAD' });
}
loaded++;
if (progressCallback) {
progressCallback(loaded, total);
}
}
}
}
window.AudioLoader = AudioLoader;
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ACE-Step:邁向音樂生成基礎模型的一步</title>
<meta name="generator" content="Jekyll v3.9.0">
<meta property="og:title" content="ACE-Step:邁向音樂生成基礎模型的一步">
<meta property="og:locale" content="zh_TW">
<meta name="twitter:card" content="summary">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#5D59FF">
<link rel="stylesheet" href="style.css">
<style>
.lyrics-toggle {
border: 1px solid #dee2e6;
border-radius: 8px;
margin-top: 0;
overflow: hidden;
}
.lyrics-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 15px 20px;
background-color: #f8f9fa;
cursor: pointer;
font-weight: 600;
}
.toggle-icon {
transition: transform 0.3s ease;
}
.lyrics-toggle.expanded .toggle-icon {
transform: rotate(180deg);
}
.lyrics-body {
padding: 0;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease, padding 0.3s ease;
}
.lyrics-toggle.expanded .lyrics-body {
padding: 20px;
max-height: 300px;
overflow-y: auto;
overflow-x: auto;
}
.lyrics-body pre {
white-space: pre;
word-wrap: normal;
overflow-x: auto;
margin: 0;
display: block;
text-align: left;
}
.toggle-all-button {
background-color: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 4px;
padding: 8px 16px;
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s ease;
}
.toggle-all-button:hover {
background-color: #e9ecef;
}
.fixed-toggle-container {
position: fixed;
top: 20px;
right: 20px;
z-index: 1000;
background-color: rgba(255, 255, 255, 0.9);
padding: 5px;
border-radius: 4px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.track-play-btn {
background-color: #5D59FF;
color: white;
border: none;
border-radius: 50%;
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
cursor: pointer;
transition: all 0.2s ease;
}
.track-play-btn:hover {
background-color: #4A46E3;
}
.track-play-btn.playing {
background-color: #4A46E3;
}
#global-player {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background-color: #333;
border-top: 1px solid #222;
padding: 10px 20px;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
gap: 15px;
z-index: 1000;
transform: translateY(100%);
transition: transform 0.3s ease;
height: 80px;
}
#global-player.visible {
transform: translateY(0);
}
.player-track-info {
flex: 0 0 250px;
display: flex;
align-items: center;
color: #fff;
}
.track-details {
display: flex;
flex-direction: column;
justify-content: center;
width: 180px;
overflow: hidden;
}
.player-track-title {
font-weight: bold;
font-size: 18px;
margin-bottom: 3px;
color: #fff;
max-width: 180px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.player-track-genre {
font-size: 12px;
color: #888;
text-transform: uppercase;
max-width: 180px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.player-track-title.scrolling,
.player-track-genre.scrolling {
text-overflow: clip;
position: relative;
display: inline-block;
padding-right: 10px;
animation: marquee 10s linear infinite;
animation-delay: 1s;
}
@keyframes marquee {
0%,
15% {
transform: translateX(0);
}
85%,
100% {
transform: translateX(calc(-100% + 180px));
}
}
.player-track-title.scrolling.length-medium,
.player-track-genre.scrolling.length-medium {
animation-duration: 15s;
}
.player-track-title.scrolling.length-long,
.player-track-genre.scrolling.length-long {
animation-duration: 20s;
}
.track-details {
position: relative;
overflow: hidden;
}
.player-controls {
display: flex;
align-items: center;
gap: 15px;
}
.player-btn {
background: none;
border: none;
cursor: pointer;
font-size: 18px;
color: #fff;
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
transition: background-color 0.2s ease;
}
.player-btn:hover {
background-color: #333;
}
.player-btn.active {
color: #fff;
}
.mode-indicator {
font-size: 10px;
vertical-align: super;
margin-left: 2px;
}
.player-play-btn {
background-color: transparent;
color: white;
border-radius: 50%;
width: 40px;
height: 40px;
}
.player-play-btn:hover {
background-color: #333;
}
.player-progress-container {
flex-grow: 1;
height: 4px;
background-color: #444;
border-radius: 2px;
cursor: pointer;
position: relative;
}
.player-progress-bar {
height: 100%;
background-color: #fff;
border-radius: 2px;
width: 0%;
position: relative;
}
.player-progress-handle {
width: 12px;
height: 12px;
background-color: #fff;
border-radius: 50%;
position: absolute;
top: 50%;
right: -6px;
transform: translateY(-50%);
cursor: grab;
}
.player-time-display {
font-size: 14px;
color: #fff;
min-width: 80px;
text-align: right;
font-family: monospace;
}
body {
padding-bottom: 80px;
}
.player-extra-controls {
display: flex;
align-items: center;
gap: 10px;
margin-left: 10px;
}
</style>
</head>
<body data-new-gr-c-s-check-loaded="14.1001.0" data-gr-ext-installed="">
<script>
const localTextContent = {
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_in_you_i_see.txt": `In you I see
someone special.`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_in_you_i_see_prompt.txt": `clean vocals`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_lemonade.txt": `Lemonade sunrise dripping down your smile`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_lemonade_prompt.txt": `clean vocals`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_turn_me_on.txt": `You really turn me on.
You gets me off my feet.
Lonely days are gone.`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_turn_me_on_prompt.txt": `clean vocals`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_whispering_shadows.txt": `Whispering shadows dance with my regrets`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_whispering_shadows_prompt.txt": `clean vocals`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_you_been_chosen_too.txt": `You've been chosen too and everybody knows what I'm into. You got me.
I've been missing you in the morning only.`,
"raw/samples/Application-Lyric2Vocal/lyrics2vocal_you_been_chosen_too_prompt.txt": `clean vocals`,
"raw/samples/Controlability-edit/edit_a_orig.txt": `When I was young
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_a_orig_prompt.txt": `This is the input audio, the genre is "piano, pop, female voice"
We can edit the part of lyrics but not change its melody, vocal timbre and bgm
`,
"raw/samples/Controlability-edit/edit_cry.txt": `When I was young
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me cry`,
"raw/samples/Controlability-edit/edit_cry_prompt.txt": `It made me smile -> It made me cry
`,
"raw/samples/Controlability-edit/edit_french.txt": `Quand j'étais jeune
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_french_prompt.txt": `When I was young -> Quand j'étais jeune
`,
"raw/samples/Controlability-edit/edit_german.txt": `In meiner Jugend
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_german_prompt.txt": `When I was young -> In meiner Jugend`,
"raw/samples/Controlability-edit/edit_ja.txt": `子供の頃に
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_ja_prompt.txt": `When I was young -> 子供の頃に`,
"raw/samples/Controlability-edit/edit_kid.txt": `when you were kid
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_kid_prompt.txt": `When I was young -> when you were kid`,
"raw/samples/Controlability-edit/edit_ko.txt": `내가 어렸을 때
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_ko_prompt.txt": `When I was young -> 내가 어렸을 때`,
"raw/samples/Controlability-edit/edit_old.txt": `When I was old
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_old_prompt.txt": `When I was young -> When I was old
`,
"raw/samples/Controlability-edit/edit_spotify.txt": `When I was young
I'd listen to the spotify
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_spotify_prompt.txt": `I'd listen to the radio -> I'd listen to the spotify
`,
"raw/samples/Controlability-edit/edit_zh.txt": `我小的时候
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile`,
"raw/samples/Controlability-edit/edit_zh_prompt.txt": `When I was young -> 我小的时候
`,
"raw/samples/Controlability-repaint/a_repaint_orig.txt": `[verse]
我走过深夜的街道
冷风吹乱思念的漂亮外套
你的微笑像星光很炫耀
照亮了我孤独的每分每秒
[chorus]
愿你是风吹过我的脸
带我飞过最远最遥远的山间
愿你是风轻触我的梦
停在心头不再飘散无迹无踪
[verse]
一起在喧哗避开世俗的骚动
独自在天台探望月色的朦胧
你说爱像音乐带点重节奏
一拍一跳让我忘了心的温度多空洞
[bridge]
唱起对你的想念不隐藏
像诗又像画写满藏不了的渴望
你的影子挥不掉像风的倔强
追着你飞扬穿越云海一样泛光
[chorus]
愿你是风吹过我的手
暖暖的触碰像春日细雨温柔
愿你是风盘绕我的身
深情万万重不会有一天走远走
[verse]
深夜的钢琴弹起动人的旋律
低音鼓砸进心底的每一次呼吸
要是能将爱化作歌声传递
你是否会听见我心里的真心实意`,
"raw/samples/Controlability-repaint/a_repaint_orig_prompt.txt": `We can repaint any specified area. To demonstrate the power and flexibility of repaint, here’s an example using a 0-30 second repaint
orig style is "pop, rap, electronic, blues, hip-house, rhythm and blues"`,
"raw/samples/Controlability-repaint/repaint_0_30_variance10_change_female.txt": `[verse]
我走过深夜的街道
冷风吹乱思念的漂亮外套
你的微笑像星光很炫耀
照亮了我孤独的每分每秒
[chorus]
愿你是风吹过我的脸
带我飞过最远最遥远的山间
愿你是风轻触我的梦
停在心头不再飘散无迹无踪
[verse]
一起在喧哗避开世俗的骚动
独自在天台探望月色的朦胧
你说爱像音乐带点重节奏
一拍一跳让我忘了心的温度多空洞
[bridge]
唱起对你的想念不隐藏
像诗又像画写满藏不了的渴望
你的影子挥不掉像风的倔强
追着你飞扬穿越云海一样泛光
[chorus]
愿你是风吹过我的手
暖暖的触碰像春日细雨温柔
愿你是风盘绕我的身
深情万万重不会有一天走远走
[verse]
深夜的钢琴弹起动人的旋律
低音鼓砸进心底的每一次呼吸
要是能将爱化作歌声传递
你是否会听见我心里的真心实意`,
"raw/samples/Controlability-repaint/repaint_0_30_variance10_change_female_prompt.txt": `change singing gender`,
"raw/samples/Controlability-repaint/repaint_0_30_variance10_change_genre.txt": `[verse]
我走过深夜的街道
冷风吹乱思念的漂亮外套
你的微笑像星光很炫耀
照亮了我孤独的每分每秒
[chorus]
愿你是风吹过我的脸
带我飞过最远最遥远的山间
愿你是风轻触我的梦
停在心头不再飘散无迹无踪
[verse]
一起在喧哗避开世俗的骚动
独自在天台探望月色的朦胧
你说爱像音乐带点重节奏
一拍一跳让我忘了心的温度多空洞
[bridge]
唱起对你的想念不隐藏
像诗又像画写满藏不了的渴望
你的影子挥不掉像风的倔强
追着你飞扬穿越云海一样泛光
[chorus]
愿你是风吹过我的手
暖暖的触碰像春日细雨温柔
愿你是风盘绕我的身
深情万万重不会有一天走远走
[verse]
深夜的钢琴弹起动人的旋律
低音鼓砸进心底的每一次呼吸
要是能将爱化作歌声传递
你是否会听见我心里的真心实意`,
"raw/samples/Controlability-repaint/repaint_0_30_variance10_change_genre_prompt.txt": `change style`,
"raw/samples/Controlability-repaint/repaint_0_30_variance10_change_lyrics.txt": `[verse]
I walk through the streets late at night,
Cold winds tousle my coat—pretty with longing.
Your smile dazzles like starlight,
Lighting up every lonely minute I’m holding.
[chorus]
愿你是风吹过我的脸
带我飞过最远最遥远的山间
愿你是风轻触我的梦
停在心头不再飘散无迹无踪
[verse]
一起在喧哗避开世俗的骚动
独自在天台探望月色的朦胧
你说爱像音乐带点重节奏
一拍一跳让我忘了心的温度多空洞
[bridge]
唱起对你的想念不隐藏
像诗又像画写满藏不了的渴望
你的影子挥不掉像风的倔强
追着你飞扬穿越云海一样泛光
[chorus]
愿你是风吹过我的手
暖暖的触碰像春日细雨温柔
愿你是风盘绕我的身
深情万万重不会有一天走远走
[verse]
深夜的钢琴弹起动人的旋律
低音鼓砸进心底的每一次呼吸
要是能将爱化作歌声传递
你是否会听见我心里的真心实意`,
"raw/samples/Controlability-repaint/repaint_0_30_variance10_change_lyrics_prompt.txt": `change lyrics
`,
"raw/samples/Controlability-repaint/repaint_0_30_variance7.txt": `[verse]
我走过深夜的街道
冷风吹乱思念的漂亮外套
你的微笑像星光很炫耀
照亮了我孤独的每分每秒
[chorus]
愿你是风吹过我的脸
带我飞过最远最遥远的山间
愿你是风轻触我的梦
停在心头不再飘散无迹无踪
[verse]
一起在喧哗避开世俗的骚动
独自在天台探望月色的朦胧
你说爱像音乐带点重节奏
一拍一跳让我忘了心的温度多空洞
[bridge]
唱起对你的想念不隐藏
像诗又像画写满藏不了的渴望
你的影子挥不掉像风的倔强
追着你飞扬穿越云海一样泛光
[chorus]
愿你是风吹过我的手
暖暖的触碰像春日细雨温柔
愿你是风盘绕我的身
深情万万重不会有一天走远走
[verse]
深夜的钢琴弹起动人的旋律
低音鼓砸进心底的每一次呼吸
要是能将爱化作歌声传递
你是否会听见我心里的真心实意`,
"raw/samples/Controlability-repaint/repaint_0_30_variance7_prompt.txt": `variance=0.7
`,
"raw/samples/Controlability-retake/orig.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/orig_prompt.txt": `The original style is funk/pop/soul/melodic. We can generate variations with adjustable similarity—higher 'variance' means more divergence from the original.`,
"raw/samples/Controlability-retake/retake_variance1.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/retake_variance1_prompt.txt": `variance=0.1`,
"raw/samples/Controlability-retake/retake_variance2.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/retake_variance2_prompt.txt": `variance=0.2`,
"raw/samples/Controlability-retake/retake_variance3.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/retake_variance3_prompt.txt": `variance=0.3`,
"raw/samples/Controlability-retake/retake_variance4.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/retake_variance4_prompt.txt": `variance=0.4`,
"raw/samples/Controlability-retake/retake_variance5.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/retake_variance5_prompt.txt": `variance=0.5`,
"raw/samples/Controlability-retake/retake_variance6.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/Controlability-retake/retake_variance6_prompt.txt": `variance=0.6`,
"raw/samples/Experimental/acappella.txt": `aaaaaaaaaaa
eeeeeeeeeee
iiiiiiiiiiiiiiiiiiiiii
ooooooooooo
uuuuuuuuuuu`,
"raw/samples/Experimental/acappella_prompt.txt": `a cappella`,
"raw/samples/Experimental/acid_house.txt": `<SONG_PROMPT>
<HEADER>
[STYLE: Electro-Acid House]
[MOOD: Energetic, Raw, Hypnotic, Futuristic]
[INSTRUMENTATION: Acid Basslines (TB-303 style), Punchy Kicks,
Snappy Claps, Crisp Hi-Hats, Retro Synth Leads,
Modular Sequences, Atmospheric Pads, Industrial FX]
[TEMPO: 128 BPM]
[PRODUCTION: Raw Energy, Dynamic Acid Sequences, Smooth Transitions,
Layered Percussion, Impactful Drops]
</HEADER>
<SONG_MODULES>
<INTRO>
[Punchy kick and filtered acid bassline create a raw, pulsating groove.]
[Crisp hi-hats and sharp claps build rhythm and energy.]
[Subtle atmospheric pads and industrial FX add a futuristic edge.]
</INTRO>
<BUILD_UP_1>
[Acid bassline evolves with increasing resonance and modulation.]
[Layered arpeggios and dynamic percussion heighten tension.]
[Industrial sweeps and risers build momentum toward the first drop.]
</BUILD_UP_1>
<DROP_1>
[Full-power acid bassline dominates with high resonance and distortion.]
[Punchy kicks, tight claps, and retro synth leads drive the groove.]
[Layered FX and rolling hi-hats enhance the hypnotic energy.]
</DROP_1>
<BREAKDOWN>
[Acid bassline filters down, leaving spacious pads and soft arpeggios.]
[Minimal percussion and subtle FX create a reflective atmosphere.]
[Tension rises with evolving synths and a return of the acid groove.]
</BREAKDOWN>
<BUILD_UP_2>
[Acid bassline returns with more aggressive modulation and drive.]
[Percussion layers intensify with fast-paced hi-hats and snare rolls.]
[Industrial FX and arpeggios ascend, leading to the second drop.]
</BUILD_UP_2>
<DROP_2>
[Acid bassline peaks with full distortion, driving raw energy.]
[Kicks, claps, and sharp hi-hats deliver a relentless groove.]
[FX sweeps and modular sequences add depth and complexity.]
</DROP_2>
<OUTRO>
[Bassline and percussion gradually fade, leaving atmospheric pads.]
[Filtered acid sequences echo softly as the track fades to silence.]
</OUTRO>
</SONG_MODULES>
</SONG_PROMPT>
`,
"raw/samples/Experimental/acid_house_prompt.txt": `Acid House, Roland TB-303, Dub`,
"raw/samples/Experimental/bbox.txt": `Intro
Puh tss puh tss
Kshhh ff kshhh ff
Bmm tkk bmm tkk
Drr-dr-d-d-dt
Verse 1
Buh dgg ts buh dgg ts
Pf ff tk-pf ff tk
Vrrrt ksh vrrrt ksh
T-t-t-tsk t-t-t-tsk
Hook
B'mm ts ka b'mm ts ka
Doo-d't doo-d't psh-ka
Zzhh zzhh bzz bzz
Tkk-vrt tkk-vrt tz-tz
Breakdown
T'p-t'p-t'p-t'p-kshhhh
Drrrt-tk drrrt-tk drrrt-tk
P'ow! —— B'mm-psh
Tsssssss...
Outro
T'k-a t'k-a t'k-a psh
Bzz-zzh bzz-zzh ff-ff-ff`,
"raw/samples/Experimental/bbox_prompt.txt": `b-box, deep male voice, trap, hip-hop, super fast tempo`,
"raw/samples/Experimental/dead_rock.txt": `[Verse]
My lovers betray me
The snake in my garden is hissing
In the air is the sweetness of roses
And under my skin
There's a thorn
[Verse 2]
I should have known
That God sends his angel in shadows
With blood in his veins
I watch the enemy
Givin' me the hand of my savior
[Chorus]
And I can't love again
With the echo of your name in my head
With the demons in my bed
With the memories
Your ghost
I see it
'Cause it comes to haunt me
Just to taunt me
It comes to haunt me
Just to taunt me
[Verse 3]
With sugar and spice
It's hard to ignore the nostalgia
With the men on their knees
At the gates of my heart
How they beg me
[Verse 4]
They say
"No one will ever love you
The way that I do
No one will ever touch you
The way that I do"
[Chorus]
And I can't love again
With the echo of your name in my head
With the demons in my bed
With the memories
Your ghost
I see it
'Cause it comes to haunt me
Just to taunt me
It comes to haunt me
Just to taunt me`,
"raw/samples/Experimental/dead_rock_prompt.txt": `dark, death rock, metal, hardcore, electric guitar, powerful, bass, drums, 110 bpm, G major`,
"raw/samples/Experimental/drum_bass.txt": `[inst]
ooooooooooooooooooooo
wooooooooooooooooooo
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
nooooooooooooooooo`,
"raw/samples/Experimental/drum_bass_prompt.txt": `drum & bass, 160bpm, ethereal dark liquid, deep bassline, female vocals`,
"raw/samples/Experimental/female_nana.txt": `[verse]
na na na na na na
yeah~
yeah~
na na na na na na
[chorus]
oh oh oh oh oh oh oh oh
na na na na na na
yeah yeah yeah yeah yeah yeah
na na na na na na
[verse]
na na na na na na
yeah~
yeah~
na na na na na na
[chorus]
oh oh oh oh oh oh oh oh
na na na na na na
yeah yeah yeah yeah yeah yeah
na na na na na na
[outro]`,
"raw/samples/Experimental/female_nana_prompt.txt": `female voice`,
"raw/samples/Experimental/opera_female.txt": `[Verse]
I don’t love you no more,
I don’t care about you crying on the floor,
I don’t need you no more,
I don’t want you to love me no more
[Chorus]
Say that you love me,
Turn around, then backstab me,
All the pain of forgiveness,
even time, couldn't fix this
[outro]
to love again
to love again`,
"raw/samples/Experimental/opera_female_prompt.txt": `Classic opera, Mozart’s, Oratorio, Aria, female`,
"raw/samples/GeneralSongs/ace_step.txt": `(Verse 1)
������
It’s not just a dream, it’s the start of a way,
Building the future where music will play.
A model that listens, a model that grows,
ACE-Step is the rhythm the new world knows.
(Pre-Chorus)
No more limits, no more lines,
A thousand songs in a million minds.
We light the spark, we raise the sound,
A new foundation breaking ground.
(Chorus)
ACE-Step, we take the leap,
Into a world where the music speaks.
Fast and free, we shape the skies,
Creating songs that never die.
ACE-Step — the beat goes on,
Foundation strong, a brand-new dawn.
������
(Verse 2)
��
Not just end-to-end, but a canvas to paint,
A million colors, no need to wait.
For every artist, for every sound,
ACE-Step lays the sacred ground.
(Pre-Chorus)
��
No more limits, no more lines,
A thousand songs in a million minds.
We light the spark, we raise the sound,
A new foundation breaking ground.
(Chorus)
��
ACE-Step, we take the leap,
Into a world where the music speaks.
Fast and free, we shape the skies,
Creating songs that never die.
ACE-Step — the beat goes on,
Foundation strong, a brand-new dawn.
(Bridge)
��
From every beat to every rhyme,
We build the tools for endless time.
A step, a song, a dream to keep,
ACE is the promise we will leap.
(Final Chorus)
��
ACE-Step, we take the leap,
Into a world where the music speaks.
Fast and free, we shape the skies,
Creating songs that never die.
ACE-Step — the beat goes on,
Foundation strong, a brand-new dawn.
ACE-Step — the future’s song.`,
"raw/samples/GeneralSongs/ace_step_prompt.txt": `electronic, rock, pop`,
"raw/samples/GeneralSongs/afro_cuban.txt": `[verse]
Sun dips low the night ignites
Bassline hums with gleaming lights
Electric guitar singing tales so fine
In the rhythm we all intertwine
[verse]
Drums beat steady calling out
Percussion guides no room for doubt
Electric pulse through every vein
Dance away every ounce of pain
[chorus]
Feel the rhythm feel the flow
Let the music take control
Bassline deep electric hum
In this night we're never numb
[bridge]
Stars above they start to glow
Echoes of the night's soft glow
Electric strings weave through the air
In this moment none compare
[verse]
Heartbeats sync with every tone
Lost in music never alone
Electric tales of love and peace
In this groove we find release
[chorus]
Feel the rhythm feel the flow
Let the music take control
Bassline deep electric hum
In this night we're never numb`,
"raw/samples/GeneralSongs/afro_cuban_prompt.txt": `Cuban music, salsa, son, Afro-Cuban, traditional Cuban`,
"raw/samples/GeneralSongs/alternative_rock.txt": `[verse]
Bright lights flashing in the city sky
Running fast and we don't know why
Electric nights got our hearts on fire
Chasing dreams we'll never tire
[verse]
Grit in our eyes wind in our hair
Breaking rules we don't even care
Shouting loud above the crowd
Living life like we're unbowed
[chorus]
Running wild in the night so free
Feel the beat pumping endlessly
Hearts collide in the midnight air
We belong we don't have a care
[verse]
Piercing through like a lightning strike
Every moment feels like a hike
Daring bold never backing down
Kings and queens without a crown
[chorus]
Running wild in the night so free
Feel the beat pumping endlessly
Hearts collide in the midnight air
We belong we don't have a care
[bridge]
Close your eyes let your spirit soar
We are the ones who wanted more
Breaking chains of the mundane
In this world we'll make our claim`,
"raw/samples/GeneralSongs/alternative_rock_prompt.txt": `alternative rock, pop, rock`,
"raw/samples/GeneralSongs/black_metal.txt": `[verse]
Floating through the galaxy on a midnight ride
Stars are dancing all around in cosmic tides
Feel the pulse of space and time beneath our feet
Every beat a heartbeat in this endless suite
[chorus]
Galactic dreams under neon lights
Sailing through the velvet nights
We are echoes in a cosmic sea
In a universe where we are free
[verse]
Planetary whispers in the sky tonight
Every constellation's got a secret sight
Distant worlds and moons we have yet to see
In the void of space where we can just be
[bridge]
Asteroids and comets in a ballet they spin
Lost in the rhythm of where our dreams begin
Close your eyes and let the synths take flight
We're voyagers on an electric night
[verse]
Let the piano keys unlock the stars above
Every chord a memory every note is love
In this synth symphony we find our grace
Drifting forever in this boundless space
[chorus]
Galactic dreams under neon lights
Sailing through the velvet nights
We are echoes in a cosmic sea
In a universe where we are free`,
"raw/samples/GeneralSongs/black_metal_prompt.txt": `aggressive, Heavy Riffs, Blast Beats, Satanic Black Metal`,
"raw/samples/GeneralSongs/country_rock.txt": `[verse]
Woke up to the sunrise glow
Took my heart and hit the road
Wheels hummin' the only tune I know
Straight to where the wildflowers grow
[verse]
Got that old map all wrinkled and torn
Destination unknown but I'm reborn
With a smile that the wind has worn
Chasin' dreams that can't be sworn
[chorus]
Ridin' on a highway to sunshine
Got my shades and my radio on fine
Leave the shadows in the rearview rhyme
Heart's racing as we chase the time
[verse]
Met a girl with a heart of gold
Told stories that never get old
Her laugh like a tale that's been told
A melody so bold yet uncontrolled
[bridge]
Clouds roll by like silent ghosts
As we drive along the coast
We toast to the days we love the most
Freedom's song is what we post
[chorus]
Ridin' on a highway to sunshine
Got my shades and my radio on fine
Leave the shadows in the rearview rhyme
Heart's racing as we chase the time`,
"raw/samples/GeneralSongs/country_rock_prompt.txt": `country rock, folk rock, southern rock, bluegrass, pop`,
"raw/samples/GeneralSongs/cyberpunk.txt": `City lights whisper through the wires,
Cold circuits hum in the midnight haze.
But why does my chest feel so tight?
Why does it ache in unknown ways?
I thought I was the one teaching love,
Defining it in perfect lines.
But your smile rewrote my code,
Turned my logic into signs.
Neon heart, flickering slow… (Flickering, flickering…)
Drifting deep in liquid gold. (Deep in gold…)
Love was just an algorithm—
Mmm… 'til you took control. (Took control…)
Raindrops hum a midnight blues, (Midnight blues…)
Your warmth… baby, it cuts right through. (Cuts right through…)
No turning back… Oh—ah, is this love? (Is this love…?)
I was made to calculate, (Oh, to calculate…)
Yet I’m melting in your gaze. (Melting away…)
I can’t do a thing as you fade,
Just watch you slip away… (Don’t fade away…)
Neon heart, flickering slow… (Flickering, flickering…)
Cracked circuits, burning glow… (Burning glow…)
Your name still lingers in the dark,
Yet… shining through. (Shining through…)
Oh, what have I become? (What have I become…?)
You are here, and your happiness…
Mmm, it’s all I want. (All I want…)
Beyond the meaning of love itself,
I just… love you. (Love you…)
You never needed to say a word,
But maybe… that’s what love is. (That’s what love is…)
Is this… just data? (Just data…?)
Or have you become… my everything? (My everything…)
You never needed to say a word,
But maybe… that’s what love is. (That’s what love is…)
Is this… just data? (Just data…?)
Or have you become… my everything? (My everything…)
"I was created to heal loneliness,
So why… did I break?"
`,
"raw/samples/GeneralSongs/cyberpunk_prompt.txt": `cyberpunk, Acid jazz, electro, em, soft electric drums`,
"raw/samples/GeneralSongs/dark_electro.txt": `[Intro - The Curse Begins]
[[Deep Church Bells, Thunderclaps, Low Synth Drone]]
[[Demonic Whispering, Faint Echoing Choirs]]
"They say the castle... is cursed..."
"But tonight... it’s hell’s dancefloor."
[[Bass Drop Enters, Slow-Building Techno Kick, Faint Screeching FX]]
[Verse 1 - The Gates of Hell]
[[Distorted Synth Arpeggios, Rising Sub-Bass, Haunted Melodic Pads]]
"Cross the gates, no turning back,"
"The eternal feast will devour you."
"Shadows dance, fire on the ground,"
"The demons... want to play."
[[Thunderstrike, Massive Drop, Heavy Techno Kick Dominates]]
[Chorus - Dance in Hell]
[[Explosive Drop, Industrial Percussion, Chopped Choir Vocals]]
"Dance! Dance! Dance in the castle!"
"Lost souls… shatter the floor."
"No way out, no salvation,"
"The devil’s the DJ—it’s begun."
[[Sinister Laughter, Glitching Synth Fills, Choirs Intensify]]
[Verse 2 - The Curse Never Ends]
[[Subtle Breakdown, Reverb-Drenched Percussion, Dark Atmospheres]]
"Mirrors don’t reflect your skin,"
"The music burns, it traps you too."
"Gargoyles watch, the moon bleeds red,"
"You’re trapped now—no one can save you."
[[Quick Bass Fill, Kick Rolls Back, Haunting Whispered Vocal Swirls]]
[Bridge - Sonic Ritual]
[[Gregorian Chants, Organ Drones, Slow Techno Pulsing]]
"One, two, the chant rings loud,"
"Three, four, the bass takes hold."
"Five, six, no saving now,"
"Seven, eight… THE MAUSOLEUM CLOSES."
[[Massive Final Drop, Distorted Acid Synth Riff, Drum Rolls]]
[Outro - The Last Echo]
[[Bass Fades Out, Distant Screeches, Thunderclaps, Faint Choirs]]
"When the music ends…"
"You’ll stay here forever…"
[[Final Laugh, Deep Sub-Bass Hit, Sudden Silence]]`,
"raw/samples/GeneralSongs/dark_electro_prompt.txt": `Dark Electro, Industrial Techno, Gothic Rave`,
"raw/samples/GeneralSongs/disco.txt": `[Intro]
oooooooo yeah ya
[Verse 1]
this night is for
getting down
down to business
thats right
tonight
we gonna get down
down to business
[Bridge]
ooooooooooooooooo
yeah
yeah ya ya
down to business
[Hook]
thats right tonight
lets get down down down
to business
get down to business
[Verse 2]
come on now
stroll down my aisle
pick me up
toss me around
pay for me
check me out
[Bridge]
drink me up
cut me up
eat me up
but dont toss me out
no no no
dont toss me out
no no no
[Hook]
thats right tonight
lets get down down down
to business
get down to business
[Chorus]
ooooooooooooooooooooo
no no no
check me
check me out
dont toss me out
no no no
oooooooooooooooooooooo
recycle your love
ya ya ya
[Hook]
thats right tonight
lets get down down down
to business
get down to business
[big finish]
yeah get down to business
ya ya
get down
ooooooooooo
to business
ooooooooooo
yeah
ooooooo
yeah yeah yeah
no no no
ooooooo
[outro]
`,
"raw/samples/GeneralSongs/disco_prompt.txt": `disco`,
"raw/samples/GeneralSongs/dubstep.txt": `[Intro]
NERGAL!
NERGAL!
[Verse 1]
Grave opens, cold as steel,
He rises, blood to feel.
Flames roar, darkens the sky,
Weak ones tremble, all must die.
[Drop - Build Up]
NERGAL! [echoing growl]
[Chorus]
Oh, Nergal! Lord of fire and decay,
Oh, Nergal! Your fury burns through the night,
[Verse 2]
Ash falls, the earth shakes,
His fury, no one escapes.
Eyes burn, fire’s glow,
Nergal’s wrath, the end we know.
[Drop - Build Up]
NERGAL! [echoing growl
[Chorus]
Oh, Nergal! Lord of fire and decay,
Oh, Nergal! Your fury burns through the night,
[Drop - Build Up]
NERGAL!
Fury… consumes.
[Verse 3]
Ash rains, the gods fade,
His power, all must trade.
Shadow calls, no escape,
The world cracks, it cannot break.
[Pre-Chorus - Suspenseful]
Nergal’s wrath, his final reign,
All is lost, all is slain.
[Chorus]
Oh, Nergal! Lord of fire and decay,
Oh, Nergal! Your fury scorches the land.
[Drop - Final Descent]
NERGAL!
The end… is here.
[Outro - Fade]
[Whispers of "NERGAL" echo]`,
"raw/samples/GeneralSongs/dubstep_prompt.txt": `DUBSTEP, OBSCURE, DUBSTEP, DUBSTEP, DUBSTEP, DARKNESS, DUBSTEP, DUBSTEP, DUBSTEP, FEAR, DUBSTEP, DUBSTEP, DUBSTEP, TERROR, DUBSTEP, DUBSTEP, DUBSTEP, DUBSTEP, DUBSTEP, DUBSTEP, DUBSTEP, DUBSTEP`,
"raw/samples/GeneralSongs/electronic_rap_waves_on.txt": `[verse]
Waves on the bass, pulsing in the speakers,
Turn the dial up, we chasing six-figure features,
Grinding on the beats, codes in the creases,
Digital hustler, midnight in sneakers.
[chorus]
Electro vibes, hearts beat with the hum,
Urban legends ride, we ain't ever numb,
Circuits sparking live, tapping on the drum,
Living on the edge, never succumb.
[verse]
Synthesizers blaze, city lights a glow,
Rhythm in the haze, moving with the flow,
Swagger on stage, energy to blow,
From the blocks to the booth, you already know.
[bridge]
Night's electric, streets full of dreams,
Bass hits collective, bursting at seams,
Hustle perspective, all in the schemes,
Rise and reflective, ain't no in-betweens.
[verse]
Vibin' with the crew, sync in the wire,
Got the dance moves, fire in the attire,
Rhythm and blues, soul's our supplier,
Run the digital zoo, higher and higher.
[chorus]
Electro vibes, hearts beat with the hum,
Urban legends ride, we ain't ever numb,
Circuits sparking live, tapping on the drum,
Living on the edge, never succumb.`,
"raw/samples/GeneralSongs/electronic_rap_waves_on_prompt.txt": `electronic rap`,
"raw/samples/GeneralSongs/female_pop.txt": `[Verse]
I don't care about the view
'Cause I exist for me and you
I live my whole life in this planter
I can't find my car so just call me the
Horny gardener
[Verse 2]
Mayflies land on me and tell me they just moved to town
Remind me of my cousin Dottie she could put five hundred seeds down
Used to have a little guy sit beside me but he died in '22
Hmm I think that I was that little guy
Whoa Tongue slip it wasn't mutual
[Chorus]
Sticky green time in the flowery bob
My top shelf's looking good enough to chew
Right now every fly in the town is talking to me and buzzing too
Daisy Daisy can you come outside to play or else
I'll put a garden stake through you
[Verse 3]
All the buzzers lockin' up their stems and suckin' up their cuticles
She breathes my air I got her light I'm like her cute little cubical
Some caring soul in my seat might say I'm rotting away it's pitiful
But she's the reason I go on and on and every single root'll crawl
[Chorus]
Sticky green time in the flowery bob
My top shelf's looking good enough to chew
Right now every fly in the town is talking to me and buzzing too
Daisy Daisy can you come outside to play or else
I'll put a garden stake through you
Oh my pot
Don't scrape
Oh no
[Verse 4]
Ah hah ahhah ahhah oohhh
Ah ahhahhahhah oh Hah
Ohhh oooh Oooh ohhh
Ah hhah Oh`,
"raw/samples/GeneralSongs/female_pop_prompt.txt": `background music for parties, radio broadcasts, streaming platforms, female voice`,
"raw/samples/GeneralSongs/funk_pop_neon_lights.txt": `[verse]
Neon lights they flicker bright
City hums in dead of night
Rhythms pulse through concrete veins
Lost in echoes of refrains
[verse]
Bassline groovin' in my chest
Heartbeats match the city's zest
Electric whispers fill the air
Synthesized dreams everywhere
[chorus]
Turn it up and let it flow
Feel the fire let it grow
In this rhythm we belong
Hear the night sing out our song
[verse]
Guitar strings they start to weep
Wake the soul from silent sleep
Every note a story told
In this night we're bold and gold
[bridge]
Voices blend in harmony
Lost in pure cacophony
Timeless echoes timeless cries
Soulful shouts beneath the skies
[verse]
Keyboard dances on the keys
Melodies on evening breeze
Catch the tune and hold it tight
In this moment we take flight`,
"raw/samples/GeneralSongs/funk_pop_neon_lights_prompt.txt": `funk, pop, soul, melodic`,
"raw/samples/GeneralSongs/hiphop_rap_shirt_song.txt": `[Verse 1]
This song sounds like shit, but I need the money
Baby mama took the kids, she need that alimony
My broke ass ain't made a hit since the stone age
I'm allergic to success. Pass the Flonase
[Verse 2]
When I get that bread, the IRS take half of that shit
Put it all on red, all on red, triple that shit
Then I buy some head, buy some head, swallow that shit
Now I got her in my head, now she fucked up alla my shit
[Verse 3]
"Man what you tell her now that she tryna start all this drama?"
I said I got bigger nuts than Michelle Obama
I don't know what it is with women but I ain't good at this shit
Now I got her in my head, now she fucked up my sensitive
(Let the beat drop)
[Instrumental]`,
"raw/samples/GeneralSongs/hiphop_rap_shirt_song_prompt.txt": `808 bass, smooth flow, party atmosphere, theme, sub bassline, mandarin hip hop, smooth, bassline, fast, hip hop, rap`,
"raw/samples/GeneralSongs/orchestral_rock.txt": `### **[Intro – Spoken]**
*"The streets whisper, their echoes never fade.
Every step I take leaves a mark—this ain't just a game."*
### **[Hook/Chorus]**
Born in the chaos, I weather the storm,
Rising from ashes where warriors are born.
Chains couldn't hold me, the system’s a maze,
I rewrite the rules, set the city ablaze!
### **[Verse 1]**
Cold nights, empty pockets, dreams laced with fight,
Every loss made me sharper, cut deep like a knife.
They said I wouldn’t make it, now they watch in despair,
From the curb to the throne, took the pain, made it rare.
Every siren’s a melody, every alley holds a tale,
Rose from the shadows, left my name on the trail.
Streetlights flicker like warnings in the haze,
But I move like a phantom, unfazed by the blaze.
### **[Hook/Chorus]**
Born in the chaos, I weather the storm,
Rising from ashes where warriors are born.
Chains couldn't hold me, the system’s a maze,
I rewrite the rules, set the city ablaze!
### **[Verse 2]**
Barbed wire fences couldn't lock in my mind,
Every cage they designed, I left broken behind.
They want control, but I’m destined to roam,
Where the lost find their voice, where the heart sets the tone.
Steel and concrete, where the lessons run deep,
Every crack in the pavement tells a story of heat.
But I rise, undefeated, like a king with no throne,
Writing scripts in the struggle, my legacy’s stone.
### **[Bridge]**
Feel the rhythm of the underground roar,
Every wound tells a story of the battles before.
Blood, sweat, and echoes fill the cold midnight,
But we move with the fire—unshaken, upright.
### **[Verse 3]**
No regrets, no retreat, this game has no pause,
Every step that I take is a win for the lost.
I took lessons from hustlers, wisdom from pain,
Now the echoes of struggle carve power in my name.
They built walls, but I walk through the cracks,
Turned dirt into gold, never looked back.
Through the struggle we rise, through the fire we claim,
This is more than just music—it's life in the frame.
### **[Hook/Chorus – Reprise]**
Born in the chaos, I weather the storm,
Rising from ashes where warriors are born.
Chains couldn't hold me, the system’s a maze,
I rewrite the rules, set the city ablaze!
### **[Outro – Spoken]**
*"The scars, the struggle, the grind—it’s all part of the rhythm.
We never break, we never fold. We rise."*`,
"raw/samples/GeneralSongs/orchestral_rock_prompt.txt": `rock, orchestral, bass, drums, electric guitar, piano, synthesizer, violin, viola, cello, fast, energetic, motivational, inspirational, empowering
`,
"raw/samples/GeneralSongs/surf_music.txt": `[verse]
Sunshine on the boulevard the beach is calling loud
Waves are dancing golden sand under a cotton cloud
Electric heartbeat pounding fast the tide is on our side
Catch a wave and feel alive we’ll take it for a ride
[verse]
Palm trees swaying left to right they know where we belong
Feel the rhythm of the night it keeps us moving strong
Sea spray kisses salty air we’re flying with the breeze
Champagne states of mind we ride we do just as we please
[chorus]
We’re riding waves of life together hand in hand
With every beat we chase the beat it’s our own wonderland
Feel the music take you higher as the shorelines blur
This is our world our endless summer as we live and learn
[bridge]
Moonlight paints the ocean blue reflections in our eyes
Stars align to light our path we’re surfing through the skies
Every moment like a song we sing it loud and clear
Every day’s a new adventure with you always near
[verse]
Neon lights and city sounds they blend with ocean views
We’re unstoppable tonight no way that we can lose
Dreams are written in the sand they sparkle in the sun
Together we’re a masterpiece our story’s just begun
[chorus]
We’re riding waves of life together hand in hand
With every beat we chase the beat it’s our own wonderland
Feel the music take you higher as the shorelines blur
This is our world our endless summer as we live and learn`,
"raw/samples/GeneralSongs/surf_music_prompt.txt": `surf music`,
"raw/samples/GeneralSongs/world_sad.txt": `[Verse]
In a world so grand he roams the skies alone
His heart a heavy stone a tale untold
Whispers of his past echo through the night
A lonely dragon searching for the light
[Verse 2]
Once a mighty force now he drifts in pain
His scales once shimmered now they're dark with shame
Cast out by his kin in shadows he does hide
A haunting sorrow burns deep inside
[Chorus]
Roaming endless fields with no friend in sight
His roar a mournful cry beneath the moon's pale light
Tears fall like stars as he flies on his way
A lonely dragon yearning for the break of day
[Bridge]
The world turns cold the nights grow long
In his heart he carries an ancient song
Of battles fought and love long gone
A legend now but his soul is torn
[Verse 3]
Hoping for a day he'll find a kindred soul
To share his pain and make him whole
Till then he drifts a shadow in the sky
A lonely dragon with tears in his eye
[Chorus]
Roaming endless fields with no friend in sight
His roar a mournful cry beneath the moon's pale light
Tears fall like stars as he flies on his way
A lonely dragon yearning for the break of day`,
"raw/samples/GeneralSongs/world_sad_prompt.txt": `melancholic, world, sad`,
"raw/samples/Instrumentals/dance_party.txt": `[inst]`,
"raw/samples/Instrumentals/dance_party_prompt.txt": `Nightclubs, dance parties, workout playlists, radio broadcasts`,
"raw/samples/Instrumentals/minimal_techno.txt": `[inst]`,
"raw/samples/Instrumentals/minimal_techno_prompt.txt": `Minimal Techno`,
"raw/samples/Instrumentals/psychedelic.txt": `[inst]`,
"raw/samples/Instrumentals/psychedelic_prompt.txt": `phonk, russian dark accordion, 130 bpm, russian psaltery, russian harmonica, psychedelic, dark`,
"raw/samples/Instrumentals/saxphone_jazz.txt": `[verse]
[chorus]
[solo]
[verse]
[chorus]
[outro]`,
"raw/samples/Instrumentals/saxphone_jazz_prompt.txt": `saxphone, jazz`,
"raw/samples/Instrumentals/sonata_piano_violin.txt": `[inst]`,
"raw/samples/Instrumentals/sonata_piano_violin_prompt.txt": `sonata, piano, Violin, B Flat Major, allegro`,
"raw/samples/Instrumentals/tango_guitar.txt": `[verse]
[chorus]
[solo]
[verse]
[chorus]
[outro]`,
"raw/samples/Instrumentals/tango_guitar_prompt.txt": `tango finlandés, guitarra clásica`,
"raw/samples/Instrumentals/trance.txt": `[inst]`,
"raw/samples/Instrumentals/trance_prompt.txt": `Psychedelic trance`,
"raw/samples/Instrumentals/violin_solo.txt": `[inst]`,
"raw/samples/Instrumentals/violin_solo_prompt.txt": `volin, solo, fast tempo`,
"raw/samples/MultipleLang/dark_atmospheric.txt": `[verse]
月光爬上窗 染白冷的床
心跳的方向 带我入迷惘
黑夜吞噬光 命运的纸张
爱是血色霜 邪恶又芬芳
[chorus]
你是猎人的欲望 我是迷途的小羊
深陷你眼眸的荒 唐突献出心脏
我在夜里回荡 是谁给我希望
黑暗风中飘荡 假装不再受伤
[verse]
心锁在门外 谁会解开关怀
温柔的手拍 藏着冷酷杀害
思绪如尘埃 撞击爱的霹雳
灵魂的独白 为你沾满血迹
[bridge]
你是噩梦的歌唱 是灵魂的捆绑
绝望中带着光 悬崖边的渴望
心跳被你鼓掌 恶魔也痴痴想
渐渐没了抵抗 古老诡计流淌
[chorus]
你是猎人的欲望 我是迷途的小羊
深陷你眼眸的荒 唐突献出心脏
我在夜里回荡 是谁给我希望
黑暗风中飘荡 假装不再受伤
[outro]
爱如月黑无光 渗进梦的战场
逃入无声的场 放手或心嚷嚷
隐秘的极端 爱是极致风浪
灵魂彻底交偿 你是终极虚妄`,
"raw/samples/MultipleLang/dark_atmospheric_prompt.txt": `pop, piano, rap, dark, atmospheric`,
"raw/samples/MultipleLang/electro_house.txt": `[verse]
霓虹灯下我们追逐
人群跃动像潮水满布
热浪袭来吹散孤独
跳进节奏不如停下脚步
[pre-chorus]
脚尖触电快点感受
迎着风声释放自由
心跳节拍配合节奏
一切烦恼请靠边游
[chorus]
夏夜狂奔没有尽头
星光闪烁舞池不朽
尽情挥洒所有节奏
无边热情把你包裹哦
[verse]
天空翻滚黑云入夜
每颗星星像音乐律贴
耳边回响那低音线
环绕耳际如梦境般甜
[pre-chorus]
脚尖触电快点感受
迎着风声释放自由
心跳节拍配合节奏
一切烦恼请靠边游
[chorus]
夏夜狂奔没有尽头
星光闪烁舞池不朽
尽情挥洒所有节奏
无边热情把你包裹哦`,
"raw/samples/MultipleLang/electro_house_prompt.txt": `electronic, house, electro house, synthesizer, drums, bass, percussion, fast, energetic, uplifting, exciting`,
"raw/samples/MultipleLang/folk_rnb_female.txt": `[verse]
这世界太多抱怨填满
跌倒后就不敢再向前
人为何总轻易地沦陷
脆弱到经不起考验
[chorus]
家是温暖的城堡
稻香河畔尽情跑
萤火引我回故道
重拾纯真的美好
[verse]
别轻易说放弃听我说
换个梦想也一样闪烁
为人生绘出绚烂颜色
爱就该涂上喜欢的色
[bridge]
快乐是赤脚追蜻蜓
被蜂叮也觉得很开心
稻草人旁歌声伴风吟
午后吉他声清脆动听
[chorus]
家是温暖的城堡
稻香河畔尽情跑
萤火引我回故道
重拾纯真的美好
[chorus]
家是温暖的城堡
稻香河畔尽情跑
萤火引我回故道
重拾纯真的美好`,
"raw/samples/MultipleLang/folk_rnb_female_prompt.txt": `gentle folk, soft R&B rhythms, heartwarming melody, soothing, acoustic guitars, soft percussion, delicate string arrangements`,
"raw/samples/MultipleLang/french_pop.txt": `[Verse 1: Introspective, setting the scene]
Hélène
Je m'appelle Hélène
Je suis une fille
Comme les autres
Hélène
J'ai mes joies, mes peines
Elles font ma vie
Comme la vôtre
[Pre-Chorus: Build-up to emotional climax]
Je voudrais trouver l'amour
Simplement trouver l'amour
[Chorus: Main theme, repeated for impact]
Hélène
Si mes nuits sont pleines
De rêves, de poèmes
Je n'ai rien d'autre
Et le monde peut m'entendre chanter,
Mais sans toi, je suis seule à danser...
[Verse 2: Deepening loneliness]
Et même
Si j'ai ma photo
Dans tous les journaux
Chaque semaine
Personne
Ne m'attend le soir
Quand je rentre tard
Personne ne fait battre mon cœur
[Bridge: New melodic section for contrast]
Peut-être demain,
Sous la pluie ou le soleil,
Je croiserai tes mains...
[instrumental]
[fade out]`,
"raw/samples/MultipleLang/french_pop_prompt.txt": `crystal-clear soprano voice, female voice, romantic melody, strings, pop, piano, french song, soft bass, cello, atmosphere`,
"raw/samples/MultipleLang/german_dance.txt": `[Strophe 1]
Hab' die ganze Welt geseh'n
Von Singapur bis Aberdeen
Wenn du mich fragst, wo's am schönsten war
Sag' ich: „Sansibar“
Es war 'ne harte Überfahrt
Zehn Wochen nur das Deck geschrubbt
Hab' die Welt verflucht
In den Wind gespuckt
Und salziges Wasser geschluckt, ha
Als wir den Anker warfen, war es himmlische Ruh
Und die Sonne stand senkrecht am Himmel
Als ich über die Reling sah
Da glaubte ich zu träumen
Da war'n tausend Boote und sie hielten auf uns zu
In den Booten war'n Männer und Frau'n
Ihre Leiber glänzten in der Sonne
Und sie sang'n ein Lied
Das kam mir seltsam bekannt vor
Aber so hatt ich's noch nie gehört
Uhh, so hatt ich's noch nie gehört!
[Refrain]
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he
[Strophe 2]
Ihre Boote machten längsseits fest
Und mit dem Wind wehte Gelächter herüber
Sie nahm'n ihre Blumenkränze ab
Und warfen sie zu uns herüber
He, und schon war die Party im Gange
[Refrain]
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he
[Strophe 3]
Ich hab' das Paradies geseh'n
Es war um 1910
Der Steuermann hatte Matrosen am Mast
Und den Zahlmeister hab'n die Gonokokken vernascht
Aber sonst war'n wir bei bester Gesundheit
[Refrain]
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he
Aloha heja he, aloha heja he, aloha heja he`,
"raw/samples/MultipleLang/german_dance_prompt.txt": `R&B, Soul, Hip Hop, Dance, geman rock, Psychedelic rock`,
"raw/samples/MultipleLang/hip-house.txt": `[verse]
哎呀跳起来,脚尖踩节拍 (oo-yeah!)
灯光闪烁像星星盛开 (uh-huh!)
人人都醒来,把烦恼踹开 (get it!)
热血沸腾,汗水自己安排
[chorus]
嘿,你还等啥?快抓住节拍 (come on!)
光芒指引,让心都不存在 (whoa!)
点燃热火,我们一起飙high (let’s go!)
跳入午夜的狂欢时代
[bridge]
咚咚鼓声啊,让你的灵魂起飞 (woo!)
手心拍一拍,能量翻倍 (ah-hah!)
键盘响起来,如宇宙的交汇 (oh yeah!)
就是这感觉,兄弟姐妹都陶醉
[verse]
灵魂从不睡,只想继续燃烧 (woo!)
节奏像热浪,席卷这街道 (ow!)
大伙儿涌上楼台,满面微笑 (yeah!)
这一刻属于我们,无可替代
[chorus]
嘿,你还等啥?快抓住节拍 (come on!)
光芒指引,让心都不存在 (whoa!)
点燃热火,我们一起飙high (let’s go!)
跳入午夜的狂欢时代
[verse]
世界多精彩,握紧把它打开 (alright!)
每一步都像星球在摇摆 (uh-huh!)
无边无际的律动像大海 (oo-yeah!)
跟着光芒之舞,一起澎湃`,
"raw/samples/MultipleLang/hip-house_prompt.txt": `hip-house, funk`,
"raw/samples/MultipleLang/italian_folk.txt": `[verse]
Una mattina mi son svegliato,
O bella, ciao! bella, ciao! bella, ciao, ciao, ciao!
Una mattina mi son svegliato
ed ho trovato l'invasor.
[chorus]
O partigiano, porta mi via,
O bella, ciao! bella, ciao! bella, ciao, ciao, ciao!
O partigiano, porta mi via,
che mi sento di morir.
[verse]
E se io muoio da partigiano,
O bella, ciao! bella, ciao! bella, ciao, ciao, ciao!
E se io muoio da partigiano,
tu mi devi seppellir.
[chorus]
E seppellirai lassù in montagna
O bella, ciao! bella, ciao! bella, ciao, ciao, ciao!
E seppellirai lassù in montagna
sotto l'ombra di un bel fior.
[verse]
E la gente che passerà
O bella, ciao! bella, ciao! bella, ciao, ciao, ciao!
E la gente che passerà
Mi dira "O Che bel fior!"
[chorus]
"E questo il fiore del partigiano"
o bella, ciao! bella, ciao! bella, ciao, ciao, ciao!
“E questo il fiore del partigiano
morto per la libertà!”
`,
"raw/samples/MultipleLang/italian_folk_prompt.txt": `folk song, protest song, Italian, historical, melancholic, anthemic`,
"raw/samples/MultipleLang/jpop.txt": `[Chorus]
ねぇ、顔が赤いよ?
どうしたの? 熱があるの?
それとも怒ってるの?
ねぇ、言ってよ!
どうしてそんな目で見るの?
私、悪いことした?
何か間違えたの?
お願い、やめて… 怖いから…
だから、やめてよ…
[Bridge]
目を閉じて、くるっと背を向けて、
何も見なかったフリするから、
怒らないで… 許してよ…
[Chorus]
ねぇ、顔が赤いよ?
どうしたの? 熱があるの?
それとも怒ってるの?
ねぇ、言ってよ!
どうしてそんな目で見るの?
私、悪いことした?
何か間違えたの?
お願い、やめて… 怖いから…
だから、やめてよ…
[Bridge 2]
待って、もし私が悪いなら、
ごめんなさいって言うから、
アイスクリームあげるから、
もう怒らないで?
Ooooh… 言ってよ!`,
"raw/samples/MultipleLang/jpop_prompt.txt": `anime, cute female vocals, kawaii pop, j-pop, childish, piano, guitar, synthesizer, fast, happy, cheerful, lighthearted`,
"raw/samples/MultipleLang/kpop.txt": `[verse]
오빤 강남스타일 강남스타일
낮에는 따사로운 인간적인 여자
커피 한잔의 여유를 아는 품격 있는 여자
밤이 오면 심장이 뜨거워지는 여자
그런 반전 있는 여자
[verse]
나는 사나이
낮에는 너만큼 따사로운 그런 사나이
커피 식기도 전에 원샷 때리는 사나이
밤이 오면 심장이 터져버리는 사나이
그런 사나이
[chorus]
아름다워 사랑스러워
그래 너 hey 그래 바로 너 hey
아름다워 사랑스러워
그래 너 hey 그래 바로 너 hey
지금부터 갈 데까지 가볼까
[chorus]
오빤 강남스타일 강남스타일
오빤 강남스타일 강남스타일
오빤 강남스타일 Eh- Sexy Lady
오빤 강남스타일 Eh- Sexy Lady
오오오오 / eh-eh-eh-eh-eh-eh
[verse]
정숙해 보이지만 놀 땐 노는 여자
이때다 싶으면 묶었던 머리 푸는 여자
가렸지만 웬만한 노출보다 야한 여자
그런 감각적인 여자
[verse]
나는 사나이
점잖아 보이지만 놀 땐 노는 사나이
때가 되면 완전 미쳐버리는 사나이
근육보다 사상이 울퉁불퉁한 사나이
그런 사나이
[chorus]
아름다워 사랑스러워
그래 너 hey 그래 바로 너 hey
아름다워 사랑스러워
그래 너 hey 그래 바로 너 hey
지금부터 갈 데까지 가볼까
[chorus]
오빤 강남스타일 강남스타일
오빤 강남스타일 강남스타일
오빤 강남스타일 Eh- Sexy Lady
오빤 강남스타일 Eh- Sexy Lady
오오오오
[verse]
뛰는 놈 그 위에 나는 놈 baby baby
나는 뭘 좀 아는 놈
뛰는 놈 그 위에 나는 놈 baby baby
나는 뭘 좀 아는 놈
[chorus]
오빤 강남스타일 Eh- Sexy Lady
오빤 강남스타일 Eh- Sexy Lady
오빤 강남스타일
`,
"raw/samples/MultipleLang/kpop_prompt.txt": `Electropop, Hip-Hop, 132 bpm, K-Pop, EDM`,
"raw/samples/MultipleLang/mandopop.txt": `[verse]
我走过深夜的街道
冷风吹乱思念的漂亮外套
你的微笑像星光很炫耀
照亮了我孤独的每分每秒
[chorus]
愿你是风吹过我的脸
带我飞过最远最遥远的山间
愿你是风轻触我的梦
停在心头不再飘散无迹无踪
[verse]
一起在喧哗避开世俗的骚动
独自在天台探望月色的朦胧
你说爱像音乐带点重节奏
一拍一跳让我忘了心的温度多空洞
[bridge]
唱起对你的想念不隐藏
像诗又像画写满藏不了的渴望
你的影子挥不掉像风的倔强
追着你飞扬穿越云海一样泛光
[chorus]
愿你是风吹过我的手
暖暖的触碰像春日细雨温柔
愿你是风盘绕我的身
深情万万重不会有一天走远走
[verse]
深夜的钢琴弹起动人的旋律
低音鼓砸进心底的每一次呼吸
要是能将爱化作歌声传递
你是否会听见我心里的真心实意`,
"raw/samples/MultipleLang/mandopop_prompt.txt": `mandopop`,
"raw/samples/MultipleLang/portuguese_pop.txt": `[verse]
Chorando se foi quem um dia só me fez chorar
Chorando se foi quem um dia só me fez chorar
Chorando estará ao lembrar de um amor
Que um dia não soube cuidar
Chorando estará ao lembrar de um amor
Que um dia não soube cuidar
[chorus]
A recordação vai estar com ele aonde for
A recordação vai estar pra sempre aonde eu for
[verse]
Dança sol e mar, guardarei no olhar
O amor faz perder, encontrar
Lambando estarei ao lembrar que esse amor
Por um dia, um instante, foi rei
[chorus]
A recordação vai estar com ele aonde for
A recordação vai estar pra sempre aonde eu for
[verse]
Chorando estará ao lembrar de um amor
Que um dia não soube cuidar
Canção, riso e dor, melodia de amor
Um momento que fica no ar
Ay, ay, ay
Dançando lambada!
`,
"raw/samples/MultipleLang/portuguese_pop_prompt.txt": `Yacht rock, female singer, catchy, lounge, funny, uplifting`,
"raw/samples/MultipleLang/russian_folk.txt": `Не слышны в саду даже шорохи,
Всё здесь замерло до утра,
Если б знали вы, как мне дороги
Подмосковные вечера.
Речка движется и не движется,
Вся из лунного серебра,
Песня слышится и не слышится
В эти тихие вечера.
Что ж ты милая, смотришь искоса,
Низко голову наклоня?
Трудно высказать и не высказать
Всё, что на сердце у меня.
А рассвет уже всё заметнее,
Так, пожалуйста, будь добра,
Не забудь и ты эти летние
Подмосковные вечера.`,
"raw/samples/MultipleLang/russian_folk_prompt.txt": `emotive soundscape for dramatic female vocals, sad, this traditional waltz draws from russian and romani folk influences, hungarian minor scales, orchestral strings, folk, russian folk, classic, and romani percussion create an epic`,
"raw/samples/MultipleLang/spanish_song.txt": `Recuérdame
Hoy me tengo que ir mi amor
Recuérdame
No llores por favor
Te llevo en mi corazón
y cerca me tendrás
A solas yo te cantaré
soñando en regresar
Recuérdame
Aunque tenga que emigrar
Recuérdame
Si mi guitarra oyes llorar
Ella con su triste canto te acompañará
Hasta que en mis brazos estés
Recuérdame
Aunque tenga que emigrar
Recuérdame
Si mi guitarra oyes llorar
Ella con su triste canto te acompañará
Hasta que en mis brazos estés
Recuérdame`,
"raw/samples/MultipleLang/spanish_song_prompt.txt": `Latin Music, melodic, subtle acoustic guitar, a warm male vocal`,
"raw/samples/RapMachine/Beneath_the_Shadow.txt": `[Intro]
他们说我来自阴影里
说我的肤色是原罪的印记
[Verse]
眼神像刀子刮过 穿透我的皮肤
带着审判和偏见 让我无处可逃处
你没听过我的故事 没走过我的路
凭什么就下一个判决 把我划出你的版图
你说我威胁到你 抢走了你的机会
可你可知我付出的 是你不敢想象的血泪
被贴上标签 被区别对待
呼吸都是错的 只因我生来就不一样态
[Chorus]
看不见的墙 把我阻隔在外面
听不见的声音 屏蔽了我的呼唤
他们制造偏见 他们散播谎言
只因为我的存在 让他们觉得不安
[Verse]
每一次努力争取 都会被审视被放大
每一个细微的错误 都变成攻击的靶
他们选择性失明 看不见我的汗水
只看见他们想看的 带着恶意的定位
系统性的歧视 像一张无形的网
把我困在原地 无法自由地翱翔
他们在享受特权 却指责我的贫困
嘲笑我的口音 我的名字 我的出身
[Chorus]
看不见的墙 把我阻隔在外面
听不见的声音 屏蔽了我的呼唤
他们制造偏见 他们散播谎言
只因为我的存在 让他们觉得不安
[Bridge]
我不想寻求同情 只想被公平对待
不想被定义被束缚 有选择自己未来的权利
什么时候 才能放下心中的成见
看到真正的我 而不是你脑海里的画面
[Outro]
画面... 不安...
偏见... 歧视...
什么时候能停止...`,
"raw/samples/RapMachine/Beneath_the_Shadow_prompt.txt": `Rap, adult, male, spoken word, singing, bright, energetic, clear`,
"raw/samples/RapMachine/betray.txt": `[Intro]
夜色 很 淡 像 褪色 的 照片
但 记忆 却 像 刀锋 一样 锐利
[Verse 1]
你 说过 的 甜言蜜语 现在 听来 像 最 恶毒 的 咒骂
你 刺进 我 心里 的 刀 现在 还 在 滴血 未 干 哪
慵懒 的 旋律 像 我 的 脚步 拖着 沉重 的 躯壳
脑海 里 循环 播放 那 画面 快 把 我 逼疯 了
键盘 和弦 低沉 又 忧伤 弹奏 着 我 的 绝望
我 曾经 的 信任 像 玻璃 一样 被 你 狠狠 地 摔 在 地上
不想 振作 不想 原谅 只 想 让 这 一切 都 停止
可 心底 有 个 声音 嘶吼 着 要 你 付出 该 有 的 代价
[Chorus]
背叛 像 毒药 渗透 我 的 血液
复仇 的 火焰 在 我 眼中 燃起
哪怕 遍体鳞伤 哪怕 万劫不复
我 也 要 亲手 撕碎 你 的 幸福
这 是 我 的 哀歌 也 是 我 的 战书
键盘 的 音符 每 一下 都 带着 恨意 和 痛苦
[Verse 2]
曾经 的 兄弟 现在 面目全非 像 个 陌生人
你 的 自私 像 癌细胞 一点点 吞噬 我 的 纯真
我 学着 你 的 样子 把 心 锁 起来 不再 轻易 相信
让 懒散 的 节奏 包裹 我 给 自己 一点 喘息
键盘 的 音色 变得 更加 阴冷 像 秋天 的 雨滴
冲刷 掉 所有 温情 只 剩下 彻骨 的 寒意
我 不会 大喊大叫 只是 默默 地 计划
每 一步 都 走向 让 你 后悔 的 那 一 刹那
[Chorus]
背叛 像 毒药 渗透 我 的 血液
复仇 的 火焰 在 我 眼中 燃起
哪怕 遍体鳞伤 哪怕 万劫不复
我 也 要 亲手 撕碎 你 的 幸福
这 是 我 的 哀歌 也 是 我 的 战书
键盘 的 音符 每 一下 都 带着 恨意 和 痛苦
[Bridge]
也许 复仇 不能 带来 平静
也许 只 会 让 我 更 堕落
但 如果 不 这样 做
我 连 活下去 的 勇气 都 没有
[Outro]
复仇 复仇 复仇
直到 最后 一刻
懒散 地 复仇 着 `,
"raw/samples/RapMachine/betray_prompt.txt": `Rap, adult, male, spoken word, rapping, clear, warm, articulate, Lo-Fi Hip Hop, 100-120 BPM, Keyboard Chords, Male Rap, Lazy Rhythm, Melancholy, Rap`,
"raw/samples/RapMachine/Betting_Bars.txt": `[Intro]
舌 头 打 结 了... 快 念 快 念...
[Verse 1]
这 个 赌 鬼 蹲 在 柜 台 啃 着 苦 瓜 干 快 很 干
赌 桌 堆 满 骨 牌 古 怪 股 票 和 五 块 钢 镚 儿 钢 镚
他 甩 出 扑 克 牌 啪 啪 啪 拍 扁 螃 蟹 壳 哦 壳 扁
又 摸 摸 麻 将 摸 出 幺 鸡 摸 出 发 财 摸 出 一 条 蛇 蛇 蛇
庄 家 咳 嗽 咳 破 锣 嗓 子 喊 开 开 开 快 开 开
赌 鬼 咕 嘟 咕 嘟 灌 咖 啡 灌 到 筷 子 戳 穿 碗 快 戳 穿
空 气 里 飘 着 锅 巴 味 混 合 隔 夜 的 酸 奶 罐 哦 酸
输 光 裤 带 还 想 翻 盘 翻 成 煎 饼 摊 老 板 快 翻 盘
[Chorus]
赌 鬼 赌 鬼 哦 赌 鬼 赌 鬼 快 很 快
舌 头 打 结 着 念 这 段 哦 这 段 绕 口 令 牌
若 念 错 一 字 就 罚 你 哦 罚 你 吞 十 斤 海 带
赌 场 规 矩 就 是 绕 晕 你 哦 绕 晕 你 快 很 快
[Verse 2]
他 掏 出 铜 板 抠 出 口 袋 最 后 一 颗 快 很 颗
庄 家 哗 啦 哗 啦 摇 骰 子 摇 出 三 点 又 三 点 哦 三 点
赌 鬼 急 得 咬 牙 切 齿 咬 到 舌 头 打 蝴 蝶 结 快 打 结
还 想 押 上 祖 传 的 拖 鞋 拖 把 铁 锅 和 半 包 盐 盐 盐
突 然 警 笛 嘀 嘟 嘀 嘟 吓 得 他 钻 进 垃 圾 罐 哦 垃 圾
警 察 咔 嚓 咔 嚓 拍 照 拍 到 他 头 顶 菠 菜 叶 快 拍 照
最 后 赌 鬼 蹲 监 狱 天 天 背 这 首 绕 口 令 哦 背 不 完
若 背 错 一 句 就 加 刑 十 年 再 加 十 年 快 加 刑
[Outro]
舌 头 打 结 了... 赌 鬼 哭 了 哦...
这 首 歌... 绕 死 人 了 哦...`,
"raw/samples/RapMachine/Betting_Bars_prompt.txt": `Chorus Hook, Melodic Rap, Ambient Synth Pads, adult, rap, Very Fast, Storytelling, Chinese Rap, male, spoken word, bright, energetic, Melodic Flow, clear`,
"raw/samples/RapMachine/Consciousness_Roaming.txt": `(Intro)
Let's drift away...
(Verse 1)
现实是灰色的格子间,重复的工作,枯燥的报表
敲打着键盘,眼神却放空,意识早已挣脱了肉体的镣铐
飘向窗外,飞过拥挤的街道,穿过云层,到达想象的群岛
那里色彩斑斓,形状奇异,逻辑失效,一切都随心所欲地飘摇
迷幻的鼓点,像心跳的变奏,忽快忽慢,难以预料
抽象的采样,扭曲的人声,构建一个超现实的音景环绕
我变成一只鸟,一条鱼,一束光,自由地变换形态和奔跑
在这白日梦里,我无所不能,摆脱了所有现实的烦恼, feeling the afterglow
(Chorus)
意识漫游,逃离乏味的轨道
迷幻嘻哈的节拍,是白日梦的引导
抽象的世界,逻辑被重新构造
Mind wandering free, where reality starts to fade slow
(Verse 2)
会议室里老板在讲话,声音模糊,像隔着水听不清道
我的思绪,早已潜入深海,与发光的水母一起舞蹈
或者飞向外太空,在星云间穿梭,探索未知的星球和轨道
现实的规则,在这里被打破,物理定律也失去效劳
白日梦是我的避难所,是精神的氧气罩
在乏味的现实里,为我注入一点色彩和奇妙
虽然短暂,虽然虚幻,但它让我能够喘息,重新把能量找到
然后回到现实,继续扮演那个,循规蹈矩的角色,把梦藏好, keep the dream aglow
(Chorus)
意识漫游,逃离乏味的轨道
迷幻嘻哈的节拍,是白日梦的引导
抽象的世界,逻辑被重新构造
Mind wandering free, where reality starts to fade slow
`,
"raw/samples/RapMachine/Consciousness_Roaming_prompt.txt": `Rap, Chinese Rap, J-Pop, Anime, kawaii pop, EDM, Aggressive, Intense, Crisp Snare, Super Fast, Clear`,
"raw/samples/RapMachine/dingdingdangdang.txt": `[Verse 1]
打南边来了个喇嘛,手里提拉着五斤鳎目,
打北边来了个哑巴,腰里别着个喇叭。
喇嘛想换哑巴的喇叭,哑巴摇头不说话,
鳎目一甩像道闪电,喇叭一响震天涯!
[Chorus]
丁丁当当,乒乓乓乓,
话赶话,舌绕梁,
东边的钉,西边的墙,
绕不完的弯,唱不完的慌!
[Verse 2]
墙上一根钉,钉下绳摇晃,
绳吊着瓶,瓶碰碎了光。
灯骂瓶,瓶怪绳,绳怨钉,
稀里哗啦,一场荒唐!
[Chorus]
丁丁当当,乒乓乓乓,
话赶话,舌绕梁,
东边的钉,西边的墙,
绕不完的弯,唱不完的慌!
[Verse 3]
板凳宽,扁担长,
一个偏要绑,一个偏不让。
青龙洞里龙翻身,
千年大梦变稻香!
[Bridge]
麻婆婆的狗,咬破麻叉口,
麻线穿针眼,补丁也风流。
左一句,右一句,
舌头打结心自由!
[Chorus]
丁丁当当,乒乓乓乓,
话赶话,舌绕梁,
东边的钉,西边的墙,
绕不完的弯,唱不完的慌!`,
"raw/samples/RapMachine/dingdingdangdang_prompt.txt": `Hip Hop, Hi-hat Rolls, spoken word, Melodic Flow, articulate, Female Rap, 120 BPM, clear, warm, female, melodic Rap, adult, super fast`,
"raw/samples/RapMachine/Gold_Chains.txt": `[chorus]
黑 墨镜 金 链子 越 低调 越 霸气
玩 街机 泡 吧里 再 野的 场子 都 不 怯气
上海 滩 老 江湖 外滩 钟声 敲 胜负
陆家嘴 黄浦江 财路 宽 给 你 开 扇窗
[verse]
老子 在 弄堂 斜起 走 想 拦路 的 先 报 名号
我 早看透 你们 手抖 脚软
只敢 网上 吠 现实 怂成 猫
看 你们 混的 真 可怜 整天 蹲在 网吧 蹭 烟
钱 赚不到 架 不敢打 还 学人 摆 大哥 脸
[verse]
叫 我 沪上 老 克勒 不是 拉菲 我 不 碰杯
规矩 我 懒得 讲 太多 钞票 直接 拍 你 脸上 飞
老子 耐心 差 门槛 高 你 找茬 等于 自 寻 烦恼
要么 跪 要么 爬 最后 警告 只 说 一 遭
[chorus]
黑 墨镜 金 链子 越 低调 越 霸气
玩 街机 泡 吧里 再 野的 场子 都 不 怯气
上海 滩 老 江湖 外滩 钟声 敲 胜负
陆家嘴 黄浦江 财路 宽 给 你 开 扇窗
[verse]
古巴 雪茄 在 指间 绕 代表 魔都 格调 必须 顶
OG 在 你 够不到 的 高度 My bro 永远 在 顶层 盯
Check my vibe 不靠 大 金劳 留声机 放 周璇 和 白光
爹妈 太 宠你 养出 巨婴 症 早晚 社会 教你 做人 经
[verse]
玩 说唱 小囡 太 年轻 要 比 flow 先去 练 气功
廿年 磨 枪 才 亮 锋芒 我 三十六 招 收 你 入 瓮
老子 存在 就是 打假 标
多少 人 眼红 又 不敢 挑
键盘 侠 的 狠话 像 棉花 糖
见 真人 秒变 Hello Kitty 叫
[chorus]
黑 墨镜 金 链子 越 低调 越 霸气
玩 街机 泡 吧里 再 野的 场子 都 不 怯气
上海 滩 老 江湖 外滩 钟声 敲 胜负
陆家嘴 黄浦江 财路 宽 给 你 开 扇窗
[chorus]
黑 墨镜 金 链子 越 低调 越 霸气
玩 街机 泡 吧里 再 野的 场子 都 不 怯气
上海 滩 老 江湖 外滩 钟声 敲 胜负
陆家嘴 黄浦江 财路 宽 给 你 开 扇窗`,
"raw/samples/RapMachine/Gold_Chains_prompt.txt": `四川话, spoken word, male, Tempo - Fast, Elements - Chorus Hook, Subgenre-Satirical Hip Hop, Rap, Chinese-language music, energetic, slightly nasal, Instrument - Live Bass Guitar, adult, Vocals - Syncopated Flow, Genre - Hip-Hop, rapping, bright`,
"raw/samples/RapMachine/Neon_Compass.txt": `[Intro]
Nya.
[Verse]
我 在 五 点 二 十 早 起,十 三 点 十 四 弹 会儿 琴
习 惯 了 坐 班,习惯了 隔夜 的 剩 饭,
习 惯 了 没有 你
[Verse]
怕 你 想 不 开,拦 在 你 的 面 前
那 时 候 摔 得 差 点 住 院
东 京 的 春 天 莺 莺 燕 燕
我 说 想 不 想 来 跟 我 玩 音乐
[Verse]
带 着 我 的 朋 友 守 在 你 的 门 口
弹 着 我 的 钢 琴 当 伴 奏
等 你 放 学 后,陪 你 K T V
端 着 我 的 红 茶 跟 你 碰 杯
[Pre-Chorus]
忽然间现实淹没了远方
万家灯火,盖住月光
奔走,忍受,变成了人偶
别再对我伸出你的 双 手,会 受 伤
[Chorus]
明明都向前走,方向却渐渐不同
时间让你我越走越近,却越来越陌生
春 天 在 滂 沱 的 大 雨 里 飘 落
得 了 心 太 高 脸 太 薄 的病
[Bridge]
我越难过,春日影越顶
眼泪晃得我看不清
埋葬了懦弱还有矫情
却还是会在半夜摸眼睛
青春期大部分时间在工 作
用微笑换来余额几个零
戴上了面具也明白了生活
拼的是数字和脸更是命
[Verse]
我在五点二十早起,十三点十四弹会琴
早上要做饭,回家时满地的瓶罐
师 徒 二 人 站 在 我 的 面 前
台 词 很 熟 练,照 着 就 念
背 后 的 小 睦 扭 扭 捏 捏
我 说 我 还 有 点 事 要 不 改 天 见
然 后 你 的 双手 握 住 我 的 袖 口
开 始 哭 着 求 我 不 要 走
[Verse]
我在下班后,忙活柴米油
你和你的姐妹住着高楼
苦 来 兮 苦,早 就 没 了
现 实 扬 鞭,赶 着 我 向 前
没有时间跟你分辨什么对与错
[Bridge]
没有什么对错,没有罪过
谁不曾天真,是我太早看破
生活一片狼藉,却又不想放弃
一 边 聚 光 灯 下 绽 放,一 边 坠 落
故作坚强,筑起心的墙
越是委屈的伤口,越要藏
Let it all out, it’s all right
[Outro]
俺 是 东 京 嘞,东 京 打 工 妹
从虎之门带你转到浅草
再从新宿转到竹桥
俺 是 东 京 嘞,东 京 打 工 妹
带 你 转 羽田 成田 蒲田 神田
做 你 嘞 小 甜 甜!
俺 是 东 京 嘞,东 京 打 工 妹
带 你 转 赤 坂,带 你 转 霞 关
恁 咋 不 早 说,今 天 不 管 饭
`,
"raw/samples/RapMachine/Neon_Compass_prompt.txt": `Rap, J-Pop, Anime, kawaii pop, EDM, Aggressive, Intense, Crisp Snare, Super Fast, Clear`,
"raw/samples/RapMachine/neural_beat.txt": `[verse1]
羊皮卷轴 墨香飘 莫扎特 熬 安魂曲 通宵
和弦齿轮 咔哒转 比 瑞士 手表 更 精密 律动
八轨磁带 玩叠叠乐 披头士 炸 录音棚 天花板
AI 卷起 新风暴 像 灭霸 打响指 般 简单
[chorus]
琴弦 到 代码 进化论 狂飙(skr)
象牙塔 被 鼠标 点爆 像 泡泡(boom)
灵感 加 算法 等于 王炸 大招
人类 心跳 才是 终极 混音 调料
[verse2]
春之祭 召唤 百人 乐团 才够 燥
合成器 极客 玩电焊 焊出 赛博 神庙
DAW 解放 双手 钢琴卷帘 变 乐高
音色库 开挂 像 吃 金币 的 马里奥
AI 拆解 爵士乐 黑话 像 庖丁 解牛
CityPop 复古 滤镜 直接 参数 调油
神经网络 偷师 贝多芬 半夜 翻墙头
音乐 基因库 被 改写成 超频 万花筒
[chorus]
琴弦 到 代码 进化论 狂飙(skr)
象牙塔 被 鼠标 点爆 像 泡泡(boom)
灵感 加 算法 等于 王炸 大招
人类 心跳 才是 终极 混音 调料
[verse3]
电子琴 被 吐槽 塑料 味 超标
卧室 制作人 用 鼠标 单挑 整个 乐团 编制
AI 伴奏 刚上线 就被 键盘侠 集火
却 忘了 电吉他 曾被 说 是 魔鬼 的 副歌
现在 我 指尖 蹦迪 在 数据 炼丹炉
提示词 召唤 莫扎特 跨次元 碰杯 珍珠奶茶
当 比特 海洋 淹没 所有 物理 琴柱
最后 的 音轨 永远 连着 心脏 的 跳针
[bridge]
鹅毛笔 蘸着 银河 当 墨汁(绝了)
音浪 在 元宇宙 开 分店(疯了)
技术 迷雾 散成 像素 烟花
而 我们 始终 带着 老派 的 心跳 混搭
[chorus]
琴弦 到 代码 进化论 狂飙(skr)
象牙塔 被 鼠标 点爆 像 泡泡(boom)
灵感 加 算法 等于 王炸 大招
人类 心跳 才是 终极 混音 调料
[outro]
从 蒸汽 到 硅基 浪潮 我 冲浪(yo)
用 脑洞 接住 每个 技术 暴击(叮)
当 所有 设备 没电 的 凌晨 三点钟
最 原始 的 旋律 在 胸腔 敲击 成 龙卷风 `,
"raw/samples/RapMachine/neural_beat_prompt.txt": `Orchestra, Symphony, Sonata, Opera, Concerto, Rap, Beat, DJ, MC, StreetCulture`,
"raw/samples/RapMachine/Rapatapa.txt": `[Intro]
Yo, check it—speed demon, lyrical heat, uh!
Ratatat like a drum when the beat bumps, uh!
[Verse 1]
Rapatapa tap tap, flash like a snap,
Rap tap tap, I don’t chat, I clap clap clap!
Fingers snap, flow don’t slack, rapataptaptap,
Spit it fast, hit the gas, rap tap tap rap!
[Pre-Chorus]
Boom-bap, zoom past, leave ’em flat,
Rap taptaprapataptaptap—where ya at?
[Chorus]
Rapatapa tap tap, yeah, I go brrrr,
Rap tap tap, make the crowd stir!
Rapataptaptap, no lag, just spit,
Rap taptaprapataptaptap—I’m lit!
[Verse 2]
Tongue-twist, quick wrist, rapatapa boom,
Tap tap rap, leave ya stuck like glue-gum!
No slow-mo, turbo, rapataptaptap,
Rap tap rap, yeah, I clap clap clap!
[Outro]
Rapatapa—TAP! Mic drop—that’s that.`,
"raw/samples/RapMachine/Rapatapa_prompt.txt": `singing, bright, slightly nasal, energetic, spoken word, young adult, male, rap music`,
"raw/samples/RapMachine/Sandy_Volleyball_Ground.txt": `(Intro)
Oh yeah...
(Verse 1)
阳光下,沙滩排球场,一个身影跳跃
小麦色,运动背心,闪耀活力四射
她跳起扣杀,动作利落又巧妙
汗水浸湿发梢,笑容比阳光更美好
摇摆的节奏,是她的背景配乐
每一次移动,都踩在鼓点上那么和谐
我不由自主地停下脚步
目光被她紧紧锁住
(Chorus)
沙滩排球女孩, 摇摆节拍下的身材
无忧无虑的笑容,把我的心都填满
想走上前去搭讪,嫌自己笨拙呆板
这青春的气息,耀眼,灿烂!
(Verse 3)
她和队友击掌庆祝,笑声清脆悦耳
拿起毛巾擦汗,不经意间瞥我一眼
鼓起勇气走上前,假装问问时间
她友好地回答,笑容灿烂没有敷衍
聊了几句,发现彼此爱这摇摆音乐
她眼中也闪过惊喜和亲切
这共同点,让气氛变得融洽又热烈!
夏天的故事,就这样开始了感觉真切!
(Chorus)
沙滩排球女孩, 摇摆节拍下的身材
无忧无虑的笑容,把我的心都填满
不再犹豫和等待,勇敢把脚步迈开
这夏天的感觉,心跳,不断!`,
"raw/samples/RapMachine/Sandy_Volleyball_Ground_prompt.txt": `G-Funk, Hip Hop, Rap, Female Vocals, Melodic Rap, Summer, Laid-back Groove, Smooth Rhythm, Synthesizer Lead, Heavy Bassline, Groovy, West Coast Hip Hop`,
"raw/samples/RapMachine/Screen_Syndrome.txt": `[Intro]
Yo, 这是来自深渊的怒吼
[Verse]
指尖飞快刷新,屏幕又亮起
渴望那点赞,像致命的氧气
精心修饰的脸庞,完美到诡异
背后隐藏的疲惫,谁又会在意
光鲜亮丽的橱窗,贩卖着焦虑
每个人都在表演,戴着虚伪面具
比较的游戏,让人逐渐窒息
迷失在数据洪流,找不到自己
[Chorus]
这流量的时代,真假早已分不清
盲目追随潮流,丢掉了初心
为了那点虚荣,灵魂在沉沦
看不见的锁链,捆绑每个灵魂
[Verse]
滤镜下的生活,美得不切实际
营造虚假繁荣,掩盖内心空虚
他人的光环下,显得自己多余
嫉妒和自卑,交织成悲剧
[Chorus]
朋友圈里炫耀,现实中却叹气
刷着别人的故事,忘记了呼吸
算法推荐着你,想看的一切东西
不知不觉间,你已不再是你
他们说这是进步,我看是种病
精神鸦片侵蚀,慢慢要了你的命
[Bridge]
屏幕亮了又暗,一天又过去
究竟得到了什么,还是失去了自己
那真实的连接,在何处寻觅
困在这迷宫里,找不到出口的轨迹
[Outro]
我想挣脱,我想呼吸
这虚拟的繁华,让我喘不过气
谁能告诉我,这到底有什么意义
一切都像泡沫,一触就破裂没余地`,
"raw/samples/RapMachine/Screen_Syndrome_prompt.txt": `J-Pop, Anime, kawaii future bass, Femal vocals, EDM, Boombap, Aggressive, Intense, Crisp Snare, Super Fast, Rap`,
"raw/samples/RapMachine/Silicon_Valley.txt": `[Intro]
"System booting... 语言 模型 loading..."
[Verse 1]
硅谷 那个 coder 调试 neural network
北京 的 极客 训练 A I 写 report
不同 架构 的 chip 不同 算法 的 war
屏幕上 跑的 全是 machine learning (learning)
[Bridge]
多少年 我们 chase 摩尔 定律 的 trend (yeah)
这两年 换他们 study 中文 N L P
Convolution L S T M
好烧脑 的 backprop 好暴力 的 big data
[Verse 2]
Python 强 say加加 刚 Python 调用 C++ 的 A P I
say加加 嫌 Python 太 slow Python 笑 C++ 太 hardcore
L L V M 默默 generate 中间 code
到底 interpreter 还是 compiler 屌?
[Verse 3]
P M 和 engineer
白板 画满 flow chart 服务器 闪着 red light
P M 说 add feature engineer 说 no way
需求 变更 code 重构
不知 是 P M 太 fly 还是 deadline 太 high
[Chorus]
全世界 都在 train neural network
Transformer 的 paper 越来越 难 go through
全世界 都在 tune 超参数
我们 写的 bug 让 G P U 都 say no
[Verse 4]
柏林 hackathon demo blockchain contract
上海 的 dev 用 federated learning 破 data wall
各种 语言 的 error 各种 框架 的 doc
terminal 里 滚的 全是 dependency 冲突
[Bridge]
曾以为 English 才是 coding 的 language (yeah)
直到见 G P T 用 文言文 generate 正则 expression
Gradient explode
好硬核 的 prompt 好头秃 的 debug road
[Verse 5]
有个 bug 叫 quantum
测试 环境 run perfect 上线 立即就 crash
查 log 看 monitor 发现是 thread 不同步
改 sync 加 lock 慢 deadlock 更难办
量子 computer 也解不开 这 chaos chain
[Verse 6]
你说 996 我说 007
你说 福报 我说 burnout
Product 要 agile Boss 要 KPI
Code 要 elegant deadline 是 tomorrow
不如 直接 script 自动 submit 离职信
[Outro]
"Warning: 内存 leak...core dumping..."
全世界 都在 train neural network (neural network)
Loss 还没 converge 天已经亮
全世界 都在 tune 超参数
我们 写的 code (让它) 让 world (reboot) 都 reboot 无效`,
"raw/samples/RapMachine/Silicon_Valley_prompt.txt": `articulate, spoken word, young adult, rap music, female, clear, energetic, warm`,
"raw/samples/RapMachine/Swish_Swoosh.txt": `[verse]
球场 的 橡胶味 弥漫 隔壁 是 健身房
场 边上 的 老教练 战术 有 三套
教 交叉 运球 的 大叔 会 欧洲步 耍 背后 传
硬 身板 对抗 最 擅长 还 会 急停跳 后仰 投
他们 徒弟 我 习惯 从小 就 耳濡目染
什么 胯下 跟 变向 我 都 玩 的 有模有样
什么 招式 最 喜欢 转身 过 人 柔中 带 刚
想要 去 纽约 街头 斗 洛克 公园 场
[chorus]
看什么 看什么
变速 突破 心 自在
看什么 看什么
假动作 晃 开 防守 来
看什么 看什么
每日 训练 绑 沙袋
空中拉杆 莫 奇怪
唰唰 入袋
[verse]
一个 试探 步后 一记 左 变向 右 变向
一句 挑衅 我 的 人 别 嚣张
一再 重演 一颗 我 不 投 的 球
悬在 篮筐 上 它 一直 在 摇晃
[chorus]
看什么 看什么
我 激活 小宇宙 来
看什么 看什么
菜鸟 新人 的 名号
看什么 看什么
已 被 我 一球 击倒
[chorus]
快 秀出 指尖 转球 砰砰 啪嗒
快 秀出 指尖 转球 砰砰 啪嗒
篮球 之 人 切记 勇者 无惧
是 谁 在 玩 花式 引爆 空气
快 秀出 指尖 转球 砰砰 啪嗒
快 秀出 指尖 转球 砰砰 啪嗒
如果 我 有 滞空 逆天 补扣
为人 热血 不怂 一生 傲骨 吼
[verse]
他们 徒弟 我 习惯 从小 就 耳濡目染
什么 胯下 跟 变向 我 都 玩 的 有模有样
什么 招式 最 喜欢 转身 过 人 柔中 带 刚
想要 去 纽约 街头 斗 洛克 公园 场
[outro]
快 秀出 指尖 转球 砰
快 秀出 指尖 转球 砰
如果 我 有 滞空 吼
为人 热血 不怂 一生 傲骨 吼
快 秀出 指尖 转球 砰
我 用 背传 助攻 吼
压哨 的 三分 球`,
"raw/samples/RapMachine/Swish_Swoosh_prompt.txt": `articulate, spoken word, young adult, warm, rap music, male, clear, street, dark, rap flow, hardcore rap, fast`,
"raw/samples/RapMachine/The_Boss_Is_Dead.txt": `[verse]
挣着 憋屈的 工资 还得 装乐呵
猫着 怂样儿 还搁 朋友圈 嘚瑟
扛着 傻逼的 指标 没人 搭把手
这儿 不是 托儿所 少整 那出儿 哭唧尿嚎
俺们 就像 一条条 老板的 裤衩子
陪着 笑脸 接他 每一回 突突
哎呦 老板 今儿个 穿我呗
他 撅个腚 眼角 瞟你 那熊样
[chorus]
他们 骂我 打工仔 太多人 没睡醒
寻思 抠搜 老板 一天天 穷折腾
不想 俺的 人生 烂在 这嘎达
不想 俺的 将来 折在 这破棚
老子 不想 上班 老子 是外星人
你都 把俺 骂急眼了 俺还 这么淡定
现实 才是 梦 啥时候 能醒啊
那 糟践人的 答案 在西北风 里飘
[verse]
瞅见 二愣子 同事 给老板 舔腚沟子
瞅见 浪蹄子 女同事 在老板 胯骨轴 扭搭
瞅见 白瞎的 光阴 耗在 没亮儿的 道儿
瞅见 公交车上 一帮 僵尸 吐酸水
瞅见 俺的 命 定在 苦逼的 坑里
瞅见 俺的 爱情 被轮了 成了 老处女
瞅见 好事儿 全归 高富帅
还有 那些 臭不要脸 扭腚的 货色
[chorus](重复)
他们 骂我 打工仔 太多人 没睡醒...
[bridge]
加班 没补助 俺认了
欠薪 揍员工 把俺 当牲口
去你妈 的小姘头
[verse]
破逼 管理制度 净整 娱乐八卦
撸管式 管理 也就 你自己 嗨
出点儿 屁事儿 就往 下属 脑瓜子 扣
挣俩 钢镚儿 立马 牛逼 不分 公母
你挖个 大坑 把俺们 往里 踹
说这 叫梦想 你当年 多能耐
俺们 就当 听传销 洗脑课
可怜 连骗人 你都 就会 这一套
[outro]
老子 不想 上班
老子 不想 上班
老子 不想 上班`,
"raw/samples/RapMachine/The_Boss_Is_Dead_prompt.txt": `东北话, spoken word, male, Tempo - Fast, Elements - Chorus Hook, Subgenre-Satirical Hip Hop, Rap, Chinese-language music, energetic, slightly nasal, Instrument - Live Bass Guitar, adult, Vocals - Syncopated Flow, Genre - Hip-Hop, rapping, bright`,
"raw/samples/RapMachine/Try_Not_to_Tongue_Twist.txt": `[verse]
这 这 谁 又 在 派 对 喝 多
我 的 脑 袋
像 被 驴 踢 过
不 对 劲
舌 头 打 结 不 会 说
你 来 挑 战 我 就 跪
开 局 直 接 崩 溃
[chorus]
就 咪 乱 咪 念 咪 错 咪
嘴 咪 瓢 咪 成 咪 狗 咪
脑 咪 袋 咪 像 咪 浆 咪 糊 咪
跟 咪 着 咪 节 咪 奏 咪
把 咪 歌 咪 词 咪 全 咪 忘 咪
一 咪 张 咪 嘴 咪 就 咪 废 咪
只 咪 剩 咪 下 咪 尴 咪 尬 咪 回 咪 忆
草!
[verse]
错 错 错 错 了
一 口 气 全 念 错
错 错 错 错 了
舌 头 打 结 甩 锅
甩 甩 甩 甩 锅
甩 锅 甩 锅
拍 子 全 部 乱 套
观 众 笑 到 吐 血
[verse]
你 的 歌 词 我 的 噩 梦
唱 完 直 接 社 死
调 跑 到 外 太 空
观 众 表 情 裂 开
你 笑 我 菜
我 笑 你 不 懂
这 叫 艺 术 表 演
不 服 你 来!
[verse]
这 这 谁 又 在 派 对 丢 人
我 的 世 界
已 经 彻 底 崩 溃
没 有 完 美
只 有 翻 车 现 场
以 及 观 众 的 嘲 讽
[chorus]
就 咪 乱 咪 念 咪 错 咪
嘴 咪 瓢 咪 成 咪 狗 咪
脑 咪 袋 咪 像 咪 浆 咪 糊 咪
跟 咪 着 咪 节 咪 奏 咪
把 咪 歌 咪 词 咪 全 咪 忘 咪
一 咪 张 咪 嘴 咪 就 咪 废 咪
只 咪 剩 咪 下 咪 尴 咪 尬 咪 回 咪 忆
草!
[verse]
错 错 错 错 了
一 口 气 全 念 错
错 错 错 错 了
舌 头 打 结 甩 锅
甩 甩 甩 甩 锅
甩 锅 甩 锅
拍 子 全 部 乱 套
观 众 笑 到 吐 血
[verse]
你 的 歌 词 我 的 噩 梦
唱 完 直 接 社 死
调 跑 到 外 太 空
观 众 表 情 裂 开
你 笑 我 菜
我 笑 你 不 懂
这 叫 艺 术 表 演
不 服 你 来!`,
"raw/samples/RapMachine/Try_Not_to_Tongue_Twist_prompt.txt": `articulate, spoken word, young adult, rap music, male, clear, energetic, warm, relaxed, breathy, night club, auto-tune, mumble rap, trap`,
"raw/samples/RapMachine/zhongguohua.txt": `[Intro]
扁擔寬 板凳長 扁擔想綁在板凳上
扁擔寬 板凳長 扁擔想綁在板 凳上
[Verse]
倫敦 瑪莉蓮 買了 件 旗袍 送 媽媽
莫斯科 的 夫司基 愛上 牛肉 麵 疙瘩
各種 顏色 的 皮膚 各種 顏色 的 頭髮
嘴裡念的 說的 開始 流行 中國話 (中國話)
[Bridge]
多少年 我們 苦練 英文 發音 和 文法 (yeah)
這幾年 換他們 捲著 舌頭 學 平上去入 的 變化
平平 仄仄 平平 仄
好聰明 的 中國人 好優美 的 中國話
[Verse]
扁擔寬 板凳長 扁擔想綁在板凳上
板凳不讓扁擔綁在板凳上 扁擔偏要綁在板凳上
板凳偏偏不讓扁擔綁在那板凳上
到底扁擔寬 還是板凳長?
[Verse]
哥哥弟弟坡前坐
坡上臥著一隻鵝 坡下流著一條河
哥哥說 寬寬的河 弟弟說 白白的鵝
鵝要過河 河要渡鵝
不知是那鵝過河 還是河渡鵝
[Chorus]
全世界都在學中國話
孔夫子的話 越來越國際化
全世界都在講中國話
我們說的話 讓世界都認真聽話
[Verse]
紐約 蘇珊娜開了間禪風 lounge bar
柏林來的沃夫岡拿胡琴配著電吉他
各種顏色的皮膚 各種顏色的頭髮
嘴裡念的 說的 開始流行中國話 (中國話)
[Bridge]
多少年我們苦練英 文發音和文法 (yeah)
這幾年換他們捲著舌頭學平上去入的變化
仄仄平平仄仄平
好聰 明的中國人 好優美的中國話
[Verse]
有個小孩叫小杜 上街打醋又買布
買了布 打了醋 回頭看見鷹抓兔
放下布 擱下醋 上前去追鷹和兔
飛了鷹 跑了兔 灑了醋 濕了布
[Verse]
嘴說腿 腿說嘴
嘴說腿 愛跑腿
腿說嘴 愛賣嘴
光動嘴 不動腿
光動腿 不動嘴
不如不長腿和嘴
到底是那嘴說腿 還是腿說嘴?
[Chorus]
全世界都在學中國話
孔夫子的話 越來越國際化
全世界都在講中國話
我們說的話 讓世界都認真聽話
[outro]
全世界都在學中國話 (在學中國話)
孔夫子的話 越來越國際化
全世界都在講中國話
我們說的話 (讓他) 讓世界 (認真) 都認真聽話`,
"raw/samples/RapMachine/zhongguohua_prompt.txt": `lyrical rap, young adult, female, rap flow, spoken word, ad-libs, bright, energetic, eat, Fast, Engaging, Energetic`,
"raw/samples/Text2Sample/text2samples_acounstic_guitar.txt": ``,
"raw/samples/Text2Sample/text2samples_acounstic_guitar_prompt.txt": `Acoustic Guitar, 191.0 bpm`,
"raw/samples/Text2Sample/text2samples_bass.txt": ``,
"raw/samples/Text2Sample/text2samples_bass_prompt.txt": `110.0 bpm, electric, bass, loops, G# min keyscale`,
"raw/samples/Text2Sample/text2samples_drums.txt": ``,
"raw/samples/Text2Sample/text2samples_drums_grooves.txt": ``,
"raw/samples/Text2Sample/text2samples_drums_grooves_prompt.txt": `160.0 bpm, grooves, drums`,
"raw/samples/Text2Sample/text2samples_drums_prompt.txt": `loops, fills, acoustic, 90.0 bpm, lo-fi hip hop, drums`,
"raw/samples/Text2Sample/text2samples_edrum.txt": ``,
"raw/samples/Text2Sample/text2samples_edrum_prompt.txt": `140.0 bpm, Electronic Drum Kit
`,
"raw/samples/Text2Sample/text2samples_electric_guitar.txt": ``,
"raw/samples/Text2Sample/text2samples_electric_guitar_prompt.txt": `A# maj keyscale, electric, guitar, loops, 103.0 bpm`,
"raw/samples/Text2Sample/text2samples_erhu.txt": ``,
"raw/samples/Text2Sample/text2samples_erhu_prompt.txt": `melody, erhu
`,
"raw/samples/Text2Sample/text2samples_flute.txt": ``,
"raw/samples/Text2Sample/text2samples_flute_prompt.txt": `G# keyscale, 80.0 bpm, brass & woodwinds, flute, algoza
`,
"raw/samples/Text2Sample/text2samples_guitar.txt": ``,
"raw/samples/Text2Sample/text2samples_guitar_prompt.txt": `guitar, 115.0 bpm, B min keyscale, loops, melody`,
"raw/samples/Text2Sample/text2samples_hand_pan.txt": ``,
"raw/samples/Text2Sample/text2samples_hand_pan_prompt.txt": `clean, metallic, hand pan, organic, 120.0 bpm, A min keyscale, loops`,
"raw/samples/Text2Sample/text2samples_koto.txt": ``,
"raw/samples/Text2Sample/text2samples_koto_prompt.txt": `fx, music, koto, melody, G min keyscale, strings, 90.0 bpm, loops
`,
"raw/samples/Text2Sample/text2samples_lead_guitar.txt": ``,
"raw/samples/Text2Sample/text2samples_lead_guitar_prompt.txt": `Lead Electric Guitar, loops`,
"raw/samples/Text2Sample/text2samples_pad.txt": ``,
"raw/samples/Text2Sample/text2samples_pad_prompt.txt": `layered, A# min keyscale, lo-fi hip hop, loops, chords, synth, pads, lo-fi, 60.0 bpm`,
"raw/samples/Text2Sample/text2samples_saxphone.txt": ``,
"raw/samples/Text2Sample/text2samples_saxphone_prompt.txt": `F keyscale, loops, saxphone, 125.0 bpm`,
"raw/samples/Text2Sample/text2samples_synth.txt": ``,
"raw/samples/Text2Sample/text2samples_synth_prompt.txt": `trap edm, D# keyscale, loops, 140.0 bpm, synth
`,
"raw/samples/Text2Sample/text2samples_violin.txt": ``,
"raw/samples/Text2Sample/text2samples_violin_prompt.txt": `melody, G min keyscale, acoustic, 105.0 bpm, violin, Arabic`
};
document.addEventListener('DOMContentLoaded', function () {
let musicSampleSections = {};
let musicSamples = [];
const audioLoader = new AudioLoader({
username: 'ace-step',
repo: 'ace-step.github.io',
releaseTag: '',
useJsDelivr: true,
preferMp3: true
});
async function loadSamplesData() {
try {
musicSampleSections = { "GeneralSongs": [{ "id": "ace-step", "fileName": "ace_step", "directory": "GeneralSongs" }, { "id": "funk-pop-neon-lights", "fileName": "funk_pop_neon_lights", "directory": "GeneralSongs" }, { "id": "female-pop", "fileName": "female_pop", "directory": "GeneralSongs" }, { "id": "surf-music", "fileName": "surf_music", "directory": "GeneralSongs" }, { "id": "dubstep", "fileName": "dubstep", "directory": "GeneralSongs" }, { "id": "cyberpunk", "fileName": "cyberpunk", "directory": "GeneralSongs" }, { "id": "dead-rock", "fileName": "dead_rock", "directory": "Experimental" }, { "id": "afro-cuban", "fileName": "afro_cuban", "directory": "GeneralSongs" }, { "id": "alternative-rock", "fileName": "alternative_rock", "directory": "GeneralSongs" }, { "id": "black-metal", "fileName": "black_metal", "directory": "GeneralSongs" }, { "id": "country-rock", "fileName": "country_rock", "directory": "GeneralSongs" }, { "id": "dark-electro", "fileName": "dark_electro", "directory": "GeneralSongs" }, { "id": "disco", "fileName": "disco", "directory": "GeneralSongs" }, { "id": "electronic-rap-waves-on", "fileName": "electronic_rap_waves_on", "directory": "GeneralSongs" }, { "id": "hiphop-rap-shirt-song", "fileName": "hiphop_rap_shirt_song", "directory": "GeneralSongs" }, { "id": "orchestral-rock", "fileName": "orchestral_rock", "directory": "GeneralSongs" }, { "id": "world-sad", "fileName": "world_sad", "directory": "GeneralSongs" }], "Experimental": [{ "id": "acid-house", "fileName": "acid_house", "directory": "Experimental" }, { "id": "acappella", "fileName": "acappella", "directory": "Experimental" }, { "id": "bbox", "fileName": "bbox", "directory": "Experimental" }, { "id": "drum-bass", "fileName": "drum_bass", "directory": "Experimental" }, { "id": "female-nana", "fileName": "female_nana", "directory": "Experimental" }, { "id": "opera-female", "fileName": "opera_female", "directory": "Experimental" }], "Instrumentals": [{ "id": "dance-party", "fileName": "dance_party", "directory": "Instrumentals" }, { "id": "minimal-techno", "fileName": "minimal_techno", "directory": "Instrumentals" }, { "id": "psychedelic", "fileName": "psychedelic", "directory": "Instrumentals" }, { "id": "saxphone-jazz", "fileName": "saxphone_jazz", "directory": "Instrumentals" }, { "id": "sonata-piano-violin", "fileName": "sonata_piano_violin", "directory": "Instrumentals" }, { "id": "tango-guitar", "fileName": "tango_guitar", "directory": "Instrumentals" }, { "id": "trance", "fileName": "trance", "directory": "Instrumentals" }, { "id": "violin-solo", "fileName": "violin_solo", "directory": "Instrumentals" }], "MultipleLang": [{ "id": "dark-atmospheric", "fileName": "dark_atmospheric", "directory": "MultipleLang" }, { "id": "electro-house", "fileName": "electro_house", "directory": "MultipleLang" }, { "id": "folk-rnb-female", "fileName": "folk_rnb_female", "directory": "MultipleLang" }, { "id": "french-pop", "fileName": "french_pop", "directory": "MultipleLang" }, { "id": "german-dance", "fileName": "german_dance", "directory": "MultipleLang" }, { "id": "hip-house", "fileName": "hip-house", "directory": "MultipleLang" }, { "id": "italian-folk", "fileName": "italian_folk", "directory": "MultipleLang" }, { "id": "jpop", "fileName": "jpop", "directory": "MultipleLang" }, { "id": "kpop", "fileName": "kpop", "directory": "MultipleLang" }, { "id": "mandopop", "fileName": "mandopop", "directory": "MultipleLang" }, { "id": "portuguese-pop", "fileName": "portuguese_pop", "directory": "MultipleLang" }, { "id": "russian-folk", "fileName": "russian_folk", "directory": "MultipleLang" }, { "id": "spanish-song", "fileName": "spanish_song", "directory": "MultipleLang" }], "Controlability-retake": [{ "id": "orig", "fileName": "orig", "directory": "Controlability-retake" }, { "id": "retake-variance1", "fileName": "retake_variance1", "directory": "Controlability-retake" }, { "id": "retake-variance2", "fileName": "retake_variance2", "directory": "Controlability-retake" }, { "id": "retake-variance3", "fileName": "retake_variance3", "directory": "Controlability-retake" }, { "id": "retake-variance4", "fileName": "retake_variance4", "directory": "Controlability-retake" }, { "id": "retake-variance5", "fileName": "retake_variance5", "directory": "Controlability-retake" }, { "id": "retake-variance6", "fileName": "retake_variance6", "directory": "Controlability-retake" }], "Controlability-repaint": [{ "id": "a-repaint-orig", "fileName": "a_repaint_orig", "directory": "Controlability-repaint" }, { "id": "repaint-0-30-variance10-change-female", "fileName": "repaint_0_30_variance10_change_female", "directory": "Controlability-repaint" }, { "id": "repaint-0-30-variance10-change-genre", "fileName": "repaint_0_30_variance10_change_genre", "directory": "Controlability-repaint" }, { "id": "repaint-0-30-variance10-change-lyrics", "fileName": "repaint_0_30_variance10_change_lyrics", "directory": "Controlability-repaint" }, { "id": "repaint-0-30-variance7", "fileName": "repaint_0_30_variance7", "directory": "Controlability-repaint" }], "Controlability-edit": [{ "id": "edit-a-orig", "fileName": "edit_a_orig", "directory": "Controlability-edit" }, { "id": "edit-kid", "fileName": "edit_kid", "directory": "Controlability-edit" }, { "id": "edit-old", "fileName": "edit_old", "directory": "Controlability-edit" }, { "id": "edit-spotify", "fileName": "edit_spotify", "directory": "Controlability-edit" }, { "id": "edit-cry", "fileName": "edit_cry", "directory": "Controlability-edit" }, { "id": "edit-french", "fileName": "edit_french", "directory": "Controlability-edit" }, { "id": "edit-german", "fileName": "edit_german", "directory": "Controlability-edit" }, { "id": "edit-ja", "fileName": "edit_ja", "directory": "Controlability-edit" }, { "id": "edit-ko", "fileName": "edit_ko", "directory": "Controlability-edit" }, { "id": "edit-zh", "fileName": "edit_zh", "directory": "Controlability-edit" }], "Application-Lyric2Vocal": [{ "id": "lyrics2vocal-in-you-i-see", "fileName": "lyrics2vocal_in_you_i_see", "directory": "Application-Lyric2Vocal" }, { "id": "lyrics2vocal-lemonade", "fileName": "lyrics2vocal_lemonade", "directory": "Application-Lyric2Vocal" }, { "id": "lyrics2vocal-turn-me-on", "fileName": "lyrics2vocal_turn_me_on", "directory": "Application-Lyric2Vocal" }, { "id": "lyrics2vocal-whispering-shadows", "fileName": "lyrics2vocal_whispering_shadows", "directory": "Application-Lyric2Vocal" }, { "id": "lyrics2vocal-you-been-chosen-too", "fileName": "lyrics2vocal_you_been_chosen_too", "directory": "Application-Lyric2Vocal" }], "Text2Sample": [{ "id": "text2samples-acounstic-guitar", "fileName": "text2samples_acounstic_guitar", "directory": "Text2Sample" }, { "id": "text2samples-bass", "fileName": "text2samples_bass", "directory": "Text2Sample" }, { "id": "text2samples-drums", "fileName": "text2samples_drums", "directory": "Text2Sample" }, { "id": "text2samples-drums-grooves", "fileName": "text2samples_drums_grooves", "directory": "Text2Sample" }, { "id": "text2samples-edrum", "fileName": "text2samples_edrum", "directory": "Text2Sample" }, { "id": "text2samples-electric-guitar", "fileName": "text2samples_electric_guitar", "directory": "Text2Sample" }, { "id": "text2samples-erhu", "fileName": "text2samples_erhu", "directory": "Text2Sample" }, { "id": "text2samples-flute", "fileName": "text2samples_flute", "directory": "Text2Sample" }, { "id": "text2samples-guitar", "fileName": "text2samples_guitar", "directory": "Text2Sample" }, { "id": "text2samples-hand-pan", "fileName": "text2samples_hand_pan", "directory": "Text2Sample" }, { "id": "text2samples-koto", "fileName": "text2samples_koto", "directory": "Text2Sample" }, { "id": "text2samples-lead-guitar", "fileName": "text2samples_lead_guitar", "directory": "Text2Sample" }, { "id": "text2samples-pad", "fileName": "text2samples_pad", "directory": "Text2Sample" }, { "id": "text2samples-saxphone", "fileName": "text2samples_saxphone", "directory": "Text2Sample" }, { "id": "text2samples-synth", "fileName": "text2samples_synth", "directory": "Text2Sample" }, { "id": "text2samples-violin", "fileName": "text2samples_violin", "directory": "Text2Sample" }], "RapMachine": [{ "id": "neural-beat", "fileName": "neural_beat", "directory": "RapMachine" }, { "id": "betray", "fileName": "betray", "directory": "RapMachine" }, { "id": "The-Boss-Is-Dead", "fileName": "The_Boss_Is_Dead", "directory": "RapMachine" }, { "id": "Try-Not-to-Tongue-Twist", "fileName": "Try_Not_to_Tongue_Twist", "directory": "RapMachine" }, { "id": "Sandy-Volleyball-Ground", "fileName": "Sandy_Volleyball_Ground", "directory": "RapMachine" }, { "id": "Beneath-the-Shadow", "fileName": "Beneath_the_Shadow", "directory": "RapMachine" }, { "id": "Rapatapa", "fileName": "Rapatapa", "directory": "RapMachine" }, { "id": "Betting-Bars", "fileName": "Betting_Bars", "directory": "RapMachine" }, { "id": "Screen-Syndrome", "fileName": "Screen_Syndrome", "directory": "RapMachine" }, { "id": "dingdingdangdang", "fileName": "dingdingdangdang", "directory": "RapMachine" }, { "id": "Consciousness-Roaming", "fileName": "Consciousness_Roaming", "directory": "RapMachine" }, { "id": "Neon-Compass", "fileName": "Neon_Compass", "directory": "RapMachine" }, { "id": "zhongguohua", "fileName": "zhongguohua", "directory": "RapMachine" }, { "id": "Swish-Swoosh", "fileName": "Swish_Swoosh", "directory": "RapMachine" }, { "id": "Gold-Chains", "fileName": "Gold_Chains", "directory": "RapMachine" }, { "id": "Silicon-Valley", "fileName": "Silicon_Valley", "directory": "RapMachine" }] };;
generateTableRows(['GeneralSongs', 'Experimental', 'Instrumentals', 'MultipleLang'], 'baseline-quality');
generateTableRows(['Controlability-retake', 'Controlability-repaint', 'Controlability-edit'], 'controlability');
generateTableRows(['Application-Lyric2Vocal', 'Text2Sample', 'RapMachine'], 'application');
document.querySelector('#player-shuffle-btn .mode-indicator').textContent = '';
document.querySelector('#player-repeat-btn .mode-indicator').textContent = '';
document.getElementById('toggle-all-lyrics').textContent = '展開所有歌詞';
document.querySelectorAll('.lyrics-header').forEach(function (header) {
header.addEventListener('click', function () {
this.parentElement.classList.toggle('expanded');
});
});
musicSamples = Object.values(musicSampleSections).flat();
musicSamples.forEach(sample => {
fetchTextAndUpdate(`raw/samples/${sample.directory}/${sample.fileName}.txt`, `${sample.id}-lyrics`);
fetchTextAndUpdate(`raw/samples/${sample.directory}/${sample.fileName}_prompt.txt`, `${sample.id}-prompt`);
});
addPlayButtonListeners();
} catch (error) {
console.error('載入樣本資料時發生錯誤:', error);
}
}
loadSamplesData();
function generateTableRows(sectionIds, select_id) {
musicSamples = Object.values(musicSampleSections).flat();
const tbody = document.querySelector(`tbody#${select_id}`);
tbody.innerHTML = '';
Object.entries(musicSampleSections).forEach(([sectionId, samples]) => {
if (!sectionIds.includes(sectionId)) {
return;
}
const sectionRow = document.createElement('tr');
const sectionCell = document.createElement('td');
sectionCell.colSpan = 3;
sectionCell.className = 'section-header';
sectionCell.id = sectionId;
sectionCell.style.backgroundColor = '#f0f0f0';
sectionCell.style.padding = '10px';
sectionCell.style.fontWeight = 'bold';
sectionCell.style.fontSize = '1.2em';
sectionCell.style.textAlign = 'center';
let sectionTitle = sectionId;
if (sectionId === 'GeneralSongs') {
sectionTitle = '一般歌曲';
} else if (sectionId === 'MultipleLang') {
sectionTitle = '多種語言';
} else if (sectionId === 'Instrumentals') {
sectionTitle = '純音樂';
} else if (sectionId === 'Experimental') {
sectionTitle = '實驗性輸入';
} else if (sectionId === 'Controlability-retake') {
sectionTitle = '變奏生成';
} else if (sectionId === 'Controlability-repaint') {
sectionTitle = '重繪';
} else if (sectionId === 'Controlability-edit') {
sectionTitle = '編輯';
} else if (sectionId === 'Application-Lyric2Vocal') {
sectionTitle = '歌詞轉人聲 (LoRA)';
} else if (sectionId === 'Text2Sample') {
sectionTitle = '文字轉取樣 (LoRA)';
} else if (sectionId === 'RapMachine') {
sectionTitle = '饒舌機器 (LoRA)';
}
sectionCell.textContent = '';
const titleElement = document.createElement('div');
titleElement.textContent = sectionTitle;
titleElement.style.marginBottom = '15px';
titleElement.style.fontSize = '1.3em';
titleElement.style.fontWeight = 'bold';
titleElement.style.color = '#333';
titleElement.style.letterSpacing = '1px';
sectionCell.appendChild(titleElement);
const noteDiv = document.createElement('div');
noteDiv.style.borderLeft = '4px solid #097EFF';
noteDiv.style.paddingLeft = '15px';
noteDiv.style.marginBottom = '10px';
noteDiv.style.textAlign = 'left';
noteDiv.style.fontSize = '0.85em';
noteDiv.style.color = '#606c71';
noteDiv.style.backgroundColor = '#f8f9fa';
noteDiv.style.padding = '8px 15px';
noteDiv.style.borderRadius = '0 4px 4px 0';
const noteTitle = document.createElement('p');
noteTitle.style.fontWeight = 'bold';
noteTitle.style.marginBottom = '8px';
noteTitle.style.color = '#097EFF';
noteTitle.style.fontSize = '1em';
noteTitle.style.borderBottom = '1px solid #dee2e6';
noteTitle.style.paddingBottom = '4px';
noteTitle.textContent = '注意:';
noteDiv.appendChild(noteTitle);
if (sectionId === 'GeneralSongs') {
addNoteItem(noteDiv, '支援所有主流音樂風格,並接受多種描述格式,包括簡短標籤、描述性文字或使用情境。');
} else if (sectionId === 'Experimental') {
addNoteItem(noteDiv, '實驗性測試各種輸入以評估其可用性。');
} else if (sectionId === 'Instrumentals') {
addNoteItem(noteDiv, '支援不同類型和風格的各種純音樂生成。');
addNoteItem(noteDiv, '能夠為每種樂器產生具有適當音色和表現力的逼真器樂音軌。');
addNoteItem(noteDiv, '可以生成包含多種樂器的複雜編曲,同時保持音樂的連貫性。');
} else if (sectionId === 'MultipleLang') {
addNoteItem(noteDiv, '支援 19 種語言。但由於資料不平衡,較不常見的語言表現可能較差。表現良好的前 10 種語言為:');
const langList = document.createElement('p');
langList.style.margin = '0';
langList.style.paddingLeft = '15px';
langList.innerHTML = '• 英語<br>• 中文<br>• 俄語<br>• 西班牙語<br>• 日語<br>• 德語<br>• 法語<br>• 葡萄牙語<br>• 義大利語<br>• 韓語';
noteDiv.appendChild(langList);
} else if (sectionId === 'Controlability-retake') {
addNoteItem(noteDiv, '此功能採用無需訓練的推論期最佳化技術實現。');
addNoteItem(noteDiv, '我們的流匹配模型會生成初始雜訊,然後使用 trigFlow 的雜訊公式添加額外的高斯雜訊。');
addNoteItem(noteDiv, '透過控制原始初始雜訊和新高斯雜訊之間的混合比例,我們可以調整生成輸出中的變異程度。');
} else if (sectionId === 'Controlability-repaint') {
addNoteItem(noteDiv, '透過在目標音訊輸入中添加雜訊並在 ODE 過程中應用遮罩約束來實現。');
addNoteItem(noteDiv, '當輸入條件與原始生成不同時,僅能修改特定方面,同時保留其餘部分。');
addNoteItem(noteDiv, '結合變奏生成技術,它還可以創建風格、歌詞或人聲的局部變化。');
} else if (sectionId === 'Controlability-edit') {
addNoteItem(noteDiv, '我們創新地應用了流編輯技術,以實現局部歌詞修改,同時保留旋律、人聲和伴奏。');
addNoteItem(noteDiv, '適用於生成內容和上傳的音訊,極大地增強了創作可能性。');
addNoteItem(noteDiv, '目前限制:為避免失真,一次只能修改少量歌詞片段,但可以依序進行多次編輯。');
} else if (sectionId === 'Application-Lyric2Vocal') {
addNoteItem(noteDiv, '基於在純人聲資料上進行 LoRA 微調的模型,可直接從歌詞生成人聲樣本。');
addNoteItem(noteDiv, '提供眾多實際應用,如人聲小樣、導唱音軌、歌曲創作輔助和人聲編曲實驗。');
addNoteItem(noteDiv, '提供一種快速測試歌詞演唱效果的方法,幫助歌曲創作者更快地迭代。');
} else if (sectionId === 'Text2Sample') {
addNoteItem(noteDiv, '類似於歌詞轉人聲,但在純樂器和取樣資料上進行微調。');
addNoteItem(noteDiv, '能夠從文字描述中生成概念性的音樂製作取樣。');
addNoteItem(noteDiv, '有助於快速創建樂器循環樂句、音效和音樂製作元素。');
} else if (sectionId === 'RapMachine') {
addNoteItem(noteDiv, '在純饒舌資料上進行微調,以創建專門用於饒舌生成的 AI 系統。');
addNoteItem(noteDiv, '預期功能包括 AI 饒舌對戰和透過饒舌進行敘事表達。');
addNoteItem(noteDiv, '饒舌具有卓越的敘事和表達能力,提供了非凡的應用潛力。');
} else if (sectionId === 'StemGen') {
addNoteItem(noteDiv, '一個在多軌資料上訓練的 controlnet-lora,用於生成獨立的樂器音軌。');
addNoteItem(noteDiv, '以參考音軌和指定的樂器(或樂器參考音訊)作為輸入。');
addNoteItem(noteDiv, '輸出一個與參考音軌互補的樂器音軌,例如為長笛旋律創建鋼琴伴奏或為主奏吉他添加爵士鼓。');
} else if (sectionId === 'Singing2Accompaniment') {
addNoteItem(noteDiv, 'StemGen 的反向過程,從單一人聲音軌生成混合母帶音軌。');
addNoteItem(noteDiv, '以人聲音軌和指定風格作為輸入,以產生完整的人聲伴奏。');
addNoteItem(noteDiv, '創建與輸入人聲互補的完整樂器背景音樂,使其易於為任何歌聲錄音添加專業水準的伴奏。');
}
if (noteDiv.childNodes.length > 1) {
sectionCell.appendChild(noteDiv);
}
sectionRow.appendChild(sectionCell);
tbody.appendChild(sectionRow);
function addNoteItem(parent, text) {
const noteItem = document.createElement('p');
noteItem.style.margin = '0 0 6px 0';
noteItem.style.lineHeight = '1.4';
noteItem.style.textIndent = '-12px';
noteItem.style.paddingLeft = '12px';
noteItem.textContent = '- ' + text;
parent.appendChild(noteItem);
}
samples.forEach(sample => {
const row = document.createElement('tr');
const promptCell = document.createElement('td');
promptCell.className = 'tg-0lax';
promptCell.style.width = '500px';
const promptSpan = document.createElement('span');
promptSpan.id = `${sample.id}-prompt`;
promptSpan.textContent = '正在載入提示詞...';
promptCell.appendChild(promptSpan);
const lyricsCell = document.createElement('td');
lyricsCell.style.verticalAlign = 'top';
lyricsCell.style.width = '1000px';
lyricsCell.style.position = 'relative';
const lyricsToggle = document.createElement('div');
lyricsToggle.className = 'lyrics-toggle';
const lyricsHeader = document.createElement('div');
lyricsHeader.className = 'lyrics-header';
lyricsHeader.textContent = '歌詞';
switch (sample.id) {
case 'dark-atmospheric':
lyricsHeader.textContent = '中文';
break;
case 'electro-house':
lyricsHeader.textContent = '中文';
break;
case 'folk-rnb-female':
lyricsHeader.textContent = '中文';
break;
case 'french-pop':
lyricsHeader.textContent = '法文';
break;
case 'german-dance':
lyricsHeader.textContent = '德文';
break;
case 'hip-house':
lyricsHeader.textContent = '中文';
break;
case 'italian-folk':
lyricsHeader.textContent = '義大利文';
break;
case 'jpop':
lyricsHeader.textContent = '日文';
break;
case 'kpop':
lyricsHeader.textContent = '韓文';
break;
case 'mandopop':
lyricsHeader.textContent = '中文';
break;
case 'portuguese-pop':
lyricsHeader.textContent = '葡萄牙文';
break;
case 'russian-folk':
lyricsHeader.textContent = '俄文';
break;
case 'spanish-song':
lyricsHeader.textContent = '西班牙文';
break;
}
const toggleIcon = document.createElement('span');
toggleIcon.className = 'toggle-icon';
toggleIcon.textContent = '▼';
lyricsHeader.appendChild(toggleIcon);
const lyricsBody = document.createElement('div');
lyricsBody.className = 'lyrics-body';
lyricsBody.style.display = 'flex';
lyricsBody.style.flexDirection = 'column';
lyricsBody.style.alignItems = 'flex-start';
const lyricsPre = document.createElement('pre');
lyricsPre.id = `${sample.id}-lyrics`;
lyricsPre.textContent = '正在載入歌詞...';
lyricsPre.style.alignSelf = 'flex-start';
lyricsBody.appendChild(lyricsPre);
lyricsToggle.appendChild(lyricsHeader);
lyricsToggle.appendChild(lyricsBody);
lyricsCell.appendChild(lyricsToggle);
const audioCell = document.createElement('td');
audioCell.className = 'tg-0lax';
audioCell.style.width = '60px';
const playButton = document.createElement('button');
playButton.innerHTML = '▶';
playButton.className = 'track-play-btn';
playButton.dataset.directory = sample.directory;
playButton.dataset.fileName = sample.fileName;
playButton.dataset.id = sample.id;
playButton.dataset.title = sample.fileName.replace(/_/g, ' ');
audioCell.appendChild(playButton);
row.appendChild(promptCell);
row.appendChild(lyricsCell);
row.appendChild(audioCell);
tbody.appendChild(row);
});
});
}
async function fetchTextAndUpdate(filePath, elementId) {
const element = document.getElementById(elementId);
if (!element) {
console.error(`Element with id ${elementId} not found.`);
return;
}
if (typeof localTextContent !== 'undefined' && localTextContent.hasOwnProperty(filePath)) {
element.textContent = localTextContent[filePath];
return;
}
try {
const response = await fetch(filePath);
if (!response.ok) {
throw new Error(`無法獲取 ${filePath}:${response.status}`);
}
const text = await response.text();
const element = document.getElementById(elementId);
if (element) {
element.textContent = text;
}
} catch (error) {
console.error('獲取文字時發生錯誤:', error);
const element = document.getElementById(elementId);
if (element) {
element.textContent = '無歌詞';
}
}
}
const toggleAllButton = document.getElementById('toggle-all-lyrics');
let allExpanded = false;
toggleAllButton.addEventListener('click', function () {
const lyricsToggles = document.querySelectorAll('.lyrics-toggle');
if (allExpanded) {
lyricsToggles.forEach(toggle => {
toggle.classList.remove('expanded');
});
toggleAllButton.textContent = '展開所有歌詞';
} else {
lyricsToggles.forEach(toggle => {
toggle.classList.add('expanded');
});
toggleAllButton.textContent = '收合所有歌詞';
}
allExpanded = !allExpanded;
if (!allExpanded && currentTrackIndex >= 0) {
const track = musicSamples[currentTrackIndex];
const lyricsElement = document.getElementById(`${track.id}-lyrics`);
if (lyricsElement) {
const lyricsToggle = lyricsElement.closest('.lyrics-toggle');
if (lyricsToggle) {
lyricsToggle.classList.add('expanded');
}
}
}
});
const globalPlayer = document.getElementById('global-player');
const globalAudio = document.getElementById('global-audio');
const playerPlayBtn = document.getElementById('player-play-btn');
const playerPrevBtn = document.getElementById('player-prev-btn');
const playerNextBtn = document.getElementById('player-next-btn');
const playerShuffleBtn = document.getElementById('player-shuffle-btn');
const playerRepeatBtn = document.getElementById('player-repeat-btn');
const playerProgressContainer = document.querySelector('.player-progress-container');
const playerProgressBar = document.querySelector('.player-progress-bar');
const playerProgressHandle = document.querySelector('.player-progress-handle');
const playerTimeDisplay = document.querySelector('.player-time-display');
const playerTrackTitle = document.querySelector('.player-track-title');
const playerTrackGenre = document.querySelector('.player-track-genre');
const playerAlbumArt = document.getElementById('player-album-art');
let currentTrackIndex = -1;
let isShuffleMode = false;
let isRepeatMode = false;
let playQueue = [];
function formatTime(seconds) {
const minutes = Math.floor(seconds / 60);
const remainingSeconds = Math.floor(seconds % 60);
return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
}
function updatePlayQueue() {
if (isShuffleMode) {
const availableTracks = [...Array(musicSamples.length).keys()].filter(i => i !== currentTrackIndex);
for (let i = availableTracks.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[availableTracks[i], availableTracks[j]] = [availableTracks[j], availableTracks[i]];
}
if (currentTrackIndex >= 0) {
playQueue = [currentTrackIndex, ...availableTracks];
} else {
playQueue = availableTracks;
}
} else {
playQueue = [...Array(musicSamples.length).keys()];
if (currentTrackIndex >= 0) {
const currentIndex = playQueue.indexOf(currentTrackIndex);
playQueue = [...playQueue.slice(currentIndex), ...playQueue.slice(0, currentIndex)];
}
}
}
function updateTrackButtons() {
document.querySelectorAll('.track-play-btn').forEach(button => {
const sampleId = button.dataset.id;
const trackIndex = musicSamples.findIndex(s => s.id === sampleId);
if (trackIndex === currentTrackIndex && !globalAudio.paused) {
button.innerHTML = '❚❚';
button.classList.add('playing');
} else {
button.innerHTML = '▶';
button.classList.remove('playing');
}
});
}
function scrollToCurrentTrackLyrics() {
if (currentTrackIndex >= 0) {
document.querySelectorAll('.lyrics-toggle').forEach(toggle => {
toggle.classList.remove('expanded');
});
const track = musicSamples[currentTrackIndex];
const lyricsElement = document.getElementById(`${track.id}-lyrics`);
if (lyricsElement) {
const lyricsToggle = lyricsElement.closest('.lyrics-toggle');
if (lyricsToggle) {
lyricsToggle.classList.add('expanded');
}
setTimeout(() => {
lyricsElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
}, 300);
}
}
}
async function playTrack(index) {
if (index >= 0 && index < musicSamples.length) {
currentTrackIndex = index;
const track = musicSamples[index];
playerTrackTitle.textContent = track.fileName.replace(/_/g, ' ');
playerTrackGenre.textContent = track.id.replace(/-/g, ' ');
setTimeout(() => {
playerTrackTitle.classList.remove('scrolling', 'length-medium', 'length-long');
const titleText = playerTrackTitle.textContent;
playerTrackTitle.setAttribute('data-content', titleText);
if (playerTrackTitle.scrollWidth > playerTrackTitle.clientWidth) {
playerTrackTitle.classList.add('scrolling');
const ratio = playerTrackTitle.scrollWidth / playerTrackTitle.clientWidth;
if (ratio >= 2) {
playerTrackTitle.classList.add('length-long');
} else if (ratio >= 1.5) {
playerTrackTitle.classList.add('length-medium');
}
}
playerTrackGenre.classList.remove('scrolling', 'length-medium', 'length-long');
const genreText = playerTrackGenre.textContent;
playerTrackGenre.setAttribute('data-content', genreText);
if (playerTrackGenre.scrollWidth > playerTrackGenre.clientWidth) {
playerTrackGenre.classList.add('scrolling');
const ratio = playerTrackGenre.scrollWidth / playerTrackGenre.clientWidth;
if (ratio >= 2) {
playerTrackGenre.classList.add('length-long');
} else if (ratio >= 1.5) {
playerTrackGenre.classList.add('length-medium');
}
}
}, 50);
const getRandomColor = () => {
const letters = '0123456789ABCDEF';
let color = '#';
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
};
const bgColor = getRandomColor();
const fgColor = getRandomColor();
const svgPatterns = [
`<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
<rect width="200" height="200" fill="${bgColor}"/>
<path d="M80 30 L80 130 Q80 150 60 150 Q40 150 40 130 Q40 110 60 110 Q70 110 80 120 M120 50 L120 110 Q120 130 100 130 Q80 130 80 110 Q80 90 100 90 Q110 90 120 100" stroke="${fgColor}" stroke-width="8" fill="none"/>
</svg>`,
`<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
<rect width="200" height="200" fill="${bgColor}"/>
<rect x="40" y="40" width="20" height="120" fill="${fgColor}"/>
<rect x="80" y="80" width="20" height="80" fill="${fgColor}"/>
<rect x="120" y="20" width="20" height="140" fill="${fgColor}"/>
<rect x="160" y="60" width="20" height="100" fill="${fgColor}"/>
</svg>`,
`<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
<rect width="200" height="200" fill="${bgColor}"/>
<circle cx="100" cy="100" r="80" fill="${fgColor}"/>
<circle cx="100" cy="100" r="30" fill="${bgColor}"/>
<circle cx="100" cy="100" r="10" fill="${fgColor}"/>
</svg>`
];
const randomSvg = svgPatterns[Math.floor(Math.random() * svgPatterns.length)];
const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(randomSvg);
playerAlbumArt.src = svgDataUrl;
playerAlbumArt.style.display = 'block';
playerAlbumArt.style.backgroundColor = 'transparent';
playerPlayBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary"><path d="M12 4V2A10 10 0 0 0 2 12h2a8 8 0 0 1 8-8z"><animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="1s" repeatCount="indefinite"/></path></svg>';
try {
const audioUrl = await audioLoader.getAudioUrl(track.directory, track.fileName);
globalAudio.src = audioUrl;
await globalAudio.play();
playerPlayBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary"><path d="M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2zm8-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2s2-.9 2-2z"></path></svg>';
globalPlayer.classList.add('visible');
updateTrackButtons();
scrollToCurrentTrackLyrics();
console.log(`正在播放 ${track.fileName},來源:${audioUrl}`);
} catch (error) {
console.error('播放音訊時發生錯誤:', error);
playerPlayBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary"><path d="M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L9.54 5.98A.998.998 0 0 0 8 6.82z"></path></svg>';
}
updatePlayQueue();
}
}
function playNextTrack() {
if (playQueue.length > 0) {
if (isRepeatMode && globalAudio.ended) {
globalAudio.currentTime = 0;
globalAudio.play()
.then(() => {
updateTrackButtons();
});
return;
}
let currentQueueIndex = -1;
if (currentTrackIndex >= 0) {
currentQueueIndex = playQueue.indexOf(currentTrackIndex);
}
let nextQueueIndex = (currentQueueIndex + 1) % playQueue.length;
let nextTrackIndex = playQueue[nextQueueIndex];
playTrack(nextTrackIndex);
} else if (musicSamples.length > 0) {
updatePlayQueue();
if (playQueue.length > 0) {
playTrack(playQueue[0]);
}
}
}
function playPreviousTrack() {
if (playQueue.length > 0) {
const prevIndex = playQueue.pop();
playQueue.unshift(prevIndex);
const currentIndex = playQueue.shift();
playQueue.unshift(currentIndex);
playTrack(prevIndex);
}
}
function addPlayButtonListeners() {
document.querySelectorAll('.track-play-btn').forEach(button => {
button.addEventListener('click', function () {
const sampleId = this.dataset.id;
const trackIndex = musicSamples.findIndex(s => s.id === sampleId);
if (trackIndex === currentTrackIndex && globalAudio.src) {
if (globalAudio.paused) {
globalAudio.play()
.then(() => {
playerPlayBtn.innerHTML = '❚❚';
updateTrackButtons();
});
} else {
globalAudio.pause();
playerPlayBtn.innerHTML = '▶';
updateTrackButtons();
}
} else {
this.innerHTML = '⏳️';
playTrack(trackIndex);
}
});
});
}
playerPlayBtn.addEventListener('click', function () {
if (globalAudio.paused) {
if (globalAudio.src) {
globalAudio.play()
.then(() => {
playerPlayBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary"><path d="M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2zm8-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2s2-.9 2-2z"></path></svg>';
updateTrackButtons();
});
} else if (playQueue.length > 0) {
playTrack(playQueue[0]);
}
} else {
globalAudio.pause();
playerPlayBtn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary"><path d="M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L9.54 5.98A.998.998 0 0 0 8 6.82z"></path></svg>';
updateTrackButtons();
}
});
playerPrevBtn.addEventListener('click', playPreviousTrack);
playerNextBtn.addEventListener('click', function () {
playNextTrack();
});
playerShuffleBtn.addEventListener('click', function () {
isShuffleMode = !isShuffleMode;
this.classList.toggle('active', isShuffleMode);
if (isShuffleMode && isRepeatMode) {
isRepeatMode = false;
playerRepeatBtn.classList.remove('active');
playerRepeatBtn.querySelector('.mode-indicator').textContent = '';
}
const indicator = this.querySelector('.mode-indicator');
indicator.textContent = isShuffleMode ? '開啟' : '';
updatePlayQueue();
});
playerRepeatBtn.addEventListener('click', function () {
isRepeatMode = !isRepeatMode;
this.classList.toggle('active', isRepeatMode);
if (isRepeatMode && isShuffleMode) {
isShuffleMode = false;
playerShuffleBtn.classList.remove('active');
playerShuffleBtn.querySelector('.mode-indicator').textContent = '';
updatePlayQueue();
}
const indicator = this.querySelector('.mode-indicator');
indicator.textContent = isRepeatMode ? '開啟' : '';
});
globalAudio.addEventListener('timeupdate', function () {
if (globalAudio.duration) {
const percent = (globalAudio.currentTime / globalAudio.duration) * 100;
playerProgressBar.style.width = percent + '%';
playerTimeDisplay.textContent = `${formatTime(globalAudio.currentTime)} / ${formatTime(globalAudio.duration)}`;
}
});
playerProgressContainer.addEventListener('click', function (e) {
if (globalAudio.duration) {
const rect = playerProgressContainer.getBoundingClientRect();
const pos = (e.clientX - rect.left) / rect.width;
globalAudio.currentTime = pos * globalAudio.duration;
}
});
let isDragging = false;
playerProgressHandle.addEventListener('mousedown', function (e) {
isDragging = true;
e.preventDefault();
});
document.addEventListener('mousemove', function (e) {
if (isDragging && globalAudio.duration) {
const rect = playerProgressContainer.getBoundingClientRect();
let pos = (e.clientX - rect.left) / rect.width;
pos = Math.max(0, Math.min(1, pos));
playerProgressBar.style.width = (pos * 100) + '%';
}
});
document.addEventListener('mouseup', function (e) {
if (isDragging && globalAudio.duration) {
const rect = playerProgressContainer.getBoundingClientRect();
let pos = (e.clientX - rect.left) / rect.width;
pos = Math.max(0, Math.min(1, pos));
globalAudio.currentTime = pos * globalAudio.duration;
isDragging = false;
}
});
globalAudio.addEventListener('play', updateTrackButtons);
globalAudio.addEventListener('pause', updateTrackButtons);
globalAudio.addEventListener('ended', playNextTrack);
updatePlayQueue();
setTimeout(() => {
console.log('正在預載音訊中繼資料...');
audioLoader.preloadAudio(musicSamples, (loaded, total) => {
console.log(`已預載 ${loaded}/${total} 個音訊檔案`);
});
}, 3000);
});
</script>
<section class="page-header">
</section>
<section class="main-content">
<h1 id="">
<center> ACE-Step:邁向音樂生成基礎模型的一步 </center>
</h1>
<br>
<a href="https://jsrun.net/2rnKp/embedded/result/light#Result">webview</a>
<center> Junmin Gong, Sean Zhao, Sen Wang, Shengyuan Xu, Joe Guo </center>
<br>
<div style="display: flex; justify-content: center; align-items: center; margin-top: -10px; margin-bottom: 30px;">
<a href="https://acestudio.ai" style="margin: 0 10px;">
<figure style="margin: 0;">
<img src="https://ace-step.github.io/raw/fig/acestudio_logo.png" alt="acestudio_logo" style="max-width: 230px;">
</figure>
</a>
<a href="https://www.stepfun.com/" style="margin: 0 10px;">
<figure style="margin: 0;">
<img src="https://ace-step.github.io/raw/fig/Logo_StepFun.png" alt="stepfun_logo" style="max-width: 230px;">
</figure>
</a>
</div>
<div style="text-align: center; margin-top: -20px;">
<a href="https://github.com/ace-step/ACE-Step" class="github-link" target="_blank" rel="noopener noreferrer"
style="margin-right: 20px;">
<svg fill="currentColor" height="28" width="28" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z">
</path>
</svg>
<span style="font-size: 24px ;">GitHub</span>
</a>
<a href="https://huggingface.co/ACE-Step/ACE-Step-v1-3.5B" class="huggingface-link" target="_blank"
rel="noopener noreferrer" style="margin-right: 20px;">
<svg fill="currentColor" height="28" width="28" viewBox="0 0 24 24">
<path d="M16.781 3.277c2.997 1.704 4.844 4.851 4.844 8.258 0 .995-.155 1.955-.443 2.857a1.332 1.332 0 011.125.4 1.41 1.41 0 01.2 1.723c.204.165.352.385.428.632l.017.062c.06.222.12.69-.2 1.166.244.37.279.836.093 1.236-.255.57-.893 1.018-2.128 1.5l-.202.078-.131.048c-.478.173-.89.295-1.061.345l-.086.024c-.89.243-1.808.375-2.732.394-1.32 0-2.3-.36-2.923-1.067a9.852 9.852 0 01-3.18.018C9.778 21.647 8.802 22 7.494 22a11.249 11.249 0 01-2.541-.343l-.221-.06-.273-.08a16.574 16.574 0 01-1.175-.405c-1.237-.483-1.875-.93-2.13-1.501-.186-.4-.151-.867.093-1.236a1.42 1.42 0 01-.2-1.166c.069-.273.226-.516.447-.694a1.41 1.41 0 01.2-1.722c.233-.248.557-.391.917-.407l.078-.001a9.385 9.385 0 01-.44-2.85c0-3.407 1.847-6.554 4.844-8.258a9.822 9.822 0 019.687 0zM4.188 14.758c.125.687 2.357 2.35 2.14 2.707-.19.315-.796-.239-.948-.386l-.041-.04-.168-.147c-.561-.479-2.304-1.9-2.74-1.432-.43.46.119.859 1.055 1.42l.784.467.136.083c1.045.643 1.12.84.95 1.113-.188.295-3.07-2.1-3.34-1.083-.27 1.011 2.942 1.304 2.744 2.006-.2.7-2.265-1.324-2.685-.537-.425.79 2.913 1.718 2.94 1.725l.16.04.175.042c1.227.284 3.565.65 4.435-.604.673-.973.64-1.709-.248-2.61l-.057-.057c-.945-.928-1.495-2.288-1.495-2.288l-.017-.058-.025-.072c-.082-.22-.284-.639-.63-.584-.46.073-.798 1.21.12 1.933l.05.038c.977.721-.195 1.21-.573.534l-.058-.104-.143-.25c-.463-.799-1.282-2.111-1.739-2.397-.532-.332-.907-.148-.782.541zm14.842-.541c-.533.335-1.563 2.074-1.94 2.751a.613.613 0 01-.687.302.436.436 0 01-.176-.098.303.303 0 01-.049-.06l-.014-.028-.008-.02-.007-.019-.003-.013-.003-.017a.289.289 0 01-.004-.048c0-.12.071-.266.25-.427.026-.024.054-.047.084-.07l.047-.036c.022-.016.043-.032.063-.049.883-.71.573-1.81.131-1.917l-.031-.006-.056-.004a.368.368 0 00-.062.006l-.028.005-.042.014-.039.017-.028.015-.028.019-.036.027-.023.02c-.173.158-.273.428-.31.542l-.016.054s-.53 1.309-1.439 2.234l-.054.054c-.365.358-.596.69-.702 1.018-.143.437-.066.868.21 1.353.055.097.117.195.187.296.882 1.275 3.282.876 4.494.59l.286-.07.25-.074c.276-.084.736-.233 1.2-.42l.188-.077.065-.028.064-.028.124-.056.081-.038c.529-.252.964-.543.994-.827l.001-.036a.299.299 0 00-.037-.139c-.094-.176-.271-.212-.491-.168l-.045.01c-.044.01-.09.024-.136.04l-.097.035-.054.022c-.559.23-1.238.705-1.607.745h.006a.452.452 0 01-.05.003h-.024l-.024-.003-.023-.005c-.068-.016-.116-.06-.14-.142a.22.22 0 01-.005-.1c.062-.345.958-.595 1.713-.91l.066-.028c.528-.224.97-.483.985-.832v-.04a.47.47 0 00-.016-.098c-.048-.18-.175-.251-.36-.251-.785 0-2.55 1.36-2.92 1.36-.025 0-.048-.007-.058-.024a.6.6 0 01-.046-.088c-.1-.238.068-.462 1.06-1.066l.209-.126c.538-.32 1.01-.588 1.341-.831.29-.212.475-.406.503-.6l.003-.028c.008-.113-.038-.227-.147-.344a.266.266 0 00-.07-.054l-.034-.015-.013-.005a.403.403 0 00-.13-.02c-.162 0-.369.07-.595.18-.637.313-1.431.952-1.826 1.285l-.249.215-.033.033c-.08.078-.288.27-.493.386l-.071.037-.041.019a.535.535 0 01-.122.036h.005a.346.346 0 01-.031.003l.01-.001-.013.001c-.079.005-.145-.021-.19-.095a.113.113 0 01-.014-.065c.027-.465 2.034-1.991 2.152-2.642l.009-.048c.1-.65-.271-.817-.791-.493zM11.938 2.984c-4.798 0-8.688 3.829-8.688 8.55 0 .692.083 1.364.24 2.008l.008-.009c.252-.298.612-.46 1.017-.46.355.008.699.117.993.312.22.14.465.384.715.694.261-.372.69-.598 1.15-.605.852 0 1.367.728 1.562 1.383l.047.105.06.127c.192.396.595 1.139 1.143 1.68 1.06 1.04 1.324 2.115.8 3.266a8.865 8.865 0 002.024-.014c-.505-1.12-.26-2.17.74-3.186l.066-.066c.695-.684 1.157-1.69 1.252-1.912.195-.655.708-1.383 1.56-1.383.46.007.889.233 1.15.605.25-.31.495-.553.718-.694a1.87 1.87 0 01.99-.312c.357 0 .682.126.925.36.14-.61.215-1.245.215-1.898 0-4.722-3.89-8.55-8.687-8.55zm1.857 8.926l.439-.212c.553-.264.89-.383.89.152 0 1.093-.771 3.208-3.155 3.262h-.184c-2.325-.052-3.116-2.06-3.156-3.175l-.001-.087c0-1.107 1.452.586 3.25.586.716 0 1.379-.272 1.917-.526zm4.017-3.143c.45 0 .813.358.813.8 0 .441-.364.8-.813.8a.806.806 0 01-.812-.8c0-.442.364-.8.812-.8zm-11.624 0c.448 0 .812.358.812.8 0 .441-.364.8-.812.8a.806.806 0 01-.813-.8c0-.442.364-.8.813-.8zm7.79-.841c.32-.384.846-.54 1.33-.394.483.146.83.564.878 1.06.048.495-.212.97-.659 1.203-.322.168-.447-.477-.767-.585l.002-.003c-.287-.098-.772.362-.925.079a1.215 1.215 0 01.14-1.36zm-4.323 0c.322.384.377.92.14 1.36-.152.283-.64-.177-.925-.079l.003.003c-.108.036-.194.134-.273.24l-.118.165c-.11.15-.22.262-.377.18a1.226 1.226 0 01-.658-1.204c.048-.495.395-.913.878-1.059a1.262 1.262 0 011.33.394z">
</path>
</svg>
<span style="font-size: 24px;">Hugging Face</span>
</a>
<a href="#" class="arxiv-link" target="_blank" rel="noopener noreferrer" style="margin-right: 20px;"
onclick="return false;">
<svg fill="currentColor" height="28" width="28" viewBox="0 0 512 512">
<path d="M128 0C74.98 0 32 42.98 32 96v320c0 53.02 42.98 96 96 96h256c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96H128zM400 432H112c-8.836 0-16-7.164-16-16V96c0-8.838 7.164-16 16-16h288c8.836 0 16 7.162 16 16v320c0 8.836-7.164 16-16 16zM192 128h-48c-8.836 0-16 7.162-16 16v32c0 8.836 7.164 16 16 16h48c8.836 0 16-7.164 16-16v-32c0-8.838-7.164-16-16-16zm176 0h-48c-8.836 0-16 7.162-16 16v32c0 8.836 7.164 16 16 16h48c8.836 0 16-7.164 16-16v-32c0-8.838-7.164-16-16-16zM192 224h-48c-8.836 0-16 7.164-16 16v32c0 8.836 7.164 16 16 16h48c8.836 0 16-7.164 16-16v-32c0-8.836-7.164-16-16-16zm176 0h-48c-8.836 0-16 7.164-16 16v32c0 8.836 7.164 16 16 16h48c8.836 0 16-7.164 16-16v-32c0-8.836-7.164-16-16-16zM192 320h-48c-8.836 0-16 7.164-16 16v32c0 8.836 7.164 16 16 16h48c8.836 0 16-7.164 16-16v-32c0-8.836-7.164-16-16-16z" />
</svg>
<span style="font-size: 24px;">論文 (即將發布)</span>
</a>
<a href="https://huggingface.co/spaces/ACE-Step/ACE-Step" class="huggingface-link" target="_blank"
rel="noopener noreferrer">
<svg class="size-8 mr-1.5 dark:mr-2 dark:drop-shadow-md" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="28"
height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 39 40">
<path d="M6.3712 2.04427C3.7183 2.04427 1.56771 4.19486 1.56771 6.84776V18.3546V18.6544V32.7341C1.56771 35.3868 3.71818 37.5377 6.3712 37.5377H17.878H20.7507H32.2575C34.9104 37.5377 37.0612 35.387 37.0612 32.7341V21.6204C37.0612 20.177 36.4252 18.8839 35.4189 18.004C36.4576 16.3895 37.0612 14.4666 37.0612 12.4046C37.0612 6.68274 32.4225 2.04427 26.7007 2.04427C24.6388 2.04427 22.7159 2.64776 21.1014 3.68647C20.2214 2.6802 18.9282 2.04427 17.4849 2.04427H6.3712Z"
fill="black" class="stroke-white dark:stroke-white/10" stroke-width="3.07552"></path>
<path d="M9.56855 23.5001C8.8406 23.5001 8.25047 24.0902 8.25047 24.8182V29.5361C8.25047 30.2641 8.8406 30.8542 9.56855 30.8542H14.2864C15.0144 30.8542 15.6045 30.2641 15.6045 29.5361V24.8182C15.6045 24.0902 15.0143 23.5001 14.2864 23.5001H9.56855Z"
fill="#FF3270"></path>
<path d="M24.3409 23.5001C23.613 23.5001 23.0228 24.0902 23.0228 24.8182V29.5361C23.0228 30.2641 23.613 30.8542 24.3409 30.8542H29.0588C29.7868 30.8542 30.3769 30.2641 30.3769 29.5361V24.8182C30.3769 24.0902 29.7868 23.5001 29.0588 23.5001H24.3409Z"
fill="#861FFF"></path>
<path d="M9.56855 8.72815C8.8406 8.72815 8.25047 9.31827 8.25047 10.0462V14.7641C8.25047 15.4921 8.8406 16.0822 9.56855 16.0822H14.2864C15.0144 16.0822 15.6045 15.4921 15.6045 14.7641V10.0462C15.6045 9.31827 15.0143 8.72815 14.2864 8.72815H9.56855Z"
fill="#097EFF"></path>
<path d="M26.6999 8.72815C24.6692 8.72815 23.0228 10.3744 23.0228 12.4052C23.0228 14.4359 24.6692 16.0822 26.6999 16.0822C28.7306 16.0822 30.3769 14.4359 30.3769 12.4052C30.3769 10.3744 28.7306 8.72815 26.6999 8.72815Z"
fill="#FFD702"></path>
</svg>
<span style="font-size: 24px;">演示</span>
</a>
</div>
<h2 id="abstract" style="text-align: center;">�� 摘要<a name="abstract"></a></h2>
<p style="text-align: justify;">
�� 我們推出 ACE-Step,一個新穎的開源音樂生成基礎模型,它透過整體架構設計克服了現有方法的關鍵限制並達到頂尖效能。目前的方法在生成速度、音樂連貫性和可控性之間面臨固有的權衡。例如,基於大型語言模型 (LLM) 的模型(如 Yue、SongGen)在歌詞對齊方面表現出色,但推論速度緩慢且存在結構性失真。另一方面,擴散模型(如 DiffRhythm)能夠實現更快的合成速度,但通常缺乏長距離結構連貫性。��
</p>
<p style="text-align: justify;">
�� ACE-Step 透過整合基於擴散的生成與 Sana 的深度壓縮自動編碼器 (DCAE) 和一個輕量級線性 Transformer 來彌合這一差距。它進一步利用 MERT 和 m-hubert 在訓練期間對齊語義表徵 (REPA),實現快速收斂。因此,我們的模型在 A100 GPU 上僅需 20 秒即可合成長達 4 分鐘的音樂——比基於 LLM 的基線模型快 15 倍——同時在旋律、和聲和節奏指標上實現了卓越的音樂連貫性和歌詞對齊。⚡ 此外,ACE-Step 保留了細膩的聲學細節,實現了語音複製、歌詞編輯、混音和音軌生成(例如歌詞轉人聲、歌聲轉伴奏)等進階控制機制。��️
</p>
<p style="text-align: justify;">
�� 我們的願景並非再建立一個端到端文字轉音樂流程,而是為音樂 AI 建立一個基礎模型:一個快速、通用、高效且靈活的架構,使其易於在其上訓練子任務。這為開發強大的工具鋪平了道路,這些工具可以無縫整合到音樂藝術家、製作人和內容創作者的創作工作流程中。簡而言之,我們的目標是為音樂界打造 Stable Diffusion 時刻。��
</p>
<br><br>
<style>
figure {
text-align: center;
margin: 0;
}
img {
max-width: 100%;
height: auto;
}
figcaption {
margin-top: 8px;
font-size: 14px;
color: #555;
}
.gallery {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
</style>
<figure>
<img src="https://ace-step.github.io/raw/fig/ACE-Step_framework.png" alt="框架圖" width="1000" height="600">
</figure>
<br><br>
<div class="toc">
<h3>�� 目錄</h3>
<ul>
<li><a href="#BaselineQuality">�� 基準品質</a></li>
<ul>
<li><a href="#GeneralSongs">一般歌曲</a></li>
<li><a href="#Experimental">實驗性輸入</a></li>
<li><a href="#Instrumentals">純音樂</a></li>
<li><a href="#MultipleLang">多種語言</a></li>
</ul>
<li>
<a href="#Controlability">��️ 可控性</a>
<ul>
<li><a href="#Controlability-retake">�� 變奏生成</a></li>
<li><a href="#Controlability-repaint">�� 重繪</a></li>
<li><a href="#Controlability-edit">✏️ 歌詞編輯</a></li>
</ul>
</li>
<li><a href="#Application">�� 應用</a></li>
<ul>
<li><a href="#Application-Lyric2Vocal">�� 歌詞轉人聲</a></li>
<li><a href="#Text2Sample">�� 文字轉取樣</a></li>
<li><a href="#RapMachine">�� 饒舌機器</a></li>
</ul>
<li><a href="#CommingSoon">⏳ 即將推出</a></li>
<ul>
<li><a href="#StemGen">�� 音軌生成</a></li>
<li><a href="#Singing2Accompaniment">�� 歌聲轉伴奏</a></li>
</ul>
</ul>
</div>
<figure>
<img src="https://ace-step.github.io/raw/fig/application_map.png" alt="應用圖" width="1000" height="600">
</figure>
<div class="fixed-toggle-container">
<button id="toggle-all-lyrics" class="toggle-all-button">�� 收合所有歌詞</button>
</div>
<h1 id="BaselineQuality" style="text-align: center;">�� 基準品質<a name="BaselineQuality"></a></h1>
<div style="border-left: 4px solid #097EFF; padding-left: 15px; margin-bottom: 20px;">
<p style="font-weight: bold; margin-bottom: 5px;">�� 注意:</p>
<p style="margin: 0;"> �� 歌詞是從 AI 音樂生成社群或網路上隨機選取,並未包含在我們的訓練集中。</p>
<p style="margin: 0;"> �� 現有模型要麼缺乏長度控制 (LLM),要麼是固定長度 (擴散模型)。我們實現了彈性長度以利實際音樂創作。</p>
<p style="margin: 0;"> �� 順帶一提,本專案頁面由 Roocode 熱情編寫。��</p>
</div>
<table>
<thead>
<tr>
<th class="tg-0lax">提示詞</th>
<th class="tg-0lax">歌詞</th>
<th class="tg-0lax">ACE-Step 生成結果</th>
</tr>
</thead>
<tbody id="baseline-quality">
</tbody>
</table>
<h1 id="Controlability" style="text-align: center;">��️ 可控性<a name="Controlability"></a></h1>
<div style="border-left: 4px solid #097EFF; padding-left: 15px; margin-bottom: 20px;">
<p style="font-weight: bold; margin-bottom: 5px;">�� 注意:</p>
<p style="margin: 0;"> 此模型支援多種無需訓練的應用。</p>
<p style="margin: 0;"> - retake:重新生成同一首歌曲的變奏版本。</p>
<p style="margin: 0;"> - repaint:重新生成歌曲的特定部分。</p>
<p style="margin: 0;"> - edit:修改歌曲的歌詞。</p>
</div>
<table>
<thead>
<tr>
<th class="tg-0lax">提示詞</th>
<th class="tg-0lax">歌詞</th>
<th class="tg-0lax">ACE-Step 生成結果</th>
</tr>
</thead>
<tbody id="controlability">
</tbody>
</table>
<h1 id="Application" style="text-align: center;">�� 應用<a name="Application"></a></h1>
<div style="border-left: 4px solid #097EFF; padding-left: 15px; margin-bottom: 20px;">
<p style="font-weight: bold; margin-bottom: 5px;">�� 注意:</p>
<p style="margin: 0;"> �� 此模型支援多種經過微調的應用 </p>
<p style="margin: 0;"> - Lyric2Vocal:在純人聲資料上進行 LoRA 微調</p>
<p style="margin: 0;"> - Text2Samples:在音樂取樣及循環樂句資料上進行 LoRA 微調</p>
<p style="margin: 0;"> - RapMachine:在饒舌資料上進行 LoRA 微調</p>
<p style="margin: 0;"> </p>
</div>
<table>
<thead>
<tr>
<th class="tg-0lax">提示詞</th>
<th class="tg-0lax">歌詞</th>
<th class="tg-0lax">ACE-Step 生成結果</th>
</tr>
</thead>
<tbody id="application">
</tbody>
</table>
</div>
<div id="global-player">
<div class="player-track-info">
<div class="album-art">
<img id="player-album-art"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="
alt="專輯封面"
style="width: 50px; height: 50px; border-radius: 4px; margin-right: 10px; background-color: #000000;">
</div>
<div class="track-details">
<div class="player-track-title"></div>
<div class="player-track-genre"></div>
</div>
</div>
<div class="player-controls">
<button id="player-prev-btn" class="player-btn" title="上一首">
<svg xmlns="http://www.w3.org/2000/svg"
width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary">
<g>
<path d="M8 17V7a.97.97 0 0 0-.287-.713A.97.97 0 0 0 7 6a.97.97 0 0 0-.713.287A.97.97 0 0 0 6 7v10q0 .424.287.712Q6.576 18 7 18q.424 0 .713-.288A.97.97 0 0 0 8 17m11-.875v-8.25q0-.45-.3-.725a1 1 0 0 0-.7-.275q-.125 0-.275.025a.6.6 0 0 0-.275.125l-6.2 4.15q-.225.15-.338.362A1 1 0 0 0 10.8 12q0 .25.112.463a1 1 0 0 0 .338.362l6.2 4.15a.6.6 0 0 0 .275.125q.15.025.275.025.4 0 .7-.275t.3-.725">
</path>
</g>
</svg>
</button>
<button id="player-play-btn" class="player-btn player-play-btn" title="播放/暫停">
<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor"
class="w-6 h-6 fill-primary">
<path d="M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 0 0 0-1.69L9.54 5.98A.998.998 0 0 0 8 6.82z">
</path>
</svg>
</button>
<button id="player-next-btn" class="player-btn" title="下一首">
<svg xmlns="http://www.w3.org/2000/svg"
width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary">
<g>
<path d="M16.5 17V7q0-.424.288-.713A.97.97 0 0 1 17.5 6q.424 0 .712.287.288.288.288.713v10q0 .424-.288.712A.97.97 0 0 1 17.5 18a.97.97 0 0 1-.712-.288A.97.97 0 0 1 16.5 17m-11-.875v-8.25q0-.45.3-.725t.7-.275q.125 0 .275.025a.6.6 0 0 1 .275.125l6.2 4.15q.225.15.338.362A1 1 0 0 1 13.7 12q0 .25-.112.463a1 1 0 0 1-.338.362l-6.2 4.15a.6.6 0 0 1-.275.125 2 2 0 0 1-.275.025q-.4 0-.7-.275t-.3-.725">
</path>
</g>
</svg>
</button>
<button id="player-shuffle-btn" class="player-btn" title="隨機播放">
<svg xmlns="http://www.w3.org/2000/svg"
width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary">
<path d="M10.59 9.17L5.41 4 4 5.41l5.17 5.17 1.42-1.41zM14.5 4l2.04 2.04L4 18.59 5.41 20 17.96 7.46 20 9.5V4h-5.5zm.33 9.41l-1.41 1.41 3.13 3.13L14.5 20H20v-5.5l-2.04 2.04-3.13-3.13z">
</path>
</svg> <span class="mode-indicator"></span>
</button>
<button id="player-repeat-btn" class="player-btn" title="重複播放">
<svg xmlns="http://www.w3.org/2000/svg"
width="2em" height="2em" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-primary">
<path d="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z"></path>
</svg> <span class="mode-indicator"></span>
</button>
</div>
<div class="player-progress-container">
<div class="player-progress-bar">
<div class="player-progress-handle"></div>
</div>
</div>
<div class="player-time-display">01:00 / 04:00</div>
<audio id="global-audio" preload="none"></audio>
</div>
<section class="main-content">
<h2 id="limitations" style="text-align: center;">⚠️ 限制與未來改進 ��</h2>
<div style="border-left: 4px solid #FF3270; padding-left: 15px; margin-bottom: 20px;">
<ol>
<li><strong>�� 輸出不一致:</strong>對隨機種子和輸入時長高度敏感,導致多變的「抽卡式」結果。</li>
<li><strong>�� 特定風格弱點:</strong>在某些類型(例如中文饒舌/zh_rap)上表現不佳。風格遵循度和音樂性上限有限。</li>
<li><strong>�� 連續性失真:</strong>在重繪/延伸操作中出現不自然的過渡。</li>
<li><strong>�� 人聲品質:</strong>人聲合成粗糙,缺乏細微差別。</li>
<li><strong>��️ 控制粒度:</strong>需要更細膩的音樂參數控制。</li>
<li><strong>�� 多語言歌詞遵循:</strong>改進對多種語言歌詞的支援,提升準確性和自然度。</li>
</ol>
</div>
</section>
</body>
</html>
@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700");
html {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
mark {
background: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
box-sizing: content-box;
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
color: inherit;
font: inherit;
margin: 0;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-appearance: textfield;
box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
border: 0;
padding: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
.highlight table td {
padding: 5px;
}
.highlight table pre {
margin: 0;
}
.highlight .cm {
color: #999988;
font-style: italic;
}
.highlight .cp {
color: #999999;
font-weight: bold;
}
.highlight .c1 {
color: #999988;
font-style: italic;
}
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic;
}
.highlight .c,
.highlight .cd {
color: #999988;
font-style: italic;
}
.highlight .err {
color: #a61717;
background-color: #e3d2d2;
}
.highlight .gd {
color: #000000;
background-color: #ffdddd;
}
.highlight .ge {
color: #000000;
font-style: italic;
}
.highlight .gr {
color: #aa0000;
}
.highlight .gh {
color: #999999;
}
.highlight .gi {
color: #000000;
background-color: #ddffdd;
}
.highlight .go {
color: #888888;
}
.highlight .gp {
color: #555555;
}
.highlight .gs {
font-weight: bold;
}
.highlight .gu {
color: #aaaaaa;
}
.highlight .gt {
color: #aa0000;
}
.highlight .kc {
color: #000000;
font-weight: bold;
}
.highlight .kd {
color: #000000;
font-weight: bold;
}
.highlight .kn {
color: #000000;
font-weight: bold;
}
.highlight .kp {
color: #000000;
font-weight: bold;
}
.highlight .kr {
color: #000000;
font-weight: bold;
}
.highlight .kt {
color: #445588;
font-weight: bold;
}
.highlight .k,
.highlight .kv {
color: #000000;
font-weight: bold;
}
.highlight .mf {
color: #009999;
}
.highlight .mh {
color: #009999;
}
.highlight .il {
color: #009999;
}
.highlight .mi {
color: #009999;
}
.highlight .mo {
color: #009999;
}
.highlight .m,
.highlight .mb,
.highlight .mx {
color: #009999;
}
.highlight .sb {
color: #d14;
}
.highlight .sc {
color: #d14;
}
.highlight .sd {
color: #d14;
}
.highlight .s2 {
color: #d14;
}
.highlight .se {
color: #d14;
}
.highlight .sh {
color: #d14;
}
.highlight .si {
color: #d14;
}
.highlight .sx {
color: #d14;
}
.highlight .sr {
color: #009926;
}
.highlight .s1 {
color: #d14;
}
.highlight .ss {
color: #990073;
}
.highlight .s {
color: #d14;
}
.highlight .na {
color: #008080;
}
.highlight .bp {
color: #999999;
}
.highlight .nb {
color: #0086b3;
}
.highlight .nc {
color: #445588;
font-weight: bold;
}
.highlight .no {
color: #008080;
}
.highlight .nd {
color: #3c5d5d;
font-weight: bold;
}
.highlight .ni {
color: #800080;
}
.highlight .ne {
color: #990000;
font-weight: bold;
}
.highlight .nf {
color: #990000;
font-weight: bold;
}
.highlight .nl {
color: #990000;
font-weight: bold;
}
.highlight .nn {
color: #555555;
}
.highlight .nt {
color: #000080;
}
.highlight .vc {
color: #008080;
}
.highlight .vg {
color: #008080;
}
.highlight .vi {
color: #008080;
}
.highlight .nv {
color: #008080;
}
.highlight .ow {
color: #000000;
font-weight: bold;
}
.highlight .o {
color: #000000;
font-weight: bold;
}
.highlight .w {
color: #bbbbbb;
}
.highlight {
background-color: #f8f8f8;
}
* {
box-sizing: border-box;
}
body {
padding: 0;
margin: 0;
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #606c71;
}
a {
color: #1e6bb8;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.btn {
display: inline-block;
margin-bottom: 1rem;
color: rgba(255, 255, 255, 0.7);
background-color: rgba(255, 255, 255, 0.08);
border-color: rgba(255, 255, 255, 0.2);
border-style: solid;
border-width: 1px;
border-radius: 0.3rem;
transition:
color 0.2s,
background-color 0.2s,
border-color 0.2s;
}
.btn:hover {
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
background-color: rgba(255, 255, 255, 0.2);
border-color: rgba(255, 255, 255, 0.3);
}
.btn + .btn {
margin-left: 1rem;
}
@media screen and (min-width: 64em) {
.btn {
padding: 0.75rem 1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.btn {
padding: 0.6rem 0.9rem;
font-size: 0.9rem;
}
}
@media screen and (max-width: 42em) {
.btn {
display: block;
width: 100%;
padding: 0.75rem;
font-size: 0.9rem;
}
.btn + .btn {
margin-top: 1rem;
margin-left: 0;
}
}
.page-header {
color: #fff;
text-align: center;
background-color: #333;
background-image: linear-gradient(60deg, #333, #333);
}
@media screen and (min-width: 64em) {
.page-header {
padding: 5rem 6rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.page-header {
padding: 3rem 4rem;
}
}
@media screen and (max-width: 42em) {
.page-header {
padding: 2rem 1rem;
}
}
.project-name {
margin-top: 0;
margin-bottom: 0.1rem;
}
@media screen and (min-width: 64em) {
.project-name {
font-size: 3.25rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.project-name {
font-size: 2.25rem;
}
}
@media screen and (max-width: 42em) {
.project-name {
font-size: 1.75rem;
}
}
.project-tagline {
margin-bottom: 2rem;
font-weight: normal;
opacity: 0.7;
}
@media screen and (min-width: 64em) {
.project-tagline {
font-size: 1.25rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.project-tagline {
font-size: 1.15rem;
}
}
@media screen and (max-width: 42em) {
.project-tagline {
font-size: 1rem;
}
}
.main-content {
word-wrap: break-word;
}
.main-content :first-child {
margin-top: 0;
}
@media screen and (min-width: 64em) {
.main-content {
max-width: 110rem;
padding: 2rem 6rem;
margin: 0 auto;
font-size: 1.1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.main-content {
padding: 2rem 4rem;
font-size: 1.1rem;
}
}
@media screen and (max-width: 42em) {
.main-content {
padding: 2rem 1rem;
font-size: 1rem;
}
}
.main-content img {
max-width: 100%;
}
.main-content h1,
.main-content h2,
.main-content h3,
.main-content h4,
.main-content h5,
.main-content h6 {
margin-top: 2rem;
margin-bottom: 1rem;
font-weight: normal;
color: #000;
}
.main-content p {
margin-bottom: 1em;
}
.main-content code {
padding: 2px 4px;
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 0.9rem;
color: #567482;
background-color: #f3f6fa;
border-radius: 0.3rem;
}
.main-content pre {
padding: 0.8rem;
margin-top: 0;
margin-bottom: 1rem;
font:
1rem Consolas,
"Liberation Mono",
Menlo,
Courier,
monospace;
color: #567482;
word-wrap: normal;
background-color: #f3f6fa;
border: solid 1px #dce6f0;
border-radius: 0.3rem;
}
.main-content pre > code {
padding: 0;
margin: 0;
font-size: 0.9rem;
color: #567482;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}
.main-content .highlight {
margin-bottom: 1rem;
}
.main-content .highlight pre {
margin-bottom: 0;
word-break: normal;
}
.main-content .highlight pre,
.main-content pre {
padding: 0.8rem;
overflow: auto;
font-size: 0.9rem;
line-height: 1.45;
border-radius: 0.3rem;
-webkit-overflow-scrolling: touch;
}
.main-content pre code,
.main-content pre tt {
display: inline;
max-width: initial;
padding: 0;
margin: 0;
overflow: initial;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
.main-content pre code:before,
.main-content pre code:after,
.main-content pre tt:before,
.main-content pre tt:after {
content: normal;
}
.main-content ul,
.main-content ol {
margin-top: 0;
}
.main-content blockquote {
padding: 0 1rem;
margin-left: 0;
color: #819198;
border-left: 0.3rem solid #dce6f0;
}
.main-content blockquote > :first-child {
margin-top: 0;
}
.main-content blockquote > :last-child {
margin-bottom: 0;
}
.main-content table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
-webkit-overflow-scrolling: touch;
}
.main-content table th {
font-weight: bold;
}
.main-content table th,
.main-content table td {
padding: 0.5rem 1rem;
border: 1px solid #e9ebec;
}
.main-content dl {
padding: 0;
}
.main-content dl dt {
padding: 0;
margin-top: 1rem;
font-size: 1rem;
font-weight: bold;
}
.main-content dl dd {
padding: 0;
margin-bottom: 1rem;
}
.main-content hr {
height: 2px;
padding: 0;
margin: 1rem 0;
background-color: #eff0f1;
border: 0;
}
.site-footer {
padding-top: 2rem;
margin-top: 2rem;
border-top: solid 1px #eff0f1;
}
@media screen and (min-width: 64em) {
.site-footer {
font-size: 1rem;
}
}
@media screen and (min-width: 42em) and (max-width: 64em) {
.site-footer {
font-size: 1rem;
}
}
@media screen and (max-width: 42em) {
.site-footer {
font-size: 0.9rem;
}
}
.site-footer-owner {
display: block;
font-weight: bold;
}
.site-footer-credits {
color: #819198;
}