From 1a634439d4512ace422d84c98563cce5e4ba747a Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Mon, 13 Apr 2026 21:30:00 +0530 Subject: [PATCH] Added additional settings params for AudioInference --- clientlibs/utils.js | 8 ++++++ modules/audioModelSearch.py | 2 ++ modules/audioSettings.py | 32 ++++++++++++++++++++++-- workflows/Runware_Audio_Minimax_2_6.json | 1 + 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 workflows/Runware_Audio_Minimax_2_6.json diff --git a/clientlibs/utils.js b/clientlibs/utils.js index ece0fd4..6a0e107 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -1261,6 +1261,10 @@ function audioSettingsToggleHandler(settingsNode) { const includePrefixWidget = settingsNode.widgets.find(w => w && w.name === "includePrefix"); const useLyricsWidget = settingsNode.widgets.find(w => w && w.name === "useLyrics"); const lyricsWidget = settingsNode.widgets.find(w => w && w.name === "lyrics"); + const useInstrumentalWidget = settingsNode.widgets.find(w => w && w.name === "useInstrumental"); + const instrumentalWidget = settingsNode.widgets.find(w => w && w.name === "instrumental"); + const useLyricsOptimizerWidget = settingsNode.widgets.find(w => w && w.name === "useLyricsOptimizer"); + const lyricsOptimizerWidget = settingsNode.widgets.find(w => w && w.name === "lyricsOptimizer"); const useGuidanceTypeWidget = settingsNode.widgets.find(w => w && w.name === "useGuidanceType"); const guidanceTypeWidget = settingsNode.widgets.find(w => w && w.name === "guidanceType"); const useLanguageBoostWidget = settingsNode.widgets.find(w => w && w.name === "useLanguageBoost"); @@ -1311,6 +1315,8 @@ function audioSettingsToggleHandler(settingsNode) { if (useTopKWidget && topKWidget) toggleWidgetState(useTopKWidget, topKWidget, "topK"); if (useIncludePrefixWidget && includePrefixWidget) toggleWidgetState(useIncludePrefixWidget, includePrefixWidget, "includePrefix"); if (useLyricsWidget && lyricsWidget) toggleWidgetState(useLyricsWidget, lyricsWidget, "lyrics"); + if (useInstrumentalWidget && instrumentalWidget) toggleWidgetState(useInstrumentalWidget, instrumentalWidget, "instrumental"); + if (useLyricsOptimizerWidget && lyricsOptimizerWidget) toggleWidgetState(useLyricsOptimizerWidget, lyricsOptimizerWidget, "lyricsOptimizer"); if (useGuidanceTypeWidget && guidanceTypeWidget) toggleWidgetState(useGuidanceTypeWidget, guidanceTypeWidget, "guidanceType"); if (useLanguageBoostWidget && languageBoostWidget) toggleWidgetState(useLanguageBoostWidget, languageBoostWidget, "languageBoost"); if (useTurboWidget && turboWidget) toggleWidgetState(useTurboWidget, turboWidget, "turbo"); @@ -3100,6 +3106,8 @@ function audioModelSearchFilterHandler(audioModelSearchNode) { ], "MiniMax": [ "minimax:speech@2.8 (MiniMax Speech 2.8)", + "minimax:music@cover (MiniMax Music Cover)", + "minimax:music@2.6 (MiniMax Music 2.6)", ], "Inworld": [ "inworld:tts@1.5-mini (Inworld TTS-1.5 Mini)", diff --git a/modules/audioModelSearch.py b/modules/audioModelSearch.py index 24ba42e..fe33336 100644 --- a/modules/audioModelSearch.py +++ b/modules/audioModelSearch.py @@ -33,6 +33,8 @@ class RunwareAudioModelSearch: ], "MiniMax": [ "minimax:speech@2.8 (MiniMax Speech 2.8)", + "minimax:music@cover (MiniMax Music Cover)", + "minimax:music@2.6 (MiniMax Music 2.6)", ], "Inworld": [ "inworld:tts@1.5-mini (Inworld TTS-1.5 Mini)", diff --git a/modules/audioSettings.py b/modules/audioSettings.py index 53aba57..dacdd8d 100644 --- a/modules/audioSettings.py +++ b/modules/audioSettings.py @@ -1,6 +1,6 @@ """ Runware Audio Inference Settings Node -Provides lyrics, guidanceType, languageBoost, turbo, temperature, textNormalization, +Provides lyrics, lyricsOptimizer, instrumental, guidanceType, languageBoost, turbo, temperature, textNormalization, bpm, keyScale, timeSignature, vocalLanguage, coverConditioningScale, repaintingStart, repaintingEnd, xVectorOnly, maxNewTokens, transcript, and more for Runware Audio Inference. """ @@ -213,6 +213,26 @@ class RunwareAudioSettings: "default": "", "tooltip": "Transcript of the reference audio. Required for ICL mode; omit or leave empty for x-vector-only mode. Base variant only. Only used when 'Use Transcript' is enabled.", }), + "useInstrumental": ("BOOLEAN", { + "tooltip": "Enable to include instrumental in audio generation settings.", + "default": False, + }), + "instrumental": ("BOOLEAN", { + "tooltip": "When true, generates instrumental audio. For Music 2.6, this mode rejects settings.lyrics and settings.lyricsOptimizer, and positivePrompt becomes required.", + "default": False, + "label_on": "true", + "label_off": "false", + }), + "useLyricsOptimizer": ("BOOLEAN", { + "tooltip": "Enable to include lyricsOptimizer in audio generation settings.", + "default": False, + }), + "lyricsOptimizer": ("BOOLEAN", { + "tooltip": "Provider-side lyric generation from prompt when lyrics is empty/omitted. Supported for non-instrumental Music 2.6 requests only; rejected when instrumental=true.", + "default": False, + "label_on": "true", + "label_off": "false", + }), } } @@ -221,7 +241,7 @@ class RunwareAudioSettings: FUNCTION = "createSettings" CATEGORY = "Runware/Audio" DESCRIPTION = ( - "Configure audio generation settings (lyrics, guidanceType, languageBoost, turbo, temperature, textNormalization, " + "Configure audio generation settings (lyrics, lyricsOptimizer, instrumental, guidanceType, languageBoost, turbo, temperature, textNormalization, " "bpm, keyScale, timeSignature, vocalLanguage, coverConditioningScale, repaintingStart, repaintingEnd, " "xVectorOnly, maxNewTokens, transcript, etc.) for Runware Audio Inference. Connect to Runware Audio Inference node." ) @@ -238,6 +258,10 @@ class RunwareAudioSettings: include_prefix = kwargs.get("includePrefix", False) use_lyrics = kwargs.get("useLyrics", False) lyrics = kwargs.get("lyrics", "") + use_instrumental = kwargs.get("useInstrumental", False) + instrumental = kwargs.get("instrumental", False) + use_lyrics_optimizer = kwargs.get("useLyricsOptimizer", False) + lyrics_optimizer = kwargs.get("lyricsOptimizer", False) use_guidance_type = kwargs.get("useGuidanceType", False) guidance_type = kwargs.get("guidanceType", "apg") use_language_boost = kwargs.get("useLanguageBoost", False) @@ -280,6 +304,10 @@ class RunwareAudioSettings: if use_lyrics and lyrics and lyrics.strip(): settings["lyrics"] = lyrics.strip() + if use_instrumental: + settings["instrumental"] = bool(instrumental) + if use_lyrics_optimizer: + settings["lyricsOptimizer"] = bool(lyrics_optimizer) if use_guidance_type: settings["guidanceType"] = guidance_type diff --git a/workflows/Runware_Audio_Minimax_2_6.json b/workflows/Runware_Audio_Minimax_2_6.json new file mode 100644 index 0000000..f737fbf --- /dev/null +++ b/workflows/Runware_Audio_Minimax_2_6.json @@ -0,0 +1 @@ +{"id":"3c0efa3d-0197-4dc2-b441-c4af64be6963","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":3,"type":"SaveAudioMP3","pos":[1306.8406982421875,-289.0931091308594],"size":[270,136],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"AUDIO","link":1},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"quality","name":"quality","type":"COMBO","widget":{"name":"quality"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveAudioMP3"},"widgets_values":["audio/ComfyUI","V0"]},{"id":2,"type":"Runware Audio Model Search","pos":[-9.353578567504883,-254.04632568359375],"size":[270,130],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Provider","name":"Model Provider","type":"COMBO","widget":{"name":"Model Provider"},"link":null},{"localized_name":"AudioList","name":"AudioList","type":"COMBO","widget":{"name":"AudioList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"RUNWAREAUDIOMODEL","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"f2f8bdac42f25991e6a318484dc16ec3e94b06b7","Node name for S&R":"Runware Audio Model Search"},"widgets_values":["","MiniMax","minimax:music@2.6 (MiniMax Music 2.6)",false],"bgcolor":"#5345bf"},{"id":4,"type":"Runware Audio Inference Settings","pos":[836.126708984375,-253.1649932861328],"size":[400,1102],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"useTemperature","name":"useTemperature","shape":7,"type":"BOOLEAN","widget":{"name":"useTemperature"},"link":null},{"localized_name":"temperature","name":"temperature","shape":7,"type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"useAudioTemperature","name":"useAudioTemperature","shape":7,"type":"BOOLEAN","widget":{"name":"useAudioTemperature"},"link":null},{"localized_name":"audioTemperature","name":"audioTemperature","shape":7,"type":"FLOAT","widget":{"name":"audioTemperature"},"link":null},{"localized_name":"useTopK","name":"useTopK","shape":7,"type":"BOOLEAN","widget":{"name":"useTopK"},"link":null},{"localized_name":"topK","name":"topK","shape":7,"type":"INT","widget":{"name":"topK"},"link":null},{"localized_name":"useIncludePrefix","name":"useIncludePrefix","shape":7,"type":"BOOLEAN","widget":{"name":"useIncludePrefix"},"link":null},{"localized_name":"includePrefix","name":"includePrefix","shape":7,"type":"BOOLEAN","widget":{"name":"includePrefix"},"link":null},{"localized_name":"useLyrics","name":"useLyrics","shape":7,"type":"BOOLEAN","widget":{"name":"useLyrics"},"link":null},{"localized_name":"lyrics","name":"lyrics","shape":7,"type":"STRING","widget":{"name":"lyrics"},"link":null},{"localized_name":"useGuidanceType","name":"useGuidanceType","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceType"},"link":null},{"localized_name":"guidanceType","name":"guidanceType","shape":7,"type":"COMBO","widget":{"name":"guidanceType"},"link":null},{"localized_name":"useLanguageBoost","name":"useLanguageBoost","shape":7,"type":"BOOLEAN","widget":{"name":"useLanguageBoost"},"link":null},{"localized_name":"languageBoost","name":"languageBoost","shape":7,"type":"COMBO","widget":{"name":"languageBoost"},"link":null},{"localized_name":"useTurbo","name":"useTurbo","shape":7,"type":"BOOLEAN","widget":{"name":"useTurbo"},"link":null},{"localized_name":"turbo","name":"turbo","shape":7,"type":"BOOLEAN","widget":{"name":"turbo"},"link":null},{"localized_name":"useTextNormalization","name":"useTextNormalization","shape":7,"type":"BOOLEAN","widget":{"name":"useTextNormalization"},"link":null},{"localized_name":"textNormalization","name":"textNormalization","shape":7,"type":"BOOLEAN","widget":{"name":"textNormalization"},"link":null},{"localized_name":"useBpm","name":"useBpm","shape":7,"type":"BOOLEAN","widget":{"name":"useBpm"},"link":null},{"localized_name":"bpm","name":"bpm","shape":7,"type":"INT","widget":{"name":"bpm"},"link":null},{"localized_name":"useKeyScale","name":"useKeyScale","shape":7,"type":"BOOLEAN","widget":{"name":"useKeyScale"},"link":null},{"localized_name":"keyScale","name":"keyScale","shape":7,"type":"STRING","widget":{"name":"keyScale"},"link":null},{"localized_name":"useTimeSignature","name":"useTimeSignature","shape":7,"type":"BOOLEAN","widget":{"name":"useTimeSignature"},"link":null},{"localized_name":"timeSignature","name":"timeSignature","shape":7,"type":"INT","widget":{"name":"timeSignature"},"link":null},{"localized_name":"useVocalLanguage","name":"useVocalLanguage","shape":7,"type":"BOOLEAN","widget":{"name":"useVocalLanguage"},"link":null},{"localized_name":"vocalLanguage","name":"vocalLanguage","shape":7,"type":"COMBO","widget":{"name":"vocalLanguage"},"link":null},{"localized_name":"useCoverConditioningScale","name":"useCoverConditioningScale","shape":7,"type":"BOOLEAN","widget":{"name":"useCoverConditioningScale"},"link":null},{"localized_name":"coverConditioningScale","name":"coverConditioningScale","shape":7,"type":"FLOAT","widget":{"name":"coverConditioningScale"},"link":null},{"localized_name":"useRepaintingStart","name":"useRepaintingStart","shape":7,"type":"BOOLEAN","widget":{"name":"useRepaintingStart"},"link":null},{"localized_name":"repaintingStart","name":"repaintingStart","shape":7,"type":"FLOAT","widget":{"name":"repaintingStart"},"link":null},{"localized_name":"useRepaintingEnd","name":"useRepaintingEnd","shape":7,"type":"BOOLEAN","widget":{"name":"useRepaintingEnd"},"link":null},{"localized_name":"repaintingEnd","name":"repaintingEnd","shape":7,"type":"FLOAT","widget":{"name":"repaintingEnd"},"link":null},{"localized_name":"useXVectorOnly","name":"useXVectorOnly","shape":7,"type":"BOOLEAN","widget":{"name":"useXVectorOnly"},"link":null},{"localized_name":"xVectorOnly","name":"xVectorOnly","shape":7,"type":"BOOLEAN","widget":{"name":"xVectorOnly"},"link":null},{"localized_name":"useMaxNewTokens","name":"useMaxNewTokens","shape":7,"type":"BOOLEAN","widget":{"name":"useMaxNewTokens"},"link":null},{"localized_name":"maxNewTokens","name":"maxNewTokens","shape":7,"type":"INT","widget":{"name":"maxNewTokens"},"link":null},{"localized_name":"useTranscript","name":"useTranscript","shape":7,"type":"BOOLEAN","widget":{"name":"useTranscript"},"link":null},{"localized_name":"transcript","name":"transcript","shape":7,"type":"STRING","widget":{"name":"transcript"},"link":null},{"localized_name":"useInstrumental","name":"useInstrumental","shape":7,"type":"BOOLEAN","widget":{"name":"useInstrumental"},"link":null},{"localized_name":"instrumental","name":"instrumental","shape":7,"type":"BOOLEAN","widget":{"name":"instrumental"},"link":null},{"localized_name":"useLyricsOptimizer","name":"useLyricsOptimizer","shape":7,"type":"BOOLEAN","widget":{"name":"useLyricsOptimizer"},"link":null},{"localized_name":"lyricsOptimizer","name":"lyricsOptimizer","shape":7,"type":"BOOLEAN","widget":{"name":"lyricsOptimizer"},"link":null}],"outputs":[{"localized_name":"settings","name":"settings","type":"RUNWAREAUDIOSETTINGS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"f2f8bdac42f25991e6a318484dc16ec3e94b06b7","Node name for S&R":"Runware Audio Inference Settings"},"widgets_values":[false,0.6,false,0.8,false,50,false,false,true,"[verse]\\nCity lights are calling me tonight\\n[chorus]\\nWe are dancing through the neon sky",false,"apg",false,"auto",false,false,false,true,false,120,false,"",false,4,false,"en",false,1,false,0,false,0,false,false,false,4096,false,"",false,false,true,true],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Audio Inference","pos":[325.4075927734375,-304.8143615722656],"size":[400,746],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"RUNWAREAUDIOMODEL","link":3},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREAUDIOINFERENCEINPUTS","link":null},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWAREAUDIOSETTINGS","link":2},{"localized_name":"speech","name":"speech","shape":7,"type":"RUNWARESPEECH","link":null},{"localized_name":"voiceModify","name":"voiceModify","shape":7,"type":"RUNWAREVOICEMODIFY","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"usePositivePrompt","name":"usePositivePrompt","type":"BOOLEAN","widget":{"name":"usePositivePrompt"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useSampleRate","name":"useSampleRate","type":"BOOLEAN","widget":{"name":"useSampleRate"},"link":null},{"localized_name":"sampleRate","name":"sampleRate","type":"COMBO","widget":{"name":"sampleRate"},"link":null},{"localized_name":"useBitrate","name":"useBitrate","type":"BOOLEAN","widget":{"name":"useBitrate"},"link":null},{"localized_name":"bitrate","name":"bitrate","type":"COMBO","widget":{"name":"bitrate"},"link":null},{"localized_name":"useChannels","name":"useChannels","type":"BOOLEAN","widget":{"name":"useChannels"},"link":null},{"localized_name":"channels","name":"channels","type":"INT","widget":{"name":"channels"},"link":null},{"localized_name":"outputType","name":"outputType","type":"COMBO","widget":{"name":"outputType"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"numberResults","name":"numberResults","type":"INT","widget":{"name":"numberResults"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useStrength","name":"useStrength","type":"BOOLEAN","widget":{"name":"useStrength"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"CFGScale","name":"CFGScale","type":"FLOAT","widget":{"name":"CFGScale"},"link":null}],"outputs":[{"localized_name":"audio","name":"audio","type":"AUDIO","links":[1]},{"localized_name":"video","name":"video","type":"VIDEO","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"f2f8bdac42f25991e6a318484dc16ec3e94b06b7","Node name for S&R":"Runware Audio Inference"},"widgets_values":[true,"Upbeat modern pop song with bright synths, driving drums, and a catchy hook.","",false,10,true,44100,true,256,false,2,"URL","MP3",1,false,289909912,"randomize",false,20,false,0.8,false,12],"bgcolor":"#5345bf"}],"links":[[1,1,0,3,0,"AUDIO"],[2,4,0,1,2,"RUNWAREAUDIOSETTINGS"],[3,2,0,1,0,"RUNWAREAUDIOMODEL"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6057126191083312,"offset":[606.482248037058,478.5652390519004]}},"version":0.4} \ No newline at end of file