Composition Option: Only Auto Play Generated Content
This commit is contained in:
parent
f7494b0cfb
commit
2a7d22dab1
@ -320,5 +320,6 @@
|
|||||||
"Play With External Player": "外部プレーヤーで再生",
|
"Play With External Player": "外部プレーヤーで再生",
|
||||||
"Core API URL": "コアAPI URL",
|
"Core API URL": "コアAPI URL",
|
||||||
"Override core API URL(/chat/completions and /completions). If you don't know what this is, leave it blank.": "コアAPI URLを上書きします(/chat/completions と /completions)。何であるかわからない場合は空白のままにしてください。",
|
"Override core API URL(/chat/completions and /completions). If you don't know what this is, leave it blank.": "コアAPI URLを上書きします(/chat/completions と /completions)。何であるかわからない場合は空白のままにしてください。",
|
||||||
"Please change Strategy to CPU (rwkv.cpp) to use ggml format": "StrategyをCPU (rwkv.cpp)に変更して、ggml形式を使用してください"
|
"Please change Strategy to CPU (rwkv.cpp) to use ggml format": "StrategyをCPU (rwkv.cpp)に変更して、ggml形式を使用してください",
|
||||||
|
"Only Auto Play Generated Content": "生成されたコンテンツのみ自動再生"
|
||||||
}
|
}
|
@ -320,5 +320,6 @@
|
|||||||
"Play With External Player": "使用外部播放器播放",
|
"Play With External Player": "使用外部播放器播放",
|
||||||
"Core API URL": "核心 API URL",
|
"Core API URL": "核心 API URL",
|
||||||
"Override core API URL(/chat/completions and /completions). If you don't know what this is, leave it blank.": "覆盖核心的 API URL (/chat/completions 和 /completions)。如果你不知道这是什么,请留空",
|
"Override core API URL(/chat/completions and /completions). If you don't know what this is, leave it blank.": "覆盖核心的 API URL (/chat/completions 和 /completions)。如果你不知道这是什么,请留空",
|
||||||
"Please change Strategy to CPU (rwkv.cpp) to use ggml format": "请将Strategy改为CPU (rwkv.cpp)以使用ggml格式"
|
"Please change Strategy to CPU (rwkv.cpp) to use ggml format": "请将Strategy改为CPU (rwkv.cpp)以使用ggml格式",
|
||||||
|
"Only Auto Play Generated Content": "仅自动播放新生成的内容"
|
||||||
}
|
}
|
@ -152,10 +152,14 @@ const CompositionPanel: FC = observer(() => {
|
|||||||
if (autoPlay) {
|
if (autoPlay) {
|
||||||
if (commonStore.compositionParams.externalPlay)
|
if (commonStore.compositionParams.externalPlay)
|
||||||
externalPlayListener();
|
externalPlayListener();
|
||||||
else
|
else {
|
||||||
|
if (commonStore.compositionParams.playOnlyGeneratedContent && playerRef.current) {
|
||||||
|
playerRef.current.currentTime = Math.max(commonStore.compositionParams.generationStartTime - 1, 0);
|
||||||
|
}
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
playerRef.current?.start();
|
playerRef.current?.start();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -314,6 +318,14 @@ const CompositionPanel: FC = observer(() => {
|
|||||||
autoPlay: data.checked as boolean
|
autoPlay: data.checked as boolean
|
||||||
});
|
});
|
||||||
}} />
|
}} />
|
||||||
|
<Checkbox className="select-none"
|
||||||
|
size="large" label={t('Only Auto Play Generated Content')} checked={params.playOnlyGeneratedContent}
|
||||||
|
onChange={async (_, data) => {
|
||||||
|
setParams({
|
||||||
|
autoPlay: data.checked as boolean || commonStore.compositionParams.autoPlay,
|
||||||
|
playOnlyGeneratedContent: data.checked as boolean
|
||||||
|
});
|
||||||
|
}} />
|
||||||
<Labeled flex breakline label={t('MIDI Input')}
|
<Labeled flex breakline label={t('MIDI Input')}
|
||||||
desc={t('Select the MIDI input device to be used.')}
|
desc={t('Select the MIDI input device to be used.')}
|
||||||
content={
|
content={
|
||||||
@ -359,6 +371,9 @@ const CompositionPanel: FC = observer(() => {
|
|||||||
contentText={t('Are you sure you want to reset this page? It cannot be undone.')}
|
contentText={t('Are you sure you want to reset this page? It cannot be undone.')}
|
||||||
onConfirm={() => {
|
onConfirm={() => {
|
||||||
commonStore.setCompositionSubmittedPrompt(defaultCompositionPrompt);
|
commonStore.setCompositionSubmittedPrompt(defaultCompositionPrompt);
|
||||||
|
setParams({
|
||||||
|
generationStartTime: 0
|
||||||
|
});
|
||||||
setPrompt(defaultCompositionPrompt);
|
setPrompt(defaultCompositionPrompt);
|
||||||
}} />
|
}} />
|
||||||
<Button className="grow" appearance="primary" onClick={() => {
|
<Button className="grow" appearance="primary" onClick={() => {
|
||||||
@ -368,6 +383,9 @@ const CompositionPanel: FC = observer(() => {
|
|||||||
generateNs(params.autoPlay);
|
generateNs(params.autoPlay);
|
||||||
} else {
|
} else {
|
||||||
commonStore.setCompositionGenerating(true);
|
commonStore.setCompositionGenerating(true);
|
||||||
|
setParams({
|
||||||
|
generationStartTime: playerRef.current ? playerRef.current.duration : 0
|
||||||
|
});
|
||||||
onSubmit(params.prompt);
|
onSubmit(params.prompt);
|
||||||
}
|
}
|
||||||
}}>{!commonStore.compositionGenerating ? t('Generate') : t('Stop')}</Button>
|
}}>{!commonStore.compositionGenerating ? t('Generate') : t('Stop')}</Button>
|
||||||
|
@ -96,7 +96,9 @@ class CommonStore {
|
|||||||
useLocalSoundFont: false,
|
useLocalSoundFont: false,
|
||||||
externalPlay: false,
|
externalPlay: false,
|
||||||
midi: null,
|
midi: null,
|
||||||
ns: null
|
ns: null,
|
||||||
|
generationStartTime: 0,
|
||||||
|
playOnlyGeneratedContent: true
|
||||||
};
|
};
|
||||||
compositionGenerating: boolean = false;
|
compositionGenerating: boolean = false;
|
||||||
compositionSubmittedPrompt: string = defaultCompositionPrompt;
|
compositionSubmittedPrompt: string = defaultCompositionPrompt;
|
||||||
|
@ -11,7 +11,9 @@ export type CompositionParams = {
|
|||||||
useLocalSoundFont: boolean,
|
useLocalSoundFont: boolean,
|
||||||
externalPlay: boolean,
|
externalPlay: boolean,
|
||||||
midi: ArrayBuffer | null,
|
midi: ArrayBuffer | null,
|
||||||
ns: NoteSequence | null
|
ns: NoteSequence | null,
|
||||||
|
generationStartTime: number,
|
||||||
|
playOnlyGeneratedContent: boolean,
|
||||||
}
|
}
|
||||||
export type Track = {
|
export type Track = {
|
||||||
id: string;
|
id: string;
|
||||||
|
Loading…
Reference in New Issue
Block a user