Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,16 @@
from .modules.frameImages import RunwareFrameImages
from .modules.providerSettings.pixverseProviderSettings import RunwarePixverseProviderSettings
from .modules.providerSettings.openaiProviderSettings import RunwareOpenAIProviderSettings
from .modules.providerSettings.bytedanceImageProviderSettings import RunwareBytedanceProviderSettings
from .modules.providerSettings.briaImageProviderSettings import RunwareBriaProviderSettings
from .modules.providerSettings.bytedanceProviderSettings import RunwareBytedanceProviderSettings
from .modules.providerSettings.briaProviderSettings import RunwareBriaProviderSettings
from .modules.providerSettings.briaProviderMask import RunwareBriaProviderMask
from .modules.audioInference import RunwareAudioInference
from .modules.audioInferenceSpeech import RunwareAudioInferenceSpeech
from .modules.audioModelSearch import RunwareAudioModelSearch
from .modules.audioSections import RunwareAudioSections
from .modules.audioInferenceInputs import audioInferenceInputs
from .modules.audioSettings import RunwareAudioSettings
from .modules.audioSettingsVoiceModify import RunwareAudioSettingsVoiceModify
from .modules.providerSettings.elevenlabsProviderSettings import RunwareElevenLabsProviderSettings
from .modules.providerSettings.elevenlabsProviderSettingsSections import RunwareElevenLabsProviderSettingsSections
from .modules.acceleratorOptions import acceleratorOptions
Expand Down Expand Up @@ -138,10 +140,12 @@
"Runware Bria Provider Settings": RunwareBriaProviderSettings,
"Runware Bria Provider Mask": RunwareBriaProviderMask,
"Runware Audio Inference": RunwareAudioInference,
"Runware Audio Inference Speech": RunwareAudioInferenceSpeech,
"Runware Audio Model Search": RunwareAudioModelSearch,
"Runware Audio Sections": RunwareAudioSections,
"Runware Audio Inference Inputs": audioInferenceInputs,
"Runware Audio Settings": RunwareAudioSettings,
"Runware Audio Inference Settings": RunwareAudioSettings,
"Runware Audio Inference Settings Voice Modify": RunwareAudioSettingsVoiceModify,
"Runware ElevenLabs Provider Settings": RunwareElevenLabsProviderSettings,
"Runware ElevenLabs Provider Settings Sections": RunwareElevenLabsProviderSettingsSections,
"Runware Accelerator Options": acceleratorOptions,
Expand Down
6 changes: 5 additions & 1 deletion clientlibs/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { app } from "../../scripts/app.js";
import { api } from "../../scripts/api.js";
import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler } from "./utils.js";
import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler } from "./utils.js";
import { RUNWARE_NODE_TYPES, RUNWARE_NODE_PROPS, SEARCH_TERMS } from "./types.js";

