├── .gitignore
├── AHK
└── voicepeak1.2.1.ahk
├── LICENSE
├── Preset
├── Background
│ └── 透明.setting
├── ImageTab(square)
│ ├── 1024x1024.setting
│ ├── 2048x2048.setting
│ ├── 4096x4096.setting
│ ├── 8192x8192.setting
│ └── UseFrameFormatSettings_ON.setting
├── ImageTab
│ ├── 1280x720.setting
│ ├── 1980x1080.setting
│ ├── 3840x2160.setting
│ ├── 7680x4320.setting
│ ├── UseFrameFormatSettings_ON.setting
│ └── 色深度_int8.setting
└── TextPlus
│ ├── Filter
│ ├── テキスト.txt
│ ├── テキスト_サイズ.txt
│ ├── テキスト_フォント.txt
│ └── テキスト_フォント_サイズ.txt
│ ├── 字幕_白.setting
│ ├── 字幕_白_紫.setting
│ ├── 字幕_白_緑.setting
│ ├── 字幕_白_赤.setting
│ └── 字幕_白_赤紫.setting
├── README.md
├── Scripts
├── Comp
│ ├── PathMapper.lua
│ ├── PrintNames.lua
│ ├── Prototype
│ │ └── Import(PsdSplitter)_NO_EXP.py3
│ └── Refresh.lua
└── Edit
│ └── Marker2Chapter.lua
├── Templates
├── Edit
│ └── Generators
│ │ ├── WhiteCUL.setting
│ │ ├── old
│ │ ├── SampleRig.setting
│ │ ├── ずんだもん(FUSE).setting
│ │ ├── ずんだもん(FUSE_Open).setting
│ │ ├── ずんだもん.setting
│ │ ├── ちびめたん(FUSE).setting
│ │ ├── ちびめたん(FUSE_Open).setting
│ │ ├── ちびめたん.setting
│ │ ├── 東北ずん子(FUSE_Open).setting
│ │ ├── 東北ずん子.setting
│ │ ├── 琴葉茜(FUSE).setting
│ │ ├── 琴葉茜(FUSE_Open).setting
│ │ ├── 琴葉茜.setting
│ │ ├── 琴葉葵(FUSE).setting
│ │ ├── 琴葉葵(FUSE_Open).setting
│ │ └── 琴葉葵.setting
│ │ ├── ずんだもん(Open).setting
│ │ ├── ずんだもん.setting
│ │ ├── ちびめたん.setting
│ │ ├── まりさ.setting
│ │ ├── れいむ.setting
│ │ ├── 中国うさぎ.setting
│ │ ├── 九州そら.setting
│ │ ├── 四国めたん.setting
│ │ ├── 春日部つむぎ.setting
│ │ ├── 東北ずん子(Open).setting
│ │ ├── 枠線を引く.setting
│ │ ├── 琴葉茜.setting
│ │ ├── 琴葉葵.setting
│ │ ├── 矢印.setting
│ │ ├── 立ち絵書き出し元ファイル
│ │ ├── WhiteCUL.comp
│ │ ├── WhiteCUL.json
│ │ ├── ずんだもん(Open).comp
│ │ ├── ずんだもん(Open).json
│ │ ├── ずんだもん.comp
│ │ ├── ずんだもん.json
│ │ ├── ちびめたん.comp
│ │ ├── ちびめたん.json
│ │ ├── まりさ.comp
│ │ ├── まりさ.json
│ │ ├── れいむ.comp
│ │ ├── れいむ.json
│ │ ├── 中国うさぎ.comp
│ │ ├── 中国うさぎ.json
│ │ ├── 九州そら.comp
│ │ ├── 九州そら.json
│ │ ├── 四国めたん.comp
│ │ ├── 四国めたん.json
│ │ ├── 春日部つむぎ.comp
│ │ ├── 春日部つむぎ.json
│ │ ├── 東北ずん子(Open).comp
│ │ ├── 東北ずん子(Open).json
│ │ ├── 琴葉茜.comp
│ │ ├── 琴葉茜.json
│ │ ├── 琴葉葵.comp
│ │ ├── 琴葉葵.json
│ │ ├── 雨晴はう.comp
│ │ └── 雨晴はう.json
│ │ ├── 設定等
│ │ ├── ポーズ以外の設定(Open).json
│ │ ├── ポーズ以外の設定.json
│ │ └── 立ち絵素材ダウンロード先.txt
│ │ └── 雨晴はう.setting
└── blender
│ └── RS_Shatter
│ ├── ShatterA.blend
│ ├── ShatterA_bake.blend
│ ├── ShatterB.blend
│ ├── ShatterB_bake.blend
│ ├── base.abc
│ └── base.blend
├── app
├── fusion
│ ├── UserPath
│ │ ├── Fuses
│ │ │ ├── NKN_FXAA.fuse
│ │ │ ├── NKN_Posterise.fuse
│ │ │ ├── RS_GlobalStart.fuse
│ │ │ ├── RS_MouthAIUEO.fuse
│ │ │ ├── RS_MouthOpen.fuse
│ │ │ └── RS_Null.fuse
│ │ ├── Modules
│ │ │ └── Lua
│ │ │ │ └── rs.lua
│ │ ├── Scripts
│ │ │ ├── Comp
│ │ │ │ └── RS
│ │ │ │ │ ├── Comp_Utility.py3
│ │ │ │ │ ├── Import
│ │ │ │ │ ├── CHARA_SOZAI.py3
│ │ │ │ │ └── PsdSplitter.py3
│ │ │ │ │ ├── MakeMacro.py3
│ │ │ │ │ ├── PathMapper.py3
│ │ │ │ │ ├── Tatie.py3
│ │ │ │ │ ├── Text
│ │ │ │ │ ├── Separate.py3
│ │ │ │ │ └── SeparateIntoWords.py3
│ │ │ │ │ └── Utility
│ │ │ │ │ └── SetMotionBlur.lua
│ │ │ └── Edit
│ │ │ │ └── RS
│ │ │ │ ├── CopyTextplus.py3
│ │ │ │ ├── Playhead.py3
│ │ │ │ ├── Subtitle2TextPlus.py3
│ │ │ │ ├── Subtitle2TextPlusTypeB.py3
│ │ │ │ ├── TatieAnim.py3
│ │ │ │ ├── TextPlus2SRT.py3
│ │ │ │ ├── VoiceBin_Assistant.py3
│ │ │ │ ├── VoiceDropper.py3
│ │ │ │ └── YoutubeChapter.py3
│ │ └── Templates
│ │ │ ├── Edit
│ │ │ ├── Effects
│ │ │ │ ├── RS_Fusion
│ │ │ │ │ ├── Blur
│ │ │ │ │ │ ├── Blur.setting
│ │ │ │ │ │ ├── Defocus.setting
│ │ │ │ │ │ ├── DirectionalBlur.setting
│ │ │ │ │ │ ├── Glow.setting
│ │ │ │ │ │ ├── Sharpen.setting
│ │ │ │ │ │ ├── SoftGlow.setting
│ │ │ │ │ │ ├── UnsharpMask.setting
│ │ │ │ │ │ └── VariBlur.setting
│ │ │ │ │ ├── Color
│ │ │ │ │ │ ├── AutoGain.setting
│ │ │ │ │ │ ├── BrightnessContrast.setting
│ │ │ │ │ │ ├── ColorCorrector.setting
│ │ │ │ │ │ ├── ColorCurves.setting
│ │ │ │ │ │ ├── ColorGain.setting
│ │ │ │ │ │ ├── HueCurves.setting
│ │ │ │ │ │ └── WhiteBalance.setting
│ │ │ │ │ ├── Effect
│ │ │ │ │ │ ├── Duplicate.setting
│ │ │ │ │ │ ├── Highlight.setting
│ │ │ │ │ │ ├── HotSpot.setting
│ │ │ │ │ │ ├── PseudoColor.setting
│ │ │ │ │ │ ├── Rays.setting
│ │ │ │ │ │ ├── Shadow.setting
│ │ │ │ │ │ ├── TV.setting
│ │ │ │ │ │ └── Trails.setting
│ │ │ │ │ ├── Transform
│ │ │ │ │ │ ├── DVE.setting
│ │ │ │ │ │ └── Transform.setting
│ │ │ │ │ └── Warp
│ │ │ │ │ │ ├── CoordinateSpace.setting
│ │ │ │ │ │ ├── CornerPositioner.setting
│ │ │ │ │ │ ├── Dent.setting
│ │ │ │ │ │ ├── Drip.setting
│ │ │ │ │ │ ├── GridWarp.setting
│ │ │ │ │ │ ├── LensDistort.setting
│ │ │ │ │ │ ├── PerspectivePositioner.setting
│ │ │ │ │ │ └── Vortex.setting
│ │ │ │ └── りぞりぷと(RIZORIPUTO)
│ │ │ │ │ ├── スタイル(Style)
│ │ │ │ │ ├── RS_CutoutText.setting
│ │ │ │ │ ├── RS_Glitch.setting
│ │ │ │ │ ├── RS_GradientMap.setting
│ │ │ │ │ ├── RS_KomaUchi.setting
│ │ │ │ │ ├── RS_Outline.setting
│ │ │ │ │ ├── RS_Shatter.setting
│ │ │ │ │ ├── RS_Ugo.setting
│ │ │ │ │ └── RS_Zoom.setting
│ │ │ │ │ ├── モーション(Motion)
│ │ │ │ │ ├── RS_Bound.setting
│ │ │ │ │ ├── RS_FrameIn(Down).setting
│ │ │ │ │ ├── RS_FrameIn(ToLeft).setting
│ │ │ │ │ ├── RS_FrameIn(ToRight).setting
│ │ │ │ │ ├── RS_FrameIn(Up).setting
│ │ │ │ │ ├── RS_Poyo.setting
│ │ │ │ │ ├── RS_Pyon.setting
│ │ │ │ │ ├── RS_Shake.setting
│ │ │ │ │ └── RS_Sin.setting
│ │ │ │ │ ├── ユーティリティ(Utility)
│ │ │ │ │ └── RS_FixAlpha.setting
│ │ │ │ │ └── ライト(Light)
│ │ │ │ │ ├── RS_EdgeRays.setting
│ │ │ │ │ ├── RS_FakeLightWrap.setting
│ │ │ │ │ └── RS_LightSweep.setting
│ │ │ ├── Generators
│ │ │ │ ├── RS_Fusion
│ │ │ │ │ ├── Background.setting
│ │ │ │ │ ├── DaySky.setting
│ │ │ │ │ ├── FastNoise.setting
│ │ │ │ │ ├── Mandelbrot.setting
│ │ │ │ │ └── Plasma.setting
│ │ │ │ └── りぞりぷと(RIZORIPUTO)
│ │ │ │ │ ├── N角形(NGon).setting
│ │ │ │ │ ├── 円形(Ellipse).setting
│ │ │ │ │ ├── 星形(Star).setting
│ │ │ │ │ ├── 枠線(BorderOfRect).setting
│ │ │ │ │ ├── 流背(RyuHai).setting
│ │ │ │ │ ├── 炎(Flame).setting
│ │ │ │ │ ├── 矢印(Arrow).setting
│ │ │ │ │ ├── 矩形(Rectangle).setting
│ │ │ │ │ └── 集中線(ConcentrationLine).setting
│ │ │ └── Titles
│ │ │ │ └── りぞりぷと(RIZORIPUTO)
│ │ │ │ ├── RS_ASCIIArt.setting
│ │ │ │ └── RS_TextPlus.setting
│ │ │ ├── Fusion
│ │ │ ├── りぞりぷと(RIZORIPUTO)
│ │ │ │ ├── AutoDomain.setting
│ │ │ │ ├── BG
│ │ │ │ │ ├── HorizontalStripe.setting
│ │ │ │ │ └── VerticalStripe.setting
│ │ │ │ ├── Flatten.setting
│ │ │ │ ├── ImagePlane用3dScene.setting
│ │ │ │ ├── LightWrap.setting
│ │ │ │ ├── 目パチ_口パク(Open)機構.setting
│ │ │ │ ├── 目パチ_口パク機構.setting
│ │ │ │ ├── 立ち絵用小窓.setting
│ │ │ │ └── 立ち絵終端.setting
│ │ │ └── りぞりぷとOLD
│ │ │ │ ├── Old
│ │ │ │ └── ヌル(AutoDomainを使ってください).setting
│ │ │ │ ├── キャッシュV2.setting
│ │ │ │ ├── 口パク(FUSE).setting
│ │ │ │ ├── 口パク(FUSE_Open).setting
│ │ │ │ ├── 口パク.setting
│ │ │ │ ├── 目パチ.setting
│ │ │ │ └── 立ち絵終端.setting
│ │ │ └── abc
│ │ │ └── RS_Shatter
│ │ │ ├── ShatterA.abc
│ │ │ └── ShatterB.abc
│ └── python
│ │ ├── __init__.py
│ │ └── rs_fusion
│ │ ├── __init__.py
│ │ ├── core
│ │ ├── __init__.py
│ │ ├── bake.py
│ │ ├── chara_sozai.py
│ │ ├── eye_blink.py
│ │ ├── operator.py
│ │ └── pose.py
│ │ └── tool
│ │ ├── __init__.py
│ │ ├── add_button
│ │ ├── __init__.py
│ │ ├── add_button.py
│ │ ├── add_button.ui
│ │ └── add_button_ui.py
│ │ ├── bake_tool
│ │ ├── __init__.py
│ │ ├── bake_tool.py
│ │ ├── bake_tool.ui
│ │ └── bake_tool_ui.py
│ │ ├── bg_tool
│ │ ├── __init__.py
│ │ ├── bg_tool.py
│ │ ├── bg_tool.ui
│ │ └── bg_tool_ui.py
│ │ ├── center_tool
│ │ ├── __init__.py
│ │ ├── center_tool.py
│ │ ├── center_tool.ui
│ │ └── center_tool_ui.py
│ │ ├── chara_converter
│ │ ├── __init__.py
│ │ ├── chara_converter.py
│ │ ├── chara_converter.ui
│ │ ├── chara_converter_ui.py
│ │ └── chara_sozai.py
│ │ ├── color_tool
│ │ ├── __init__.py
│ │ ├── color_table.py
│ │ ├── color_tool.py
│ │ ├── color_tool.ui
│ │ └── color_tool_ui.py
│ │ ├── comp_utility
│ │ ├── __init__.py
│ │ ├── comp_utility.py
│ │ ├── comp_utility.ui
│ │ └── comp_utility_ui.py
│ │ ├── copy_tool
│ │ ├── __init__.py
│ │ ├── copy_tool.py
│ │ ├── copy_tool.ui
│ │ └── copy_tool_ui.py
│ │ ├── font_tool
│ │ ├── __init__.py
│ │ ├── favorites_font.py
│ │ ├── favorites_font.ui
│ │ ├── favorites_font_ui.py
│ │ ├── font_tool.py
│ │ ├── font_tool.ui
│ │ └── font_tool_ui.py
│ │ ├── importer
│ │ ├── __init__.py
│ │ ├── importer.py
│ │ ├── importer.ui
│ │ └── importer_ui.py
│ │ ├── insert_tool
│ │ ├── __init__.py
│ │ ├── insert_tool.py
│ │ ├── insert_tool.ui
│ │ └── insert_tool_ui.py
│ │ ├── make_macro
│ │ ├── __init__.py
│ │ ├── macro.py
│ │ ├── macro_table.py
│ │ ├── make_macro.py
│ │ ├── make_macro.ui
│ │ └── make_macro_ui.py
│ │ ├── nudge_tool
│ │ ├── __init__.py
│ │ ├── nudge_tool.py
│ │ ├── nudge_tool.ui
│ │ └── nudge_tool_ui.py
│ │ ├── number_tool
│ │ ├── __init__.py
│ │ ├── number_tool.py
│ │ ├── number_tool.ui
│ │ └── number_tool_ui.py
│ │ ├── paste_tool
│ │ ├── __init__.py
│ │ ├── node_window.py
│ │ ├── node_window.ui
│ │ ├── node_window_ui.py
│ │ ├── paste_tool.py
│ │ ├── paste_tool.ui
│ │ └── paste_tool_ui.py
│ │ ├── path_mapper
│ │ ├── __init__.py
│ │ ├── path_mapper.py
│ │ ├── path_mapper.ui
│ │ └── path_mapper_ui.py
│ │ ├── pivot_tool
│ │ ├── __init__.py
│ │ ├── pivot_tool.py
│ │ ├── pivot_tool.ui
│ │ └── pivot_tool_ui.py
│ │ ├── set_number
│ │ └── __init__.py
│ │ └── tatie
│ │ ├── __init__.py
│ │ ├── tatie.py
│ │ ├── tatie.ui
│ │ └── tatie_ui.py
└── resolve
│ └── python
│ ├── __init__.py
│ └── rs_resolve
│ ├── __init__.py
│ ├── core
│ ├── __init__.py
│ └── shortcut.py
│ ├── gui
│ ├── __init__.py
│ └── shortcut
│ │ ├── __init__.py
│ │ ├── shortcut.ui
│ │ ├── shortcut_ui.py
│ │ └── shortcut_window.py
│ └── tool
│ ├── __init__.py
│ ├── copy_text_plus
│ ├── __init__.py
│ ├── copy_text_plus.py
│ ├── copy_text_plus.ui
│ └── copy_text_plus_ui.py
│ ├── playhead
│ ├── __init__.py
│ ├── playhead.py
│ ├── playhead.ui
│ └── playhead_ui.py
│ ├── subtitle2textPlus_typeB
│ ├── __init__.py
│ ├── subtitle2textPlus_typeB.py
│ ├── subtitle2textPlus_typeB.ui
│ └── subtitle2textPlus_typeB_ui.py
│ ├── subtitle2text_plus
│ ├── __init__.py
│ ├── subtitle2text_plus.py
│ ├── subtitle2text_plus.ui
│ └── subtitle2text_plus_ui.py
│ ├── tatie_anim
│ ├── __init__.py
│ ├── tatie_anim.py
│ ├── tatie_anim.ui
│ └── tatie_anim_ui.py
│ ├── text_plus2srt
│ ├── __init__.py
│ ├── text_plus2srt.py
│ ├── text_plus2srt.ui
│ └── text_plus2srt_ui.py
│ ├── voice_bin_assistant
│ ├── __init__.py
│ ├── voice_bin_assistant.py
│ ├── voice_bin_assistant.ui
│ └── voice_bin_assistant_ui.py
│ ├── voice_dropper
│ ├── __init__.py
│ ├── lip_sync_window.py
│ ├── lip_sync_window.ui
│ ├── lip_sync_window_ui.py
│ ├── voice_dropper.py
│ ├── voice_dropper.ui
│ └── voice_dropper_ui.py
│ └── youtube_chapter
│ ├── __init__.py
│ ├── youtube_chapter.py
│ ├── youtube_chapter.ui
│ └── youtube_chapter_ui.py
├── bin
├── aquestalk_wrapper.py
├── assistant_seika2wave.py
├── characters.py
├── disk_cache.py
├── install_script.py
├── launcher.py
├── macro2group.py
├── psd_splitter.py
├── resolve_launcher.py
├── run_fusion.py
├── run_resolve.py
├── script_launcher.py
├── softalk2wave.py
├── voice_bin.py
├── voice_sync.py
├── voicevox_sequencer.py
└── vtt2anim.py
├── data
├── app
│ ├── DiskCache
│ │ └── script_base.txt
│ ├── Fusion.json
│ ├── Resolve.json
│ ├── ResolveLauncher
│ │ └── set_pathmap.lua
│ ├── ScriptLauncher
│ │ └── script_base.txt
│ ├── VoiceBin
│ │ ├── chara.json
│ │ ├── tatie_script_base.lua
│ │ ├── tatie_setting_base.txt
│ │ └── text_script_base.lua
│ ├── VoiceDropper
│ │ ├── __RS_TextPlus_FPS__.drb
│ │ ├── setting_aiueo_mm.txt
│ │ └── setting_base.txt
│ ├── env.json
│ ├── launcher.json
│ └── launcher_menu.json
├── image
│ ├── empty.png
│ └── icon
│ │ ├── dad.svg
│ │ ├── notes
│ │ ├── 120.png
│ │ ├── 1440.png
│ │ ├── 180.png
│ │ ├── 1920.png
│ │ ├── 240.png
│ │ ├── 2880.png
│ │ ├── 30.png
│ │ ├── 360.png
│ │ ├── 45.png
│ │ ├── 480.png
│ │ ├── 60.png
│ │ ├── 720.png
│ │ ├── 90.png
│ │ ├── 960.png
│ │ ├── empty.png
│ │ ├── notes.psd
│ │ ├── question.png
│ │ ├── r120.png
│ │ ├── r1440.png
│ │ ├── r180.png
│ │ ├── r1920.png
│ │ ├── r240.png
│ │ ├── r2880.png
│ │ ├── r360.png
│ │ ├── r480.png
│ │ ├── r60.png
│ │ ├── r720.png
│ │ ├── r90.png
│ │ └── r960.png
│ │ └── pivot
│ │ ├── center.svg
│ │ ├── e.svg
│ │ ├── n.svg
│ │ ├── ne.svg
│ │ ├── nw.svg
│ │ ├── s.svg
│ │ ├── se.svg
│ │ ├── sw.svg
│ │ └── w.svg
├── lua
│ ├── add_button.lua
│ └── copy_anim.lua
└── template
│ ├── AssistantSeika2wave
│ ├── VOICEVOX_ずんだもん_ノーマル.json
│ ├── VOICEVOX_四国めたん_ノーマル.json
│ ├── VOICEVOX_春日部つむぎ_ノーマル.json
│ ├── VOICEVOX_波音リツ_ノーマル.json
│ ├── VOICEVOX_雨晴はう_ノーマル.json
│ ├── 棒読みちゃん_女性1.json
│ ├── 棒読みちゃん_女性2.json
│ ├── 棒読みちゃん_男性1.json
│ └── 棒読みちゃん_男性2.json
│ ├── Chara2Resolve
│ ├── ゆっくり霊夢改.json
│ └── 新れいむ.json
│ └── softalk2wave
│ ├── 女性01.json
│ └── 女性02.json
├── for_linux
├── Fusion.sh
├── Resolve.sh
├── setup_python.sh
└── りぞりぷと.sh
├── for_mac
├── Fusion.command
├── Preset
│ └── TextPlus
│ │ ├── 字幕_白.setting
│ │ ├── 字幕_白_紫.setting
│ │ ├── 字幕_白_緑.setting
│ │ ├── 字幕_白_赤.setting
│ │ └── 字幕_白_赤紫.setting
├── Resolve.command
├── app
│ └── fusion
│ │ └── UserPath
│ │ └── Templates
│ │ └── Edit
│ │ └── Titles
│ │ └── りぞりぷと(RIZORIPUTO)
│ │ └── RS_TextPlus.setting
├── requirements.txt
├── setup_python.command
└── りぞりぷと.command
├── library
└── python
│ └── rs
│ ├── __init__.py
│ ├── core
│ ├── __init__.py
│ ├── anim.py
│ ├── app
│ │ ├── __init__.py
│ │ ├── app.py
│ │ ├── fusion.py
│ │ └── resolve.py
│ ├── chara_data.py
│ ├── colormind.py
│ ├── config.py
│ ├── env.py
│ ├── fcp.py
│ ├── lab.py
│ ├── lab_romaji.py
│ ├── lang.py
│ ├── note.py
│ ├── pipe.py
│ ├── read_aloud
│ │ ├── __init__.py
│ │ ├── cmd.py
│ │ ├── seika_say2.py
│ │ └── softalk.py
│ ├── srt.py
│ ├── txt.py
│ ├── ust.py
│ ├── util.py
│ ├── voice_bin_process.py
│ └── voicevox
│ │ ├── __init__.py
│ │ ├── api.py
│ │ ├── data.py
│ │ └── mora_list.py
│ ├── gui
│ ├── __init__.py
│ ├── appearance.py
│ ├── chara
│ │ ├── __init__.py
│ │ ├── chara.py
│ │ ├── chara.ui
│ │ └── chara_ui.py
│ ├── frame_layout
│ │ ├── __init__.py
│ │ ├── frame_layout.py
│ │ ├── frame_layout.ui
│ │ └── frame_layout_ui.py
│ ├── lang
│ │ ├── __init__.py
│ │ ├── lang.py
│ │ ├── lang.ui
│ │ └── lang_ui.py
│ ├── log.py
│ ├── script_button.py
│ └── table
│ │ ├── __init__.py
│ │ ├── model.py
│ │ └── view.py
│ └── tool
│ ├── __init__.py
│ ├── aquestalk_wrapper
│ ├── __init__.py
│ ├── aquestalk.py
│ ├── aquestalk_wrapper.py
│ ├── aquestalk_wrapper.ui
│ └── aquestalk_wrapper_ui.py
│ ├── characters
│ ├── __init__.py
│ ├── characters.py
│ ├── characters.ui
│ └── characters_ui.py
│ ├── disk_cache
│ ├── __init__.py
│ ├── disk_cache.py
│ ├── disk_cache.ui
│ ├── disk_cache_ui.py
│ └── drag_button.py
│ ├── launcher.py
│ ├── macro2group
│ ├── __init__.py
│ ├── macro2group.py
│ ├── macro2group.ui
│ └── macro2group_ui.py
│ ├── psd_splitter
│ ├── __init__.py
│ ├── psd_spliter.ui
│ ├── psd_spliter_ui.py
│ └── psd_splitter.py
│ ├── resolve_launcher
│ ├── __init__.py
│ ├── drag_button.py
│ ├── resolve_launcher.py
│ ├── resolve_launcher.ui
│ └── resolve_launcher_ui.py
│ ├── script_launcher
│ ├── __init__.py
│ ├── preset_form
│ │ ├── __init__.py
│ │ ├── drag_button.py
│ │ ├── filter.ui
│ │ ├── filter_ui.py
│ │ ├── preset_form.py
│ │ ├── preset_form.ui
│ │ └── preset_form_ui.py
│ └── script_launcher.py
│ ├── text2wave
│ ├── __init__.py
│ ├── assistant_seika2wave
│ │ ├── __init__.py
│ │ ├── assistant_seika2wave.py
│ │ ├── seika_say2.ui
│ │ └── seika_say2_ui.py
│ ├── base
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── base.ui
│ │ └── base_ui.py
│ └── softalk2wave
│ │ ├── __init__.py
│ │ ├── softalk.ui
│ │ ├── softalk2wave.py
│ │ └── softalk_ui.py
│ ├── voice_bin
│ ├── __init__.py
│ ├── drag_button.py
│ ├── voice_bin.py
│ ├── voice_bin.ui
│ └── voice_bin_ui.py
│ ├── voice_sync
│ ├── __init__.py
│ ├── check_timing.py
│ ├── check_timing.ui
│ ├── check_timing_ui.py
│ ├── voice_sync.py
│ ├── voice_sync.ui
│ ├── voice_sync_ui.py
│ └── wav_table.py
│ ├── voicevox_sequencer
│ ├── __init__.py
│ ├── lyrics.py
│ ├── lyrics.ui
│ ├── lyrics_ui.py
│ ├── seq.py
│ ├── voicevox_sequencer.py
│ ├── voicevox_sequencer.ui
│ └── voicevox_sequencer_ui.py
│ └── vtt2anim
│ ├── __init__.py
│ ├── vtt2anim.py
│ ├── vtt2anim.ui
│ └── vtt2anim_ui.py
└── requirements.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 | .idea/
132 |
133 | /bin/python-3.6.8/
134 | /bin/python-3.10.11/
135 | /config/
136 |
--------------------------------------------------------------------------------
/AHK/voicepeak1.2.1.ahk:
--------------------------------------------------------------------------------
1 | #Requires AutoHotkey v2.0
2 | #HotIf WinActive("ahk_exe voicepeak.exe")
3 |
4 | ; Ctrl-Space ブロック再生
5 | ^Space::{
6 | SetKeyDelay 75, 25
7 | SendEvent '^{a}{Tab}{Space}+{Tab}'
8 | }
9 |
10 | ; Ctrl-Click 字幕コピー ブロック音声出力
11 | ^LButton::{
12 | Click
13 | Sleep 100
14 | Send '^{a}^{c}'
15 | Sleep 100
16 | Click "Right"
17 | Send '{Up}'
18 | Send '{Enter}'
19 | Sleep 250
20 | Click 100, 100
21 | Send '{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}'
22 | Send '{Enter}'
23 | Sleep 250
24 | Send '{Enter}'
25 | }
26 |
27 | #HotIf
28 |
29 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Yoshio Nakano
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Preset/Background/透明.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Background1 = Background {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | UseFrameFormatSettings = Input { Value = 1, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
10 | TopLeftAlpha = Input { Value = 0, },
11 | },
12 | ViewInfo = OperatorInfo { Pos = { 1045, 82.5 } },
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Preset/ImageTab(square)/1024x1024.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 1024, },
7 | Height = Input { Value = 1024, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab(square)/2048x2048.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 2048, },
7 | Height = Input { Value = 2048, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab(square)/4096x4096.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 4096, },
7 | Height = Input { Value = 4096, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab(square)/8192x8192.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 8192, },
7 | Height = Input { Value = 8192, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab(square)/UseFrameFormatSettings_ON.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | UseFrameFormatSettings = Input { Value = 1, },
7 | },
8 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Preset/ImageTab/1280x720.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 1280, },
7 | Height = Input { Value = 720, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab/1980x1080.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 1920, },
7 | Height = Input { Value = 1080, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab/3840x2160.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 3840, },
7 | Height = Input { Value = 2160, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab/7680x4320.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Width = Input { Value = 7680, },
7 | Height = Input { Value = 4320, },
8 | UseFrameFormatSettings = Input { Value = 0, },
9 | },
10 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Preset/ImageTab/UseFrameFormatSettings_ON.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | UseFrameFormatSettings = Input { Value = 1, },
7 | },
8 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Preset/ImageTab/色深度_int8.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | PipeRouter1 = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | Depth = Input { Value = 1, },
7 | },
8 | ViewInfo = PipeRouterInfo { Pos = { 358, 6.75757 } },
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Preset/TextPlus/Filter/テキスト.txt:
--------------------------------------------------------------------------------
1 | StyledText
2 | Width
3 | Height
4 | UseFrameFormatSettings
--------------------------------------------------------------------------------
/Preset/TextPlus/Filter/テキスト_サイズ.txt:
--------------------------------------------------------------------------------
1 | StyledText
2 | Width
3 | Height
4 | UseFrameFormatSettings
5 | Size
--------------------------------------------------------------------------------
/Preset/TextPlus/Filter/テキスト_フォント.txt:
--------------------------------------------------------------------------------
1 | StyledText
2 | Font
3 | Style
4 | Width
5 | Height
6 | UseFrameFormatSettings
--------------------------------------------------------------------------------
/Preset/TextPlus/Filter/テキスト_フォント_サイズ.txt:
--------------------------------------------------------------------------------
1 | StyledText
2 | Font
3 | Style
4 | Width
5 | Height
6 | UseFrameFormatSettings
7 | Size
--------------------------------------------------------------------------------
/Preset/TextPlus/字幕_白.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | StyledText = Input { Value = "Subtitle", },
15 | Font = Input { Value = "Meiryo", },
16 | Style = Input { Value = "Bold", },
17 | Size = Input { Value = 0.07, },
18 | VerticalJustificationNew = Input { Value = 3, },
19 | HorizontalJustificationNew = Input { Value = 3, },
20 | Thickness2 = Input { Value = 0.125, },
21 | Red2 = Input { Value = 0.0705882352941176, },
22 | Green2 = Input { Value = 0.388235294117647, },
23 | Blue2 = Input { Value = 0.0549019607843137, },
24 | ElementShape5 = Input { Value = 1, },
25 | Thickness5 = Input { Value = 0.14, },
26 | },
27 | ViewInfo = OperatorInfo { Pos = { 220, 16.5 } },
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Preset/TextPlus/字幕_白_紫.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | CustomData = {
7 | Path = {
8 | Map = {
9 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
10 | }
11 | },
12 | },
13 | Inputs = {
14 | GlobalOut = Input { Value = 149, },
15 | Width = Input { Value = 1920, },
16 | Height = Input { Value = 1080, },
17 | UseFrameFormatSettings = Input { Value = 1, },
18 | Depth = Input { Value = 1, },
19 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
20 | Center = Input { Value = { 0.5, 0.15 }, },
21 | SelectElement = Input { Value = 1, },
22 | Select = Input { Value = 1, },
23 | Name1 = Input { Value = "ベース", },
24 | Name2 = Input { Value = "アウトライン", },
25 | Enabled2 = Input { Value = 1, },
26 | StyledText = Input { Value = "Subtitle", },
27 | Font = Input { Value = "Meiryo", },
28 | Style = Input { Value = "Bold", },
29 | Size = Input { Value = 0.07, },
30 | VerticalJustificationNew = Input { Value = 3, },
31 | HorizontalJustificationNew = Input { Value = 3, },
32 | Thickness2 = Input { Value = 0.125, },
33 | Red2 = Input { Value = 0.384313725490196, },
34 | Green2 = Input { Value = 0.0823529411764706, },
35 | Blue2 = Input { Value = 0.647058823529412, },
36 | },
37 | ViewInfo = OperatorInfo { Pos = { 17215, 247.5 } },
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/Preset/TextPlus/字幕_白_緑.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | Enabled2 = Input { Value = 1, },
15 | StyledText = Input { Value = "Subtitle", },
16 | Font = Input { Value = "Meiryo", },
17 | Style = Input { Value = "Bold", },
18 | Size = Input { Value = 0.07, },
19 | VerticalJustificationNew = Input { Value = 3, },
20 | HorizontalJustificationNew = Input { Value = 3, },
21 | Thickness2 = Input { Value = 0.125, },
22 | Red2 = Input { Value = 0.0705882352941176, },
23 | Green2 = Input { Value = 0.388235294117647, },
24 | Blue2 = Input { Value = 0.0549019607843137, },
25 | ElementShape5 = Input { Value = 1, },
26 | Thickness5 = Input { Value = 0.14, },
27 | },
28 | ViewInfo = OperatorInfo { Pos = { 220, 16.5 } },
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/Preset/TextPlus/字幕_白_赤.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | Enabled2 = Input { Value = 1, },
15 | StyledText = Input { Value = "Subtitle", },
16 | Font = Input { Value = "Meiryo", },
17 | Style = Input { Value = "Bold", },
18 | Size = Input { Value = 0.07, },
19 | VerticalJustificationNew = Input { Value = 3, },
20 | HorizontalJustificationNew = Input { Value = 3, },
21 | Thickness2 = Input { Value = 0.125, },
22 | Red2 = Input { Value = 0.686274509803922, },
23 | Green2 = Input { Value = 0.2, },
24 | Blue2 = Input { Value = 0.211764705882353, },
25 | },
26 | ViewInfo = OperatorInfo { Pos = { 4785, 82.5 } },
27 | Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Preset/TextPlus/字幕_白_赤紫.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text2 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | Enabled2 = Input { Value = 1, },
15 | StyledText = Input { Value = "Subtitle", },
16 | Font = Input { Value = "Meiryo", },
17 | Style = Input { Value = "Bold", },
18 | Size = Input { Value = 0.07, },
19 | VerticalJustificationNew = Input { Value = 3, },
20 | HorizontalJustificationNew = Input { Value = 3, },
21 | Thickness2 = Input { Value = 0.125, },
22 | Red2 = Input { Value = 0.686274509803922, },
23 | Green2 = Input { Value = 0.2, },
24 | Blue2 = Input { Value = 0.450980392156863, },
25 | },
26 | ViewInfo = OperatorInfo { Pos = { 440, 16.5 } },
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/Scripts/Comp/PathMapper.lua:
--------------------------------------------------------------------------------
1 | local function pathMapper()
2 | local tool_list = comp:GetToolList(false, 'Loader')
3 | comp.StartUndo('RS Path Mapper')
4 | for i, t in ipairs(tool_list) do
5 | t.Clip[1] = comp:ReverseMapPath(t.Clip[1])
6 | end
7 | comp.EndUndo(True)
8 | print('Mapped!')
9 | end
10 |
11 | pathMapper()
12 |
--------------------------------------------------------------------------------
/Scripts/Comp/PrintNames.lua:
--------------------------------------------------------------------------------
1 | local function printNames()
2 | local tool_list = comp:GetToolList(true)
3 | for k,v in pairs(tool_list) do
4 | print(v.Name)
5 | end
6 | end
7 |
8 | printNames()
--------------------------------------------------------------------------------
/Scripts/Comp/Refresh.lua:
--------------------------------------------------------------------------------
1 |
2 | local function refresh()
3 | comp:StartUndo('RS Refresh')
4 | local tool_list = comp:GetToolList(true)
5 | for k,v in pairs(tool_list) do
6 | v:Refresh()
7 | end
8 | comp:EndUndo(true)
9 | print('Refresh!')
10 | end
11 |
12 | refresh()
13 |
--------------------------------------------------------------------------------
/Scripts/Edit/Marker2Chapter.lua:
--------------------------------------------------------------------------------
1 | local function marker2Chapter(color, separator)
2 | print(color .. 'マーカーを目次にします。\n')
3 | local projectManager = resolve:GetProjectManager()
4 | local project = projectManager:GetCurrentProject()
5 | if not project then
6 | return
7 | end
8 | local timeline = project:GetCurrentTimeline()
9 | if not timeline then
10 | return
11 | end
12 | local fps = timeline:GetSetting('timelineFrameRate')
13 |
14 | local m = timeline:GetMarkers()
15 | local c = {}
16 | for i, v in pairs(m) do
17 | local sec = math.floor(i / fps + 0.5)
18 | if v.color == color then
19 | c[#c + 1] = {
20 | frame = i,
21 | time = string.format('%02d:%02d', sec / 60, sec % 60),
22 | name = v.name
23 | }
24 | end
25 | end
26 |
27 | table.sort(c, function(a, b)
28 | return (a.frame < b.frame)
29 | end)
30 |
31 | print('目次')
32 | if c[1] ~= nil and c[1].time ~= '00:00' then
33 | print('00:00' .. separator)
34 | end
35 | for i, v in pairs(c) do
36 | print(v.time .. separator .. v.name)
37 | end
38 | end
39 |
40 | marker2Chapter('Rose', ' - ')
41 |
--------------------------------------------------------------------------------
/Templates/blender/RS_Shatter/ShatterA.blend:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/Templates/blender/RS_Shatter/ShatterA.blend
--------------------------------------------------------------------------------
/Templates/blender/RS_Shatter/ShatterA_bake.blend:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/Templates/blender/RS_Shatter/ShatterA_bake.blend
--------------------------------------------------------------------------------
/Templates/blender/RS_Shatter/ShatterB.blend:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/Templates/blender/RS_Shatter/ShatterB.blend
--------------------------------------------------------------------------------
/Templates/blender/RS_Shatter/ShatterB_bake.blend:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/Templates/blender/RS_Shatter/ShatterB_bake.blend
--------------------------------------------------------------------------------
/Templates/blender/RS_Shatter/base.abc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/Templates/blender/RS_Shatter/base.abc
--------------------------------------------------------------------------------
/Templates/blender/RS_Shatter/base.blend:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/Templates/blender/RS_Shatter/base.blend
--------------------------------------------------------------------------------
/app/fusion/UserPath/Fuses/RS_GlobalStart.fuse:
--------------------------------------------------------------------------------
1 | FuRegisterClass("RS_GlobalStart", CT_Modifier, {
2 | REGS_Category = "Fuses",
3 | REGS_OpIconString = "RSGS",
4 | REGS_OpDescription = "Comp.GlobalStart",
5 | REGID_DataType = "Number",
6 | REGID_InputDataType = "Number",
7 | REG_Fuse_NoEdit = true,
8 | REG_Fuse_NoReload = true,
9 | })
10 |
11 | function Create()
12 | OutValue = self:AddOutput("Output", "Output", {
13 | LINKID_DataType = "Number",
14 | LINK_Main = 1,
15 | })
16 | end
17 |
18 | function Process(req)
19 | local sf = self.Comp.GlobalStart
20 | if sf < 0 then
21 | sf = 0
22 | end
23 | OutValue:Set(req, sf)
24 | end
25 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Fuses/RS_Null.fuse:
--------------------------------------------------------------------------------
1 | FuRegisterClass("RS_Null", CT_Tool, {
2 | REGS_Category = "りぞりぷと",
3 | REGS_OpIconString = "RSNU",
4 | REGS_OpDescription = "Null",
5 | REG_OpNoMask = true,
6 | REG_Fuse_NoEdit = true,
7 | REG_Fuse_NoReload = true,
8 | REG_Version = 1,
9 | })
10 |
11 | function Create()
12 | InImage = self:AddInput("Input", "Input", {
13 | LINKID_DataType = "Image",
14 | LINK_Main = 1,
15 | })
16 |
17 | OutImage = self:AddOutput("Output", "Output", {
18 | LINKID_DataType = "Image",
19 | LINK_Main = 1,
20 | })
21 |
22 | end
23 |
24 | function Process(req)
25 | local img = InImage:GetValue(req)
26 | OutImage:Set(req, img)
27 | end
28 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Modules/Lua/rs.lua:
--------------------------------------------------------------------------------
1 | local m = {}
2 |
3 | m.print = function()
4 | print("module01 print().")
5 | end
6 |
7 | return m
8 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/Comp_Utility.py3:
--------------------------------------------------------------------------------
1 | from rs_fusion.tool.comp_utility import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/Import/CHARA_SOZAI.py3:
--------------------------------------------------------------------------------
1 | from rs_fusion.tool.chara_converter import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/Import/PsdSplitter.py3:
--------------------------------------------------------------------------------
1 | from rs_fusion.tool.importer import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/MakeMacro.py3:
--------------------------------------------------------------------------------
1 | from rs_fusion.tool.make_macro import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/PathMapper.py3:
--------------------------------------------------------------------------------
1 | from rs_fusion.tool.path_mapper import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/Tatie.py3:
--------------------------------------------------------------------------------
1 | from rs_fusion.tool.tatie import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Comp/RS/Utility/SetMotionBlur.lua:
--------------------------------------------------------------------------------
1 | local function set_mb()
2 | comp.Lock()
3 | comp:StartUndo('RS Set MotionBlur')
4 | local tool_list = comp:GetToolList(true)
5 | for k,v in pairs(tool_list) do
6 | v.MotionBlur = 1
7 | end
8 | comp:EndUndo(true)
9 | comp.Unlock()
10 | end
11 |
12 | set_mb()
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/CopyTextplus.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.copy_text_plus import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/Playhead.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.playhead import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/Subtitle2TextPlus.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.subtitle2text_plus import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/Subtitle2TextPlusTypeB.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.subtitle2textPlus_typeB import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/TatieAnim.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.tatie_anim import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/TextPlus2SRT.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.text_plus2srt import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/VoiceBin_Assistant.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.voice_bin_assistant import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/VoiceDropper.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.voice_dropper import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Scripts/Edit/RS/YoutubeChapter.py3:
--------------------------------------------------------------------------------
1 | from rs_resolve.tool.youtube_chapter import run
2 | run(app)
3 |
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/Blur.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Blur {
4 | NameSet = true,
5 | Inputs = {
6 | Filter = Input { Value = FuID { "Fast Gaussian" }, },
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 220, -148.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/Defocus.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Defocus {
4 | NameSet = true,
5 | Inputs = {
6 | Filter = Input { Value = 1, },
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 330, -148.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/DirectionalBlur.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = DirectionalBlur {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 440, -148.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/Glow.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Glow {
4 | NameSet = true,
5 | Inputs = {
6 | Blend = Input { Value = 0.2, },
7 | Filter = Input { Value = FuID { "Fast Gaussian" }, },
8 | MainInput1 = InstanceInput {
9 | SourceOp = "Template",
10 | Source = "Input",
11 | },
12 | Input = Input {
13 | SourceOp = "MediaIn1",
14 | Source = "Output",
15 | },
16 | },
17 | ViewInfo = OperatorInfo { Pos = { 550, -148.5 } },
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/Sharpen.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Sharpen {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 660, -148.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/SoftGlow.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = SoftGlow {
4 | NameSet = true,
5 | Inputs = {
6 | Filter = Input { Value = FuID { "Fast Gaussian" }, },
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 770, -148.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/UnsharpMask.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = UnsharpMask {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 880, -148.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Blur/VariBlur.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = VariBlur {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 990, -82.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Color/AutoGain.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = AutoGain {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 220, 16.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Color/BrightnessContrast.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = BrightnessContrast {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 330, 16.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Color/ColorCorrector.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = ColorCorrector {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | ColorRanges = Input {
11 | Value = ColorCurves {
12 | Curves = {
13 | {
14 | Points = {
15 | { 0, 1 },
16 | { 0.4, 0.2 },
17 | { 0.6, 0 },
18 | { 1, 0 }
19 | }
20 | },
21 | {
22 | Points = {
23 | { 0, 0 },
24 | { 0.4, 0 },
25 | { 0.6, 0.2 },
26 | { 1, 1 }
27 | }
28 | }
29 | }
30 | },
31 | },
32 | HistogramIgnoreTransparent = Input { Value = 1, },
33 | },
34 | ViewInfo = OperatorInfo { Pos = { 440, 16.5 } },
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Color/ColorCurves.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = ColorCurves {
4 | PickColor = true,
5 | NameSet = true,
6 | Inputs = {
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Red = Input {
12 | SourceOp = "ColorCurves1Red",
13 | Source = "Value",
14 | },
15 | Green = Input {
16 | SourceOp = "ColorCurves1Green",
17 | Source = "Value",
18 | },
19 | Blue = Input {
20 | SourceOp = "ColorCurves1Blue",
21 | Source = "Value",
22 | },
23 | Alpha = Input {
24 | SourceOp = "ColorCurves1Alpha",
25 | Source = "Value",
26 | },
27 | NumberOfSamplesOnMatchCurve = Input { Value = 64, },
28 | IgnoreTransparent = Input { Value = 1, },
29 | },
30 | ViewInfo = OperatorInfo { Pos = { 550, 16.5 } },
31 | Tools = {
32 | ColorCurves1Red = LUTBezier {
33 | KeyColorSplines = {
34 | [0] = {
35 | [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
36 | [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
37 | }
38 | },
39 | SplineColor = { Red = 255, Green = 52, Blue = 52 },
40 | CtrlWZoom = false,
41 | NameSet = true,
42 | },
43 | ColorCurves1Green = LUTBezier {
44 | KeyColorSplines = {
45 | [0] = {
46 | [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
47 | [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
48 | }
49 | },
50 | SplineColor = { Red = 0, Green = 255, Blue = 0 },
51 | CtrlWZoom = false,
52 | NameSet = true,
53 | },
54 | ColorCurves1Blue = LUTBezier {
55 | KeyColorSplines = {
56 | [0] = {
57 | [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
58 | [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
59 | }
60 | },
61 | SplineColor = { Red = 68, Green = 68, Blue = 255 },
62 | CtrlWZoom = false,
63 | NameSet = true,
64 | },
65 | ColorCurves1Alpha = LUTBezier {
66 | KeyColorSplines = {
67 | [0] = {
68 | [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
69 | [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
70 | }
71 | },
72 | SplineColor = { Red = 204, Green = 204, Blue = 204 },
73 | CtrlWZoom = false,
74 | NameSet = true,
75 | }
76 | },
77 | }
78 | }
79 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Color/ColorGain.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = ColorGain {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | ColorRanges = Input {
11 | Value = ColorCurves {
12 | Curves = {
13 | {
14 | Points = {
15 | { 0, 1 },
16 | { 0.125, 0.75 },
17 | { 0.375, 0.25 },
18 | { 0.5, 0 }
19 | }
20 | },
21 | {
22 | Points = {
23 | { 0.5, 0 },
24 | { 0.625, 0.25 },
25 | { 0.875, 0.75 },
26 | { 1, 1 }
27 | }
28 | }
29 | }
30 | },
31 | },
32 | },
33 | ViewInfo = OperatorInfo { Pos = { 660, 16.5 } },
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Color/WhiteBalance.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = WhiteBalance {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | Inputs = {
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | ColorRanges = Input {
12 | Value = ColorCurves {
13 | Curves = {
14 | {
15 | Points = {
16 | { 0, 1 },
17 | { 0.4, 0.2 },
18 | { 0.6, 0 },
19 | { 1, 0 }
20 | }
21 | },
22 | {
23 | Points = {
24 | { 0, 0 },
25 | { 0.4, 0 },
26 | { 0.6, 0.2 },
27 | { 1, 1 }
28 | }
29 | }
30 | }
31 | },
32 | },
33 | },
34 | ViewInfo = OperatorInfo { Pos = { 880, 16.5 } },
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/Duplicate.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Fuse.Duplicate {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Background",
9 | },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 165, -115.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/Highlight.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Highlight {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 275, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/PseudoColor.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = PseudoColor {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 495, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/Rays.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Fuse.OCLRays {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Image",
9 | },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 605, -115.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/Shadow.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Shadow {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 715, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/TV.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = TV {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | Inputs = {
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 935, -115.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Effect/Trails.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Trails {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 825, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Transform/DVE.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = DVE {
4 | NameSet = true,
5 | Inputs = {
6 | AlphaMode = Input { Value = 2, },
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 330, -82.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Transform/Transform.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Transform {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 165, -82.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/CoordinateSpace.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = CoordSpace {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 55, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/CornerPositioner.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = CornerPositioner {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 165, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/Dent.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Dent {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 275, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/Drip.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Drip {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 385, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/LensDistort.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = LensDistort {
4 | NameSet = true,
5 | Inputs = {
6 | MainInput1 = InstanceInput {
7 | SourceOp = "Template",
8 | Source = "Input",
9 | },
10 | Input = Input {
11 | SourceOp = "MediaIn1",
12 | Source = "Output",
13 | },
14 | },
15 | ViewInfo = OperatorInfo { Pos = { 605, -115.5 } },
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/PerspectivePositioner.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = PerspectivePositioner {
4 | NameSet = true,
5 | Inputs = {
6 | MappingType = Input { Value = 1, },
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 715, -115.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/RS_Fusion/Warp/Vortex.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Vortex {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | Inputs = {
7 | MainInput1 = InstanceInput {
8 | SourceOp = "Template",
9 | Source = "Input",
10 | },
11 | Input = Input {
12 | SourceOp = "MediaIn1",
13 | Source = "Output",
14 | },
15 | },
16 | ViewInfo = OperatorInfo { Pos = { 825, -115.5 } },
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/りぞりぷと(RIZORIPUTO)/スタイル(Style)/RS_KomaUchi.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Koma = GroupOperator {
4 | Tools = ordered() {
5 | TimeStretcher1 = TimeStretcher {
6 | ViewInfo = OperatorInfo { Pos = { 275, 82.5 } },
7 | Inputs = {
8 | InterpolateBetweenFrames = Input { Value = 0 },
9 | SourceTime = Input {
10 | Value = 50,
11 | Expression = "math.max(time - (time % Frame), comp.GlobalStart)"
12 | },
13 | SampleSpread = Input { Disabled = true }
14 | },
15 | UserControls = ordered() {
16 | Frame = {
17 | INP_MaxAllowed = 1000000,
18 | INP_MinAllowed = 1,
19 | INP_MaxScale = 10,
20 | INPID_InputControl = "ScrewControl",
21 | INP_Default = 2,
22 | ICS_ControlPage = "Controls",
23 | LINKID_DataType = "Number",
24 | LINKS_Name = "Frame",
25 | INP_MinScale = 1,
26 | INP_Integer = true
27 | }
28 | },
29 | CtrlWZoom = false
30 | },
31 | Merge1CenterXYPath1Y = BezierSpline {
32 | CtrlWZoom = false,
33 | NameSet = true,
34 | KeyFrames = {
35 | [-100] = { 0.5, Flags = { Linear = true } }
36 | },
37 | SplineColor = { Green = 255, Blue = 0, Red = 0 }
38 | },
39 | Merge1CenterXYPath1X = BezierSpline {
40 | CtrlWZoom = false,
41 | NameSet = true,
42 | KeyFrames = {
43 | [0] = { 0, RH = { 33.3333, 0 } },
44 | [100] = { 1, LH = { 66.6667, 1 } }
45 | },
46 | SplineColor = { Green = 0, Blue = 0, Red = 255 }
47 | },
48 | XYPath1 = XYPath {
49 | DrawMode = "ModifyOnly",
50 | CtrlWZoom = false,
51 | Inputs = {
52 | Y = Input {
53 | Source = "Value",
54 | SourceOp = "Merge1CenterXYPath1Y"
55 | },
56 | X = Input {
57 | Source = "Value",
58 | SourceOp = "Merge1CenterXYPath1X"
59 | }
60 | },
61 | ShowKeyPoints = false
62 | }
63 | },
64 | Inputs = ordered() {
65 | MainInput1 = InstanceInput {
66 | Source = "Input",
67 | SourceOp = "TimeStretcher1"
68 | },
69 | Input1 = InstanceInput {
70 | Source = "Frame",
71 | Default = 2,
72 | SourceOp = "TimeStretcher1"
73 | }
74 | },
75 | Outputs = ordered() {
76 | MainOutput1 = InstanceOutput {
77 | Source = "Output",
78 | SourceOp = "TimeStretcher1"
79 | }
80 | },
81 | ViewInfo = GroupInfo {
82 | Direction = "Horizontal",
83 | PipeStyle = "Direct",
84 | Scale = 1,
85 | Flags = {
86 | AllowPan = false,
87 | ForceAll = true,
88 | AutoSnap = true,
89 | GridSnap = true
90 | },
91 | Offset = { 0, 0 }
92 | },
93 | CtrlWZoom = false
94 | }
95 | }
96 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/りぞりぷと(RIZORIPUTO)/モーション(Motion)/RS_Bound.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Bound = GroupOperator {
4 | Inputs = ordered() {
5 | MainInput1 = InstanceInput {
6 | SourceOp = "Transform1",
7 | Source = "Input",
8 | },
9 | Input1 = InstanceInput {
10 | SourceOp = "Transform1",
11 | Source = "speed",
12 | MinScale = 0.0010000000475,
13 | Default = 2,
14 | },
15 | Input2 = InstanceInput {
16 | SourceOp = "Transform1",
17 | Source = "amplitude",
18 | Default = 0.1,
19 | },
20 | },
21 | Outputs = {
22 | MainOutput1 = InstanceOutput {
23 | SourceOp = "Transform1",
24 | Source = "Output",
25 | }
26 | },
27 | ViewInfo = GroupInfo { Pos = { 0, 0 } },
28 | Tools = ordered() {
29 | Transform1 = Transform {
30 | CtrlWZoom = false,
31 | Inputs = {
32 | Center = Input { Expression = "Point(0.5, 0.5 + amplitude * iif(time > out, 0,bound))", },
33 | ReferenceSize = Input { Value = 1, },
34 | bound = Input { Expression = "math.abs(sin((time - comp.GlobalStart)*speed*pi/comp:GetPrefs().Comp.FrameFormat.Rate))\n", },
35 | speed = Input { Value = 2, },
36 | amplitude = Input { Value = 0.1, },
37 | out = Input { Expression = "comp.GlobalEnd - (comp.GlobalEnd - comp.GlobalStart + 1) % (comp:GetPrefs().Comp.FrameFormat.Rate/speed)", },
38 | },
39 | ViewInfo = OperatorInfo { Pos = { 440, 247.5 } },
40 | UserControls = ordered() {
41 | bound = {
42 | LINKS_Name = "bound",
43 | LINKID_DataType = "Number",
44 | INPID_InputControl = "SliderControl",
45 | INP_Default = 0,
46 | INP_Integer = false,
47 | },
48 | speed = {
49 | LINKS_Name = "speed",
50 | LINKID_DataType = "Number",
51 | INPID_InputControl = "SliderControl",
52 | INP_Default = 1,
53 | INP_Integer = false,
54 | INP_MinScale = 0.00100000004749745,
55 | INP_MaxScale = 1,
56 | INP_MinAllowed = 0.00100000004749745,
57 | INP_MaxAllowed = 1000000,
58 | },
59 | width = {
60 | LINKS_Name = "\nwidth",
61 | LINKID_DataType = "Number",
62 | INP_Default = 0,
63 | INP_Integer = false,
64 | INP_MinScale = 0,
65 | INP_MaxScale = 1,
66 | },
67 | amplitude = {
68 | LINKS_Name = "amplitude",
69 | LINKID_DataType = "Number",
70 | INPID_InputControl = "SliderControl",
71 | INP_Default = 0,
72 | INP_Integer = false,
73 | INP_MinScale = 0,
74 | INP_MaxScale = 1,
75 | INP_MinAllowed = -1000000,
76 | INP_MaxAllowed = 1000000,
77 | },
78 | out = {
79 | LINKS_Name = "out",
80 | LINKID_DataType = "Number",
81 | INPID_InputControl = "SliderControl",
82 | INP_Default = 0,
83 | INP_Integer = false,
84 | INP_MinScale = 0,
85 | INP_MaxScale = 1,
86 | }
87 | }
88 | }
89 | },
90 | }
91 | },
92 | ActiveTool = "Bound"
93 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Effects/りぞりぷと(RIZORIPUTO)/ユーティリティ(Utility)/RS_FixAlpha.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | FixAlpha = MacroOperator {
4 | Inputs = ordered() {
5 | MainInput1 = InstanceInput {
6 | SourceOp = "BrightnessContrast1",
7 | Source = "Input",
8 | },
9 | },
10 | Outputs = {
11 | MainOutput1 = InstanceOutput {
12 | SourceOp = "BrightnessContrast1",
13 | Source = "Output",
14 | }
15 | },
16 | ViewInfo = GroupInfo { Pos = { 0, 0 } },
17 | Tools = ordered() {
18 | BrightnessContrast1 = BrightnessContrast {
19 | CtrlWZoom = false,
20 | Inputs = {
21 | Red = Input { Value = 0, },
22 | Green = Input { Value = 0, },
23 | Blue = Input { Value = 0, },
24 | Alpha = Input { Value = 1, },
25 | ClipBlack = Input { Value = 1, },
26 | ClipWhite = Input { Value = 1, },
27 | },
28 | ViewInfo = OperatorInfo { Pos = { 385, 214.5 } },
29 | }
30 | },
31 | }
32 | },
33 | ActiveTool = "FixAlpha"
34 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Generators/RS_Fusion/Background.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Background {
4 | NameSet = true,
5 | Inputs = {
6 | Width = Input { Value = 1920, },
7 | Height = Input { Value = 1080, },
8 | UseFrameFormatSettings = Input { Value = 1, },
9 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 220, 49.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Generators/RS_Fusion/DaySky.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = DaySky {
4 | NameSet = true,
5 | Inputs = {
6 | Width = Input { Value = 1920, },
7 | Height = Input { Value = 1080, },
8 | UseFrameFormatSettings = Input { Value = 1, },
9 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 330, 49.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Generators/RS_Fusion/FastNoise.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = FastNoise {
4 | NameSet = true,
5 | Inputs = {
6 | Width = Input { Value = 1920, },
7 | Height = Input { Value = 1080, },
8 | UseFrameFormatSettings = Input { Value = 1, },
9 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 440, 49.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Generators/RS_Fusion/Mandelbrot.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Mandel {
4 | NameSet = true,
5 | Inputs = {
6 | Width = Input { Value = 1920, },
7 | Height = Input { Value = 1080, },
8 | UseFrameFormatSettings = Input { Value = 1, },
9 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 550, 49.5 } },
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Edit/Generators/RS_Fusion/Plasma.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Template = Plasma {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | Inputs = {
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | },
12 | ViewInfo = OperatorInfo { Pos = { 660, 49.5 } },
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Fusion/りぞりぷと(RIZORIPUTO)/AutoDomain.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | AutoDomain1 = AutoDomain {
4 | CtrlWZoom = false,
5 | ViewInfo = OperatorInfo { Pos = { 11660, -511.5 } },
6 | Colors = { TileColor = { R = 0.913725490196078, G = 0.549019607843137, B = 0.709803921568627 }, }
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Fusion/りぞりぷと(RIZORIPUTO)/Flatten.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Flatten = Transform {
4 | Locked = true,
5 | CtrlWZoom = false,
6 | NameSet = true,
7 | Inputs = {
8 | FlattenTransform = Input { Value = 1, },
9 | },
10 | ViewInfo = OperatorInfo { Pos = { 550, 148.5 } },
11 | Colors = { TileColor = { R = 0.913725490196078, G = 0.549019607843137, B = 0.709803921568627 }, }
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Fusion/りぞりぷとOLD/Old/ヌル(AutoDomainを使ってください).setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | RS_Null1 = Fuse.RS_Null {
4 | CtrlWZoom = false,
5 | ViewInfo = OperatorInfo { Pos = { 12155, -808.5 } },
6 | Colors = { TileColor = { R = 0.913725490196078, G = 0.549019607843137, B = 0.709803921568627 }, },
7 | Version = 1
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Fusion/りぞりぷとOLD/キャッシュV2.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | RS_Cache = MacroOperator {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | CustomData = {
7 | Path = {
8 | Map = {
9 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
10 | }
11 | },
12 | },
13 | Inputs = ordered() {
14 | Input1 = InstanceInput {
15 | SourceOp = "TimeStretcher1",
16 | Source = "Input",
17 | }
18 | },
19 | Outputs = {
20 | Output1 = InstanceOutput {
21 | SourceOp = "RS_Null1",
22 | Source = "Output",
23 | }
24 | },
25 | ViewInfo = GroupInfo {
26 | Pos = { 1155, 379.5 },
27 | Flags = {
28 | AllowPan = false,
29 | ForceAll = true,
30 | GridSnap = true,
31 | ConnectedSnap = true,
32 | AutoSnap = true,
33 | RemoveRouters = true
34 | },
35 | Size = { 291, 107.503, 145.5, 24.2424 },
36 | Direction = "Horizontal",
37 | PipeStyle = "Direct",
38 | Scale = 1,
39 | Offset = { -1732.5, -469.864 }
40 | },
41 | Tools = ordered() {
42 | RS_Null1 = Fuse.RS_Null {
43 | CtrlWShown = false,
44 | Inputs = {
45 | Input = Input {
46 | SourceOp = "TimeStretcher1",
47 | Source = "Output",
48 | },
49 | },
50 | ViewInfo = OperatorInfo { Pos = { 1815, 478.5 } },
51 | Version = 1
52 | },
53 | TimeStretcher1 = TimeStretcher {
54 | CtrlWShown = false,
55 | CustomData = {
56 | Path = {
57 | Map = {
58 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
59 | }
60 | }
61 | },
62 | Inputs = {
63 | SourceTime = Input {
64 | SourceOp = "RS_GlobalStart3",
65 | Source = "Output",
66 | },
67 | InterpolateBetweenFrames = Input { Value = 0, },
68 | SampleSpread = Input { Disabled = true, },
69 | },
70 | ViewInfo = OperatorInfo { Pos = { 1650, 478.5 } },
71 | Colors = { TileColor = { R = 0.913725490196078, G = 0.549019607843137, B = 0.709803921568627 }, }
72 | }
73 | },
74 | Colors = { TileColor = { R = 0.913725490196078, G = 0.549019607843137, B = 0.709803921568627 }, }
75 | },
76 | RS_GlobalStart3 = Fuse.RS_GlobalStart {
77 | CtrlWZoom = false,
78 | CustomData = {
79 | Path = {
80 | Map = {
81 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
82 | }
83 | }
84 | },
85 | }
86 | }
87 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Fusion/りぞりぷとOLD/口パク(FUSE).setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | RS_MouthAIUEO = Fuse.RS_MouthAIUEO {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | Inputs = {
7 | N = Input {
8 | SourceOp = "N",
9 | Source = "Output",
10 | },
11 | A = Input {
12 | SourceOp = "A",
13 | Source = "Output",
14 | },
15 | I = Input {
16 | SourceOp = "I",
17 | Source = "Output",
18 | },
19 | U = Input {
20 | SourceOp = "U",
21 | Source = "Output",
22 | },
23 | E = Input {
24 | SourceOp = "E",
25 | Source = "Output",
26 | },
27 | O = Input {
28 | SourceOp = "O",
29 | Source = "Output",
30 | },
31 | },
32 | ViewInfo = OperatorInfo { Pos = { 990, 49.5 } },
33 | Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, },
34 | Version = 1
35 | },
36 | N = Fuse.Wireless {
37 | NameSet = true,
38 | CustomData = {
39 | Path = {
40 | Map = {
41 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
42 | }
43 | }
44 | },
45 | ViewInfo = OperatorInfo { Pos = { 880, 49.5 } },
46 | },
47 | A = Fuse.Wireless {
48 | NameSet = true,
49 | CustomData = {
50 | Path = {
51 | Map = {
52 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
53 | }
54 | }
55 | },
56 | ViewInfo = OperatorInfo { Pos = { 770, 49.5 } },
57 | },
58 | I = Fuse.Wireless {
59 | NameSet = true,
60 | CustomData = {
61 | Path = {
62 | Map = {
63 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
64 | }
65 | }
66 | },
67 | ViewInfo = OperatorInfo { Pos = { 660, 49.5 } },
68 | },
69 | U = Fuse.Wireless {
70 | NameSet = true,
71 | CustomData = {
72 | Path = {
73 | Map = {
74 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
75 | }
76 | }
77 | },
78 | ViewInfo = OperatorInfo { Pos = { 550, 49.5 } },
79 | },
80 | E = Fuse.Wireless {
81 | NameSet = true,
82 | CustomData = {
83 | Path = {
84 | Map = {
85 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
86 | }
87 | }
88 | },
89 | ViewInfo = OperatorInfo { Pos = { 440, 49.5 } },
90 | },
91 | O = Fuse.Wireless {
92 | NameSet = true,
93 | CustomData = {
94 | Path = {
95 | Map = {
96 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
97 | }
98 | },
99 | },
100 | ViewInfo = OperatorInfo { Pos = { 330, 49.5 } },
101 | }
102 | },
103 | ActiveTool = "RS_MouthAIUEO"
104 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/Fusion/りぞりぷとOLD/口パク(FUSE_Open).setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | M05 = Fuse.Wireless {
4 | NameSet = true,
5 | CustomData = {
6 | Path = {
7 | Map = {
8 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
9 | }
10 | }
11 | },
12 | ViewInfo = OperatorInfo { Pos = { 220, 49.5 } },
13 | },
14 | M04 = Fuse.Wireless {
15 | NameSet = true,
16 | CustomData = {
17 | Path = {
18 | Map = {
19 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
20 | }
21 | }
22 | },
23 | ViewInfo = OperatorInfo { Pos = { 330, 49.5 } },
24 | },
25 | M03 = Fuse.Wireless {
26 | NameSet = true,
27 | ViewInfo = OperatorInfo { Pos = { 440, 49.5 } },
28 | },
29 | RS_MouthOpen = Fuse.RS_MouthOpen {
30 | CtrlWZoom = false,
31 | NameSet = true,
32 | Inputs = {
33 | M01 = Input {
34 | SourceOp = "M01",
35 | Source = "Output",
36 | },
37 | M02 = Input {
38 | SourceOp = "M02",
39 | Source = "Output",
40 | },
41 | M04 = Input {
42 | SourceOp = "M03",
43 | Source = "Output",
44 | },
45 | M05 = Input {
46 | SourceOp = "M04",
47 | Source = "Output",
48 | },
49 | M06 = Input {
50 | SourceOp = "M05",
51 | Source = "Output",
52 | },
53 | Threshold01 = Input { Value = 0.1, },
54 | Threshold02 = Input { Value = 0.25, },
55 | Threshold03 = Input { Value = 0.4, },
56 | Threshold04 = Input { Value = 0.55, },
57 | },
58 | ViewInfo = OperatorInfo { Pos = { 770, 49.5 } },
59 | Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, },
60 | Version = 1
61 | },
62 | M01 = Fuse.Wireless {
63 | NameSet = true,
64 | CustomData = {
65 | Path = {
66 | Map = {
67 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
68 | }
69 | }
70 | },
71 | ViewInfo = OperatorInfo { Pos = { 660, 49.5 } },
72 | },
73 | M02 = Fuse.Wireless {
74 | NameSet = true,
75 | ViewInfo = OperatorInfo { Pos = { 550, 49.5 } },
76 | }
77 | },
78 | ActiveTool = "RS_MouthOpen"
79 | }
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/abc/RS_Shatter/ShatterA.abc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/fusion/UserPath/Templates/abc/RS_Shatter/ShatterA.abc
--------------------------------------------------------------------------------
/app/fusion/UserPath/Templates/abc/RS_Shatter/ShatterB.abc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/fusion/UserPath/Templates/abc/RS_Shatter/ShatterB.abc
--------------------------------------------------------------------------------
/app/fusion/python/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/fusion/python/__init__.py
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/fusion/python/rs_fusion/__init__.py
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/core/__init__.py:
--------------------------------------------------------------------------------
1 | from collections import OrderedDict
2 |
3 |
4 | def ordered_dict_to_dict(org_dict):
5 | if org_dict is None:
6 | return None
7 | dct = dict(org_dict)
8 | for k, v in dct.items():
9 | if isinstance(v, dict):
10 | dct[k] = ordered_dict_to_dict(v)
11 | if isinstance(org_dict, OrderedDict):
12 | dct['__flags'] = 2097152
13 | return dct
14 |
15 |
16 | def get_modifiers(tools):
17 | modifiers = {}
18 | for tool in tools:
19 | for inp in tool.GetInputList().values():
20 | outp = inp.GetConnectedOutput()
21 | if outp is None:
22 | continue
23 | x = outp.GetTool()
24 | if x.GetAttrs()['TOOLB_Visible']:
25 | continue
26 | modifiers[x.Name] = x
27 | modifiers.update(get_modifiers([x]))
28 | return modifiers
29 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/core/bake.py:
--------------------------------------------------------------------------------
1 | from rs_fusion.core import ordered_dict_to_dict
2 |
3 |
4 | # data = {'tool_name': ['param1', 'param2', 'param3', ... ], ...}
5 | def apply(comp, data: dict, sf: int, ef: int):
6 | header = '''
7 | {
8 | Tools = ordered() {
9 | '''
10 | bake_header = '''
11 | Bake = PipeRouter {
12 | CtrlWZoom = false,
13 | Inputs = {
14 | '''
15 | input_body = '''
16 | %s = Input {
17 | SourceOp = "BAKE_%s_%s",
18 | Source = "Value",
19 | },
20 | '''
21 | bake_footer = '''
22 | },
23 | ViewInfo = OperatorInfo { Pos = { 10285, -940.5 } },
24 | },
25 | '''
26 | spline_header = '''
27 | ["BAKE_%s_%s"] = BezierSpline {
28 | CtrlWZoom = false,
29 | NameSet = true,
30 | KeyFrames = {
31 | '''
32 | key_body = '''
33 | [%d] = { %f, Flags = { Linear = true } },
34 | '''
35 | spline_footer = '''
36 | }
37 | },
38 | '''
39 | footer = '''
40 | },
41 | ActiveTool = "Bake"
42 | }
43 | '''
44 |
45 | #
46 | comp.Lock()
47 | comp.StartUndo('RS Bake')
48 |
49 | for tool_name, params in data.items():
50 | tool = comp.FindTool(tool_name)
51 | if tool is None:
52 | continue
53 |
54 | # Header, Bake Header
55 | text = header
56 | text += bake_header
57 |
58 | # Inputs
59 | for param in params:
60 | if tool.GetInput(param, sf) is None:
61 | continue
62 | text += input_body % (param, tool_name, param)
63 |
64 | # Bake Footer
65 | text += bake_footer
66 |
67 | # Splines
68 | for param in params:
69 | if tool.GetInput(param, sf) is None:
70 | continue
71 | text += spline_header % (tool_name, param)
72 | for i in range(sf, ef + 1):
73 | v = tool.GetInput(param, i)
74 | text += key_body % (i, v)
75 | text += spline_footer
76 |
77 | # Footer
78 | text += footer
79 |
80 | # apply
81 | st = ordered_dict_to_dict(bmd.readstring(text))
82 | comment = tool.GetInput('Comments', comp.CurrentTime)
83 | tool.LoadSettings(st)
84 | tool.SetInput('Comments', comment, comp.CurrentTime)
85 |
86 | comp.EndUndo(True)
87 | comp.Unlock()
88 |
89 |
90 | if __name__ == '__main__':
91 | pass
92 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/fusion/python/rs_fusion/tool/__init__.py
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/add_button/__init__.py:
--------------------------------------------------------------------------------
1 | from .add_button import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/add_button/add_button.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from pathlib import Path
3 | from PySide6.QtCore import (
4 | Qt,
5 | )
6 | from PySide6.QtWidgets import (
7 | QApplication,
8 | QMainWindow,
9 | QMessageBox,
10 | )
11 |
12 | from rs.core import (
13 | config,
14 | util,
15 | pipe as p,
16 | )
17 | from rs.gui import (
18 | appearance,
19 | )
20 | from rs_fusion.tool.add_button.add_button_ui import Ui_MainWindow
21 |
22 | APP_NAME = 'ボタン追加'
23 |
24 |
25 | class MainWindow(QMainWindow):
26 |
27 | def __init__(self, parent=None, fusion=None):
28 | super().__init__(parent)
29 | self.ui = Ui_MainWindow()
30 | self.ui.setupUi(self)
31 | self.setWindowTitle(APP_NAME)
32 | self.setWindowFlags(
33 | Qt.Window
34 | | Qt.WindowCloseButtonHint
35 | | Qt.WindowStaysOnTopHint
36 | )
37 | self.resize(250, 100)
38 |
39 | self.fusion = fusion
40 | self.lua_script = config.DATA_PATH.joinpath('lua', 'add_button.lua').read_text(encoding='utf-8')
41 | # button
42 | self.ui.addButton.setStyleSheet(appearance.in_stylesheet)
43 |
44 | # event
45 | self.ui.addButton.clicked.connect(self.add)
46 | self.ui.closeButton.clicked.connect(self.close)
47 |
48 | def add(self):
49 | resolve = self.fusion.GetResolve()
50 | if resolve is not None and resolve.GetCurrentPage() != 'fusion':
51 | QMessageBox.warning(self, 'Warning', 'Fusion Pageで実行してください。')
52 | return
53 | comp = self.fusion.CurrentComp
54 | if comp is None:
55 | QMessageBox.warning(self, 'Warning', 'コンポジションが見付かりません。')
56 | return
57 |
58 | self.fusion.Execute('\n'.join([
59 | self.lua_script,
60 | 'AddButton(%s, %s, %s)' % (
61 | str(self.ui.refreshCheckBox.isChecked()).lower(),
62 | str(self.ui.loadCheckBox.isChecked()).lower(),
63 | str(self.ui.saveCheckBox.isChecked()).lower(),
64 | ),
65 | ]))
66 |
67 |
68 | def run(fusion) -> None:
69 | app = QApplication(sys.argv)
70 | app.setStyle("Fusion")
71 | app.setPalette(appearance.palette)
72 | app.setStyleSheet(appearance.stylesheet)
73 |
74 | window = MainWindow(fusion=fusion)
75 | window.show()
76 | sys.exit(app.exec_())
77 |
78 |
79 | if __name__ == '__main__':
80 | pass
81 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/bake_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .bake_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/bg_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .bg_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/bg_tool/bg_tool.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import functools
3 | from PySide6.QtCore import (
4 | Qt,
5 | )
6 |
7 | from PySide6.QtWidgets import (
8 | QApplication,
9 | QMainWindow,
10 | )
11 |
12 | from rs.gui import (
13 | appearance,
14 | )
15 |
16 | from rs_fusion.core import operator as op
17 | from rs_fusion.tool.bg_tool.bg_tool_ui import Ui_MainWindow
18 |
19 | APP_NAME = 'BGTool'
20 |
21 |
22 | class MainWindow(QMainWindow):
23 |
24 | def __init__(self, parent=None, fusion=None):
25 | super().__init__(parent)
26 | self.ui = Ui_MainWindow()
27 | self.ui.setupUi(self)
28 | self.setWindowTitle(APP_NAME)
29 | self.setWindowFlags(
30 | Qt.Window
31 | | Qt.WindowCloseButtonHint
32 | | Qt.WindowStaysOnTopHint
33 | | Qt.MSWindowsFixedSizeDialogHint
34 | )
35 | self.resize(200, 100)
36 |
37 | self.fusion = fusion
38 |
39 | # padding
40 | self.ui.paddingXSpinBox.setValue(100)
41 | self.ui.paddingYSpinBox.setValue(100)
42 |
43 | # button
44 | self.ui.insertButton.setStyleSheet(appearance.in_stylesheet)
45 |
46 | # event
47 | self.ui.insertButton.clicked.connect(self.insert)
48 | self.ui.minimizeButton.clicked.connect(functools.partial(self.setWindowState, Qt.WindowMinimized))
49 | self.ui.closeButton.clicked.connect(self.close)
50 |
51 | #
52 |
53 | def insert(self):
54 | resolve = self.fusion.GetResolve()
55 | if resolve is not None and resolve.GetCurrentPage() != 'fusion':
56 | return
57 | comp = self.fusion.CurrentComp
58 | if comp is None:
59 | return
60 | op.background(
61 | comp,
62 | self.ui.paddingXSpinBox.value(),
63 | self.ui.paddingYSpinBox.value(),
64 | self.ui.squareCheckBox.isChecked(),
65 | )
66 |
67 |
68 | def run(fusion) -> None:
69 | app = QApplication(sys.argv)
70 | app.setStyle("Fusion")
71 | app.setPalette(appearance.palette)
72 | app.setStyleSheet(appearance.stylesheet)
73 |
74 | window = MainWindow(fusion=fusion)
75 | window.show()
76 | sys.exit(app.exec_())
77 |
78 |
79 | if __name__ == '__main__':
80 | pass
81 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/center_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .center_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/chara_converter/__init__.py:
--------------------------------------------------------------------------------
1 | from .chara_converter import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/color_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .color_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/comp_utility/__init__.py:
--------------------------------------------------------------------------------
1 | from .comp_utility import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/comp_utility/comp_utility.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 94
10 | 59
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 |
22 | 0
23 | 0
24 |
25 |
26 |
27 | RS COMP
28 |
29 |
30 | QToolButton::InstantPopup
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/comp_utility/comp_utility_ui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'comp_utility.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QMainWindow, QSizePolicy, QToolButton,
19 | QVBoxLayout, QWidget)
20 |
21 | class Ui_MainWindow(object):
22 | def setupUi(self, MainWindow):
23 | if not MainWindow.objectName():
24 | MainWindow.setObjectName(u"MainWindow")
25 | MainWindow.resize(94, 59)
26 | self.centralwidget = QWidget(MainWindow)
27 | self.centralwidget.setObjectName(u"centralwidget")
28 | self.verticalLayout = QVBoxLayout(self.centralwidget)
29 | self.verticalLayout.setObjectName(u"verticalLayout")
30 | self.toolButton = QToolButton(self.centralwidget)
31 | self.toolButton.setObjectName(u"toolButton")
32 | sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
33 | sizePolicy.setHorizontalStretch(0)
34 | sizePolicy.setVerticalStretch(0)
35 | sizePolicy.setHeightForWidth(self.toolButton.sizePolicy().hasHeightForWidth())
36 | self.toolButton.setSizePolicy(sizePolicy)
37 | self.toolButton.setPopupMode(QToolButton.InstantPopup)
38 |
39 | self.verticalLayout.addWidget(self.toolButton)
40 |
41 | MainWindow.setCentralWidget(self.centralwidget)
42 |
43 | self.retranslateUi(MainWindow)
44 |
45 | QMetaObject.connectSlotsByName(MainWindow)
46 | # setupUi
47 |
48 | def retranslateUi(self, MainWindow):
49 | MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
50 | self.toolButton.setText(QCoreApplication.translate("MainWindow", u"RS COMP", None))
51 | # retranslateUi
52 |
53 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/copy_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .copy_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/font_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .font_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/font_tool/favorites_font.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 364
10 | 413
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 | QAbstractItemView::NoEditTriggers
22 |
23 |
24 | QAbstractItemView::ExtendedSelection
25 |
26 |
27 |
28 | -
29 |
30 |
-
31 |
32 |
33 | Qt::Horizontal
34 |
35 |
36 |
37 | 40
38 | 20
39 |
40 |
41 |
42 |
43 | -
44 |
45 |
46 |
47 | 80
48 | 30
49 |
50 |
51 |
52 | set
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 | 80
61 | 30
62 |
63 |
64 |
65 | cancel
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/importer/__init__.py:
--------------------------------------------------------------------------------
1 | from .importer import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/insert_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .insert_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/make_macro/__init__.py:
--------------------------------------------------------------------------------
1 | from .make_macro import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/make_macro/macro.py:
--------------------------------------------------------------------------------
1 | def get_header(name: str, use_group: bool) -> str:
2 | return """
3 | {
4 | Tools = ordered() {
5 | ['%s'] = %s {
6 | """ % (name, 'GroupOperator' if use_group else 'MacroOperator')
7 |
8 |
9 | def get_input(m_lst, lst) -> str:
10 | lines = [' Inputs = ordered() {']
11 | cnt = 1
12 | for d in m_lst:
13 | lines.append(' MainInput%d = InstanceInput {' % cnt)
14 | lines.append(' Source = "%s",' % d['id'])
15 | lines.append(' SourceOp = "%s",' % d['node'])
16 | lines.append(' },')
17 | cnt += 1
18 | cnt = 1
19 | for d in lst:
20 | lines.append(' Input%d = InstanceInput {' % cnt)
21 | lines.append(' Source = "%s",' % d['id'])
22 | lines.append(' SourceOp = "%s",' % d['node'])
23 | if d['name'] is not None:
24 | lines.append(' Name = "%s",' % d['name'])
25 | if d['value'] is not None:
26 | lines.append(' Default = %s,' % d['value'])
27 | if d['control_group'] is not None:
28 | lines.append(' ControlGroup = %s,' % d['control_group'])
29 | if d['option01'] != '':
30 | lines.append(' %s,' % d['option01'])
31 | if d['option02'] != '':
32 | lines.append(' %s,' % d['option02'])
33 | if d['option03'] != '':
34 | lines.append(' %s,' % d['option03'])
35 | lines.append(' },')
36 | cnt += 1
37 | lines.append(' },')
38 | return '\n'.join(lines)
39 |
40 |
41 | def get_output(lst) -> str:
42 | cnt = 1
43 | lines = [' Outputs = ordered() {']
44 | for d in lst:
45 | lines.append(' MainOutput%d = InstanceOutput {' % cnt)
46 | lines.append(' Source = "%s",' % d['id'])
47 | lines.append(' SourceOp = "%s",' % d['node'])
48 | lines.append(' },')
49 | cnt += 1
50 | lines.append(' },')
51 | return '\n'.join(lines)
52 |
53 |
54 | def get_footer():
55 | return """
56 | ViewInfo = GroupInfo {
57 | Flags = {
58 | AllowPan = false,
59 | ForceAll = true,
60 | GridSnap = true,
61 | AutoSnap = true
62 | },
63 | Direction = "Horizontal",
64 | PipeStyle = "Direct",
65 | Scale = 1,
66 | Offset = { 0, 0 }
67 | },
68 | CtrlWZoom = false,
69 | Tools = ordered() {
70 | }
71 | }
72 | }
73 | }
74 | """
75 |
76 |
77 | def get_save_script(path, name, text):
78 | lua = """
79 | local function SaveMacro(path, name, text)
80 | local tools = comp:CopySettings()['Tools']
81 | local st = bmd.readstring(text)
82 | st['Tools'][name]['Tools'] = tools
83 | bmd.writefile(path, st)
84 | end
85 | """
86 | return '\n'.join([
87 | lua,
88 | 'SaveMacro(',
89 | '[[%s]],' % path,
90 | '[[%s]],' % name,
91 | '[[%s]])' % text,
92 | ])
93 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/nudge_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .nudge_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/number_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .number_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/paste_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .paste_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/paste_tool/node_window.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 278
10 | 272
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 | QAbstractItemView::NoEditTriggers
22 |
23 |
24 | QAbstractItemView::ExtendedSelection
25 |
26 |
27 |
28 | -
29 |
30 |
-
31 |
32 |
33 |
34 | 80
35 | 30
36 |
37 |
38 |
39 | read
40 |
41 |
42 |
43 | -
44 |
45 |
46 |
47 | 80
48 | 30
49 |
50 |
51 |
52 | add
53 |
54 |
55 |
56 | -
57 |
58 |
59 | Qt::Horizontal
60 |
61 |
62 |
63 | 40
64 | 20
65 |
66 |
67 |
68 |
69 | -
70 |
71 |
72 |
73 | 80
74 | 30
75 |
76 |
77 |
78 | 閉じる
79 |
80 |
81 | close
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/path_mapper/__init__.py:
--------------------------------------------------------------------------------
1 | from .path_mapper import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/path_mapper/path_mapper.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 98
10 | 120
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 |
22 | 80
23 | 30
24 |
25 |
26 |
27 | 適用
28 |
29 |
30 |
31 | -
32 |
33 |
34 |
35 | 80
36 | 30
37 |
38 |
39 |
40 | 取り除く
41 |
42 |
43 |
44 | -
45 |
46 |
47 |
48 | 80
49 | 30
50 |
51 |
52 |
53 | close
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | true
62 |
63 |
64 | auto
65 |
66 |
67 |
68 |
69 | true
70 |
71 |
72 | ja
73 |
74 |
75 |
76 |
77 | true
78 |
79 |
80 | en
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/pivot_tool/__init__.py:
--------------------------------------------------------------------------------
1 | from .pivot_tool import (
2 | run,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/set_number/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/fusion/python/rs_fusion/tool/set_number/__init__.py
--------------------------------------------------------------------------------
/app/fusion/python/rs_fusion/tool/tatie/__init__.py:
--------------------------------------------------------------------------------
1 | from .tatie import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/resolve/python/__init__.py
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/resolve/python/rs_resolve/__init__.py
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/core/shortcut.py:
--------------------------------------------------------------------------------
1 | import dataclasses
2 | from pathlib import Path
3 |
4 | import pyautogui
5 |
6 | from rs.core import config, util
7 |
8 | CONFIG_FILE: Path = config.CONFIG_DIR.joinpath('Shortcut.json')
9 |
10 |
11 | @dataclasses.dataclass
12 | class Data(config.Data):
13 | key_razor: tuple = ('ctrl', 'b') if not util.IS_MAC else ('command', 'b')
14 | key_deselect_all: tuple = ('ctrl', 'shift', 'a') if not util.IS_MAC else ('command', 'shift', 'a')
15 | key_active_timeline_panel: tuple = ('ctrl', '4') if not util.IS_MAC else ('command', '4')
16 |
17 | def razor(self):
18 | pyautogui.hotkey(*self.key_razor)
19 |
20 | def deselect_all(self):
21 | pyautogui.hotkey(*self.key_deselect_all)
22 |
23 | def active_timeline_panel(self):
24 | pyautogui.hotkey(*self.key_active_timeline_panel)
25 |
26 | def load(self, path: Path) -> None:
27 | super().load(path)
28 | self.key_razor = tuple(self.key_razor)
29 | self.key_deselect_all = tuple(self.key_deselect_all)
30 | self.key_active_timeline_panel = tuple(self.key_active_timeline_panel)
31 |
32 |
33 | if __name__ == '__main__':
34 | org_data = Data()
35 | if CONFIG_FILE.exists():
36 | org_data.load(CONFIG_FILE)
37 | config.CONFIG_DIR.mkdir(parents=True, exist_ok=True)
38 |
39 | # save
40 | data = Data()
41 | data.key_razor = ('ctrl', 'a')
42 | data.save(CONFIG_FILE)
43 | print('data:', data)
44 |
45 | # load
46 | data2 = Data()
47 | data2.load(CONFIG_FILE)
48 | print('data2:', data2)
49 |
50 | #
51 | org_data.save(CONFIG_FILE)
52 | print('org_data:', org_data)
53 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/gui/__init__.py:
--------------------------------------------------------------------------------
1 | import subprocess
2 |
3 | from rs.core import util
4 |
5 | if util.IS_MAC:
6 | def get_resolve_window(pj_name):
7 | return None
8 | else:
9 | import pywinctl
10 |
11 |
12 | def get_resolve_window(pj_name):
13 | for t in pywinctl.getAllTitles():
14 | flag = t.startswith('DaVinci Resolve') and t.endswith(pj_name)
15 | flag = flag or t.startswith('DaVinci Resolve by Blackmagic Design')
16 | if flag:
17 | return pywinctl.getWindowsWithTitle(t)[0]
18 | return None
19 |
20 |
21 | def activate_window(w):
22 | if not util.IS_MAC:
23 | w.activate()
24 | else:
25 | subprocess.run([
26 | 'osascript',
27 | '-e',
28 | 'tell application "DaVinci Resolve" to activate',
29 | ])
30 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/gui/shortcut/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/resolve/python/rs_resolve/gui/shortcut/__init__.py
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/app/resolve/python/rs_resolve/tool/__init__.py
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/copy_text_plus/__init__.py:
--------------------------------------------------------------------------------
1 | from .copy_text_plus import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/playhead/__init__.py:
--------------------------------------------------------------------------------
1 | from .playhead import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/subtitle2textPlus_typeB/__init__.py:
--------------------------------------------------------------------------------
1 | from .subtitle2textPlus_typeB import (
2 | run,
3 | )
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/subtitle2text_plus/__init__.py:
--------------------------------------------------------------------------------
1 | from .subtitle2text_plus import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/tatie_anim/__init__.py:
--------------------------------------------------------------------------------
1 | from .tatie_anim import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/text_plus2srt/__init__.py:
--------------------------------------------------------------------------------
1 | from .text_plus2srt import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/voice_bin_assistant/__init__.py:
--------------------------------------------------------------------------------
1 | from .voice_bin_assistant import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/voice_dropper/__init__.py:
--------------------------------------------------------------------------------
1 | from .voice_dropper import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/app/resolve/python/rs_resolve/tool/youtube_chapter/__init__.py:
--------------------------------------------------------------------------------
1 | from .youtube_chapter import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/bin/aquestalk_wrapper.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.aquestalk_wrapper import run
11 |
12 | run()
13 |
--------------------------------------------------------------------------------
/bin/assistant_seika2wave.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.text2wave.assistant_seika2wave import run
11 |
12 | run()
13 |
--------------------------------------------------------------------------------
/bin/characters.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.characters import run
11 |
12 | run()
13 |
--------------------------------------------------------------------------------
/bin/disk_cache.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.disk_cache import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/install_script.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 | from pathlib import Path
4 |
5 | lib_path = os.path.abspath(
6 | os.path.join(os.path.dirname(__file__), '../library/python')
7 | )
8 | sys.path.append(lib_path)
9 |
10 | from rs.core import (
11 | config,
12 | pipe as p,
13 | )
14 |
15 | if __name__ == "__main__":
16 | import shutil
17 |
18 | # C:\ProgramData\Blackmagic Design\DaVinci Resolve\Fusion\Scripts
19 | # %APPDATA%\Blackmagic Design\DaVinci Resolve\Fusion\Scripts
20 | # C:\ProgramData\Blackmagic Design\Fusion\Scripts
21 | # %APPDATA%\Blackmagic Design\Fusion\Scripts
22 | for f in p.pipe(
23 | config.ROOT_PATH.joinpath('Scripts', 'Comp').iterdir(),
24 | p.filter(p.call.is_file()),
25 | p.filter(lambda x: x.suffix.lower() in ['.py', '.py2', '.py3']),
26 | ):
27 | shutil.copyfile(
28 | f,
29 | Path(os.path.expandvars('%APPDATA%')).joinpath(
30 | 'Blackmagic Design', 'Fusion', 'Scripts', 'Comp', f.name
31 | ),
32 | )
33 |
--------------------------------------------------------------------------------
/bin/launcher.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.launcher import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/macro2group.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.macro2group import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/psd_splitter.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.psd_splitter import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/resolve_launcher.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.resolve_launcher import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/run_fusion.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.resolve_launcher import run_fusion
11 |
12 | run_fusion()
13 |
--------------------------------------------------------------------------------
/bin/run_resolve.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.resolve_launcher import run_resolve
11 |
12 | run_resolve()
13 |
--------------------------------------------------------------------------------
/bin/script_launcher.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.script_launcher import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/softalk2wave.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.text2wave.softalk2wave import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/voice_bin.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.voice_bin import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/voice_sync.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.voice_sync import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/voicevox_sequencer.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.voicevox_sequencer import run
11 | run()
12 |
--------------------------------------------------------------------------------
/bin/vtt2anim.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import os
3 |
4 | lib_path = os.path.abspath(
5 | os.path.join(os.path.dirname(__file__), '../library/python')
6 | )
7 | sys.path.append(lib_path)
8 |
9 | if __name__ == "__main__":
10 | from rs.tool.vtt2anim import run
11 | run()
12 |
--------------------------------------------------------------------------------
/data/app/Fusion.json:
--------------------------------------------------------------------------------
1 | {
2 | "program": "bin\\python-3.10.11\\pythonw.exe",
3 | "arg": "bin\\run_fusion.py"
4 | }
5 |
--------------------------------------------------------------------------------
/data/app/Resolve.json:
--------------------------------------------------------------------------------
1 | {
2 | "program": "bin\\python-3.10.11\\pythonw.exe",
3 | "arg": "bin\\run_resolve.py"
4 | }
5 |
--------------------------------------------------------------------------------
/data/app/ResolveLauncher/set_pathmap.lua:
--------------------------------------------------------------------------------
1 | local user_path = app:GetPrefs("Global.Paths.Map.UserPaths:")
2 | if not user_path:find("%$%(RS_FUSION_USER_PATH%)") then
3 | user_path = user_path .. ";$(RS_FUSION_USER_PATH)"
4 | app:SetPrefs("Global.Paths.Map.UserPaths:", user_path)
5 | app:SavePrefs()
6 | end
7 | print("Global.Paths.Map.UserPaths: " .. user_path)
8 |
--------------------------------------------------------------------------------
/data/app/VoiceBin/chara.json:
--------------------------------------------------------------------------------
1 | {
2 | "chara_list": [
3 | {
4 | "track_name": "ME",
5 | "reg_exp": "^\\d+_四国めたん.+",
6 | "color": "Violet",
7 | "anim_type": "aiueo3",
8 | "anim_parameter": "",
9 | "_setting": "Preset\\TextPlus\\字幕_白_赤紫.setting"
10 | },
11 | {
12 | "track_name": "ZU",
13 | "reg_exp": "^\\d+_ずんだもん.+",
14 | "color": "Olive",
15 | "anim_type": "aiueo3",
16 | "anim_parameter": "",
17 | "_setting": "Preset\\TextPlus\\字幕_白_緑.setting"
18 | },
19 | {
20 | "track_name": "USA",
21 | "reg_exp": "^\\d+_中国うさぎ.+",
22 | "color": "Pink",
23 | "anim_type": "aiueo3",
24 | "anim_parameter": "",
25 | "_setting": "Preset\\TextPlus\\字幕_白_赤.setting"
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/data/app/VoiceBin/tatie_setting_base.txt:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Ctrl = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | StyledText = Input { Value = "%s", },
7 | %s = Input {
8 | SourceOp = "MouthAnimBezierSpline",
9 | Source = "Value",
10 | },
11 | },
12 | ViewInfo = OperatorInfo { Pos = { 55, 214.5 } },
13 | UserControls = ordered() {
14 | StyledText = {
15 | TEC_ReadOnly = false,
16 | LINKID_DataType = "Text",
17 | TEC_Wrap = false,
18 | INPID_InputControl = "TextEditControl",
19 | LINKS_Name = "StyledText",
20 | },
21 | %s = {
22 | INP_Integer = true,
23 | INP_Default = 0,
24 | INPID_InputControl = "SliderControl",
25 | INP_MinScale = 0,
26 | LINKID_DataType = "Number",
27 | INP_MaxScale = 6,
28 | LINKS_Name = "%s",
29 | }
30 | }
31 | },
32 | MouthAnimBezierSpline = BezierSpline {
33 | SplineColor = { Red = 8, Green = 156, Blue = 231 },
34 | CtrlWZoom = false,
35 | KeyFrames = {
36 | %s
37 | }
38 | }
39 | },
40 | }
41 |
--------------------------------------------------------------------------------
/data/app/VoiceDropper/__RS_TextPlus_FPS__.drb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/app/VoiceDropper/__RS_TextPlus_FPS__.drb
--------------------------------------------------------------------------------
/data/app/VoiceDropper/setting_aiueo_mm.txt:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | MouthAnim = PipeRouter {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | Inputs = {
7 | LayerName1 = Input { Value = "MouthBase", },
8 | LayerEnabled1 = Input {
9 | SourceOp = "MouthAnimLayerEnabled1",
10 | Source = "Value",
11 | },
12 | LayerName2 = Input { Value = "N", },
13 | LayerEnabled2 = Input {
14 | SourceOp = "MouthAnimLayerEnabled2",
15 | Source = "Value",
16 | },
17 | LayerName3 = Input { Value = "A", },
18 | LayerEnabled3 = Input {
19 | SourceOp = "MouthAnimLayerEnabled3",
20 | Source = "Value",
21 | },
22 | LayerName4 = Input { Value = "I", },
23 | LayerEnabled4 = Input {
24 | SourceOp = "MouthAnimLayerEnabled4",
25 | Source = "Value",
26 | },
27 | LayerName5 = Input { Value = "U", },
28 | LayerEnabled5 = Input {
29 | SourceOp = "MouthAnimLayerEnabled5",
30 | Source = "Value",
31 | },
32 | LayerName6 = Input { Value = "E", },
33 | LayerEnabled6 = Input {
34 | SourceOp = "MouthAnimLayerEnabled6",
35 | Source = "Value",
36 | },
37 | LayerName7 = Input { Value = "O", },
38 | LayerEnabled7 = Input {
39 | SourceOp = "MouthAnimLayerEnabled7",
40 | Source = "Value",
41 | },
42 | },
43 | ViewInfo = OperatorInfo { Pos = { 13365, 115.5 } },
44 | Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
45 | },
46 | MouthAnimLayerEnabled1 = BezierSpline {
47 | SplineColor = { Red = 198, Green = 82, Blue = 232 },
48 | CtrlWZoom = false,
49 | NameSet = true,
50 | KeyFrames = {
51 | %s
52 | }
53 | },
54 | MouthAnimLayerEnabled2 = BezierSpline {
55 | SplineColor = { Red = 232, Green = 82, Blue = 214 },
56 | CtrlWZoom = false,
57 | NameSet = true,
58 | KeyFrames = {
59 | %s
60 | }
61 | },
62 | MouthAnimLayerEnabled3 = BezierSpline {
63 | SplineColor = { Red = 232, Green = 82, Blue = 125 },
64 | CtrlWZoom = false,
65 | NameSet = true,
66 | KeyFrames = {
67 | %s
68 | }
69 | },
70 | MouthAnimLayerEnabled4 = BezierSpline {
71 | SplineColor = { Red = 232, Green = 82, Blue = 44 },
72 | CtrlWZoom = false,
73 | NameSet = true,
74 | KeyFrames = {
75 | %s
76 | }
77 | },
78 | MouthAnimLayerEnabled5 = BezierSpline {
79 | SplineColor = { Red = 232, Green = 145, Blue = 44 },
80 | CtrlWZoom = false,
81 | NameSet = true,
82 | KeyFrames = {
83 | %s
84 | }
85 | },
86 | MouthAnimLayerEnabled6 = BezierSpline {
87 | SplineColor = { Red = 232, Green = 202, Blue = 44 },
88 | CtrlWZoom = false,
89 | NameSet = true,
90 | KeyFrames = {
91 | %s
92 | }
93 | },
94 | MouthAnimLayerEnabled7 = BezierSpline {
95 | SplineColor = { Red = 210, Green = 232, Blue = 44 },
96 | CtrlWZoom = false,
97 | NameSet = true,
98 | KeyFrames = {
99 | %s
100 | }
101 | },
102 | },
103 | }
--------------------------------------------------------------------------------
/data/app/VoiceDropper/setting_base.txt:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Ctrl = PipeRouter {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | %s = Input {
7 | SourceOp = "MouthAnimBezierSpline",
8 | Source = "Value",
9 | },
10 | },
11 | ViewInfo = OperatorInfo { Pos = { 55, 214.5 } },
12 | UserControls = ordered() {
13 | %s = {
14 | INP_Integer = true,
15 | INP_Default = 0,
16 | INPID_InputControl = "SliderControl",
17 | INP_MinScale = 0,
18 | LINKID_DataType = "Number",
19 | INP_MaxScale = 6,
20 | LINKS_Name = "%s",
21 | }
22 | }
23 | },
24 | MouthAnimBezierSpline = BezierSpline {
25 | SplineColor = { Red = 8, Green = 156, Blue = 231 },
26 | CtrlWZoom = false,
27 | KeyFrames = {
28 | %s
29 | }
30 | }
31 | },
32 | }
33 |
--------------------------------------------------------------------------------
/data/app/env.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | }
4 | }
5 |
--------------------------------------------------------------------------------
/data/app/launcher.json:
--------------------------------------------------------------------------------
1 | {
2 | "program": "bin\\python-3.10.11\\pythonw.exe",
3 | "arg": "bin\\launcher.py"
4 | }
5 |
--------------------------------------------------------------------------------
/data/app/launcher_menu.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "ResolveLauncher",
4 | "path": "bin/resolve_launcher.py",
5 | "ss": "utility",
6 | "win": true,
7 | "mac": true,
8 | "linux": true
9 | },
10 | {
11 | "name": "softalk2wave",
12 | "path": "bin/softalk2wave.py",
13 | "ss": "sound",
14 | "win": true,
15 | "mac": false,
16 | "linux": false
17 | },
18 | {
19 | "name": "AssistantSeika2wave",
20 | "path": "bin/assistant_seika2wave.py",
21 | "ss": "sound",
22 | "win": true,
23 | "mac": false,
24 | "linux": false
25 | },
26 | {
27 | "name": "AquesTalkWrapper",
28 | "path": "bin/aquestalk_wrapper.py",
29 | "ss": "sound",
30 | "win": true,
31 | "mac": false,
32 | "linux": false
33 | },
34 | {
35 | "name": "VoiceBin",
36 | "path": "bin/voice_bin.py",
37 | "ss": "sound",
38 | "win": true,
39 | "mac": true,
40 | "linux": true
41 | },
42 | {
43 | "name": "VoiceSync",
44 | "path": "bin/voice_sync.py",
45 | "ss": "sound",
46 | "win": true,
47 | "mac": false,
48 | "linux": true
49 | },
50 | {
51 | "name": "VoicevoxSequencer",
52 | "path": "bin/voicevox_sequencer.py",
53 | "ss": "sound",
54 | "win": true,
55 | "mac": false,
56 | "linux": true
57 | },
58 | {
59 | "name": "PsdSplitter",
60 | "path": "bin/psd_splitter.py",
61 | "ss": "picture",
62 | "win": true,
63 | "mac": true,
64 | "linux": true
65 | },
66 | {
67 | "name": "Macro2Group",
68 | "path": "bin/macro2group.py",
69 | "ss": "utility",
70 | "win": true,
71 | "mac": true,
72 | "linux": true
73 | },
74 | {
75 | "name": "ScriptLauncher",
76 | "path": "bin/script_launcher.py",
77 | "ss": "utility",
78 | "win": true,
79 | "mac": true,
80 | "linux": true
81 | },
82 | {
83 | "name": "DiskCache",
84 | "path": "bin/disk_cache.py",
85 | "ss": "utility",
86 | "win": true,
87 | "mac": true,
88 | "linux": true
89 | },
90 | {
91 | "name": "Characters",
92 | "path": "bin/characters.py",
93 | "ss": "utility",
94 | "win": true,
95 | "mac": true,
96 | "linux": true
97 | }
98 | ]
99 |
--------------------------------------------------------------------------------
/data/image/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/empty.png
--------------------------------------------------------------------------------
/data/image/icon/notes/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/120.png
--------------------------------------------------------------------------------
/data/image/icon/notes/1440.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/1440.png
--------------------------------------------------------------------------------
/data/image/icon/notes/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/180.png
--------------------------------------------------------------------------------
/data/image/icon/notes/1920.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/1920.png
--------------------------------------------------------------------------------
/data/image/icon/notes/240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/240.png
--------------------------------------------------------------------------------
/data/image/icon/notes/2880.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/2880.png
--------------------------------------------------------------------------------
/data/image/icon/notes/30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/30.png
--------------------------------------------------------------------------------
/data/image/icon/notes/360.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/360.png
--------------------------------------------------------------------------------
/data/image/icon/notes/45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/45.png
--------------------------------------------------------------------------------
/data/image/icon/notes/480.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/480.png
--------------------------------------------------------------------------------
/data/image/icon/notes/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/60.png
--------------------------------------------------------------------------------
/data/image/icon/notes/720.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/720.png
--------------------------------------------------------------------------------
/data/image/icon/notes/90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/90.png
--------------------------------------------------------------------------------
/data/image/icon/notes/960.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/960.png
--------------------------------------------------------------------------------
/data/image/icon/notes/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/empty.png
--------------------------------------------------------------------------------
/data/image/icon/notes/notes.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/notes.psd
--------------------------------------------------------------------------------
/data/image/icon/notes/question.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/question.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r120.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r1440.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r1440.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r180.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r1920.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r1920.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r240.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r2880.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r2880.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r360.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r360.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r480.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r480.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r60.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r720.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r720.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r90.png
--------------------------------------------------------------------------------
/data/image/icon/notes/r960.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/data/image/icon/notes/r960.png
--------------------------------------------------------------------------------
/data/image/icon/pivot/ne.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
--------------------------------------------------------------------------------
/data/lua/add_button.lua:
--------------------------------------------------------------------------------
1 | local function AddButton(UseRefresh, UseLoad, UseSave)
2 | local tool_list = comp:GetToolList(true)
3 | comp:StartUndo('RS Add Button')
4 | for i, v in ipairs(tool_list) do
5 | local uc = v.UserControls
6 | if UseRefresh then
7 | uc['Refresh'] = {
8 | LINKS_Name = 'Refresh',
9 | LINKID_DataType = 'Number',
10 | INPID_InputControl = 'ButtonControl',
11 | INP_Integer = false,
12 | BTNCS_Execute = "comp:StartUndo('RS Refresh');"
13 | .. "local tool_list = comp:GetToolList(false, 'Fuse.RS_GlobalStart');"
14 | .. "for k,v in pairs(tool_list) do v:Refresh() end;"
15 | .. "comp:EndUndo(true)\n",
16 | ICS_ControlPage = 'Tools',
17 | }
18 | end
19 | if UseLoad then
20 | uc['LoadSettings'] = {
21 | LINKS_Name = 'Load Settings',
22 | LINKID_DataType = 'Number',
23 | INPID_InputControl = 'ButtonControl',
24 | INP_Integer = false,
25 | BTNCS_Execute = [[
26 | local node = self:GetTool()
27 | local path = fusion:RequestFile(
28 | '',
29 | '',
30 | {
31 | FReqB_SeqGather = false,
32 | FReqS_Filter = 'Settings File (*.setting)|*.setting',
33 | FReqS_Title = 'Load Settings',
34 | }
35 | )
36 | if path then
37 | node:LoadSettings(comp:MapPath(path))
38 | print('Load: ' .. comp:MapPath(path))
39 | end
40 | ]],
41 | ICS_ControlPage = 'Tools',
42 | }
43 | end
44 | if UseSave then
45 | uc['SaveSettings'] = {
46 | LINKS_Name = 'Save Settings',
47 | LINKID_DataType = 'Number',
48 | INPID_InputControl = 'ButtonControl',
49 | INP_Integer = false,
50 | BTNCS_Execute = [[
51 | local node = self:GetTool()
52 | local path = fusion:RequestFile(
53 | '',
54 | node.Name .. '.setting',
55 | {
56 | FReqB_Saving = true,
57 | FReqB_SeqGather = false,
58 | FReqS_Filter = 'Settings File (*.setting)|*.setting',
59 | FReqS_Title = 'Save Settings',
60 | }
61 | )
62 | if path then
63 | node:SaveSettings(comp:MapPath(path))
64 | print('Save: ' .. comp:MapPath(path))
65 | end
66 | ]],
67 | ICS_ControlPage = 'Tools',
68 | }
69 | end
70 | v.UserControls = uc
71 | v:Refresh()
72 | end
73 | comp:EndUndo(true)
74 | print('Done!')
75 | end
76 |
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/VOICEVOX_ずんだもん_ノーマル.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "7006",
4 | "volume": "1",
5 | "speed": "1",
6 | "pitch": "0",
7 | "alpha": "",
8 | "intonation": "1",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/VOICEVOX_四国めたん_ノーマル.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "7002",
4 | "volume": "1",
5 | "speed": "1",
6 | "pitch": "0",
7 | "alpha": "",
8 | "intonation": "1",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/VOICEVOX_春日部つむぎ_ノーマル.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "7009",
4 | "volume": "1",
5 | "speed": "1",
6 | "pitch": "0",
7 | "alpha": "",
8 | "intonation": "1",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/VOICEVOX_波音リツ_ノーマル.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "7013",
4 | "volume": "1",
5 | "speed": "1",
6 | "pitch": "0",
7 | "alpha": "",
8 | "intonation": "1",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/VOICEVOX_雨晴はう_ノーマル.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "7017",
4 | "volume": "1",
5 | "speed": "1",
6 | "pitch": "0",
7 | "alpha": "",
8 | "intonation": "1",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/棒読みちゃん_女性1.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "4000",
4 | "volume": "50",
5 | "speed": "120",
6 | "pitch": "100",
7 | "alpha": "",
8 | "intonation": "",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/棒読みちゃん_女性2.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "4001",
4 | "volume": "50",
5 | "speed": "120",
6 | "pitch": "100",
7 | "alpha": "",
8 | "intonation": "",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/棒読みちゃん_男性1.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "4002",
4 | "volume": "50",
5 | "speed": "120",
6 | "pitch": "100",
7 | "alpha": "",
8 | "intonation": "",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/AssistantSeika2wave/棒読みちゃん_男性2.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "cid": "4003",
4 | "volume": "50",
5 | "speed": "120",
6 | "pitch": "100",
7 | "alpha": "",
8 | "intonation": "",
9 | "emotion01": "",
10 | "emotion02": ""
11 | }
12 | }
--------------------------------------------------------------------------------
/data/template/Chara2Resolve/ゆっくり霊夢改.json:
--------------------------------------------------------------------------------
1 | {
2 | "fps": 30,
3 | "step": 2,
4 | "idle": 90,
5 | "offset": 30
6 | }
--------------------------------------------------------------------------------
/data/template/Chara2Resolve/新れいむ.json:
--------------------------------------------------------------------------------
1 | {
2 | "fps": 30,
3 | "step": 1,
4 | "idle": 90,
5 | "offset": 30
6 | }
--------------------------------------------------------------------------------
/data/template/softalk2wave/女性01.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "voice": "\u5973\u602701",
4 | "volume": 50,
5 | "speed": 120,
6 | "pitch": 100
7 | }
8 | }
--------------------------------------------------------------------------------
/data/template/softalk2wave/女性02.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmd": {
3 | "voice": "\u5973\u602702",
4 | "volume": 50,
5 | "speed": 120,
6 | "pitch": 100
7 | }
8 | }
--------------------------------------------------------------------------------
/for_linux/Fusion.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | source bin/python-3/bin/activate
6 |
7 | python bin/run_fusion.py
8 |
--------------------------------------------------------------------------------
/for_linux/Resolve.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | source bin/python-3/bin/activate
6 |
7 | python bin/run_resolve.py
8 |
--------------------------------------------------------------------------------
/for_linux/setup_python.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | python3 -m venv bin/python-3
6 | source bin/python-3/bin/activate
7 | pip install -r requirements.txt
8 |
--------------------------------------------------------------------------------
/for_linux/りぞりぷと.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | source bin/python-3/bin/activate
6 |
7 | python bin/launcher.py
8 |
--------------------------------------------------------------------------------
/for_mac/Fusion.command:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | source bin/python-3/bin/activate
6 |
7 | python bin/run_fusion.py
8 |
--------------------------------------------------------------------------------
/for_mac/Preset/TextPlus/字幕_白.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | StyledText = Input { Value = "Subtitle", },
15 | Font = Input { Value = "Hiragino Kaku Gothic Std", },
16 | Style = Input { Value = "W8", },
17 | Size = Input { Value = 0.07, },
18 | VerticalJustificationNew = Input { Value = 3, },
19 | HorizontalJustificationNew = Input { Value = 3, },
20 | Thickness2 = Input { Value = 0.125, },
21 | Red2 = Input { Value = 0.0705882352941176, },
22 | Green2 = Input { Value = 0.388235294117647, },
23 | Blue2 = Input { Value = 0.0549019607843137, },
24 | ElementShape5 = Input { Value = 1, },
25 | Thickness5 = Input { Value = 0.14, },
26 | },
27 | ViewInfo = OperatorInfo { Pos = { 220, 16.5 } },
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/for_mac/Preset/TextPlus/字幕_白_紫.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | NameSet = true,
6 | CustomData = {
7 | Path = {
8 | Map = {
9 | ["Setting:"] = "FusionTemplates:\\りぞりぷと\\"
10 | }
11 | },
12 | },
13 | Inputs = {
14 | GlobalOut = Input { Value = 149, },
15 | Width = Input { Value = 1920, },
16 | Height = Input { Value = 1080, },
17 | UseFrameFormatSettings = Input { Value = 1, },
18 | Depth = Input { Value = 1, },
19 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
20 | Center = Input { Value = { 0.5, 0.15 }, },
21 | SelectElement = Input { Value = 1, },
22 | Select = Input { Value = 1, },
23 | Name1 = Input { Value = "ベース", },
24 | Name2 = Input { Value = "アウトライン", },
25 | Enabled2 = Input { Value = 1, },
26 | StyledText = Input { Value = "Subtitle", },
27 | Font = Input { Value = "Hiragino Kaku Gothic Std", },
28 | Style = Input { Value = "W8", },
29 | Size = Input { Value = 0.07, },
30 | VerticalJustificationNew = Input { Value = 3, },
31 | HorizontalJustificationNew = Input { Value = 3, },
32 | Thickness2 = Input { Value = 0.125, },
33 | Red2 = Input { Value = 0.384313725490196, },
34 | Green2 = Input { Value = 0.0823529411764706, },
35 | Blue2 = Input { Value = 0.647058823529412, },
36 | },
37 | ViewInfo = OperatorInfo { Pos = { 17215, 247.5 } },
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/for_mac/Preset/TextPlus/字幕_白_緑.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | Enabled2 = Input { Value = 1, },
15 | StyledText = Input { Value = "Subtitle", },
16 | Font = Input { Value = "Hiragino Kaku Gothic Std", },
17 | Style = Input { Value = "W8", },
18 | Size = Input { Value = 0.07, },
19 | VerticalJustificationNew = Input { Value = 3, },
20 | HorizontalJustificationNew = Input { Value = 3, },
21 | Thickness2 = Input { Value = 0.125, },
22 | Red2 = Input { Value = 0.0705882352941176, },
23 | Green2 = Input { Value = 0.388235294117647, },
24 | Blue2 = Input { Value = 0.0549019607843137, },
25 | ElementShape5 = Input { Value = 1, },
26 | Thickness5 = Input { Value = 0.14, },
27 | },
28 | ViewInfo = OperatorInfo { Pos = { 220, 16.5 } },
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/for_mac/Preset/TextPlus/字幕_白_赤.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text1 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | Enabled2 = Input { Value = 1, },
15 | StyledText = Input { Value = "Subtitle", },
16 | Font = Input { Value = "Hiragino Kaku Gothic Std", },
17 | Style = Input { Value = "W8", },
18 | Size = Input { Value = 0.07, },
19 | VerticalJustificationNew = Input { Value = 3, },
20 | HorizontalJustificationNew = Input { Value = 3, },
21 | Thickness2 = Input { Value = 0.125, },
22 | Red2 = Input { Value = 0.686274509803922, },
23 | Green2 = Input { Value = 0.2, },
24 | Blue2 = Input { Value = 0.211764705882353, },
25 | },
26 | ViewInfo = OperatorInfo { Pos = { 4785, 82.5 } },
27 | Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/for_mac/Preset/TextPlus/字幕_白_赤紫.setting:
--------------------------------------------------------------------------------
1 | {
2 | Tools = ordered() {
3 | Text2 = TextPlus {
4 | CtrlWZoom = false,
5 | Inputs = {
6 | GlobalOut = Input { Value = 149, },
7 | Width = Input { Value = 1920, },
8 | Height = Input { Value = 1080, },
9 | UseFrameFormatSettings = Input { Value = 1, },
10 | ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
11 | Center = Input { Value = { 0.5, 0.15 }, },
12 | SelectElement = Input { Value = 1, },
13 | Select = Input { Value = 1, },
14 | Enabled2 = Input { Value = 1, },
15 | StyledText = Input { Value = "Subtitle", },
16 | Font = Input { Value = "Hiragino Kaku Gothic Std", },
17 | Style = Input { Value = "W8", },
18 | Size = Input { Value = 0.07, },
19 | VerticalJustificationNew = Input { Value = 3, },
20 | HorizontalJustificationNew = Input { Value = 3, },
21 | Thickness2 = Input { Value = 0.125, },
22 | Red2 = Input { Value = 0.686274509803922, },
23 | Green2 = Input { Value = 0.2, },
24 | Blue2 = Input { Value = 0.450980392156863, },
25 | },
26 | ViewInfo = OperatorInfo { Pos = { 440, 16.5 } },
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/for_mac/Resolve.command:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | source bin/python-3/bin/activate
6 |
7 | python bin/run_resolve.py
8 |
--------------------------------------------------------------------------------
/for_mac/requirements.txt:
--------------------------------------------------------------------------------
1 | aggdraw==1.3.16
2 | attrs==23.1.0
3 | audioread==3.0.0
4 | budoux==0.5.2
5 | certifi==2023.7.22
6 | cffi==1.15.1
7 | chardet==5.2.0
8 | charset-normalizer==3.2.0
9 | Cython==3.0.2
10 | decorator==5.1.1
11 | Deprecated==1.2.14
12 | docopt==0.6.2
13 | EasyProcess==1.1
14 | entrypoint2==1.1
15 | idna==3.4
16 | imageio==2.31.3
17 | jaconv==0.3.4
18 | joblib==1.3.2
19 | lazy_loader==0.3
20 | librosa==0.10.1
21 | llvmlite==0.40.1
22 | mido==1.3.0
23 | MouseInfo==0.1.3
24 | msgpack==1.0.5
25 | mss==9.0.1
26 | networkx==3.1
27 | numba==0.57.1
28 | numpy==1.24.4
29 | packaging==23.1
30 | Pillow==10.0.1
31 | platformdirs==3.10.0
32 | pooch==1.7.0
33 | psd-tools==1.9.28
34 | PyAutoGUI==0.9.54
35 | pycparser==2.21
36 | pykakasi==2.2.1
37 | PyMsgBox==1.0.9
38 | pyperclip==1.8.2
39 | PyRect==0.2.0
40 | pyscreenshot==3.1
41 | PyScreeze==0.1.29
42 | PySide6==6.5.2
43 | PySide6-Addons==6.5.2
44 | PySide6-Essentials==6.5.2
45 | pytsmod==0.3.6
46 | pytweening==1.0.7
47 | PyWavelets==1.4.1
48 | requests==2.31.0
49 | scikit-image==0.21.0
50 | scikit-learn==1.3.0
51 | scipy==1.11.2
52 | shiboken6==6.5.2
53 | soundfile==0.12.1
54 | soxr==0.3.6
55 | StrEnum==0.4.15
56 | threadpoolctl==3.2.0
57 | tifffile==2023.8.30
58 | typing_extensions==4.7.1
59 | urllib3==2.1.0
60 | watchdog==3.0.0
61 | wrapt==1.15.0
62 |
--------------------------------------------------------------------------------
/for_mac/setup_python.command:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | python3 -m venv bin/python-3
6 | source bin/python-3/bin/activate
7 | pip install -r requirements.txt
8 |
--------------------------------------------------------------------------------
/for_mac/りぞりぷと.command:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname "$0")"
4 |
5 | source bin/python-3/bin/activate
6 |
7 | python bin/launcher.py
8 |
--------------------------------------------------------------------------------
/library/python/rs/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/core/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/core/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/core/anim.py:
--------------------------------------------------------------------------------
1 | import enum
2 | from strenum import StrEnum
3 | from rs.core import pipe as p
4 |
5 |
6 | class Type(StrEnum):
7 | aiueo = enum.auto()
8 | aiueo2 = enum.auto()
9 | aiueo3 = enum.auto()
10 | open = enum.auto()
11 |
12 |
13 | TYPE_LIST = p.pipe(
14 | Type,
15 | p.map(lambda x: x.value),
16 | list,
17 | )
18 |
19 | if __name__ == '__main__':
20 | print(TYPE_LIST)
21 |
--------------------------------------------------------------------------------
/library/python/rs/core/app/__init__.py:
--------------------------------------------------------------------------------
1 | from .app import App
2 | from .fusion import Fusion
3 | from .resolve import Resolve
4 |
5 |
--------------------------------------------------------------------------------
/library/python/rs/core/app/app.py:
--------------------------------------------------------------------------------
1 | import dataclasses
2 | import subprocess
3 | from pathlib import Path
4 |
5 | from rs.core import config, util
6 | from rs.core.env import Env, EnvKey
7 |
8 |
9 | @dataclasses.dataclass
10 | class App(config.DataInterface):
11 | def get_path(self) -> Path:
12 | return Path()
13 |
14 | def get_env(self) -> Env:
15 | env = Env()
16 | # PYTHONDONTWRITEBYTECODE
17 | # env.set(EnvKey.PYTHONDONTWRITEBYTECODE, '1')
18 | # PYTHONPATH
19 | env.add_path(EnvKey.PYTHONPATH, suf=[
20 | config.ROOT_PATH.joinpath('library', 'python'),
21 | ])
22 | return env
23 |
24 | def execute(self, args) -> None:
25 | if util.IS_MAC:
26 | self.execute_for_mac(args)
27 | return
28 | path = self.get_path()
29 | cmd = [
30 | str(path),
31 | ] + args
32 | env = self.get_env().to_dict()
33 | subprocess.Popen(
34 | cmd,
35 | env=env,
36 | )
37 |
38 | def execute_for_mac(self, args) -> None:
39 | path = self.get_path()
40 | cmd = [
41 | 'open',
42 | str(path),
43 | ] + args
44 | env = self.get_env().to_dict()
45 | subprocess.Popen(
46 | cmd,
47 | env=env,
48 | )
49 |
--------------------------------------------------------------------------------
/library/python/rs/core/app/fusion.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | import os
4 | import dataclasses
5 | import sys
6 | from pathlib import Path
7 |
8 | from rs.core import config, util
9 | from rs.core import pipe as p
10 | from rs.core.app import App
11 | from rs.core.env import Env, EnvKey
12 |
13 |
14 | def _get_def():
15 | if util.IS_WIN:
16 | return r'C:\Program Files\Blackmagic Design\Fusion 18\Fusion.exe'
17 | elif util.IS_MAC:
18 | return '/Applications/Blackmagic Fusion 18/Fusion.app'
19 | else:
20 | return '/opt/BlackmagicDesign/Fusion9/Fusion'
21 |
22 |
23 | @dataclasses.dataclass
24 | class Fusion(App):
25 | exe: str = _get_def()
26 |
27 | def get_path(self) -> Path:
28 | return Path(self.exe)
29 |
30 | def get_env(self) -> Env:
31 | env = super().get_env()
32 | env.set(
33 | EnvKey.RS_FUSION_USER_PATH,
34 | str(config.FUSION_SET_PATH.joinpath('UserPath')) + os.sep
35 | )
36 |
37 | # FUSION_MasterPrefs
38 | # master_prefs = config.FUSION_SET_PATH.joinpath('rs.prefs')
39 | # env.set(EnvKey.FUSION_MasterPrefs, str(master_prefs))
40 | # env.set(EnvKey.FUSION_MasterPrefs8, str(master_prefs))
41 | # env.set(EnvKey.FUSION9_MasterPrefs, str(master_prefs))
42 | # env.set(EnvKey.FUSION16_MasterPrefs, str(master_prefs))
43 |
44 | # PYTHONPATH
45 | env.add_path(EnvKey.PYTHONPATH, pre=[
46 | config.APP_SET_PATH.joinpath('fusion', 'python'),
47 | ])
48 | if util.IS_WIN:
49 | # PYTHONHOME
50 | env.set(EnvKey.PYTHON3HOME, str(config.PYTHON_INSTALL_PATH))
51 | env.set(EnvKey.FUSION_Python3_Home, str(config.PYTHON_INSTALL_PATH))
52 | env.set(EnvKey.FUSION_Python36_Home, str(config.PYTHON_INSTALL_PATH))
53 | # PATH
54 | python_bin_path = config.PYTHON_INSTALL_PATH
55 | env.add_path(EnvKey.PATH, pre=[
56 | python_bin_path,
57 | ])
58 | else:
59 | # PYTHONPATH
60 | env.add_path(EnvKey.PYTHONPATH, suf=[
61 | config.PYTHON_INSTALL_PATH.joinpath(
62 | 'lib',
63 | 'python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor),
64 | 'site-packages'
65 | ),
66 | ])
67 | return env
68 |
69 |
70 | if __name__ == '__main__':
71 | print(config.PYTHON_INSTALL_PATH)
72 | app = Fusion()
73 | app.execute([])
74 |
--------------------------------------------------------------------------------
/library/python/rs/core/app/resolve.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | import dataclasses
4 |
5 | from rs.core import config, util
6 | from rs.core import pipe as p
7 | from rs.core.app import Fusion
8 | from rs.core.env import Env, EnvKey
9 |
10 |
11 | def _get_def():
12 | if util.IS_WIN:
13 | return r'C:\Program Files\Blackmagic Design\DaVinci Resolve\Resolve.exe'
14 | elif util.IS_MAC:
15 | return '/Applications/DaVinci Resolve/DaVinci Resolve.app'
16 | else:
17 | return '/opt/resolve/bin/resolve'
18 |
19 |
20 | @dataclasses.dataclass
21 | class Resolve(Fusion):
22 | exe: str = _get_def()
23 |
24 | def get_env(self) -> Env:
25 | env = super().get_env()
26 | # PYTHONPATH
27 | env.add_path(EnvKey.PYTHONPATH, pre=[
28 | config.APP_SET_PATH.joinpath('resolve', 'python'),
29 | ])
30 | return env
31 |
32 |
33 | if __name__ == '__main__':
34 | print(config.PYTHON_INSTALL_PATH)
35 | app = Resolve()
36 | app.execute([])
37 |
--------------------------------------------------------------------------------
/library/python/rs/core/colormind.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import json
3 |
4 | URL = 'http://colormind.io'
5 |
6 |
7 | def get_color(model='default', input_list=None):
8 | url = URL + '/api/'
9 | data = {}
10 | if input_list is not None:
11 | data['input'] = input_list
12 | data['model'] = model
13 | try:
14 | response = requests.post(url, data=json.dumps(data), timeout=10)
15 | r = response.json()
16 | except requests.exceptions.RequestException as e:
17 | r = {'error': 'RequestException: ' + str(e)}
18 | return r
19 |
20 |
21 | if __name__ == '__main__':
22 | print(get_color())
23 | lst = ["N", [88, 129, 111], [249, 247, 242], "N", "N"]
24 | print(get_color(input_list=lst))
25 |
--------------------------------------------------------------------------------
/library/python/rs/core/fcp.py:
--------------------------------------------------------------------------------
1 | import math
2 | import xml.etree.ElementTree as ET
3 |
4 |
5 | class Timeline(object):
6 | def __init__(self, xml: str):
7 | self.root = ET.fromstring(xml)
8 | self.seq = self.root.find('sequence')
9 | self.tics = self.seq.find('media').find('video').find('format').find('samplecharacteristics')
10 |
11 | def set_name(self, name: str):
12 | self.root.find('sequence').find('name').text = name
13 |
14 | def set_fps(self, fps: float):
15 | int_fps = math.floor(fps)
16 | is_ntsc = False
17 | ntsc_list = {
18 | 23: 24,
19 | 29: 30,
20 | 47: 48,
21 | 59: 60,
22 | 95: 96,
23 | 119: 120,
24 | }
25 | if int_fps in ntsc_list.keys():
26 | int_fps = ntsc_list[int_fps]
27 | is_ntsc = True
28 | tc = self.seq.find('timecode')
29 | for e in [self.seq, tc, self.tics]:
30 | e.find('rate').find('timebase').text = str(int_fps)
31 | e.find('rate').find('ntsc').text = str(is_ntsc).upper()
32 |
33 | def set_width(self, width: int):
34 | self.tics.find('width').text = str(width)
35 |
36 | def set_height(self, height: int):
37 | self.tics.find('height').text = str(height)
38 |
39 | def set_dropframe(self, is_dropframe: bool):
40 | df = self.seq.find('timecode').find('displayformat')
41 | if is_dropframe:
42 | df.text = 'DF'
43 | else:
44 | df.text = 'NDF'
45 |
46 | def __str__(self):
47 | return '\n'.join([
48 | '',
49 | '',
50 | ET.tostring(self.root, encoding='unicode'),
51 | ])
52 |
53 |
54 | if __name__ == '__main__':
55 | from rs.core import config
56 |
57 | fcp = Timeline(config.DATA_PATH.joinpath('app', 'VoiceDropper', 'Timeline.xml').read_text(encoding='utf-8'))
58 | fcp.set_name('test')
59 | fcp.set_fps(23.976)
60 | fcp.set_width(640)
61 | fcp.set_height(480)
62 | fcp.set_dropframe(True)
63 | print(fcp)
64 |
--------------------------------------------------------------------------------
/library/python/rs/core/lang.py:
--------------------------------------------------------------------------------
1 | import enum
2 | import locale
3 | from pathlib import Path
4 |
5 | import dataclasses
6 | from strenum import StrEnum
7 |
8 | from rs.core import config
9 |
10 | CONFIG_FILE: Path = config.CONFIG_DIR.joinpath('lang.json')
11 |
12 |
13 | class Code(StrEnum):
14 | ja = enum.auto()
15 | en = enum.auto()
16 |
17 | def __str__(self) -> str:
18 | return self.name
19 |
20 | @classmethod
21 | def from_str(cls, s: str) -> 'Code':
22 | if s not in list(cls):
23 | return None
24 | return cls[s]
25 |
26 | @classmethod
27 | def from_locale(cls) -> 'Code':
28 | return cls.from_str(locale.getdefaultlocale()[0][:2])
29 |
30 |
31 | @dataclasses.dataclass
32 | class ConfigData(config.Data):
33 | lang_code: str = str(Code.ja)
34 |
35 |
36 | def save(lang_code: Code):
37 | config.CONFIG_DIR.mkdir(parents=True, exist_ok=True)
38 | c = ConfigData()
39 | c.lang_code = str(lang_code)
40 | c.save(CONFIG_FILE)
41 |
42 |
43 | def load() -> Code:
44 | c = ConfigData()
45 | if CONFIG_FILE.is_file():
46 | c.load(CONFIG_FILE)
47 | return Code.from_str(c.lang_code)
48 |
49 |
50 | if __name__ == '__main__':
51 | print(list(Code))
52 | print(Code.from_str('ja'))
53 | print(Code.from_str('en'))
54 | print(Code.from_str('bbb'))
55 | print(Code.from_locale())
56 |
57 | pass
58 |
--------------------------------------------------------------------------------
/library/python/rs/core/pipe.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | import traceback
4 | import builtins
5 |
6 | from operator import attrgetter
7 | from operator import methodcaller
8 |
9 | from functools import (
10 | partial,
11 | reduce,
12 | )
13 |
14 |
15 | class MethodCaller:
16 | def __getattribute__(self, name):
17 | return partial(methodcaller, name)
18 |
19 | def __getattr__(self, name):
20 | return partial(methodcaller, name)
21 |
22 |
23 | call = MethodCaller()
24 |
25 |
26 | class AttrGetter:
27 | def __getattribute__(self, name):
28 | return attrgetter(name)
29 |
30 | def __getattr__(self, name):
31 | return attrgetter(name)
32 |
33 |
34 | get = AttrGetter()
35 |
36 |
37 | def map(f):
38 | return partial(builtins.map, f)
39 |
40 |
41 | def iter(f):
42 | def _f(x):
43 | list(builtins.map(f, x)) # 要素を計算させる目的でlistにしている。
44 | return []
45 |
46 | return _f
47 |
48 |
49 | def filter(f):
50 | def _f(*args, **kwargs) -> bool:
51 | r = f(*args, **kwargs)
52 | if type(r) is not bool:
53 | try:
54 | raise TypeError
55 | except TypeError as e:
56 | traceback.print_exc()
57 | raise
58 | return r
59 |
60 | return partial(builtins.filter, _f)
61 |
62 |
63 | def do(*fs):
64 | def _do(x):
65 | pipe(x, *fs)
66 | return x
67 |
68 | return _do
69 |
70 |
71 | def pipe(x, *fs):
72 | return reduce(lambda a, b: b(a), fs, x)
73 |
74 |
75 | if __name__ == '__main__':
76 | print('test')
77 | pipe(
78 | "aaa",
79 | print,
80 | )
81 | pipe(
82 | ["aaa", 'bbb'],
83 | do(
84 | iter(print),
85 | ),
86 | print,
87 | )
88 |
89 | print('end')
90 |
91 |
--------------------------------------------------------------------------------
/library/python/rs/core/read_aloud/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/core/read_aloud/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/core/read_aloud/cmd.py:
--------------------------------------------------------------------------------
1 | import dataclasses
2 | from pathlib import Path
3 |
4 | from rs.core import config
5 |
6 |
7 | @dataclasses.dataclass
8 | class Data(config.DataInterface):
9 | exe_path: str = ''
10 |
11 | text: str = ''
12 |
13 | def export(self, path: Path) -> None:
14 | pass
15 |
16 |
17 | if __name__ == '__main__':
18 | pass
19 |
--------------------------------------------------------------------------------
/library/python/rs/core/read_aloud/seika_say2.py:
--------------------------------------------------------------------------------
1 | import subprocess
2 | import dataclasses
3 | from pathlib import Path
4 | from typing import List
5 |
6 | from rs.core.read_aloud import cmd
7 |
8 |
9 | EXE_NAME = 'SeikaSay2.exe'
10 |
11 |
12 | @dataclasses.dataclass
13 | class Data(cmd.Data):
14 | cid: str = '4000'
15 |
16 | volume: str = ''
17 | speed: str = ''
18 | pitch: str = ''
19 | alpha: str = ''
20 | intonation: str = ''
21 | emotion01: str = ''
22 | emotion02: str = ''
23 |
24 | def export(self, path: Path) -> None:
25 | command: List[str] = [
26 | str(self.exe_path),
27 | '-cid',
28 | self.cid,
29 | '-save',
30 | str(path),
31 | ]
32 | if self.volume.strip() != '':
33 | command.append('-volume')
34 | command.append(self.volume.strip())
35 | if self.speed.strip() != '':
36 | command.append('-speed')
37 | command.append(self.speed.strip())
38 | if self.pitch.strip() != '':
39 | command.append('-pitch')
40 | command.append(self.pitch.strip())
41 | if self.alpha.strip() != '':
42 | command.append('-alpha')
43 | command.append(self.alpha.strip())
44 | if self.intonation.strip() != '':
45 | command.append('-intonation')
46 | command.append(self.intonation.strip())
47 | if self.emotion01.strip() != '' and self.emotion02.strip() != '':
48 | command.append('-emotion')
49 | command.append(self.emotion01.strip())
50 | command.append(self.emotion02.strip())
51 | command.append('-t')
52 | command.append(self.text.replace('\n', ' '))
53 | subprocess.run(command, shell=True)
54 |
55 |
56 | if __name__ == '__main__':
57 | s = Data()
58 | s.cid = '4000'
59 | s.volume = '50'
60 | s.speed = '120'
61 | s.pitch = '100'
62 | s.exe_path = 'D:/App/assistantseika20220205c/SeikaSay2/SeikaSay2.exe'
63 | s.text = 'おはようございます。'
64 | s.export(Path('D:/App/assistantseika20220205c/SeikaSay2/out.wav'))
65 | s2 = Data()
66 | s2.cid = '7009'
67 | s2.volume = '1'
68 | s2.speed = '1'
69 | s2.pitch = '0'
70 | s2.intonation = '1'
71 | s2.exe_path = 'D:/App/assistantseika20220205c/SeikaSay2/SeikaSay2.exe'
72 | s2.text = 'おはようございます。'
73 | s2.export(Path('D:/App/assistantseika20220205c/SeikaSay2/out2.wav'))
74 |
--------------------------------------------------------------------------------
/library/python/rs/core/read_aloud/softalk.py:
--------------------------------------------------------------------------------
1 | import subprocess
2 | import dataclasses
3 | from pathlib import Path
4 | from typing import List
5 |
6 | from rs.core.read_aloud import cmd
7 |
8 | VOICE_LIST: List[str] = [
9 | '女性01',
10 | '女性02',
11 | '男性01',
12 | '男性02',
13 | 'ロボット',
14 | '中性',
15 | '機械',
16 | '特殊',
17 | '女性 (defo1)',
18 | '女性 (f1c)',
19 | '女性 (f3a)',
20 | '女性 (f4)',
21 | '女性 (rm)',
22 | '女性 (rm3)',
23 | '女性 (teto1)',
24 | '女性 (huskey)',
25 | '女性 (momo1)',
26 | '女性 (nonbiri)',
27 | '男性 (m4b)',
28 | '男性 (m5)',
29 | '中性 (mf1)',
30 | '中性 (mf2)',
31 | 'ロボット (robo)',
32 | 'ロボット (rb2)',
33 | 'ロボット (rb3)',
34 | '女性 (F1E)',
35 | '女性 (F2E)',
36 | '男性 (M1E)',
37 | 'Microsoft Haruka Desktop - Japanese',
38 | 'Microsoft Zira Desktop - English (United States)',
39 | ]
40 |
41 | EXE_NAME = 'softalkw.exe'
42 |
43 |
44 | @dataclasses.dataclass
45 | class Data(cmd.Data):
46 | voice: str = '女性01'
47 |
48 | volume: int = 50
49 | speed: int = 120
50 | pitch: int = 100
51 |
52 | def export(self, path: Path) -> None:
53 | command: List[str] = [
54 | str(self.exe_path),
55 | '/R:' + str(path),
56 | '/NM:' + self.voice,
57 | '/V:' + str(self.volume),
58 | '/S:' + str(self.speed),
59 | '/O:' + str(self.pitch),
60 | '/W:' + self.text.replace('\n', ' '),
61 | ]
62 | subprocess.run(command, shell=True)
63 |
64 |
65 | if __name__ == '__main__':
66 | s = Data()
67 | s.exe_path = 'D:/App/softalk/softalkw.exe'
68 | s.text = 'おはようございます。'
69 | s.export(Path('D:/App/softalk/out.wav'))
70 |
--------------------------------------------------------------------------------
/library/python/rs/core/srt.py:
--------------------------------------------------------------------------------
1 | from datetime import timedelta
2 | from pathlib import Path
3 | from typing import List
4 |
5 | import dataclasses
6 | from rs.core import (
7 | pipe as p,
8 | util,
9 | )
10 |
11 |
12 | def seconds2str(s: float) -> str:
13 | t = timedelta(seconds=s)
14 | l: List[str] = str(t).split(':')
15 | if len(l) == 3:
16 | l[0] = l[0].zfill(2)
17 | if len(l[2]) == 2:
18 | l[2] += '.000000'
19 | l[2] = l[2].replace('.', ',')[:6]
20 | return ':'.join(l)
21 |
22 |
23 | @dataclasses.dataclass
24 | class Subtitle:
25 | start_time: float = 0.0 # seconds
26 | end_time: float = 0.0 # seconds
27 | text: str = ''
28 |
29 | def __str__(self) -> str:
30 | return '%s --> %s\n%s' % (
31 | seconds2str(self.start_time),
32 | seconds2str(self.end_time),
33 | self.text.strip(),
34 | )
35 |
36 |
37 | class Srt:
38 | def __init__(self):
39 | self.subtitles: List[Subtitle] = []
40 |
41 | def __str__(self) -> str:
42 | return p.pipe(
43 | self.subtitles,
44 | enumerate,
45 | p.map(lambda x: '%d\n%s\n' % (x[0] + 1, x[1])),
46 | '\n'.join,
47 | )
48 |
49 | def save(self, path: Path) -> None:
50 | util.write_text(
51 | path,
52 | str(self),
53 | )
54 |
55 |
56 | if __name__ == '__main__':
57 | srt = Srt()
58 | s1 = Subtitle(0, 1.2, 'おはようございます。')
59 | s2 = Subtitle()
60 | s2.start_time = 0.0
61 | s2.end_time = 3456.3333333
62 | s2.text = 'こんばんは'
63 | srt.subtitles.append(s1)
64 | srt.subtitles.append(s2)
65 | print(str(srt))
66 | print('end')
67 |
--------------------------------------------------------------------------------
/library/python/rs/core/txt.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from rs.core import config
4 |
5 |
6 | def read(f: Path, c_code: str):
7 | import chardet
8 | # 文字コード
9 | _code = c_code.strip().lower()
10 |
11 | if _code in ['auto', '']:
12 | with open(f, 'rb') as _f:
13 | content = _f.read()
14 | char_code = chardet.detect(content)
15 | enc: str = char_code['encoding']
16 |
17 | if enc is None or enc.lower() not in config.ENCODING_LIST:
18 | try:
19 | t = content.decode(encoding='utf-8')
20 | except:
21 | t = content.decode(encoding='cp932')
22 | else:
23 | if enc.lower() == 'shift_jis':
24 | enc = 'cp932'
25 | t = content.decode(encoding=enc)
26 | else:
27 | t = f.read_text(encoding=_code)
28 |
29 | # 改行コード
30 | t = t.replace('\r\n', '\n')
31 | return t
32 |
--------------------------------------------------------------------------------
/library/python/rs/core/ust.py:
--------------------------------------------------------------------------------
1 | import re
2 | from pathlib import Path
3 |
4 | from rs.core import (
5 | pipe as p,
6 | )
7 |
8 |
9 | def read(path: Path):
10 | dct = {
11 | 'notes': []
12 | }
13 | for lst in p.pipe(
14 | path.read_text(encoding='cp932'),
15 | lambda x: re.split(r'\n(?=\[#)', x),
16 | p.map(p.call.split('\n')),
17 | p.filter(lambda x: len(x) > 1),
18 | p.map(lambda x: [
19 | re.sub(r'\[#(.+)]', r'\1', x[0]),
20 | p.pipe(
21 | x[1:],
22 | p.map(p.call.split('=')),
23 | p.filter(lambda y: len(y) == 1 or len(y) == 2),
24 | p.map(lambda y: [y[0], None] if len(y) == 1 else y),
25 | dict,
26 | lambda y: y if len(y.keys()) != 1 else (
27 | y if list(y.values())[0] is not None else list(y.keys())[0]
28 | ),
29 | ),
30 | ]),
31 | list,
32 | ):
33 | try:
34 | index = int(lst[0])
35 | dct['notes'].append(lst[1])
36 | dct['notes'][-1]['Index'] = index
37 | except ValueError:
38 | dct[lst[0]] = lst[1]
39 | return dct
40 |
41 |
42 | if __name__ == '__main__':
43 | pass
44 |
--------------------------------------------------------------------------------
/library/python/rs/core/util.py:
--------------------------------------------------------------------------------
1 | import functools
2 | import platform
3 | import subprocess
4 | import unicodedata
5 |
6 | from pathlib import Path
7 |
8 | import budoux
9 |
10 | from rs.core import (
11 | pipe as p,
12 | )
13 |
14 |
15 | class Singleton:
16 | _unique_instance = None
17 |
18 | @classmethod
19 | def get_instance(cls):
20 | if not cls._unique_instance:
21 | cls._unique_instance = cls()
22 |
23 | return cls._unique_instance
24 |
25 |
26 | def memoize(f):
27 | cache = f.cache = {}
28 |
29 | def del_cache(*args, **kwargs):
30 | key = args + tuple(kwargs.items())
31 | if key in cache:
32 | del cache[key]
33 |
34 | f.del_cache = del_cache
35 |
36 | @functools.wraps(f)
37 | def wrapper(*args, **kwargs):
38 | key = args + tuple(kwargs.items())
39 | if key not in cache:
40 | cache[key] = f(*args, **kwargs)
41 | return cache[key]
42 |
43 | return wrapper
44 |
45 |
46 | IS_WIN = platform.system() == 'Windows'
47 | IS_MAC = platform.system() == 'Darwin'
48 |
49 |
50 | def write_text(path: Path, s: str) -> None:
51 | with path.open('w', encoding='utf-8', newline='\n') as f:
52 | f.write(s)
53 |
54 |
55 | def open_url(url):
56 | import webbrowser
57 | if IS_WIN:
58 | webbrowser.get('windows-default').open(url)
59 | elif IS_MAC:
60 | webbrowser.get('macosx').open(url)
61 | else:
62 | webbrowser.open(url)
63 |
64 |
65 | def open_directory(path: Path):
66 | if IS_WIN:
67 | subprocess.Popen(['explorer', str(path)])
68 | elif IS_MAC:
69 | subprocess.Popen(['open', str(path)])
70 | else:
71 | subprocess.Popen(['xdg-open', str(path)])
72 |
73 |
74 | def get_char_width(c):
75 | data = unicodedata.east_asian_width(c)
76 | return 1 if data in ['Na', 'H'] else 2
77 |
78 |
79 | def get_str_width(s):
80 | return p.pipe(
81 | s,
82 | p.map(get_char_width),
83 | sum,
84 | )
85 |
86 |
87 | def str2lines(s: str, width: int):
88 | if width <= 0:
89 | return s
90 | parser = budoux.load_default_japanese_parser()
91 | ss = parser.parse(s)
92 | lines = ['']
93 | for _s in ss:
94 | if get_str_width(lines[-1] + _s) > width:
95 | lines.append(_s)
96 | else:
97 | lines[-1] += _s
98 | return '\n'.join(lines)
99 |
100 |
101 | if __name__ == '__main__':
102 | print(get_str_width('abcあいう'))
103 | print(str2lines('今日は晴れています。', 10))
104 |
--------------------------------------------------------------------------------
/library/python/rs/core/voicevox/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/core/voicevox/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/core/voicevox/api.py:
--------------------------------------------------------------------------------
1 | import json
2 | import requests
3 | import time
4 |
5 | VOICEVOX_PORT: int = 50021
6 | VOICEVOX_NEMO_PORT: int = 50121
7 | SHAREVOX_PORT: int = 50025
8 |
9 |
10 | def get(command: str, max_retry: int, port: int = VOICEVOX_PORT):
11 | r = None
12 | for i in range(max_retry):
13 | r = requests.get(
14 | f'http://localhost:{port}/' + command,
15 | timeout=(10.0, 300.0),
16 | )
17 | if r.status_code == requests.codes.ok:
18 | break
19 | time.sleep(1)
20 | if r is None:
21 | raise ConnectionError(f'VOICEVOXとの通信に失敗しました。 {command}:')
22 | return r
23 |
24 |
25 | def post(command: str, params, data, max_retry: int, port: int = VOICEVOX_PORT):
26 | r = None
27 | for i in range(max_retry):
28 | r = requests.post(
29 | f'http://localhost:{port}/' + command,
30 | params=params,
31 | data=json.dumps(data),
32 | timeout=(10.0, 300.0),
33 | )
34 | if r.status_code == requests.codes.ok:
35 | break
36 | time.sleep(1)
37 | if r is None:
38 | raise ConnectionError(f'VOICEVOXとの通信に失敗しました。 {command}:')
39 | return r
40 |
41 |
42 | def core_versions(max_retry: int, port: int = VOICEVOX_PORT):
43 | command = 'core_versions'
44 | return get(command, max_retry, port).json()
45 |
46 |
47 | def speakers(max_retry: int, port: int = VOICEVOX_PORT):
48 | command = 'speakers'
49 | return get(command, max_retry, port).json()
50 |
51 |
52 | def audio_query(text: str, speaker: int, max_retry: int, port: int = VOICEVOX_PORT):
53 | command = 'audio_query'
54 | params = {'text': text, 'speaker': speaker}
55 | return post(command, params, None, max_retry, port).json()
56 |
57 |
58 | def synthesis(speaker: int, data, max_retry: int, port: int = VOICEVOX_PORT):
59 | command = 'synthesis'
60 | params = {'speaker': speaker}
61 | return post(command, params, data, max_retry, port).content
62 |
63 |
64 | if __name__ == "__main__":
65 | from pprint import pprint
66 |
67 | print(core_versions(10))
68 | print(speakers(10))
69 | query_data = audio_query('こんにちは さようなら', 8, 10)
70 | pprint(query_data)
71 | print(synthesis(8, query_data, 10))
72 |
--------------------------------------------------------------------------------
/library/python/rs/gui/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/gui/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/gui/appearance.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtGui import (
2 | QPalette,
3 | QColor,
4 | )
5 | from PySide6.QtCore import (
6 | Qt,
7 | )
8 |
9 | stylesheet = '\n'.join(
10 | [
11 | '* {font: 14px "Consolas";}',
12 | 'QMenu {font: 12px "Arial";}',
13 | 'QMenu { background-color: #2b2b2b; }',
14 | 'QMenu::item:disabled { color: #606060; }',
15 | 'QMenu::item:selected { background-color: #0a64b4; }',
16 | ]
17 | )
18 |
19 | in_stylesheet = '\n'.join(
20 | [
21 | 'background-color: #2f5d50;',
22 | 'color: rgb(255, 255, 255);',
23 | ]
24 | )
25 | ex_stylesheet = '\n'.join(
26 | [
27 | 'background-color: #74325c;',
28 | 'color: rgb(255, 255, 255);',
29 | ]
30 | )
31 |
32 | other_stylesheet = '\n'.join(
33 | [
34 | 'background-color: #274a78;',
35 | 'color: rgb(255, 255, 255);',
36 | ]
37 | )
38 |
39 |
40 | def _get_palette():
41 | text_color: QColor = QColor(210, 210, 210)
42 | base_color: QColor = QColor(40, 40, 46)
43 | p = QPalette()
44 | p.setColor(QPalette.Window, base_color)
45 | p.setColor(QPalette.WindowText, text_color)
46 | p.setColor(QPalette.Base, QColor(23, 24, 26))
47 | p.setColor(QPalette.AlternateBase, base_color)
48 | p.setColor(QPalette.ToolTipBase, QColor(0, 0, 0))
49 | p.setColor(QPalette.ToolTipText, text_color)
50 | p.setColor(QPalette.Text, text_color)
51 | p.setColor(QPalette.Button, base_color)
52 | p.setColor(QPalette.ButtonText, text_color)
53 | p.setColor(QPalette.BrightText, Qt.red)
54 |
55 | p.setColor(QPalette.Disabled, QPalette.Base, QColor(80, 80, 80))
56 | p.setColor(QPalette.Disabled, QPalette.ButtonText, QColor(140, 140, 140))
57 | p.setColor(QPalette.Disabled, QPalette.WindowText, QColor(140, 140, 140))
58 | p.setColor(QPalette.Disabled, QPalette.Text, QColor(190, 190, 190))
59 |
60 | p.setColor(QPalette.Highlight, QColor(10, 100, 180))
61 | p.setColor(QPalette.HighlightedText, QColor(255, 255, 255))
62 |
63 | return p
64 |
65 |
66 | palette = _get_palette()
67 |
--------------------------------------------------------------------------------
/library/python/rs/gui/chara/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/gui/chara/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/gui/frame_layout/__init__.py:
--------------------------------------------------------------------------------
1 | from .frame_layout import Form
2 |
--------------------------------------------------------------------------------
/library/python/rs/gui/frame_layout/frame_layout.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | import sys
4 |
5 | from PySide6 import QtCore
6 |
7 | from PySide6.QtWidgets import QApplication, QWidget
8 |
9 | from rs.gui.frame_layout.frame_layout_ui import Ui_Form
10 |
11 |
12 | class Form(QWidget):
13 | def __init__(self, parent=None):
14 | super(Form, self).__init__(parent)
15 | self.ui = Ui_Form()
16 | self.ui.setupUi(self)
17 | self._collapse = False
18 | self._text = ''
19 | self.setText('')
20 |
21 | # event
22 | self.ui.toolButton.clicked.connect(self.toggleCollapse)
23 |
24 | def setText(self, s):
25 | self._text = s
26 | self.ui.toolButton.setText(' ' + s)
27 |
28 | def setStyleSheetToTitle(self, styleSheet):
29 | self.ui.toolButton.setStyleSheet(styleSheet)
30 |
31 | def text(self):
32 | return self._text
33 |
34 | def isCollapse(self):
35 | return self._collapse
36 |
37 | def setCollapse(self, b):
38 | self._collapse = b
39 | self.ui.frame.setHidden(self._collapse)
40 |
41 | if self._collapse:
42 | self.ui.toolButton.setArrowType(QtCore.Qt.ArrowType.RightArrow)
43 | else:
44 | self.ui.toolButton.setArrowType(QtCore.Qt.ArrowType.DownArrow)
45 |
46 | def toggleCollapse(self):
47 | self.setCollapse(not self._collapse)
48 |
49 | def layout(self):
50 | return self.ui.frame.layout()
51 |
52 | def setLayout(self, lo):
53 | self.ui.frame.setLayout(lo)
54 |
55 |
56 | if __name__ == "__main__":
57 | app = QApplication(sys.argv)
58 |
59 | form = Form()
60 |
61 | form.setText('t')
62 |
63 | form.show()
64 |
65 | sys.exit(app.exec_())
66 |
--------------------------------------------------------------------------------
/library/python/rs/gui/frame_layout/frame_layout.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Form
4 |
5 |
6 |
7 | 0
8 | 0
9 | 348
10 | 200
11 |
12 |
13 |
14 | Form
15 |
16 |
17 |
18 | 0
19 |
20 |
21 | 0
22 |
23 |
24 | 0
25 |
26 |
27 | 0
28 |
29 | -
30 |
31 |
32 | 0
33 |
34 |
-
35 |
36 |
37 |
38 | 0
39 | 0
40 |
41 |
42 |
43 | FrameLayout
44 |
45 |
46 |
47 | 16
48 | 16
49 |
50 |
51 |
52 | Qt::ToolButtonTextBesideIcon
53 |
54 |
55 | Qt::DownArrow
56 |
57 |
58 |
59 | -
60 |
61 |
62 | QFrame::StyledPanel
63 |
64 |
65 | QFrame::Raised
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/library/python/rs/gui/frame_layout/frame_layout_ui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'frame_layout.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QFrame, QSizePolicy, QToolButton,
19 | QVBoxLayout, QWidget)
20 |
21 | class Ui_Form(object):
22 | def setupUi(self, Form):
23 | if not Form.objectName():
24 | Form.setObjectName(u"Form")
25 | Form.resize(348, 200)
26 | self.verticalLayout_2 = QVBoxLayout(Form)
27 | self.verticalLayout_2.setObjectName(u"verticalLayout_2")
28 | self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
29 | self.verticalLayout = QVBoxLayout()
30 | self.verticalLayout.setSpacing(0)
31 | self.verticalLayout.setObjectName(u"verticalLayout")
32 | self.toolButton = QToolButton(Form)
33 | self.toolButton.setObjectName(u"toolButton")
34 | sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
35 | sizePolicy.setHorizontalStretch(0)
36 | sizePolicy.setVerticalStretch(0)
37 | sizePolicy.setHeightForWidth(self.toolButton.sizePolicy().hasHeightForWidth())
38 | self.toolButton.setSizePolicy(sizePolicy)
39 | self.toolButton.setIconSize(QSize(16, 16))
40 | self.toolButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
41 | self.toolButton.setArrowType(Qt.DownArrow)
42 |
43 | self.verticalLayout.addWidget(self.toolButton)
44 |
45 | self.frame = QFrame(Form)
46 | self.frame.setObjectName(u"frame")
47 | self.frame.setFrameShape(QFrame.StyledPanel)
48 | self.frame.setFrameShadow(QFrame.Raised)
49 |
50 | self.verticalLayout.addWidget(self.frame)
51 |
52 |
53 | self.verticalLayout_2.addLayout(self.verticalLayout)
54 |
55 |
56 | self.retranslateUi(Form)
57 |
58 | QMetaObject.connectSlotsByName(Form)
59 | # setupUi
60 |
61 | def retranslateUi(self, Form):
62 | Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
63 | self.toolButton.setText(QCoreApplication.translate("Form", u"FrameLayout", None))
64 | # retranslateUi
65 |
66 |
--------------------------------------------------------------------------------
/library/python/rs/gui/lang/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/gui/lang/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/gui/lang/lang.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | from PySide6.QtCore import (
4 | Qt,
5 | )
6 | from PySide6.QtWidgets import (
7 | QApplication,
8 | QMainWindow,
9 | )
10 |
11 | from rs.core import (
12 | lang,
13 | )
14 | from rs.gui import (
15 | appearance,
16 | )
17 | from rs.gui.lang.lang_ui import Ui_MainWindow
18 |
19 |
20 | class MainWindow(QMainWindow):
21 | def __init__(self, parent=None):
22 | super().__init__(parent)
23 | self.ui = Ui_MainWindow()
24 | self.ui.setupUi(self)
25 | self.setWindowTitle('Lang')
26 | self.setWindowFlags(
27 | Qt.Window
28 | | Qt.WindowCloseButtonHint
29 | # | Qt.WindowStaysOnTopHint
30 | )
31 | self.resize(100, 50)
32 |
33 | # style sheet
34 | self.ui.setButton.setStyleSheet(appearance.ex_stylesheet)
35 |
36 | # event
37 |
38 | self.ui.cancelButton.clicked.connect(self.close)
39 | self.ui.setButton.clicked.connect(self.save)
40 |
41 | def open(self) -> None:
42 | lang_code = lang.load()
43 | self.ui.UseEnBox.setChecked(lang_code == lang.Code.en)
44 |
45 | def save(self) -> None:
46 | lang_code = lang.Code.en if self.ui.UseEnBox.isChecked() else lang.Code.ja
47 | lang.save(lang_code)
48 | self.close()
49 |
50 | def show(self) -> None:
51 | self.open()
52 | super().show()
53 |
54 |
55 | def run() -> None:
56 | app = QApplication(sys.argv)
57 | app.setStyle("Fusion")
58 | app.setPalette(appearance.palette)
59 | app.setStyleSheet(appearance.stylesheet)
60 |
61 | window = MainWindow()
62 | window.show()
63 | sys.exit(app.exec_())
64 |
65 |
66 | if __name__ == '__main__':
67 | run()
68 |
--------------------------------------------------------------------------------
/library/python/rs/gui/lang/lang.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 192
10 | 82
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 | Use English(WIP)
22 |
23 |
24 |
25 | -
26 |
27 |
28 | Qt::Vertical
29 |
30 |
31 |
32 | 20
33 | 0
34 |
35 |
36 |
37 |
38 | -
39 |
40 |
-
41 |
42 |
43 | Qt::Horizontal
44 |
45 |
46 |
47 | 40
48 | 20
49 |
50 |
51 |
52 |
53 | -
54 |
55 |
56 |
57 | 80
58 | 30
59 |
60 |
61 |
62 | set
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 | 80
71 | 30
72 |
73 |
74 |
75 | cancel
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/library/python/rs/gui/log.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtWidgets import (
2 | QTextEdit,
3 | QApplication,
4 | )
5 | from PySide6.QtGui import (
6 | QColor,
7 | )
8 |
9 | TEXT_COLOR = QColor(210, 210, 210)
10 | WARNING_COLOR = QColor(210, 110, 0)
11 | ERROR_COLOR = QColor(210, 0, 0)
12 |
13 |
14 | class LogTextEdit(QTextEdit):
15 | def __init__(self, *args, **kwargs):
16 | super().__init__(*args, **kwargs)
17 |
18 | def log(self, text: str, color: QColor = TEXT_COLOR) -> None:
19 | self.setTextColor(color)
20 | self.append(text)
21 | self.setTextColor(TEXT_COLOR)
22 | QApplication.processEvents()
23 |
--------------------------------------------------------------------------------
/library/python/rs/gui/script_button.py:
--------------------------------------------------------------------------------
1 | import os
2 | import subprocess
3 | from pathlib import Path
4 | from typing import Optional
5 |
6 | from PySide6.QtWidgets import (
7 | QPushButton,
8 | )
9 |
10 | from rs.core import (
11 | config,
12 | util,
13 | )
14 |
15 |
16 | def run_python(path, args, env=None):
17 | cmd = [
18 | str(config.PYTHONW_EXE_PATH) if util.IS_WIN else 'python3',
19 | str(path),
20 | ] + list(args)
21 | if env is None:
22 | env = os.environ.copy()
23 | subprocess.Popen(
24 | cmd,
25 | # shell=True,
26 | env=env,
27 | )
28 |
29 |
30 | class ScriptButton(QPushButton):
31 | def __init__(self, *args, script_path=None, env=None, **kwargs):
32 | super().__init__(*args, **kwargs)
33 |
34 | self.script_file: Optional[Path] = script_path
35 | self.env = env
36 |
37 | self.clicked.connect(self.run)
38 |
39 | def run(self) -> None:
40 | if self.script_file is None:
41 | return
42 | run_python(self.script_file, [], env=self.env)
43 |
--------------------------------------------------------------------------------
/library/python/rs/gui/table/__init__.py:
--------------------------------------------------------------------------------
1 | from .model import Model, RowData
2 | from .view import View
3 |
4 | if __name__ == '__main__':
5 | pass
6 |
--------------------------------------------------------------------------------
/library/python/rs/tool/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/tool/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/tool/aquestalk_wrapper/__init__.py:
--------------------------------------------------------------------------------
1 | from .aquestalk_wrapper import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/aquestalk_wrapper/aquestalk.py:
--------------------------------------------------------------------------------
1 | import subprocess
2 | import time
3 | from typing import List
4 |
5 | from PySide6.QtCore import (
6 | QObject,
7 | Signal,
8 | )
9 |
10 |
11 | class Player(QObject):
12 | finished = Signal()
13 |
14 | def __init__(self, parent=None):
15 | super().__init__(parent)
16 | self.is_canceled = False
17 | self.exe_path: str = ''
18 | self.data: List[dict] = []
19 |
20 | def play(self):
21 | for d in self.data:
22 | if self.is_canceled:
23 | break
24 | command: List[str] = [
25 | str(self.exe_path),
26 | '/T',
27 | d['text'].replace('\n', ' '),
28 | '/P',
29 | d['chara'],
30 | ]
31 | pro = subprocess.Popen(command)
32 | while not self.is_canceled and pro.poll() is None:
33 | time.sleep(0.01)
34 | if pro.poll() is None:
35 | pro.kill()
36 | self.finished.emit()
37 |
38 | def export(self):
39 | for d in self.data:
40 | command: List[str] = [
41 | str(self.exe_path),
42 | '/T',
43 | d['text'].replace('\n', ' '),
44 | '/P',
45 | d['chara'],
46 | '/W',
47 | str(d['wav_file']),
48 | ]
49 | subprocess.run(command)
50 | with d['txt_file'].open('w', encoding='utf-8-sig', newline='\n') as f:
51 | f.write(d['subtitle'])
52 | self.finished.emit()
53 |
54 | def stop(self):
55 | self.is_canceled = True
56 |
57 |
58 | if __name__ == '__main__':
59 | a = Player()
60 | a.exe_path = 'D:/App/aquestalkplayer_20220822/aquestalkplayer/AquesTalkPlayer.exe'
61 | a.data = [
62 | {
63 | 'chara': 'れいむ',
64 | 'text': 'おはようございます。',
65 | },
66 | {
67 | 'chara': 'まりさ',
68 | 'text': 'こんばんは',
69 | },
70 | ]
71 | a.play()
72 |
--------------------------------------------------------------------------------
/library/python/rs/tool/characters/__init__.py:
--------------------------------------------------------------------------------
1 | from .characters import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/disk_cache/__init__.py:
--------------------------------------------------------------------------------
1 | from .disk_cache import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/disk_cache/drag_button.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from PySide6.QtCore import (
4 | QMimeData,
5 | QSize,
6 | )
7 | from PySide6.QtGui import (
8 | QDrag,
9 | QIcon,
10 | )
11 | from PySide6.QtWidgets import QPushButton
12 |
13 | from rs.core import (
14 | config,
15 | )
16 |
17 |
18 | class DragButton(QPushButton):
19 | def __init__(self, *arg, **kwarg):
20 | super().__init__(*arg, **kwarg)
21 | cmd_dir: Path = config.CONFIG_DIR.joinpath('DiskCache', 'Scripts')
22 | cmd_dir.mkdir(parents=True, exist_ok=True)
23 | self.cmd_file: Path = cmd_dir.joinpath('cmd.lua')
24 | script_base_file: Path = config.ROOT_PATH.joinpath('data', 'app', 'DiskCache', 'script_base.txt')
25 | self.script_base: str = script_base_file.read_text(encoding='utf-8')
26 | # icon
27 | icon_file = config.ROOT_PATH.joinpath('data', 'image', 'icon', 'dad.svg')
28 | dad_icon = QIcon(str(icon_file))
29 | self.setIcon(dad_icon)
30 | self.setIconSize(QSize(40, 40))
31 | #
32 | self.render = True
33 | self.color = ''
34 | self.indexes = []
35 |
36 | def mousePressEvent(self, e):
37 | self.cmd_file.write_text(
38 | '\n'.join([
39 | self.script_base,
40 | 'cache(',
41 | '\t\t%s,' % str(self.render).lower(),
42 | '\t\t"%s",' % self.color,
43 | '\t\t{ % s}' % ', '.join(self.indexes),
44 | ')\n',
45 | ]),
46 | encoding='utf-8',
47 | )
48 | # Drag
49 | m = QMimeData()
50 | m.setUrls(['file:' + str(self.cmd_file).replace('\\', '/')])
51 | drag = QDrag(self)
52 | drag.setMimeData(m)
53 | drag.exec_()
54 |
--------------------------------------------------------------------------------
/library/python/rs/tool/macro2group/__init__.py:
--------------------------------------------------------------------------------
1 | from .macro2group import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/macro2group/macro2group.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Form
4 |
5 |
6 |
7 | 0
8 | 0
9 | 187
10 | 137
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
20 |
21 | Consolas
22 | 22
23 |
24 |
25 |
26 | DROP AREA
27 |
28 |
29 | false
30 |
31 |
32 | Qt::AlignCenter
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/library/python/rs/tool/macro2group/macro2group_ui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'macro2group.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QLabel, QSizePolicy, QVBoxLayout,
19 | QWidget)
20 |
21 | class Ui_Form(object):
22 | def setupUi(self, Form):
23 | if not Form.objectName():
24 | Form.setObjectName(u"Form")
25 | Form.resize(187, 137)
26 | self.verticalLayout = QVBoxLayout(Form)
27 | self.verticalLayout.setObjectName(u"verticalLayout")
28 | self.label = QLabel(Form)
29 | self.label.setObjectName(u"label")
30 | font = QFont()
31 | font.setFamilies([u"Consolas"])
32 | font.setPointSize(22)
33 | self.label.setFont(font)
34 | self.label.setScaledContents(False)
35 | self.label.setAlignment(Qt.AlignCenter)
36 |
37 | self.verticalLayout.addWidget(self.label)
38 |
39 |
40 | self.retranslateUi(Form)
41 |
42 | QMetaObject.connectSlotsByName(Form)
43 | # setupUi
44 |
45 | def retranslateUi(self, Form):
46 | Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
47 | self.label.setText(QCoreApplication.translate("Form", u"DROP AREA", None))
48 | # retranslateUi
49 |
50 |
--------------------------------------------------------------------------------
/library/python/rs/tool/psd_splitter/__init__.py:
--------------------------------------------------------------------------------
1 | from .psd_splitter import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/resolve_launcher/__init__.py:
--------------------------------------------------------------------------------
1 | from .resolve_launcher import (
2 | run,
3 | run_resolve,
4 | run_fusion,
5 | )
6 |
--------------------------------------------------------------------------------
/library/python/rs/tool/resolve_launcher/drag_button.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from PySide6.QtCore import (
4 | QMimeData,
5 | QSize,
6 | )
7 | from PySide6.QtGui import (
8 | QDrag,
9 | QIcon,
10 | )
11 | from PySide6.QtWidgets import QPushButton
12 |
13 | from rs.core import (
14 | config,
15 | )
16 |
17 |
18 | class DragButton(QPushButton):
19 | def __init__(self, *arg, **kwarg):
20 | super().__init__(*arg, **kwarg)
21 | # icon
22 | icon_file = config.ROOT_PATH.joinpath('data', 'image', 'icon', 'dad.svg')
23 | dad_icon = QIcon(str(icon_file))
24 | self.setIcon(dad_icon)
25 | self.setIconSize(QSize(40, 40))
26 | #
27 | self.lua_file = None
28 |
29 | def setLuaFile(self, path: Path):
30 | self.lua_file = path
31 |
32 | def mousePressEvent(self, e):
33 | lua = self.lua_file
34 | if lua is None or not lua.is_file():
35 | return
36 | # Drag
37 | m = QMimeData()
38 | m.setUrls(['file:' + str(lua).replace('\\', '/')])
39 | drag = QDrag(self)
40 | drag.setMimeData(m)
41 | drag.exec_()
42 |
--------------------------------------------------------------------------------
/library/python/rs/tool/script_launcher/__init__.py:
--------------------------------------------------------------------------------
1 | from .script_launcher import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/script_launcher/preset_form/__init__.py:
--------------------------------------------------------------------------------
1 | from .drag_button import (
2 | DragButton,
3 | )
4 | from .preset_form import (
5 | Form,
6 | )
7 |
--------------------------------------------------------------------------------
/library/python/rs/tool/script_launcher/preset_form/drag_button.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from PySide6.QtCore import (
4 | QMimeData,
5 | QSize,
6 | )
7 | from PySide6.QtGui import (
8 | QDrag,
9 | QIcon,
10 | )
11 | from PySide6.QtWidgets import QPushButton
12 |
13 | from rs.core import (
14 | config,
15 | pipe as p,
16 | )
17 |
18 |
19 | class DragButton(QPushButton):
20 | def __init__(self, *arg, **kwarg):
21 | super().__init__(*arg, **kwarg)
22 | cmd_dir: Path = config.CONFIG_DIR.joinpath('ScriptLauncher', 'Scripts')
23 | cmd_dir.mkdir(parents=True, exist_ok=True)
24 | self.cmd_file: Path = cmd_dir.joinpath('Apply_cmd.lua')
25 | script_base_file: Path = config.ROOT_PATH.joinpath('data', 'app', 'ScriptLauncher', 'script_base.txt')
26 | self.script_base: str = script_base_file.read_text(encoding='utf-8')
27 |
28 | # icon
29 | icon_file = config.ROOT_PATH.joinpath('data', 'image', 'icon', 'dad.svg')
30 | dad_icon = QIcon(str(icon_file))
31 | self.setIcon(dad_icon)
32 | self.setIconSize(QSize(40, 40))
33 | #
34 | self.filter_file = None
35 | self.setting_file = None
36 | self.track_index: int = 1
37 |
38 | def setFilterFile(self, path):
39 | self.filter_file = path
40 |
41 | def setSettingFile(self, path):
42 | self.setting_file = path
43 |
44 | def setTrackIndex(self, index: int):
45 | self.track_index = index
46 |
47 | def mousePressEvent(self, e):
48 | setting = self.setting_file
49 | if setting is None or not setting.is_file():
50 | return
51 | filter_file = self.filter_file
52 | filter_text = ''
53 | if filter_file is not None and filter_file.is_file():
54 | filter_text = p.pipe(
55 | filter_file.read_text(encoding='utf-8'),
56 | p.call.split('\n'),
57 | p.map(p.call.strip()),
58 | p.filter(lambda s: s != ''),
59 | p.map(lambda s: ' "' + s + '"'),
60 | list,
61 | ',\n'.join,
62 | )
63 | r = self.script_base % (str(setting).replace('\\', '\\\\'), filter_text, self.track_index)
64 | self.cmd_file.write_text(
65 | r,
66 | encoding='utf-8',
67 | )
68 | # Drag
69 | m = QMimeData()
70 | m.setUrls(['file:' + str(self.cmd_file).replace('\\', '/')])
71 | drag = QDrag(self)
72 | drag.setMimeData(m)
73 | drag.exec_()
74 |
--------------------------------------------------------------------------------
/library/python/rs/tool/script_launcher/preset_form/filter.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Form
4 |
5 |
6 |
7 | 0
8 | 0
9 | 458
10 | 472
11 |
12 |
13 |
14 | Form
15 |
16 |
17 | -
18 |
19 |
20 | -
21 |
22 |
-
23 |
24 |
25 | Qt::Horizontal
26 |
27 |
28 |
29 | 40
30 | 20
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 | save
39 |
40 |
41 |
42 | -
43 |
44 |
45 | cancel
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/library/python/rs/tool/script_launcher/preset_form/filter_ui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'filter.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QPlainTextEdit, QPushButton,
19 | QSizePolicy, QSpacerItem, QVBoxLayout, QWidget)
20 |
21 | class Ui_Form(object):
22 | def setupUi(self, Form):
23 | if not Form.objectName():
24 | Form.setObjectName(u"Form")
25 | Form.resize(458, 472)
26 | self.verticalLayout = QVBoxLayout(Form)
27 | self.verticalLayout.setObjectName(u"verticalLayout")
28 | self.textEdit = QPlainTextEdit(Form)
29 | self.textEdit.setObjectName(u"textEdit")
30 |
31 | self.verticalLayout.addWidget(self.textEdit)
32 |
33 | self.horizontalLayout = QHBoxLayout()
34 | self.horizontalLayout.setObjectName(u"horizontalLayout")
35 | self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
36 |
37 | self.horizontalLayout.addItem(self.horizontalSpacer)
38 |
39 | self.saveButton = QPushButton(Form)
40 | self.saveButton.setObjectName(u"saveButton")
41 |
42 | self.horizontalLayout.addWidget(self.saveButton)
43 |
44 | self.cancelButton = QPushButton(Form)
45 | self.cancelButton.setObjectName(u"cancelButton")
46 |
47 | self.horizontalLayout.addWidget(self.cancelButton)
48 |
49 |
50 | self.verticalLayout.addLayout(self.horizontalLayout)
51 |
52 |
53 | self.retranslateUi(Form)
54 |
55 | QMetaObject.connectSlotsByName(Form)
56 | # setupUi
57 |
58 | def retranslateUi(self, Form):
59 | Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
60 | self.saveButton.setText(QCoreApplication.translate("Form", u"save", None))
61 | self.cancelButton.setText(QCoreApplication.translate("Form", u"cancel", None))
62 | # retranslateUi
63 |
64 |
--------------------------------------------------------------------------------
/library/python/rs/tool/text2wave/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nakano000/Resolve_Script/fa34f5543b8346939e7eef80fb83ccfec851a1d4/library/python/rs/tool/text2wave/__init__.py
--------------------------------------------------------------------------------
/library/python/rs/tool/text2wave/assistant_seika2wave/__init__.py:
--------------------------------------------------------------------------------
1 | from .assistant_seika2wave import (
2 | run,
3 | )
--------------------------------------------------------------------------------
/library/python/rs/tool/text2wave/base/__init__.py:
--------------------------------------------------------------------------------
1 | from .base import (
2 | ConfigData,
3 | MainWindow,
4 | )
5 |
--------------------------------------------------------------------------------
/library/python/rs/tool/text2wave/softalk2wave/__init__.py:
--------------------------------------------------------------------------------
1 | from .softalk2wave import (
2 | run,
3 | )
--------------------------------------------------------------------------------
/library/python/rs/tool/voice_bin/__init__.py:
--------------------------------------------------------------------------------
1 | from .voice_bin import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voice_bin/drag_button.py:
--------------------------------------------------------------------------------
1 | import shutil
2 | from pathlib import Path
3 | from typing import (
4 | List,
5 | Optional,
6 | )
7 |
8 | from PySide6.QtCore import (
9 | QMimeData,
10 | QSize,
11 | )
12 | from PySide6.QtGui import (
13 | QDrag,
14 | QIcon,
15 | )
16 | from PySide6.QtWidgets import QPushButton
17 |
18 | from rs.core import (
19 | config,
20 | pipe as p,
21 | )
22 |
23 |
24 | class DragButton(QPushButton):
25 | def __init__(self, *arg, **kwarg):
26 | super().__init__(*arg, **kwarg)
27 | cmd_dir: Path = config.CONFIG_DIR.joinpath('VoiceBin', 'Scripts')
28 | cmd_dir.mkdir(parents=True, exist_ok=True)
29 | # icon
30 | icon_file = config.ROOT_PATH.joinpath('data', 'image', 'icon', 'dad.svg')
31 | dad_icon = QIcon(str(icon_file))
32 | self.setIcon(dad_icon)
33 | self.setIconSize(QSize(40, 40))
34 | #
35 | self.cmd_files = [
36 | cmd_dir.joinpath('VoiceBin_cmd01.lua'),
37 | cmd_dir.joinpath('VoiceBin_cmd02.lua'),
38 | ]
39 | self.lua_files: List[Optional[Path]] = [None, None]
40 |
41 | def setLuaFile(self, path: Path):
42 | self.lua_files[0] = path
43 |
44 | def setLuaFiles(self, path1: Path, path2: Path, ):
45 | self.lua_files[0] = path1
46 | self.lua_files[1] = path2
47 |
48 | def mousePressEvent(self, e):
49 | urls = p.pipe(
50 | [0, 1],
51 | p.filter(lambda i: self.lua_files[i] is not None and self.lua_files[i].is_file()),
52 | list, # ジェネレーターは使い回せないのでlistに
53 | p.do(
54 | p.iter(lambda i: shutil.copyfile(self.lua_files[i], self.cmd_files[i])),
55 | ),
56 | p.map(lambda i: 'file:' + str(self.cmd_files[i]).replace('\\', '/')),
57 | list,
58 | )
59 | if len(urls) == 0:
60 | return
61 | # Drag
62 | m = QMimeData()
63 | m.setUrls(urls)
64 | drag = QDrag(self)
65 | drag.setMimeData(m)
66 | drag.exec_()
67 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voice_sync/__init__.py:
--------------------------------------------------------------------------------
1 | from .voice_sync import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voice_sync/check_timing.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 129
10 | 486
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voice_sync/check_timing_ui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | ################################################################################
4 | ## Form generated from reading UI file 'check_timing.ui'
5 | ##
6 | ## Created by: Qt User Interface Compiler version 6.5.2
7 | ##
8 | ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 | ################################################################################
10 |
11 | from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
12 | QMetaObject, QObject, QPoint, QRect,
13 | QSize, QTime, QUrl, Qt)
14 | from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
15 | QFont, QFontDatabase, QGradient, QIcon,
16 | QImage, QKeySequence, QLinearGradient, QPainter,
17 | QPalette, QPixmap, QRadialGradient, QTransform)
18 | from PySide6.QtWidgets import (QApplication, QHBoxLayout, QHeaderView, QMainWindow,
19 | QSizePolicy, QTableView, QWidget)
20 |
21 | class Ui_MainWindow(object):
22 | def setupUi(self, MainWindow):
23 | if not MainWindow.objectName():
24 | MainWindow.setObjectName(u"MainWindow")
25 | MainWindow.resize(129, 486)
26 | self.centralwidget = QWidget(MainWindow)
27 | self.centralwidget.setObjectName(u"centralwidget")
28 | self.horizontalLayout = QHBoxLayout(self.centralwidget)
29 | self.horizontalLayout.setObjectName(u"horizontalLayout")
30 | self.tableView = QTableView(self.centralwidget)
31 | self.tableView.setObjectName(u"tableView")
32 |
33 | self.horizontalLayout.addWidget(self.tableView)
34 |
35 | MainWindow.setCentralWidget(self.centralwidget)
36 |
37 | self.retranslateUi(MainWindow)
38 |
39 | QMetaObject.connectSlotsByName(MainWindow)
40 | # setupUi
41 |
42 | def retranslateUi(self, MainWindow):
43 | MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
44 | # retranslateUi
45 |
46 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voicevox_sequencer/__init__.py:
--------------------------------------------------------------------------------
1 | from .voicevox_sequencer import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voicevox_sequencer/lyrics.py:
--------------------------------------------------------------------------------
1 | import re
2 | import sys
3 |
4 | import pykakasi
5 |
6 | from PySide6.QtCore import (
7 | Qt,
8 | )
9 | from PySide6.QtWidgets import (
10 | QApplication,
11 | QMainWindow,
12 | )
13 |
14 | from rs.core import (
15 | pipe as p,
16 | )
17 |
18 | from rs.gui import (
19 | appearance,
20 | )
21 | from rs.tool.voicevox_sequencer.lyrics_ui import Ui_MainWindow
22 |
23 |
24 | class MainWindow(QMainWindow):
25 | def __init__(self, parent=None):
26 | super().__init__(parent)
27 | self.ui = Ui_MainWindow()
28 | self.ui.setupUi(self)
29 | self.setWindowTitle('Lyrics')
30 | self.setWindowFlags(
31 | Qt.Window
32 | | Qt.WindowCloseButtonHint
33 | )
34 | self.resize(500, 500)
35 |
36 | # style sheet
37 | self.ui.convToolButton.setStyleSheet(appearance.other_stylesheet)
38 | # event
39 | self.ui.convToolButton.clicked.connect(self.conv)
40 |
41 | def conv(self):
42 | pattern = re.compile(r'\n([ァィゥェォャュョヮ])')
43 | src_text = self.ui.srcPlainTextEdit.toPlainText()
44 | kks = pykakasi.kakasi()
45 | text = '\n'.join(p.pipe(
46 | src_text.split(),
47 | p.map(lambda x: x.strip()),
48 | lambda x: kks.convert(' '.join(x)),
49 | p.map(lambda x: x['kana']),
50 | p.map(lambda x: '\n'.join(x)),
51 | p.map(lambda x: pattern.sub(r'\1', x)),
52 | list,
53 | ))
54 | self.ui.dstPlainTextEdit.setPlainText(text)
55 |
56 |
57 | def run() -> None:
58 | app = QApplication(sys.argv)
59 | app.setStyle("Fusion")
60 | app.setPalette(appearance.palette)
61 | app.setStyleSheet(appearance.stylesheet)
62 |
63 | window = MainWindow()
64 | window.show()
65 | sys.exit(app.exec())
66 |
67 |
68 | if __name__ == '__main__':
69 | run()
70 |
--------------------------------------------------------------------------------
/library/python/rs/tool/voicevox_sequencer/lyrics.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 450
10 | 362
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 |
19 | 4
20 |
21 |
22 | 4
23 |
24 |
25 | 4
26 |
27 |
28 | 4
29 |
30 | -
31 |
32 |
33 | -
34 |
35 |
36 |
37 | 0
38 | 0
39 |
40 |
41 |
42 |
43 | 40
44 | 100
45 |
46 |
47 |
48 | ...
49 |
50 |
51 | Qt::RightArrow
52 |
53 |
54 |
55 | -
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/library/python/rs/tool/vtt2anim/__init__.py:
--------------------------------------------------------------------------------
1 | from .vtt2anim import (
2 | run,
3 | )
4 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | aggdraw==1.3.16
2 | attrs==23.1.0
3 | audioread==3.0.0
4 | budoux==0.5.2
5 | certifi==2023.7.22
6 | cffi==1.15.1
7 | chardet==5.2.0
8 | charset-normalizer==3.2.0
9 | Cython==3.0.2
10 | decorator==5.1.1
11 | Deprecated==1.2.14
12 | docopt==0.6.2
13 | EasyProcess==1.1
14 | entrypoint2==1.1
15 | idna==3.4
16 | imageio==2.31.3
17 | jaconv==0.3.4
18 | joblib==1.3.2
19 | lazy_loader==0.3
20 | librosa==0.10.1
21 | llvmlite==0.40.1
22 | mido==1.3.0
23 | MouseInfo==0.1.3
24 | msgpack==1.0.5
25 | mss==9.0.1
26 | networkx==3.1
27 | numba==0.57.1
28 | numpy==1.24.4
29 | packaging==23.1
30 | Pillow==10.0.1
31 | platformdirs==3.10.0
32 | pooch==1.7.0
33 | psd-tools==1.9.28
34 | PyAutoGUI==0.9.54
35 | pycparser==2.21
36 | pykakasi==2.2.1
37 | PyMonCtl==0.7
38 | PyMsgBox==1.0.9
39 | pyperclip==1.8.2
40 | PyRect==0.2.0
41 | pyscreenshot==3.1
42 | PyScreeze==0.1.29
43 | PySide6==6.5.2
44 | PySide6-Addons==6.5.2
45 | PySide6-Essentials==6.5.2
46 | pytsmod==0.3.6
47 | pytweening==1.0.7
48 | PyWavelets==1.4.1
49 | PyWinBox==0.6
50 | PyWinCtl==0.3
51 | pyworld==0.3.4
52 | requests==2.31.0
53 | scikit-image==0.21.0
54 | scikit-learn==1.3.0
55 | scipy==1.11.2
56 | shiboken6==6.5.2
57 | simpleaudio==1.0.4
58 | soundfile==0.12.1
59 | soxr==0.3.6
60 | StrEnum==0.4.15
61 | threadpoolctl==3.2.0
62 | tifffile==2023.8.30
63 | typing_extensions==4.7.1
64 | urllib3==2.1.0
65 | watchdog==3.0.0
66 | wrapt==1.15.0
67 |
--------------------------------------------------------------------------------