const nodeInitList = [];
Expand Down Expand Up @@ -78,6 +78,10 @@ app.registerExtension({
videoUpscalerToggleHandler(node);
} else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOINFERENCE) {
audioInferenceToggleHandler(node);
} else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOINFERENCESPEECH) {
audioInferenceSpeechToggleHandler(node);
} else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOSETTINGS) {
audioSettingsToggleHandler(node);
} else if(nodeClass === RUNWARE_NODE_TYPES.ACCELERATOROPTIONS) {
acceleratorOptionsToggleHandler(node);
} else if(nodeClass === RUNWARE_NODE_TYPES.BYTEDANCEPROVIDERSETTINGS) {
Expand Down
10 changes: 9 additions & 1 deletion clientlibs/types.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,12 @@ const RUNWARE_NODE_TYPES = {
VIDEOMODELSEARCH: "Runware Video Model Search",
FRAMEIMAGES: "Runware Frame Images",
AUDIOINFERENCE: "Runware Audio Inference",
AUDIOINFERENCESPEECH: "Runware Audio Inference Speech",
AUDIOMODELSEARCH: "Runware Audio Model Search",
AUDIOSECTIONS: "Runware Audio Sections",
AUDIOINFERENCEINPUTS: "Runware Audio Inference Inputs",
AUDIOSETTINGS: "Runware Audio Settings",
AUDIOSETTINGS: "Runware Audio Inference Settings",
AUDIOSETTINGSVOICEMODIFY: "Runware Audio Inference Settings Voice Modify",
PIXVERSEPROVIDERSETTINGS: "Runware Pixverse Provider Settings",
OPENAIPROVIDERSETTINGS: "Runware OpenAI Provider Settings",
BYTEDANCEPROVIDERSETTINGS: "Runware Bytedance Provider Settings",
Expand Down Expand Up @@ -270,6 +272,9 @@ const RUNWARE_NODE_PROPS = {
bgColor: DEFAULT_BGCOLOR,
promptEnhancer: true,
},
[RUNWARE_NODE_TYPES.AUDIOINFERENCESPEECH]: {
bgColor: DEFAULT_BGCOLOR,
},
[RUNWARE_NODE_TYPES.AUDIOMODELSEARCH]: {
bgColor: DEFAULT_BGCOLOR,
liveSearch: true,
Expand Down Expand Up @@ -444,6 +449,9 @@ const RUNWARE_NODE_PROPS = {
[RUNWARE_NODE_TYPES.AUDIOSETTINGS]: {
bgColor: DEFAULT_BGCOLOR,
},
[RUNWARE_NODE_TYPES.AUDIOSETTINGSVOICEMODIFY]: {
bgColor: DEFAULT_BGCOLOR,
},
[RUNWARE_NODE_TYPES.ACCELERATOROPTIONS]: {
bgColor: DEFAULT_BGCOLOR,
colorModeOnly: true,
Expand Down
112 changes: 112 additions & 0 deletions clientlibs/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -1046,6 +1046,8 @@ function audioInferenceToggleHandler(audioInferenceNode) {
const strengthWidget = audioInferenceNode.widgets.find(w => w.name === "strength");
const useCFGScaleWidget = audioInferenceNode.widgets.find(w => w.name === "useCFGScale");
const CFGScaleWidget = audioInferenceNode.widgets.find(w => w.name === "CFGScale");
const useChannelsWidget = audioInferenceNode.widgets.find(w => w.name === "useChannels");
const channelsWidget = audioInferenceNode.widgets.find(w => w.name === "channels");

// Helper function to toggle widget enabled state (exact same pattern)
function toggleWidgetState(useWidget, paramWidget, paramName) {
Expand Down Expand Up @@ -1120,6 +1122,81 @@ function audioInferenceToggleHandler(audioInferenceNode) {
if (useCFGScaleWidget && CFGScaleWidget) {
toggleWidgetState(useCFGScaleWidget, CFGScaleWidget, "CFGScale");
}

if (useChannelsWidget && channelsWidget) {
toggleWidgetState(useChannelsWidget, channelsWidget, "channels");
}
}

function audioSettingsToggleHandler(settingsNode) {
if (!settingsNode?.widgets) return;

const useLyricsWidget = settingsNode.widgets.find(w => w && w.name === "useLyrics");
const lyricsWidget = settingsNode.widgets.find(w => w && w.name === "lyrics");
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");
const languageBoostWidget = settingsNode.widgets.find(w => w && w.name === "languageBoost");
const useTurboWidget = settingsNode.widgets.find(w => w && w.name === "useTurbo");
const turboWidget = settingsNode.widgets.find(w => w && w.name === "turbo");

function toggleWidgetState(useWidget, paramWidget, paramName) {
if (!useWidget || !paramWidget) return;
function applyState() {
const enabled = useWidget.value === true;
toggleWidgetEnabled(paramWidget, enabled, settingsNode);
if (paramWidget.options && paramWidget.options.element) {
paramWidget.options.element.disabled = !enabled;
paramWidget.options.element.style.opacity = enabled ? "1" : "0.5";
paramWidget.options.element.style.pointerEvents = enabled ? "auto" : "none";
}
settingsNode.setDirtyCanvas(true);
}
setTimeout(applyState, 100);
appendWidgetCB(useWidget, () => setTimeout(applyState, 50));
}

if (useLyricsWidget && lyricsWidget) toggleWidgetState(useLyricsWidget, lyricsWidget, "lyrics");
if (useGuidanceTypeWidget && guidanceTypeWidget) toggleWidgetState(useGuidanceTypeWidget, guidanceTypeWidget, "guidanceType");
if (useLanguageBoostWidget && languageBoostWidget) toggleWidgetState(useLanguageBoostWidget, languageBoostWidget, "languageBoost");
if (useTurboWidget && turboWidget) toggleWidgetState(useTurboWidget, turboWidget, "turbo");
}

function audioInferenceSpeechToggleHandler(speechNode) {
if (!speechNode?.widgets) return;

const useSpeedWidget = speechNode.widgets.find(w => w && w.name === "useSpeed");
const speedWidget = speechNode.widgets.find(w => w && w.name === "speed");
const useVolumeWidget = speechNode.widgets.find(w => w && w.name === "useVolume");
const volumeWidget = speechNode.widgets.find(w => w && w.name === "volume");
const usePitchWidget = speechNode.widgets.find(w => w && w.name === "usePitch");
const pitchWidget = speechNode.widgets.find(w => w && w.name === "pitch");
const useEmotionWidget = speechNode.widgets.find(w => w && w.name === "useEmotion");
const emotionWidget = speechNode.widgets.find(w => w && w.name === "emotion");
const useToneWidget = speechNode.widgets.find(w => w && w.name === "useTone");
const toneWidget = speechNode.widgets.find(w => w && w.name === "tone");

function toggleWidgetState(useWidget, paramWidget, paramName) {
if (!useWidget || !paramWidget) return;
function applyState() {
const enabled = useWidget.value === true;
toggleWidgetEnabled(paramWidget, enabled, speechNode);
if (paramWidget.options && paramWidget.options.element) {
paramWidget.options.element.disabled = !enabled;
paramWidget.options.element.style.opacity = enabled ? "1" : "0.5";
paramWidget.options.element.style.pointerEvents = enabled ? "auto" : "none";
}
speechNode.setDirtyCanvas(true);
}
setTimeout(applyState, 100);
appendWidgetCB(useWidget, () => setTimeout(applyState, 50));
}

if (useSpeedWidget && speedWidget) toggleWidgetState(useSpeedWidget, speedWidget, "speed");
if (useVolumeWidget && volumeWidget) toggleWidgetState(useVolumeWidget, volumeWidget, "volume");
if (usePitchWidget && pitchWidget) toggleWidgetState(usePitchWidget, pitchWidget, "pitch");
if (useEmotionWidget && emotionWidget) toggleWidgetState(useEmotionWidget, emotionWidget, "emotion");
if (useToneWidget && toneWidget) toggleWidgetState(useToneWidget, toneWidget, "tone");
}

function acceleratorOptionsToggleHandler(acceleratorNode) {
Expand Down Expand Up @@ -2608,6 +2685,9 @@ function audioModelSearchFilterHandler(audioModelSearchNode) {
"Ace": [
"runware:ace-step@0 (ACE Step v1 3.5B)",
],
"MiniMax": [
"minimax:speech@2.8 (MiniMax Speech 2.8)",
],
};

function filterModelList() {
Expand Down Expand Up @@ -3045,6 +3125,16 @@ function briaProviderSettingsToggleHandler(briaNode) {
const autoTrimWidget = briaNode.widgets.find(w => w.name === "autoTrim");
const usePreserveAudioWidget = briaNode.widgets.find(w => w.name === "usePreserveAudio");
const preserveAudioWidget = briaNode.widgets.find(w => w.name === "preserveAudio");
const useSeasonWidget = briaNode.widgets.find(w => w.name === "useSeason");
const seasonWidget = briaNode.widgets.find(w => w.name === "season");
const useEditWidget = briaNode.widgets.find(w => w.name === "useEdit");
const editWidget = briaNode.widgets.find(w => w.name === "edit");
const useColorWidget = briaNode.widgets.find(w => w.name === "useColor");
const colorWidget = briaNode.widgets.find(w => w.name === "color");
const useLightDirectionWidget = briaNode.widgets.find(w => w.name === "useLightDirection");
const lightDirectionWidget = briaNode.widgets.find(w => w.name === "lightDirection");
const useLightTypeWidget = briaNode.widgets.find(w => w.name === "useLightType");
const lightTypeWidget = briaNode.widgets.find(w => w.name === "lightType");

// Helper function to toggle widget enabled state (exact same pattern)
function toggleWidgetState(useWidget, paramWidget, paramName) {
Expand Down Expand Up @@ -3156,6 +3246,26 @@ function briaProviderSettingsToggleHandler(briaNode) {
if (usePreserveAudioWidget && preserveAudioWidget) {
toggleWidgetState(usePreserveAudioWidget, preserveAudioWidget, "preserveAudio");
}

if (useSeasonWidget && seasonWidget) {
toggleWidgetState(useSeasonWidget, seasonWidget, "season");
}

if (useEditWidget && editWidget) {
toggleWidgetState(useEditWidget, editWidget, "edit");
}

if (useColorWidget && colorWidget) {
toggleWidgetState(useColorWidget, colorWidget, "color");
}

if (useLightDirectionWidget && lightDirectionWidget) {
toggleWidgetState(useLightDirectionWidget, lightDirectionWidget, "lightDirection");
}

if (useLightTypeWidget && lightTypeWidget) {
toggleWidgetState(useLightTypeWidget, lightTypeWidget, "lightType");
}
}

function audioInputToggleHandler(audioInputNode) {
Expand Down Expand Up @@ -3677,6 +3787,8 @@ export {
upscalerToggleHandler,
videoUpscalerToggleHandler,
audioInferenceToggleHandler,
audioInferenceSpeechToggleHandler,
audioSettingsToggleHandler,
acceleratorOptionsToggleHandler,
bytedanceProviderSettingsToggleHandler,
xaiProviderSettingsToggleHandler,
Expand Down
Loading