├── .devcontainer
└── devcontainer.json
├── .github
├── dependabot.yml
├── renovate.json
└── workflows
│ ├── compile.yml
│ ├── package.yml
│ └── publish.yml
├── .gitignore
├── .pre-commit-config.yaml
├── Dockerfile
├── LICENSE
├── README.md
├── crowdin.yml
├── docs
├── .overrides
│ ├── libresvip.ico
│ └── partials
│ │ └── copyright.html
├── coding_style.md
├── contributing.md
├── credits.md
├── faq.md
├── index.md
├── license.md
├── playground.md
├── project_formats.md
└── setup.md
├── experimental
├── dspx
│ ├── __init__.py
│ └── model.py
├── nn
│ ├── __init__.py
│ └── model_v3.py
├── vsp
│ ├── __init__,py
│ └── model.py
├── vsp4
│ ├── __init__.py
│ └── model.py
└── xvsq
│ ├── __init__.py
│ └── model.py
├── libresvip
├── __init__.py
├── __pyinstaller
│ ├── __init__.py
│ └── hook-libresvip.py
├── cli
│ ├── __init__.py
│ ├── __main__.py
│ ├── app.py
│ ├── commands
│ │ ├── __init__.py
│ │ ├── conf.py
│ │ ├── plugin.py
│ │ └── proj.py
│ └── prompt.py
├── core
│ ├── __init__.py
│ ├── compat.py
│ ├── config.py
│ ├── constants.py
│ ├── exceptions.py
│ ├── lyric_phoneme
│ │ ├── __init__.py
│ │ ├── chinese
│ │ │ ├── __init__.py
│ │ │ └── vocaloid_xsampa.py
│ │ ├── japanese
│ │ │ ├── __init__.py
│ │ │ └── vocaloid_xsampa.py
│ │ └── korean
│ │ │ ├── __init__.py
│ │ │ └── vocaloid_xsampa.py
│ ├── tick_counter.py
│ ├── time_interval.py
│ ├── time_sync.py
│ └── warning_types.py
├── extension
│ ├── __init__.py
│ ├── base.py
│ ├── manager.py
│ └── meta_info.py
├── gui
│ ├── __init__.py
│ ├── __main__.py
│ ├── models
│ │ ├── __init__.py
│ │ ├── base_task.py
│ │ ├── list_models.py
│ │ └── table_models.py
│ └── modules
│ │ ├── __init__.py
│ │ ├── application.py
│ │ ├── clipboard.py
│ │ ├── config_items.py
│ │ ├── font_loader.py
│ │ ├── frameless_window.py
│ │ ├── frameless_window_win32.py
│ │ ├── locale_switcher.py
│ │ ├── log_handler.py
│ │ ├── notifier.py
│ │ ├── task_manager.py
│ │ ├── url_opener.py
│ │ ├── vendor
│ │ ├── __init__.py
│ │ └── qasync
│ │ │ ├── __init__.py
│ │ │ ├── _common.py
│ │ │ ├── _unix.py
│ │ │ └── _windows.py
│ │ └── win32_constants.py
├── middlewares
│ ├── pitch_shift
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── pitch_shift.mo
│ │ │ │ │ └── pitch_shift.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── pitch_shift.mo
│ │ │ │ │ └── pitch_shift.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── pitch_shift.mo
│ │ │ │ └── pitch_shift.po
│ │ ├── options.py
│ │ ├── pitch_shift.po
│ │ ├── pitch_shift.py
│ │ └── pitch_shift.yapsy-plugin
│ ├── project_zoom
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── project_zoom.mo
│ │ │ │ │ └── project_zoom.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── project_zoom.mo
│ │ │ │ │ └── project_zoom.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── project_zoom.mo
│ │ │ │ └── project_zoom.po
│ │ ├── options.py
│ │ ├── project_zoom.po
│ │ ├── project_zoom.py
│ │ └── project_zoom.yapsy-plugin
│ ├── pronounciation_conversion
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── pronounciation_conversion.mo
│ │ │ │ │ └── pronounciation_conversion.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── pronounciation_conversion.mo
│ │ │ │ │ └── pronounciation_conversion.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── pronounciation_conversion.mo
│ │ │ │ └── pronounciation_conversion.po
│ │ ├── options.py
│ │ ├── pronounciation_conversion.po
│ │ ├── pronounciation_conversion.py
│ │ └── pronounciation_conversion.yapsy-plugin
│ ├── remove_short_silences
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── remove_short_silences.mo
│ │ │ │ │ └── remove_short_silences.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── remove_short_silences.mo
│ │ │ │ │ └── remove_short_silences.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── remove_short_silences.mo
│ │ │ │ └── remove_short_silences.po
│ │ ├── options.py
│ │ ├── remove_short_silences.po
│ │ ├── remove_short_silences.py
│ │ └── remove_short_silences.yapsy-plugin
│ └── replace_lyric
│ │ ├── __init__.py
│ │ ├── locales
│ │ ├── de_DE
│ │ │ └── LC_MESSAGES
│ │ │ │ ├── replace_lyric.mo
│ │ │ │ └── replace_lyric.po
│ │ ├── ja_JP
│ │ │ └── LC_MESSAGES
│ │ │ │ ├── replace_lyric.mo
│ │ │ │ └── replace_lyric.po
│ │ └── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ ├── replace_lyric.mo
│ │ │ └── replace_lyric.po
│ │ ├── options.py
│ │ ├── replace_lyric.po
│ │ ├── replace_lyric.py
│ │ └── replace_lyric.yapsy-plugin
├── mobile
│ ├── __init__.py
│ ├── __main__.py
│ └── app.py
├── model
│ ├── __init__.py
│ ├── base.py
│ ├── option_mixins.py
│ ├── pitch_simulator.py
│ ├── point.py
│ ├── portamento.py
│ ├── relative_pitch_curve.py
│ └── reset_time_axis.py
├── plugins
│ ├── acep
│ │ ├── __init__.py
│ │ ├── ace-studio.yapsy-plugin
│ │ ├── ace_studio_converter.py
│ │ ├── ace_studio_generator.py
│ │ ├── ace_studio_parser.py
│ │ ├── acep.po
│ │ ├── acep_io.py
│ │ ├── base_pitch_curve.py
│ │ ├── color_pool.py
│ │ ├── ctypes_buffer.py
│ │ ├── enums.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── acep.mo
│ │ │ │ │ └── acep.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── acep.mo
│ │ │ │ │ └── acep.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── acep.mo
│ │ │ │ └── acep.po
│ │ ├── model.py
│ │ ├── options.py
│ │ └── singers.py
│ ├── aisp
│ │ ├── __init__.py
│ │ ├── aisingers_converter.py
│ │ ├── aisingers_generator.py
│ │ ├── aisingers_parser.py
│ │ ├── aisp.po
│ │ ├── aisp.yapsy-plugin
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── aisp.mo
│ │ │ │ │ └── aisp.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── aisp.mo
│ │ │ │ │ └── aisp.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── aisp.mo
│ │ │ │ └── aisp.po
│ │ ├── model.py
│ │ └── options.py
│ ├── ass
│ │ ├── __init__.py
│ │ ├── ass.po
│ │ ├── ass.yapsy-plugin
│ │ ├── ass_converter.py
│ │ ├── ass_generator.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ass.mo
│ │ │ │ │ └── ass.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ass.mo
│ │ │ │ │ └── ass.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ass.mo
│ │ │ │ └── ass.po
│ │ └── options.py
│ ├── ccs
│ │ ├── __init__.py
│ │ ├── ccs.po
│ │ ├── ccs.yapsy-plugin
│ │ ├── cevio_converter.py
│ │ ├── cevio_generator.py
│ │ ├── cevio_parser.py
│ │ ├── cevio_pitch.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ccs.mo
│ │ │ │ │ └── ccs.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ccs.mo
│ │ │ │ │ └── ccs.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ccs.mo
│ │ │ │ └── ccs.po
│ │ ├── model.py
│ │ └── options.py
│ ├── ds
│ │ ├── __init__.py
│ │ ├── dicts
│ │ │ └── opencpop-extension.txt
│ │ ├── diffsinger_converter.py
│ │ ├── diffsinger_generator.py
│ │ ├── diffsinger_parser.py
│ │ ├── ds.po
│ │ ├── ds.yapsy-plugin
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ds.mo
│ │ │ │ │ └── ds.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ds.mo
│ │ │ │ │ └── ds.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ds.mo
│ │ │ │ └── ds.po
│ │ ├── options.py
│ │ └── utils
│ │ │ ├── __init__.py
│ │ │ ├── gender_param_utils.py
│ │ │ ├── lyric_util.py
│ │ │ ├── models
│ │ │ ├── __init__.py
│ │ │ ├── ds_file.py
│ │ │ ├── ds_note.py
│ │ │ ├── ds_param_curve.py
│ │ │ ├── ds_param_node.py
│ │ │ └── ds_project.py
│ │ │ ├── note_list_util.py
│ │ │ ├── phoneme_dict.py
│ │ │ ├── pinyin_util.py
│ │ │ ├── pitch_param_utils.py
│ │ │ └── project_util.py
│ ├── dv
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── deepvocal_converter.py
│ │ ├── deepvocal_pitch.py
│ │ ├── dv.po
│ │ ├── dv.yapsy-plugin
│ │ ├── dv_generator.py
│ │ ├── dv_parser.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── dv.mo
│ │ │ │ │ └── dv.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── dv.mo
│ │ │ │ │ └── dv.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── dv.mo
│ │ │ │ └── dv.po
│ │ ├── model.py
│ │ └── options.py
│ ├── gj
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── gj.po
│ │ ├── gjgj.yapsy-plugin
│ │ ├── gjgj_converter.py
│ │ ├── gjgj_generator.py
│ │ ├── gjgj_parser.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── gj.mo
│ │ │ │ │ └── gj.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── gj.mo
│ │ │ │ │ └── gj.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── gj.mo
│ │ │ │ └── gj.po
│ │ ├── model.py
│ │ ├── options.py
│ │ └── singers.py
│ ├── json
│ │ ├── __init__.py
│ │ ├── json.po
│ │ ├── jsonsvip.yapsy-plugin
│ │ ├── jsonsvip_converter.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── json.mo
│ │ │ │ │ └── json.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── json.mo
│ │ │ │ │ └── json.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── json.mo
│ │ │ │ └── json.po
│ │ └── options.py
│ ├── lrc
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── lrc.mo
│ │ │ │ │ └── lrc.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── lrc.mo
│ │ │ │ │ └── lrc.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── lrc.mo
│ │ │ │ └── lrc.po
│ │ ├── lrc.po
│ │ ├── lrc.yapsy-plugin
│ │ ├── lrc_converter.py
│ │ ├── lrc_generator.py
│ │ ├── model.py
│ │ ├── options.py
│ │ └── template.py
│ ├── mid
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── mid.mo
│ │ │ │ │ └── mid.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── mid.mo
│ │ │ │ │ └── mid.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── mid.mo
│ │ │ │ └── mid.po
│ │ ├── mid.po
│ │ ├── mid.yapsy-plugin
│ │ ├── midi_converter.py
│ │ ├── midi_generator.py
│ │ ├── midi_parser.py
│ │ ├── midi_pitch.py
│ │ ├── note_overlap.py
│ │ └── options.py
│ ├── mtp
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── mtp.mo
│ │ │ │ │ └── mtp.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── mtp.mo
│ │ │ │ │ └── mtp.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── mtp.mo
│ │ │ │ └── mtp.po
│ │ ├── model.py
│ │ ├── mtp.po
│ │ ├── mtp.yapsy-plugin
│ │ ├── muta_converter.py
│ │ ├── muta_generator.py
│ │ ├── muta_parser.py
│ │ └── options.py
│ ├── musicxml
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── musicxml.mo
│ │ │ │ │ └── musicxml.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── musicxml.mo
│ │ │ │ │ └── musicxml.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── musicxml.mo
│ │ │ │ └── musicxml.po
│ │ ├── model.py
│ │ ├── models
│ │ │ ├── __init__.py
│ │ │ ├── container.py
│ │ │ ├── enums.py
│ │ │ └── mxml4.py
│ │ ├── musicxml.po
│ │ ├── musicxml.yapsy-plugin
│ │ ├── musicxml_converter.py
│ │ ├── musicxml_generator.py
│ │ ├── musicxml_parser.py
│ │ └── options.py
│ ├── nn
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── nn.mo
│ │ │ │ │ └── nn.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── nn.mo
│ │ │ │ │ └── nn.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── nn.mo
│ │ │ │ └── nn.po
│ │ ├── model.py
│ │ ├── niaoniao_converter.py
│ │ ├── niaoniao_generator.py
│ │ ├── niaoniao_parser.py
│ │ ├── nn.po
│ │ ├── nn.yapsy-plugin
│ │ ├── options.py
│ │ └── template.py
│ ├── ppsf
│ │ ├── __init__.py
│ │ ├── legacy_model.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ppsf.mo
│ │ │ │ │ └── ppsf.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ppsf.mo
│ │ │ │ │ └── ppsf.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ppsf.mo
│ │ │ │ └── ppsf.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── piapro_studio_converter.py
│ │ ├── piapro_studio_generator.py
│ │ ├── piapro_studio_legacy_parser.py
│ │ ├── piapro_studio_nt_parser.py
│ │ ├── ppsf.po
│ │ ├── ppsf.yapsy-plugin
│ │ └── ppsf_interval_dict.py
│ ├── ps_project
│ │ ├── __init__.py
│ │ ├── enums.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ps_project.mo
│ │ │ │ │ └── ps_project.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ps_project.mo
│ │ │ │ │ └── ps_project.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ps_project.mo
│ │ │ │ └── ps_project.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── pocket_singer_converter.py
│ │ ├── pocket_singer_generator.py
│ │ ├── pocket_singer_parser.py
│ │ ├── ps_project.po
│ │ └── ps_project.yapsy-plugin
│ ├── s5p
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── s5p.mo
│ │ │ │ │ └── s5p.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── s5p.mo
│ │ │ │ │ └── s5p.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── s5p.mo
│ │ │ │ └── s5p.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── s5p.po
│ │ ├── s5p.yapsy-plugin
│ │ ├── synthv_editor_converter.py
│ │ ├── synthv_editor_generator.py
│ │ └── synthv_editor_parser.py
│ ├── srt
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── srt.mo
│ │ │ │ │ └── srt.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── srt.mo
│ │ │ │ │ └── srt.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── srt.mo
│ │ │ │ └── srt.po
│ │ ├── options.py
│ │ ├── srt.po
│ │ ├── srt.yapsy-plugin
│ │ ├── srt_converter.py
│ │ └── srt_generator.py
│ ├── svg
│ │ ├── __init__.py
│ │ ├── coordinate_helper.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svg.mo
│ │ │ │ │ └── svg.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svg.mo
│ │ │ │ │ └── svg.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── svg.mo
│ │ │ │ └── svg.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── svg.po
│ │ ├── svg.yapsy-plugin
│ │ ├── svg_converter.py
│ │ ├── svg_factory.py
│ │ └── svg_generator.py
│ ├── svip
│ │ ├── __init__.py
│ │ ├── binsvip.yapsy-plugin
│ │ ├── binsvip_converter.py
│ │ ├── binsvip_generator.py
│ │ ├── binsvip_parser.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svip.mo
│ │ │ │ │ └── svip.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svip.mo
│ │ │ │ │ └── svip.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── svip.mo
│ │ │ │ └── svip.po
│ │ ├── models.py
│ │ ├── msnrbf
│ │ │ ├── __init__.py
│ │ │ ├── binary_models.py
│ │ │ ├── constants.py
│ │ │ ├── nrbf_iobase.py
│ │ │ ├── svip_reader.py
│ │ │ ├── svip_writer.py
│ │ │ └── xstudio_models.py
│ │ ├── options.py
│ │ ├── singers.json
│ │ └── svip.po
│ ├── svip3
│ │ ├── __init__.py
│ │ ├── color_pool.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svip3.mo
│ │ │ │ │ └── svip3.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svip3.mo
│ │ │ │ │ └── svip3.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── svip3.mo
│ │ │ │ └── svip3.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── singers.json
│ │ ├── singers.py
│ │ ├── svip3.po
│ │ ├── svip3.yapsy-plugin
│ │ ├── svip3_converter.py
│ │ ├── svip3_generator.py
│ │ └── svip3_parser.py
│ ├── svp
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── interval_utils.py
│ │ ├── lambert_w.py
│ │ ├── layer_generator.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svp.mo
│ │ │ │ │ └── svp.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── svp.mo
│ │ │ │ │ └── svp.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── svp.mo
│ │ │ │ └── svp.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── param_expression.py
│ │ ├── phoneme_categories.json
│ │ ├── phoneme_dictionary.json
│ │ ├── phoneme_utils.py
│ │ ├── svp.po
│ │ ├── svp.yapsy-plugin
│ │ ├── synthv_generator.py
│ │ ├── synthv_parser.py
│ │ ├── synthv_studio_converter.py
│ │ └── track_merge_utils.py
│ ├── tlp
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── tlp.mo
│ │ │ │ │ └── tlp.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── tlp.mo
│ │ │ │ │ └── tlp.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── tlp.mo
│ │ │ │ └── tlp.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── tlp.po
│ │ ├── tlp.yapsy-plugin
│ │ ├── tunelab_converter.py
│ │ ├── tunelab_generator.py
│ │ └── tunelab_parser.py
│ ├── tsmsln
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── tsmsln.mo
│ │ │ │ │ └── tsmsln.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── tsmsln.mo
│ │ │ │ │ └── tsmsln.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── tsmsln.mo
│ │ │ │ └── tsmsln.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── tsmsln.po
│ │ ├── tsmsln.yapsy-plugin
│ │ ├── value_tree.py
│ │ ├── voisona_mobile_converter.py
│ │ ├── voisona_mobile_generator.py
│ │ ├── voisona_mobile_parser.py
│ │ └── voisona_mobile_pitch.py
│ ├── tssln
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── tssln.mo
│ │ │ │ │ └── tssln.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── tssln.mo
│ │ │ │ │ └── tssln.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── tssln.mo
│ │ │ │ └── tssln.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── tssln.po
│ │ ├── tssln.yapsy-plugin
│ │ ├── value_tree.py
│ │ ├── voisona_converter.py
│ │ ├── voisona_generator.py
│ │ ├── voisona_parser.py
│ │ └── voisona_pitch.py
│ ├── ufdata
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ufdata.mo
│ │ │ │ │ └── ufdata.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ufdata.mo
│ │ │ │ │ └── ufdata.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ufdata.mo
│ │ │ │ └── ufdata.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── ufdata.po
│ │ ├── ufdata.yapsy-plugin
│ │ ├── ufdata_converter.py
│ │ ├── ufdata_generator.py
│ │ └── ufdata_parser.py
│ ├── ust
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── interpolation.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ust.mo
│ │ │ │ │ └── ust.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ust.mo
│ │ │ │ │ └── ust.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ust.mo
│ │ │ │ └── ust.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── pitch_mode1.py
│ │ ├── pitch_mode2.py
│ │ ├── rdp_simplification.py
│ │ ├── resampling.py
│ │ ├── template.py
│ │ ├── ust.po
│ │ ├── ust.yapsy-plugin
│ │ ├── ust_converter.py
│ │ ├── ust_generator.py
│ │ ├── ust_parser.py
│ │ └── vibrato_param.py
│ ├── ustx
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ustx.mo
│ │ │ │ │ └── ustx.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── ustx.mo
│ │ │ │ │ └── ustx.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── ustx.mo
│ │ │ │ └── ustx.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── time_axis.py
│ │ ├── ustx.po
│ │ ├── ustx.yapsy-plugin
│ │ ├── ustx_converter.py
│ │ ├── ustx_generator.py
│ │ ├── ustx_parser.py
│ │ ├── util.py
│ │ └── utils
│ │ │ ├── __init__.py
│ │ │ ├── lyric_util.py
│ │ │ └── music_math.py
│ ├── vfp
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vfp.mo
│ │ │ │ │ └── vfp.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vfp.mo
│ │ │ │ │ └── vfp.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vfp.mo
│ │ │ │ └── vfp.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── vfp.po
│ │ ├── vfp.yapsy-plugin
│ │ ├── vox_factory_converter.py
│ │ ├── vox_factory_generator.py
│ │ └── vox_factory_parser.py
│ ├── vog
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vog.mo
│ │ │ │ │ └── vog.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vog.mo
│ │ │ │ │ └── vog.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vog.mo
│ │ │ │ └── vog.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── vog.po
│ │ ├── vog.yapsy-plugin
│ │ ├── vogen_converter.py
│ │ ├── vogen_generator.py
│ │ └── vogen_parser.py
│ ├── vpr
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vpr.mo
│ │ │ │ │ └── vpr.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vpr.mo
│ │ │ │ │ └── vpr.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vpr.mo
│ │ │ │ └── vpr.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── vocaloid_pitch.py
│ │ ├── vpr.po
│ │ ├── vpr.yapsy-plugin
│ │ ├── vpr_converter.py
│ │ ├── vpr_generator.py
│ │ └── vpr_parser.py
│ ├── vshp
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vshp.mo
│ │ │ │ │ └── vshp.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vshp.mo
│ │ │ │ │ └── vshp.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vshp.mo
│ │ │ │ └── vshp.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── utils.py
│ │ ├── vocalshifter_converter.py
│ │ ├── vocalshifter_parser.py
│ │ ├── vshp.po
│ │ └── vshp.yapsy-plugin
│ ├── vspx
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vspx.mo
│ │ │ │ │ └── vspx.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vspx.mo
│ │ │ │ │ └── vspx.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vspx.mo
│ │ │ │ └── vspx.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── vocalsharp_converter.py
│ │ ├── vspx.po
│ │ ├── vspx.yapsy-plugin
│ │ ├── vspx_generator.py
│ │ ├── vspx_interval_dict.py
│ │ └── vspx_parser.py
│ ├── vsq
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vsq.mo
│ │ │ │ │ └── vsq.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vsq.mo
│ │ │ │ │ └── vsq.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vsq.mo
│ │ │ │ └── vsq.po
│ │ ├── options.py
│ │ ├── vocaloid_pitch.py
│ │ ├── vsq.po
│ │ ├── vsq.yapsy-plugin
│ │ ├── vsq_converter.py
│ │ ├── vsq_generator.py
│ │ └── vsq_parser.py
│ ├── vsqx
│ │ ├── __init__.py
│ │ ├── constants.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vsqx.mo
│ │ │ │ │ └── vsqx.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vsqx.mo
│ │ │ │ │ └── vsqx.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vsqx.mo
│ │ │ │ └── vsqx.po
│ │ ├── model.py
│ │ ├── models
│ │ │ ├── __init__.py
│ │ │ ├── enums.py
│ │ │ ├── vsqx3.py
│ │ │ └── vsqx4.py
│ │ ├── options.py
│ │ ├── vocaloid_pitch.py
│ │ ├── vsq3_generator.py
│ │ ├── vsq4_generator.py
│ │ ├── vsqx.po
│ │ ├── vsqx.yapsy-plugin
│ │ ├── vsqx_converter.py
│ │ └── vsqx_parser.py
│ ├── vvproj
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vvproj.mo
│ │ │ │ │ └── vvproj.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vvproj.mo
│ │ │ │ │ └── vvproj.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vvproj.mo
│ │ │ │ └── vvproj.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── voicevox_converter.py
│ │ ├── voicevox_generator.py
│ │ ├── voicevox_parser.py
│ │ ├── vvproj.po
│ │ └── vvproj.yapsy-plugin
│ ├── vxf
│ │ ├── __init__.py
│ │ ├── locales
│ │ │ ├── de_DE
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vxf.mo
│ │ │ │ │ └── vxf.po
│ │ │ ├── ja_JP
│ │ │ │ └── LC_MESSAGES
│ │ │ │ │ ├── vxf.mo
│ │ │ │ │ └── vxf.po
│ │ │ └── zh_CN
│ │ │ │ └── LC_MESSAGES
│ │ │ │ ├── vxf.mo
│ │ │ │ └── vxf.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── vx_beta_converter.py
│ │ ├── vx_beta_generator.py
│ │ ├── vx_beta_parser.py
│ │ ├── vxf.po
│ │ └── vxf.yapsy-plugin
│ └── y77
│ │ ├── __init__.py
│ │ ├── locales
│ │ ├── de_DE
│ │ │ └── LC_MESSAGES
│ │ │ │ ├── y77.mo
│ │ │ │ └── y77.po
│ │ ├── ja_JP
│ │ │ └── LC_MESSAGES
│ │ │ │ ├── y77.mo
│ │ │ │ └── y77.po
│ │ └── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ ├── y77.mo
│ │ │ └── y77.po
│ │ ├── model.py
│ │ ├── options.py
│ │ ├── y77.po
│ │ ├── y77.yapsy-plugin
│ │ ├── y77_converter.py
│ │ ├── y77_generator.py
│ │ └── y77_parser.py
├── py.typed
├── res
│ ├── libresvip.ico
│ ├── libresvip.po
│ ├── locales
│ │ ├── de_DE
│ │ │ └── LC_MESSAGES
│ │ │ │ ├── libresvip.mo
│ │ │ │ └── libresvip.po
│ │ ├── ja_JP
│ │ │ └── LC_MESSAGES
│ │ │ │ ├── libresvip.mo
│ │ │ │ └── libresvip.po
│ │ ├── libresvip_gui.ts
│ │ ├── qt_standard_buttons.ts
│ │ └── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ ├── libresvip.mo
│ │ │ └── libresvip.po
│ ├── qml
│ │ ├── components
│ │ │ ├── actions.qml
│ │ │ ├── converter_page.qml
│ │ │ ├── dashed_rectangle.qml
│ │ │ ├── dialogs.qml
│ │ │ ├── icon_button.qml
│ │ │ ├── icon_menu_item.qml
│ │ │ ├── labeled_combo_box.qml
│ │ │ ├── message_box.qml
│ │ │ ├── plugin_info.qml
│ │ │ ├── qmldir
│ │ │ ├── running_indicator.qml
│ │ │ ├── settings_dialog.qml
│ │ │ ├── task_row.qml
│ │ │ └── top_toolbar.qml
│ │ ├── main.qml
│ │ └── resources.qrc
│ └── resources.rcc
├── tui
│ ├── __init__.py
│ ├── __main__.py
│ └── app.py
├── utils
│ ├── __init__.py
│ ├── audio.py
│ ├── mediainfo_wasm.py
│ ├── module_loading.py
│ ├── music_math.py
│ ├── search.py
│ ├── text.py
│ ├── translation.py
│ ├── xmlutils
│ │ ├── __init__.py
│ │ └── native.py
│ └── yamlutils
│ │ ├── __init__.py
│ │ ├── common.py
│ │ ├── dumper.py
│ │ └── loader.py
└── web
│ ├── __init__.py
│ ├── __main__.py
│ ├── elements.py
│ └── pages.py
├── mkdocs.yml
├── packaging
├── bdist_portable.py
├── build_apk.sh
├── docker-compose-build-wine-arm64.yml
├── docker-compose-msys2-clangarm64.yml
├── download_win_arm64_wheels.py
├── install_mobile_requirements.py
├── libresvip-mobile.spec
├── libresvip-tui.spec
├── libresvip-web.spec
├── libresvip.spec
├── macos-entitlements.plist
├── mingw_install.py
├── nuitka-cli.sh
├── nuitka-gui.sh
├── nuitka-libresvip.yml
├── nuitka-web.sh
├── requirements-android.txt
├── requirements-desktop.in
├── requirements-desktop.txt
├── requirements-flet.in
├── requirements-mobile.in
├── requirements-pyinstaller.in
├── requirements-pywebview.in
├── setup.py
└── setup_web.py
├── pyproject.toml
├── scripts
├── babel.cfg
├── batch_compile_catalog.py
├── extract_messages.py
├── gen_snake_case_pyi.sh
├── list_deps_licenses.py
├── patch_qt_resource.py
└── ts_model.py
├── tests
├── __init__.py
├── conftest.py
├── data
│ └── .gitkeep
├── test_curve_util.py
├── test_pinyin.py
└── test_plugin.py
└── uv.lock
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LibreSVIP",
3 | "image": "mcr.microsoft.com/devcontainers/python:1-3.13-bookworm",
4 | "features": {
5 | "ghcr.io/devcontainers-contrib/features/protoc:1": {},
6 | "ghcr.io/jsburckhardt/devcontainer-features/uv:1": {}
7 | },
8 | "customizations": {
9 | "vscode": {
10 | "extensions": [
11 | "charliermarsh.ruff",
12 | "detachhead.basedpyright",
13 | "hbenl.vscode-test-explorer",
14 | "littlefoxteam.vscode-python-test-adapter",
15 | "mrorz.language-gettext",
16 | "ms-python.mypy-type-checker",
17 | "ms-python.python",
18 | "redhat.vscode-xml",
19 | "redhat.vscode-yaml",
20 | "samuelcolvin.jinjahtml",
21 | "seanwu.vscode-qt-for-python",
22 | "sourcery.sourcery",
23 | "theqtcompany.qt-qml",
24 | "zxh404.vscode-proto3"
25 | ]
26 | }
27 | },
28 | "forwardPorts": [8080]
29 | }
30 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for more information:
4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 | # https://containers.dev/guide/dependabot
6 |
7 | version: 2
8 | updates:
9 | - package-ecosystem: "devcontainers"
10 | directory: "/"
11 | schedule:
12 | interval: weekly
13 |
14 | - package-ecosystem: 'github-actions'
15 | directory: '/'
16 | schedule:
17 | interval: 'weekly'
--------------------------------------------------------------------------------
/.github/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "config:recommended"
5 | ],
6 | "constraints": {
7 | "python": "==3.13"
8 | },
9 | "lockFileMaintenance": {
10 | "enabled": true
11 | },
12 | "rangeStrategy": "bump",
13 | "enabledManagers": ["pep621"],
14 | "labels": ["dependencies"],
15 | "packageRules": [
16 | {
17 | "matchManagers": ["pep621"],
18 | "matchDepTypes": ["dependency-groups"],
19 | "automerge": true,
20 | "groupName": "Development dependencies",
21 | "groupSlug": "dev"
22 | },
23 | {
24 | "matchManagers": ["pep621"],
25 | "matchDepTypes": ["project.dependencies", "project.optional-dependencies"],
26 | "matchUpdateTypes": ["minor", "patch"],
27 | "automerge": true,
28 | "groupName": "Project dependencies",
29 | "groupSlug": "proj"
30 | }
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ghcr.io/astral-sh/uv:debian-slim
2 | WORKDIR /app
3 | COPY ./ /app
4 |
5 | RUN uv sync --extra webui --extra ujson --extra ruamel_yaml --extra lxml --frozen --no-cache
6 |
7 | EXPOSE 8080
8 | CMD ["uv", "run", "libresvip-web", "--port=8080", "--host=0.0.0.0", "--server", "--daemon"]
--------------------------------------------------------------------------------
/crowdin.yml:
--------------------------------------------------------------------------------
1 | files:
2 | - source: /libresvip/**/*.po
3 | translation: /%original_path%/locales/%locale_with_underscore%/LC_MESSAGES/%original_file_name%
4 | ignore:
5 | - /%original_path%/locales/*/LC_MESSAGES/%original_file_name%
6 |
--------------------------------------------------------------------------------
/docs/.overrides/libresvip.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/docs/.overrides/libresvip.ico
--------------------------------------------------------------------------------
/docs/.overrides/partials/copyright.html:
--------------------------------------------------------------------------------
1 |
2 | {% if config.copyright %}
3 |
4 | {{ config.copyright }}
5 |
6 | {% endif %}
7 | {% if not config.extra.generator == false %}
8 |
9 | 使用
10 |
11 | Material for MkDocs
12 |
13 | 制作
14 |
15 | {% endif %}
16 |
--------------------------------------------------------------------------------
/docs/coding_style.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/docs/coding_style.md
--------------------------------------------------------------------------------
/docs/contributing.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/docs/contributing.md
--------------------------------------------------------------------------------
/docs/faq.md:
--------------------------------------------------------------------------------
1 | ## 是否支持Vocaloid1 MIDI格式?
2 |
3 | Vocaloid1 MIDI格式在具体内容方面与Vocaloid2的vsq格式基本一致,主要区别只是文件后缀不同。因此,实际上也是可以支持的,只是需要几项手动调整的步骤。
4 |
5 | 在导入时,可以关闭"切换格式时重置列表"及"自动检测导入格式"两个开关,再手动选择导入格式为vsq格式;在导出时,可以关闭"自动设置后缀名"这个开关,再选择导出格式为vsq格式,最后给导出文件名末尾加入.mid后缀。
6 |
7 | ## 是否支持Vocaloid版Piapro Studio的工程格式(.ppsf)?
8 |
9 | 因为Vocaloid版本的ppsf格式属于自定义二进制格式(详见 歌声合成工程格式一览),并且Crypton Future Media官方也没有提供文档供解析,因此仅提供基本的导入支持。而Piapro Studio编辑器支持vsqx格式的导入/导出,建议以vsqx格式作为中介。
10 |
--------------------------------------------------------------------------------
/docs/license.md:
--------------------------------------------------------------------------------
1 | LibreSVIP 是以 [MIT许可协议](https://opensource.org/licenses/MIT) 发布的开源软件.
2 |
3 | ```
4 | --8<-- "LICENSE"
5 | ```
6 |
--------------------------------------------------------------------------------
/docs/setup.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/docs/setup.md
--------------------------------------------------------------------------------
/experimental/dspx/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/experimental/dspx/__init__.py
--------------------------------------------------------------------------------
/experimental/nn/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/experimental/nn/__init__.py
--------------------------------------------------------------------------------
/experimental/vsp/__init__,py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/experimental/vsp/__init__,py
--------------------------------------------------------------------------------
/experimental/vsp4/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/experimental/vsp4/__init__.py
--------------------------------------------------------------------------------
/experimental/xvsq/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/experimental/xvsq/__init__.py
--------------------------------------------------------------------------------
/libresvip/__init__.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | __version__ = "1.11.0"
4 | os.environ.setdefault("LOGURU_AUTOINIT", "false")
5 |
--------------------------------------------------------------------------------
/libresvip/__pyinstaller/__init__.py:
--------------------------------------------------------------------------------
1 | from libresvip.core.constants import pkg_dir
2 |
3 |
4 | def get_hook_dirs() -> list[str]:
5 | return [str(pkg_dir / "__pyinstaller")]
6 |
--------------------------------------------------------------------------------
/libresvip/__pyinstaller/hook-libresvip.py:
--------------------------------------------------------------------------------
1 | from PyInstaller.utils.hooks import ( # noqa: N999
2 | collect_data_files,
3 | collect_submodules,
4 | )
5 |
6 | hiddenimports = (
7 | collect_submodules("libresvip.core")
8 | + collect_submodules("libresvip.model")
9 | + collect_submodules("libresvip.utils")
10 | )
11 |
12 | datas = (
13 | collect_data_files("libresvip.middlewares", include_py_files=True, excludes=["**/*.po"])
14 | + collect_data_files("libresvip.plugins", include_py_files=True, excludes=["**/*.po"])
15 | + collect_data_files(
16 | "libresvip.res", excludes=["**/*.po", "**/*.qml", "**/*.qrc", "**/*.ts", "**/qmldir"]
17 | )
18 | )
19 |
--------------------------------------------------------------------------------
/libresvip/cli/__init__.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | from libresvip.core.warning_types import warning_logger
4 | from libresvip.extension.manager import get_translation
5 | from libresvip.utils import translation
6 |
7 | warning_logger.add(sys.stderr, format="{message}", level="WARNING")
8 | translation.singleton_translation = get_translation()
9 |
--------------------------------------------------------------------------------
/libresvip/cli/__main__.py:
--------------------------------------------------------------------------------
1 | from libresvip.cli.app import app
2 |
3 | if __name__ == "__main__":
4 | app()
5 |
--------------------------------------------------------------------------------
/libresvip/cli/app.py:
--------------------------------------------------------------------------------
1 | import typer
2 |
3 | from .commands import conf_app, plugin_app, proj_app
4 |
5 | app = typer.Typer()
6 |
7 | app.add_typer(conf_app, name="conf")
8 | app.add_typer(plugin_app, name="plugin")
9 | app.add_typer(proj_app, name="proj")
10 |
--------------------------------------------------------------------------------
/libresvip/cli/commands/__init__.py:
--------------------------------------------------------------------------------
1 | __all__ = [
2 | "conf_app",
3 | "plugin_app",
4 | "proj_app",
5 | ]
6 |
7 | from .conf import app as conf_app
8 | from .plugin import app as plugin_app
9 | from .proj import app as proj_app
10 |
--------------------------------------------------------------------------------
/libresvip/cli/commands/conf.py:
--------------------------------------------------------------------------------
1 | from typing import Annotated
2 |
3 | import typer
4 |
5 | from libresvip.core.config import save_settings, settings
6 | from libresvip.utils.translation import gettext_lazy as _
7 |
8 | app = typer.Typer()
9 |
10 |
11 | @app.command("list")
12 | def list_configurations() -> None:
13 | for name, value in settings.model_dump().items():
14 | typer.echo(f"{name}: {value}")
15 |
16 |
17 | def conf_key_callback(value: str) -> str:
18 | if value not in ["language"]:
19 | raise typer.BadParameter(
20 | _("Setting {} is not supported in cli mode.").format(value),
21 | )
22 | return value
23 |
24 |
25 | @app.command("set")
26 | def set_configuration(
27 | name: Annotated[str, typer.Argument(callback=conf_key_callback)],
28 | value: Annotated[str, typer.Argument()],
29 | ) -> None:
30 | setattr(settings, name, value)
31 | save_settings()
32 | typer.echo(_("Set {} to {}").format(name, value))
33 |
--------------------------------------------------------------------------------
/libresvip/core/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/core/__init__.py
--------------------------------------------------------------------------------
/libresvip/core/compat.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | try:
4 | import ujson as json
5 | except ImportError:
6 | import json
7 |
8 | if hasattr(json, "_default_encoder"):
9 | json._default_encoder.item_separator = ","
10 | json._default_encoder.key_separator = ":"
11 |
12 | __all__ = ["Traversable", "ZipFile", "json"]
13 |
14 | if sys.version_info < (3, 11):
15 | from importlib_resources.abc import Traversable
16 | from repro_zipfile import ReproducibleZipFile as ZipFile
17 | else:
18 | from importlib.resources.abc import Traversable
19 | from zipfile import ZipFile
20 |
--------------------------------------------------------------------------------
/libresvip/core/constants.py:
--------------------------------------------------------------------------------
1 | from importlib.resources import files
2 | from typing import Final
3 |
4 | import platformdirs
5 |
6 | PACKAGE_NAME: Final[str] = "libresvip"
7 |
8 | # lyric related constants
9 | DEFAULT_PHONEME: Final[str] = "la"
10 | DEFAULT_ENGLISH_LYRIC: Final[str] = DEFAULT_PHONEME
11 | DEFAULT_SPANISH_LYRIC: Final[str] = DEFAULT_ENGLISH_LYRIC
12 | DEFAULT_CHINESE_LYRIC: Final[str] = "啦"
13 | DEFAULT_JAPANESE_LYRIC: Final[str] = "ラ"
14 | DEFAULT_KOREAN_LYRIC: Final[str] = "라"
15 |
16 | # midi related constants
17 | DEFAULT_BPM: Final[float] = 120.0
18 | KEY_IN_OCTAVE: Final[int] = 12
19 | TICKS_IN_BEAT: Final[int] = 480
20 | MIN_BREAK_LENGTH_BETWEEN_PITCH_SECTIONS: Final[int] = TICKS_IN_BEAT
21 | DEFAULT_PITCH_BEND_SENSITIVITY: Final[int] = 2
22 | MAX_PITCH_BEND_SENSITIVITY: Final[int] = 24
23 | PITCH_MAX_VALUE: Final[int] = 8191
24 |
25 | app_dir = platformdirs.AppDirs(PACKAGE_NAME)
26 |
27 | pkg_dir = files(PACKAGE_NAME)
28 | res_dir = pkg_dir / "res"
29 |
--------------------------------------------------------------------------------
/libresvip/core/exceptions.py:
--------------------------------------------------------------------------------
1 | class InvalidFileTypeError(Exception):
2 | pass
3 |
4 |
5 | class UnsupportedProjectVersionError(InvalidFileTypeError):
6 | pass
7 |
8 |
9 | class NoTrackError(Exception):
10 | pass
11 |
12 |
13 | class NotesOverlappedError(Exception):
14 | pass
15 |
16 |
17 | class ParamsError(Exception):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/core/lyric_phoneme/__init__.py:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/libresvip/core/lyric_phoneme/japanese/__init__.py:
--------------------------------------------------------------------------------
1 | from typing import Any
2 |
3 | from wanakana.japanese import (
4 | is_kana,
5 | is_romaji,
6 | to_hiragana,
7 | to_katakana,
8 | )
9 | from wanakana.japanese import to_romaji as _to_romaji
10 |
11 | __all__ = [
12 | "is_kana",
13 | "is_romaji",
14 | "to_hiragana",
15 | "to_katakana",
16 | "to_romaji",
17 | ]
18 |
19 |
20 | def to_romaji(word: str, **kwargs: Any) -> str:
21 | kwargs.setdefault("custom_romaji_mapping", {"っ": "cl"})
22 | return _to_romaji(word, **kwargs) if word else ""
23 |
--------------------------------------------------------------------------------
/libresvip/core/lyric_phoneme/korean/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/core/lyric_phoneme/korean/__init__.py
--------------------------------------------------------------------------------
/libresvip/extension/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/extension/__init__.py
--------------------------------------------------------------------------------
/libresvip/gui/__init__.py:
--------------------------------------------------------------------------------
1 | from importlib.resources import as_file
2 |
3 | from PySide6 import QtCore
4 |
5 | from libresvip.core.constants import res_dir
6 |
7 |
8 | def init_resources() -> None:
9 | with as_file(res_dir / "resources.rcc") as rcc_file:
10 | QtCore.QResource.registerResource(str(rcc_file))
11 |
12 |
13 | def cleanup_resources() -> None:
14 | with as_file(res_dir / "resources.rcc") as rcc_file:
15 | QtCore.QResource.unregisterResource(str(rcc_file))
16 |
17 |
18 | init_resources()
19 |
--------------------------------------------------------------------------------
/libresvip/gui/models/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/gui/models/__init__.py
--------------------------------------------------------------------------------
/libresvip/gui/models/base_task.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | import dataclasses
4 |
5 |
6 | @dataclasses.dataclass
7 | class BaseTask:
8 | name: str | None = ""
9 | path: str | None = ""
10 | stem: str | None = ""
11 | ext: str | None = ""
12 | tmp_path: str | None = ""
13 |
14 | running: bool | None = False
15 | success: bool | None = None
16 | error: str | None = ""
17 | warning: str | None = ""
18 | child_tasks: list[BaseTask] = dataclasses.field(default_factory=list)
19 |
--------------------------------------------------------------------------------
/libresvip/gui/modules/__init__.py:
--------------------------------------------------------------------------------
1 | __all__ = [
2 | "Clipboard",
3 | "ConfigItems",
4 | "FramelessWindow",
5 | "IconicFontLoader",
6 | "LocaleSwitcher",
7 | "TaskManager",
8 | "app",
9 | "app_close_event",
10 | "event_loop",
11 | "qml_engine",
12 | ]
13 |
14 | import platform
15 | import sys
16 |
17 | from .application import app, app_close_event, event_loop, qml_engine
18 | from .clipboard import Clipboard
19 | from .config_items import ConfigItems
20 | from .font_loader import IconicFontLoader
21 | from .locale_switcher import LocaleSwitcher
22 | from .log_handler import enable_log_handler
23 | from .task_manager import TaskManager
24 |
25 | if sys.platform == "win32":
26 | from libresvip.gui.modules.frameless_window_win32 import FramelessWindow
27 | else:
28 | from libresvip.gui.modules.frameless_window import FramelessWindow
29 |
30 | enable_log_handler()
31 | if platform.python_implementation() == "CPython":
32 | __all__ += ["Notifier"]
33 |
34 | from .notifier import Notifier
35 |
--------------------------------------------------------------------------------
/libresvip/gui/modules/clipboard.py:
--------------------------------------------------------------------------------
1 | from PySide6.QtCore import QObject, Slot
2 | from PySide6.QtQml import QmlElement
3 |
4 | from __feature__ import snake_case, true_property # isort:skip # noqa: F401
5 |
6 | from libresvip.utils.text import shorten_error_message
7 |
8 | from .application import app
9 |
10 | QML_IMPORT_NAME = "LibreSVIP"
11 | QML_IMPORT_MAJOR_VERSION = 1
12 | QML_IMPORT_MINOR_VERSION = 0
13 |
14 |
15 | @QmlElement
16 | class Clipboard(QObject):
17 | def __init__(self, parent: QObject | None = None) -> None:
18 | super().__init__(parent=parent)
19 | self.clipboard = app.clipboard()
20 |
21 | @Slot(str, result=bool)
22 | def set_clipboard(self, text: str) -> bool:
23 | self.clipboard.set_text(text)
24 | return True
25 |
26 | @Slot(str, result=str)
27 | def shorten_error_message(self, msg: str) -> str:
28 | return shorten_error_message(msg)
29 |
--------------------------------------------------------------------------------
/libresvip/gui/modules/font_loader.py:
--------------------------------------------------------------------------------
1 | import functools
2 |
3 | from fonticon_mdi7 import MDI7
4 | from PySide6.QtCore import QObject, QUrl, Slot
5 | from PySide6.QtQml import QmlElement
6 |
7 | from __feature__ import snake_case, true_property # isort:skip # noqa: F401
8 |
9 | QML_IMPORT_NAME = "LibreSVIP"
10 | QML_IMPORT_MAJOR_VERSION = 1
11 | QML_IMPORT_MINOR_VERSION = 0
12 |
13 |
14 | @QmlElement
15 | class IconicFontLoader(QObject):
16 | @Slot(str, result=str)
17 | def font_path(self, font_family: str) -> str:
18 | return QUrl.from_local_file(MDI7.__font_file__).to_string()
19 |
20 | @Slot(str, result=str)
21 | @functools.cache
22 | def icon(self, icon_name: str) -> str:
23 | font_family, _, icon_name = icon_name.partition(".")
24 | icon_name = icon_name.replace("-", "_")
25 | return getattr(MDI7, icon_name, "").partition(".")[-1]
26 |
--------------------------------------------------------------------------------
/libresvip/gui/modules/url_opener.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from PySide6.QtCore import QUrl
4 | from PySide6.QtGui import QDesktopServices
5 |
6 | from __feature__ import snake_case, true_property # isort:skip # noqa: F401
7 |
8 |
9 | def open_path(path: pathlib.Path) -> None:
10 | output_url = QUrl.from_local_file(path)
11 | QDesktopServices.open_url(output_url)
12 |
13 |
14 | def open_url(url: str) -> None:
15 | QDesktopServices.open_url(QUrl(url))
16 |
--------------------------------------------------------------------------------
/libresvip/gui/modules/vendor/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/gui/modules/vendor/__init__.py
--------------------------------------------------------------------------------
/libresvip/gui/modules/vendor/qasync/_common.py:
--------------------------------------------------------------------------------
1 | # © 2018 Gerard Marull-Paretas
2 | # © 2014 Mark Harviston
3 | # © 2014 Arve Knudsen
4 | # BSD License
5 |
6 | """Mostly irrelevant, but useful utilities common to UNIX and Windows."""
7 |
8 | import selectors
9 |
10 | from PySide6 import QtCore
11 |
12 | _fileno = selectors._fileobj_to_fd # type: ignore[attr-defined]
13 |
14 |
15 | def make_signaller(*types: type) -> QtCore.QObject:
16 | class Signaller(QtCore.QObject):
17 | signal = QtCore.Signal(*types)
18 |
19 | return Signaller()
20 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pitch_shift/__init__.py
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/locales/de_DE/LC_MESSAGES/pitch_shift.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pitch_shift/locales/de_DE/LC_MESSAGES/pitch_shift.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/locales/de_DE/LC_MESSAGES/pitch_shift.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/middlewares/pitch_shift/pitch_shift.po\n"
8 | "X-Crowdin-File-ID: 100\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-17 09:01\n"
14 |
15 | msgid "Key transition of pitch"
16 | msgstr ""
17 |
18 | msgid "Pitch shift in semitones."
19 | msgstr ""
20 |
21 | msgid "Pitch Shift"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/locales/ja_JP/LC_MESSAGES/pitch_shift.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pitch_shift/locales/ja_JP/LC_MESSAGES/pitch_shift.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/locales/ja_JP/LC_MESSAGES/pitch_shift.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/middlewares/pitch_shift/pitch_shift.po\n"
8 | "X-Crowdin-File-ID: 100\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "Key transition of pitch"
16 | msgstr ""
17 |
18 | msgid "Pitch shift in semitones."
19 | msgstr ""
20 |
21 | msgid "Pitch Shift"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/locales/zh_CN/LC_MESSAGES/pitch_shift.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pitch_shift/locales/zh_CN/LC_MESSAGES/pitch_shift.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/locales/zh_CN/LC_MESSAGES/pitch_shift.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/middlewares/pitch_shift/pitch_shift.po\n"
8 | "X-Crowdin-File-ID: 100\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "Key transition of pitch"
16 | msgstr "音高变化量"
17 |
18 | msgid "Pitch shift in semitones."
19 | msgstr "音高变化(以半音为单位)。"
20 |
21 | msgid "Pitch Shift"
22 | msgstr "音高变调"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.utils.translation import gettext_lazy as _
4 |
5 |
6 | class ProcessOptions(BaseModel):
7 | key: int = Field(
8 | default=0,
9 | title=_("Key transition of pitch"),
10 | description=_("Pitch shift in semitones."),
11 | )
12 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/pitch_shift.po:
--------------------------------------------------------------------------------
1 | msgid "Key transition of pitch"
2 | msgstr ""
3 |
4 | msgid "Pitch shift in semitones."
5 | msgstr ""
6 |
7 | msgid "Pitch Shift"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pitch_shift/pitch_shift.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = Pitch Shift
3 | module = pitch_shift
4 |
5 | [Documentation]
6 | Author = SoulMelody
7 | Version = 1.0.0
8 | Website = https://space.bilibili.com/175862486
9 | abbreviation = pitch_shift
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/project_zoom/__init__.py
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/locales/de_DE/LC_MESSAGES/project_zoom.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/project_zoom/locales/de_DE/LC_MESSAGES/project_zoom.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/locales/ja_JP/LC_MESSAGES/project_zoom.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/project_zoom/locales/ja_JP/LC_MESSAGES/project_zoom.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/locales/zh_CN/LC_MESSAGES/project_zoom.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/project_zoom/locales/zh_CN/LC_MESSAGES/project_zoom.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/project_zoom.po:
--------------------------------------------------------------------------------
1 | msgid "None"
2 | msgstr ""
3 |
4 | msgid "1/2"
5 | msgstr ""
6 |
7 | msgid "5/3"
8 | msgstr ""
9 |
10 | msgid "3/2"
11 | msgstr ""
12 |
13 | msgid "6/5"
14 | msgstr ""
15 |
16 | msgid "4/5"
17 | msgstr ""
18 |
19 | msgid "3/5"
20 | msgstr ""
21 |
22 | msgid "3/4"
23 | msgstr ""
24 |
25 | msgid "Zoom factor"
26 | msgstr ""
27 |
28 | msgid ""
29 | "Change Bpm and notes in parallel so that the actual singing speed is "
30 | "kept. For example, with factor 2, 60 bpm becomes 120 bpm and all notes "
31 | "become twice the length"
32 | msgstr ""
33 |
34 | msgid "Project Zoom"
35 | msgstr ""
36 |
37 | msgid "Zoom in/out project"
38 | msgstr ""
39 |
40 | msgid "Sder Colin"
41 | msgstr ""
42 |
43 |
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/project_zoom.py:
--------------------------------------------------------------------------------
1 | import fractions
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 | from libresvip.model.reset_time_axis import zoom_project
6 |
7 | from .options import ProcessOptions
8 |
9 |
10 | class ProjectZoomMiddleware(plugin_base.MiddlewareBase):
11 | def process(self, project: Project, options: ProcessOptions) -> Project:
12 | if (zoom_factor := float(fractions.Fraction(options.factor.value))) != 1.0:
13 | return zoom_project(project, zoom_factor)
14 | return project
15 |
--------------------------------------------------------------------------------
/libresvip/middlewares/project_zoom/project_zoom.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = Project Zoom
3 | module = project_zoom
4 |
5 | [Documentation]
6 | Author = Sder Colin
7 | Version = 1.0.0
8 | Website = https://sdercolin.github.io/utaformatix3/
9 | Description = Zoom in/out project
10 | abbreviation = project_zoom
--------------------------------------------------------------------------------
/libresvip/middlewares/pronounciation_conversion/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pronounciation_conversion/__init__.py
--------------------------------------------------------------------------------
/libresvip/middlewares/pronounciation_conversion/locales/de_DE/LC_MESSAGES/pronounciation_conversion.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pronounciation_conversion/locales/de_DE/LC_MESSAGES/pronounciation_conversion.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/pronounciation_conversion/locales/ja_JP/LC_MESSAGES/pronounciation_conversion.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pronounciation_conversion/locales/ja_JP/LC_MESSAGES/pronounciation_conversion.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/pronounciation_conversion/locales/zh_CN/LC_MESSAGES/pronounciation_conversion.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/pronounciation_conversion/locales/zh_CN/LC_MESSAGES/pronounciation_conversion.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/pronounciation_conversion/pronounciation_conversion.po:
--------------------------------------------------------------------------------
1 | msgid "None"
2 | msgstr ""
3 |
4 | msgid "Hanzi to Pinyin"
5 | msgstr ""
6 |
7 | msgid "Hanzi to Jyutping"
8 | msgstr ""
9 |
10 | msgid "Hangul to Romanization"
11 | msgstr ""
12 |
13 | msgid "Kana to Romaji"
14 | msgstr ""
15 |
16 | msgid "To Hiragana"
17 | msgstr ""
18 |
19 | msgid "To Katakana"
20 | msgstr ""
21 |
22 | msgid "Pronounciation conversion mode"
23 | msgstr ""
24 |
25 | msgid "Convert lyrics to the specified pronounciation format"
26 | msgstr ""
27 |
28 | msgid "Pronounciation Conversion"
29 | msgstr ""
30 |
31 | msgid "For Chinese and Japanese Lyrics"
32 | msgstr ""
33 |
34 | msgid "SoulMelody"
35 | msgstr ""
36 |
37 |
--------------------------------------------------------------------------------
/libresvip/middlewares/pronounciation_conversion/pronounciation_conversion.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = Pronounciation Conversion
3 | module = pronounciation_conversion
4 |
5 | [Documentation]
6 | Author = SoulMelody
7 | Version = 1.0.0
8 | Website = https://space.bilibili.com/175862486
9 | Description = For Chinese and Japanese Lyrics
10 | abbreviation = pronounciation_conversion
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/remove_short_silences/__init__.py
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/locales/de_DE/LC_MESSAGES/remove_short_silences.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/remove_short_silences/locales/de_DE/LC_MESSAGES/remove_short_silences.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/locales/ja_JP/LC_MESSAGES/remove_short_silences.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/remove_short_silences/locales/ja_JP/LC_MESSAGES/remove_short_silences.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/locales/zh_CN/LC_MESSAGES/remove_short_silences.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/remove_short_silences/locales/zh_CN/LC_MESSAGES/remove_short_silences.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/remove_short_silences.po:
--------------------------------------------------------------------------------
1 | msgid "Zero length note"
2 | msgstr ""
3 |
4 | msgid "1/8 note"
5 | msgstr ""
6 |
7 | msgid "1/16 note"
8 | msgstr ""
9 |
10 | msgid "1/32 note"
11 | msgstr ""
12 |
13 | msgid "1/64 note"
14 | msgstr ""
15 |
16 | msgid "1/128 note"
17 | msgstr ""
18 |
19 | msgid "Max length to be processed (exclusive)"
20 | msgstr ""
21 |
22 | msgid "Extend note to fill the short silences between it and its next note"
23 | msgstr ""
24 |
25 | msgid "Remove Short Silences"
26 | msgstr ""
27 |
28 | msgid "Fill short rests"
29 | msgstr ""
30 |
31 | msgid "SoulMelody"
32 | msgstr ""
33 |
34 |
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/remove_short_silences.py:
--------------------------------------------------------------------------------
1 | import fractions
2 |
3 | import more_itertools
4 |
5 | from libresvip.extension import base as plugin_base
6 | from libresvip.model.base import Project, SingingTrack
7 |
8 | from .options import ProcessOptions
9 |
10 |
11 | class RemoveShortSilencesMiddleware(plugin_base.MiddlewareBase):
12 | def process(self, project: Project, options: ProcessOptions) -> Project:
13 | first_bar_tick = round(project.time_signature_list[0].bar_length())
14 | if min_silence_length := fractions.Fraction(options.fill_threshold.value):
15 | silence_threshold = first_bar_tick * min_silence_length
16 | for track in project.track_list:
17 | if isinstance(track, SingingTrack):
18 | for prev_note, note in more_itertools.pairwise(track.note_list):
19 | if 0 < note.start_pos - prev_note.end_pos < silence_threshold:
20 | prev_note.length = note.start_pos - prev_note.start_pos
21 | return project
22 |
--------------------------------------------------------------------------------
/libresvip/middlewares/remove_short_silences/remove_short_silences.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = Remove Short Silences
3 | module = remove_short_silences
4 |
5 | [Documentation]
6 | Author = SoulMelody
7 | Version = 1.0.0
8 | Website = https://space.bilibili.com/175862486
9 | Description = Fill short rests
10 | abbreviation = remove_short_silences
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/replace_lyric/__init__.py
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/locales/de_DE/LC_MESSAGES/replace_lyric.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/replace_lyric/locales/de_DE/LC_MESSAGES/replace_lyric.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/locales/de_DE/LC_MESSAGES/replace_lyric.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/middlewares/replace_lyric/replace_lyric.po\n"
8 | "X-Crowdin-File-ID: 108\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-17 09:01\n"
14 |
15 | msgid "Name of lyric replacement preset"
16 | msgstr ""
17 |
18 | msgid "Replace lyrics"
19 | msgstr ""
20 |
21 | msgid "Replace lyrics using preset rules. You can customize the lyrics replacement rules in the program configuration page"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/locales/ja_JP/LC_MESSAGES/replace_lyric.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/replace_lyric/locales/ja_JP/LC_MESSAGES/replace_lyric.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/locales/ja_JP/LC_MESSAGES/replace_lyric.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/middlewares/replace_lyric/replace_lyric.po\n"
8 | "X-Crowdin-File-ID: 108\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "Name of lyric replacement preset"
16 | msgstr ""
17 |
18 | msgid "Replace lyrics"
19 | msgstr ""
20 |
21 | msgid "Replace lyrics using preset rules. You can customize the lyrics replacement rules in the program configuration page"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/locales/zh_CN/LC_MESSAGES/replace_lyric.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/middlewares/replace_lyric/locales/zh_CN/LC_MESSAGES/replace_lyric.mo
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/locales/zh_CN/LC_MESSAGES/replace_lyric.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/middlewares/replace_lyric/replace_lyric.po\n"
8 | "X-Crowdin-File-ID: 108\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "Name of lyric replacement preset"
16 | msgstr "歌词替换预设的名称"
17 |
18 | msgid "Replace lyrics"
19 | msgstr "替换歌词"
20 |
21 | msgid "Replace lyrics using preset rules. You can customize the lyrics replacement rules in the program configuration page"
22 | msgstr "使用预设规则对歌词进行替换。你可以在程序配置页面中编辑歌词替换规则"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.utils.translation import gettext_lazy as _
4 |
5 |
6 | class ProcessOptions(BaseModel):
7 | lyric_replacement_preset_name: str = Field(
8 | default="default",
9 | title=_("Name of lyric replacement preset"),
10 | )
11 |
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/replace_lyric.po:
--------------------------------------------------------------------------------
1 | msgid "Name of lyric replacement preset"
2 | msgstr ""
3 |
4 | msgid "Replace lyrics"
5 | msgstr ""
6 |
7 | msgid ""
8 | "Replace lyrics using preset rules. You can customize the lyrics "
9 | "replacement rules in the program configuration page"
10 | msgstr ""
11 |
12 | msgid "SoulMelody"
13 | msgstr ""
14 |
15 |
--------------------------------------------------------------------------------
/libresvip/middlewares/replace_lyric/replace_lyric.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = Replace lyrics
3 | module = replace_lyric
4 |
5 | [Documentation]
6 | Author = SoulMelody
7 | Version = 1.0.0
8 | Website = https://space.bilibili.com/175862486
9 | Description = Replace lyrics using preset rules. You can customize the lyrics replacement rules in the program configuration page
10 | abbreviation = replace_lyric
--------------------------------------------------------------------------------
/libresvip/mobile/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/mobile/__init__.py
--------------------------------------------------------------------------------
/libresvip/model/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/model/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/acep/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/acep/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/acep/color_pool.py:
--------------------------------------------------------------------------------
1 | _colors = [
2 | "#b17ef3",
3 | "#da9de3",
4 | "#dd88d5",
5 | "#f57db7",
6 | "#dd8585",
7 | "#ebac99",
8 | "#f4a070",
9 | "#f1c970",
10 | "#c0cf63",
11 | "#99f07b",
12 | "#70d4b1",
13 | "#91bcdc", # start
14 | "#96afef",
15 | "#979ae4",
16 | ]
17 |
18 |
19 | def count_color() -> int:
20 | return len(_colors)
21 |
22 |
23 | def get_color(index: int) -> str:
24 | return _colors[index % len(_colors)]
25 |
--------------------------------------------------------------------------------
/libresvip/plugins/acep/enums.py:
--------------------------------------------------------------------------------
1 | # mypy: disable-error-code="misc"
2 | from enum import Enum
3 | from typing import Annotated
4 |
5 | from pydantic import Field
6 |
7 | from libresvip.utils.translation import gettext_lazy as _
8 |
9 |
10 | class AcepLyricsLanguage(Enum):
11 | CHINESE: Annotated[
12 | str,
13 | Field(
14 | title=_("Chinese"),
15 | ),
16 | ] = "CHN"
17 | JAPANESE: Annotated[
18 | str,
19 | Field(
20 | title=_("Japanese"),
21 | ),
22 | ] = "JPN"
23 | ENGLISH: Annotated[
24 | str,
25 | Field(
26 | title=_("English"),
27 | ),
28 | ] = "ENG"
29 | SPANISH: Annotated[
30 | str,
31 | Field(
32 | title=_("Spanish"),
33 | ),
34 | ] = "SPA"
35 |
--------------------------------------------------------------------------------
/libresvip/plugins/acep/locales/de_DE/LC_MESSAGES/acep.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/acep/locales/de_DE/LC_MESSAGES/acep.mo
--------------------------------------------------------------------------------
/libresvip/plugins/acep/locales/ja_JP/LC_MESSAGES/acep.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/acep/locales/ja_JP/LC_MESSAGES/acep.mo
--------------------------------------------------------------------------------
/libresvip/plugins/acep/locales/zh_CN/LC_MESSAGES/acep.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/acep/locales/zh_CN/LC_MESSAGES/acep.mo
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/aisp/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/aisp.po:
--------------------------------------------------------------------------------
1 | msgid "AISingers"
2 | msgstr ""
3 |
4 | msgid "AISingers Studio project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for AISingers Studio project file"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/locales/de_DE/LC_MESSAGES/aisp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/aisp/locales/de_DE/LC_MESSAGES/aisp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/locales/de_DE/LC_MESSAGES/aisp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/aisp/aisp.po\n"
8 | "X-Crowdin-File-ID: 112\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "AISingers"
16 | msgstr ""
17 |
18 | msgid "AISingers Studio project file"
19 | msgstr "AISingers Studio Projektdatei"
20 |
21 | msgid "Conversion plugin for AISingers Studio project file"
22 | msgstr "Konvertierungs-Plugin für AISingers Studio Projektdateien"
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/locales/ja_JP/LC_MESSAGES/aisp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/aisp/locales/ja_JP/LC_MESSAGES/aisp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/locales/ja_JP/LC_MESSAGES/aisp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/aisp/aisp.po\n"
8 | "X-Crowdin-File-ID: 112\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "AISingers"
16 | msgstr ""
17 |
18 | msgid "AISingers Studio project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for AISingers Studio project file"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/locales/zh_CN/LC_MESSAGES/aisp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/aisp/locales/zh_CN/LC_MESSAGES/aisp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/locales/zh_CN/LC_MESSAGES/aisp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/aisp/aisp.po\n"
8 | "X-Crowdin-File-ID: 112\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "AISingers"
16 | msgstr ""
17 |
18 | msgid "AISingers Studio project file"
19 | msgstr "AISingers Studio 工程文件"
20 |
21 | msgid "Conversion plugin for AISingers Studio project file"
22 | msgstr "AISingers Studio 工程文件转换插件"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/aisp/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnablePitchImportationMixin,
11 | EnableInstrumentalTrackImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/ass/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ass/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ass/ass_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .ass_generator import AssGenerator
7 | from .options import OutputOptions
8 |
9 |
10 | class AssConverter(plugin_base.WriteOnlyConverterBase):
11 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
12 | ssa_obj = AssGenerator(options).generate_project(project)
13 | path.write_bytes(ssa_obj.to_string("ass").encode(options.encoding))
14 |
--------------------------------------------------------------------------------
/libresvip/plugins/ass/locales/de_DE/LC_MESSAGES/ass.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ass/locales/de_DE/LC_MESSAGES/ass.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ass/locales/ja_JP/LC_MESSAGES/ass.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ass/locales/ja_JP/LC_MESSAGES/ass.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ass/locales/zh_CN/LC_MESSAGES/ass.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ass/locales/zh_CN/LC_MESSAGES/ass.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ccs/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/ccs.po:
--------------------------------------------------------------------------------
1 | msgid "CeVIO"
2 | msgstr ""
3 |
4 | msgid "CeVIO Creative Studio Project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for CeVIO Creative Studio project file"
8 | msgstr ""
9 |
10 | msgid "Sder Colin"
11 | msgstr ""
12 |
13 | msgid "Unsupported lyric: "
14 | msgstr ""
15 |
16 | msgid "Pitch value is out of bounds"
17 | msgstr ""
18 |
19 | msgid "Default Singer Name"
20 | msgstr ""
21 |
22 | msgid "Default Voicebank ID"
23 | msgstr ""
24 |
25 | msgid "Default Voicebank Version"
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | DEFAULT_PHONEME: Final[str] = "r,a"
4 | TIME_UNIT_AS_TICKS_PER_BPM: Final[float] = 4.8 / 120
5 | TEMP_VALUE_AS_NULL: Final[float] = -1.0
6 | OCTAVE_OFFSET: Final[int] = -1
7 | FIXED_MEASURE_PREFIX: Final[int] = 1
8 | TICK_RATE: Final[float] = 2.0
9 | MIN_DATA_LENGTH: Final[int] = 500
10 |
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/locales/de_DE/LC_MESSAGES/ccs.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ccs/locales/de_DE/LC_MESSAGES/ccs.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/locales/ja_JP/LC_MESSAGES/ccs.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ccs/locales/ja_JP/LC_MESSAGES/ccs.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/locales/ja_JP/LC_MESSAGES/ccs.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ccs/ccs.po\n"
8 | "X-Crowdin-File-ID: 116\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "CeVIO"
16 | msgstr ""
17 |
18 | msgid "CeVIO Creative Studio Project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for CeVIO Creative Studio project file"
22 | msgstr ""
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 | msgid "Unsupported lyric: "
28 | msgstr ""
29 |
30 | msgid "Pitch value is out of bounds"
31 | msgstr ""
32 |
33 | msgid "Default Singer Name"
34 | msgstr ""
35 |
36 | msgid "Default Voicebank ID"
37 | msgstr ""
38 |
39 | msgid "Default Voicebank Version"
40 | msgstr ""
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/locales/zh_CN/LC_MESSAGES/ccs.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ccs/locales/zh_CN/LC_MESSAGES/ccs.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ccs/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 | from libresvip.utils.translation import gettext_lazy as _
8 |
9 |
10 | class InputOptions(
11 | EnableInstrumentalTrackImportationMixin,
12 | EnablePitchImportationMixin,
13 | BaseModel,
14 | ):
15 | pass
16 |
17 |
18 | class OutputOptions(BaseModel):
19 | default_singer_name: str = Field("さとうささら", title=_("Default Singer Name"))
20 | default_singer_id: str = Field("A", title=_("Default Voicebank ID"))
21 | default_singer_version: str = Field("1.0.0", title=_("Default Voicebank Version"))
22 |
--------------------------------------------------------------------------------
/libresvip/plugins/ds/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ds/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ds/locales/de_DE/LC_MESSAGES/ds.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ds/locales/de_DE/LC_MESSAGES/ds.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ds/locales/ja_JP/LC_MESSAGES/ds.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ds/locales/ja_JP/LC_MESSAGES/ds.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ds/locales/zh_CN/LC_MESSAGES/ds.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ds/locales/zh_CN/LC_MESSAGES/ds.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ds/utils/__init__.py:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/libresvip/plugins/ds/utils/lyric_util.py:
--------------------------------------------------------------------------------
1 | from retrie.retrie import Blacklist
2 |
3 | symbols_blacklist = Blacklist([",", ".", "?", "!", ",", "。", "?", "!"], match_substrings=True)
4 |
5 |
6 | def get_symbol_removed_lyric(lyric: str) -> str:
7 | if len(lyric) > 1:
8 | lyric = symbols_blacklist.cleanse_text(lyric)
9 | return lyric
10 |
--------------------------------------------------------------------------------
/libresvip/plugins/ds/utils/models/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ds/utils/models/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ds/utils/models/ds_param_curve.py:
--------------------------------------------------------------------------------
1 | from dataclasses import dataclass
2 |
3 | from .ds_param_node import DsParamNode
4 |
5 |
6 | @dataclass
7 | class DsParamCurve:
8 | step_size: float = 0.005
9 | point_list: list[DsParamNode] | None = None
10 |
--------------------------------------------------------------------------------
/libresvip/plugins/ds/utils/models/ds_param_node.py:
--------------------------------------------------------------------------------
1 | from dataclasses import dataclass
2 |
3 |
4 | @dataclass
5 | class DsParamNode:
6 | time: float = 0.0
7 | value: float = 0.0
8 |
--------------------------------------------------------------------------------
/libresvip/plugins/ds/utils/phoneme_dict.py:
--------------------------------------------------------------------------------
1 | import csv
2 | import io
3 | from importlib.resources import files
4 |
5 | from libresvip.utils.translation import gettext_lazy as _
6 |
7 |
8 | def get_opencpop_dict(dict_name: str, g2p: bool = True) -> dict[str, str]:
9 | opencpop_dict = {}
10 | dict_dir = files("libresvip.plugins.ds") / "dicts"
11 | if (dict_content := (dict_dir / f"{dict_name}.txt").read_text(encoding="utf-8")) is None:
12 | msg = _("Cannot find dict.")
13 | raise FileNotFoundError(msg)
14 | reader = csv.DictReader(
15 | io.StringIO(dict_content),
16 | delimiter="\t",
17 | fieldnames=["pinyin", "phone"],
18 | )
19 | for row in reader:
20 | if g2p:
21 | opencpop_dict[row["pinyin"]] = row["phone"]
22 | else:
23 | opencpop_dict[row["phone"]] = row["pinyin"]
24 | return opencpop_dict
25 |
--------------------------------------------------------------------------------
/libresvip/plugins/dv/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/dv/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/dv/deepvocal_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .dv_generator import DeepVocalGenerator
7 | from .dv_parser import DeepVocalParser
8 | from .model import dv_project_struct
9 | from .options import InputOptions, OutputOptions
10 |
11 |
12 | class DeepVocalConverter(plugin_base.SVSConverterBase):
13 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
14 | parser = DeepVocalParser(options)
15 | dv_project = dv_project_struct.parse(path.read_bytes())
16 | return parser.parse_project(dv_project)
17 |
18 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
19 | dv_project = DeepVocalGenerator(options).generate_project(project)
20 | dv_content = dv_project_struct.build(dv_project)
21 | path.write_bytes(dv_content)
22 |
--------------------------------------------------------------------------------
/libresvip/plugins/dv/dv.po:
--------------------------------------------------------------------------------
1 | msgid "DeepVocal"
2 | msgstr ""
3 |
4 | msgid "DeepVocal project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for dv file"
8 | msgstr ""
9 |
10 | msgid "Oxygen Dioxide"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/dv/locales/de_DE/LC_MESSAGES/dv.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/dv/locales/de_DE/LC_MESSAGES/dv.mo
--------------------------------------------------------------------------------
/libresvip/plugins/dv/locales/de_DE/LC_MESSAGES/dv.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/dv/dv.po\n"
8 | "X-Crowdin-File-ID: 120\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "DeepVocal"
16 | msgstr ""
17 |
18 | msgid "DeepVocal project file"
19 | msgstr "DeepVocal Projektdatei"
20 |
21 | msgid "Conversion plugin for dv file"
22 | msgstr "Konvertierungs-Plugin für dv-Dateien"
23 |
24 | msgid "Oxygen Dioxide"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/dv/locales/ja_JP/LC_MESSAGES/dv.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/dv/locales/ja_JP/LC_MESSAGES/dv.mo
--------------------------------------------------------------------------------
/libresvip/plugins/dv/locales/ja_JP/LC_MESSAGES/dv.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/dv/dv.po\n"
8 | "X-Crowdin-File-ID: 120\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "DeepVocal"
16 | msgstr ""
17 |
18 | msgid "DeepVocal project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for dv file"
22 | msgstr ""
23 |
24 | msgid "Oxygen Dioxide"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/dv/locales/zh_CN/LC_MESSAGES/dv.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/dv/locales/zh_CN/LC_MESSAGES/dv.mo
--------------------------------------------------------------------------------
/libresvip/plugins/dv/locales/zh_CN/LC_MESSAGES/dv.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/dv/dv.po\n"
8 | "X-Crowdin-File-ID: 120\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "DeepVocal"
16 | msgstr ""
17 |
18 | msgid "DeepVocal project file"
19 | msgstr "DeepVocal工程文件"
20 |
21 | msgid "Conversion plugin for dv file"
22 | msgstr "dv 格式转换插件。"
23 |
24 | msgid "Oxygen Dioxide"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/dv/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/gj/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/gj/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/gj/gj.po:
--------------------------------------------------------------------------------
1 | msgid "gjgj"
2 | msgstr ""
3 |
4 | msgid "Gejigeji project file"
5 | msgstr ""
6 |
7 | msgid ""
8 | "Conversion plugin for Gejigeji project file.\n"
9 | "Only Gejigeji v2.0 spec is supported."
10 | msgstr ""
11 |
12 | msgid "FlutyDeer"
13 | msgstr ""
14 |
15 | msgid "Unsupported pinyin:"
16 | msgstr ""
17 |
18 | msgid "Average sampling interval for the volume parameter"
19 | msgstr ""
20 |
21 | msgid ""
22 | "The unit is Tick. The larger the value, the smoother the editor; the "
23 | "smaller the value, the more accurate the volume parameter."
24 | msgstr ""
25 |
26 | msgid "Default singer"
27 | msgstr ""
28 |
29 |
--------------------------------------------------------------------------------
/libresvip/plugins/gj/locales/de_DE/LC_MESSAGES/gj.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/gj/locales/de_DE/LC_MESSAGES/gj.mo
--------------------------------------------------------------------------------
/libresvip/plugins/gj/locales/ja_JP/LC_MESSAGES/gj.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/gj/locales/ja_JP/LC_MESSAGES/gj.mo
--------------------------------------------------------------------------------
/libresvip/plugins/gj/locales/zh_CN/LC_MESSAGES/gj.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/gj/locales/zh_CN/LC_MESSAGES/gj.mo
--------------------------------------------------------------------------------
/libresvip/plugins/gj/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | EnableVolumeImportationMixin,
7 | )
8 | from libresvip.utils.translation import gettext_lazy as _
9 |
10 |
11 | class InputOptions(
12 | EnableInstrumentalTrackImportationMixin,
13 | EnablePitchImportationMixin,
14 | EnableVolumeImportationMixin,
15 | BaseModel,
16 | ):
17 | pass
18 |
19 |
20 | class OutputOptions(BaseModel):
21 | down_sample: int = Field(
22 | default=32,
23 | title=_("Average sampling interval for the volume parameter"),
24 | description=_(
25 | "The unit is Tick. The larger the value, the smoother the editor; the smaller the value, the more accurate the volume parameter."
26 | ),
27 | )
28 | singer: str = Field(
29 | default="扇宝",
30 | title=_("Default singer"),
31 | )
32 |
--------------------------------------------------------------------------------
/libresvip/plugins/gj/singers.py:
--------------------------------------------------------------------------------
1 | from bidict import bidict
2 |
3 | DEFAULT_SINGER = "扇宝"
4 | DEFAULT_SINGER_ID = "513singer"
5 |
6 |
7 | singer2id = bidict(
8 | {
9 | "扇宝": "513singer",
10 | "SING-林嘉慧": "514singer",
11 | "Rocky": "881singer",
12 | "杨超越": "ycysinger",
13 | },
14 | )
15 |
16 | id2singer = singer2id.inverse
17 |
--------------------------------------------------------------------------------
/libresvip/plugins/json/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/json/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/json/json.po:
--------------------------------------------------------------------------------
1 | msgid "JsonSvip"
2 | msgstr ""
3 |
4 | msgid "OpenSVIP file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for OpenSVIP Model, which is based on json"
8 | msgstr ""
9 |
10 | msgid "yqzhishen"
11 | msgstr ""
12 |
13 | msgid "Generate JSON file with indentation"
14 | msgstr ""
15 |
16 | msgid ""
17 | "The indented format is easier to read and modify, but it will take up a "
18 | "larger file size."
19 | msgstr ""
20 |
21 |
--------------------------------------------------------------------------------
/libresvip/plugins/json/locales/de_DE/LC_MESSAGES/json.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/json/locales/de_DE/LC_MESSAGES/json.mo
--------------------------------------------------------------------------------
/libresvip/plugins/json/locales/ja_JP/LC_MESSAGES/json.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/json/locales/ja_JP/LC_MESSAGES/json.mo
--------------------------------------------------------------------------------
/libresvip/plugins/json/locales/ja_JP/LC_MESSAGES/json.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/json/json.po\n"
8 | "X-Crowdin-File-ID: 124\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "JsonSvip"
16 | msgstr ""
17 |
18 | msgid "OpenSVIP file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for OpenSVIP Model, which is based on json"
22 | msgstr ""
23 |
24 | msgid "yqzhishen"
25 | msgstr ""
26 |
27 | msgid "Generate JSON file with indentation"
28 | msgstr ""
29 |
30 | msgid "The indented format is easier to read and modify, but it will take up a larger file size."
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/json/locales/zh_CN/LC_MESSAGES/json.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/json/locales/zh_CN/LC_MESSAGES/json.mo
--------------------------------------------------------------------------------
/libresvip/plugins/json/locales/zh_CN/LC_MESSAGES/json.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/json/json.po\n"
8 | "X-Crowdin-File-ID: 124\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "JsonSvip"
16 | msgstr ""
17 |
18 | msgid "OpenSVIP file"
19 | msgstr "OpenSVIP 文件"
20 |
21 | msgid "Conversion plugin for OpenSVIP Model, which is based on json"
22 | msgstr "OpenSVIP Model 的 JSON 格式转换插件。"
23 |
24 | msgid "yqzhishen"
25 | msgstr "YQ之神"
26 |
27 | msgid "Generate JSON file with indentation"
28 | msgstr "生成带缩进格式的 JSON 文件"
29 |
30 | msgid "The indented format is easier to read and modify, but it will take up a larger file size."
31 | msgstr "缩进格式便于阅读与修改,但会占据较大的文件体积。"
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/json/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.utils.translation import gettext_lazy as _
4 |
5 |
6 | class InputOptions(BaseModel):
7 | pass
8 |
9 |
10 | class OutputOptions(BaseModel):
11 | indented: bool = Field(
12 | default=False,
13 | title=_("Generate JSON file with indentation"),
14 | description=_(
15 | "The indented format is easier to read and modify, but it will take up a larger file size."
16 | ),
17 | )
18 |
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/lrc/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/locales/de_DE/LC_MESSAGES/lrc.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/lrc/locales/de_DE/LC_MESSAGES/lrc.mo
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/locales/ja_JP/LC_MESSAGES/lrc.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/lrc/locales/ja_JP/LC_MESSAGES/lrc.mo
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/locales/zh_CN/LC_MESSAGES/lrc.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/lrc/locales/zh_CN/LC_MESSAGES/lrc.mo
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/lrc_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .lrc_generator import LrcGenerator
7 | from .options import OutputOptions
8 | from .template import render_lrc
9 |
10 |
11 | class LrcConverter(plugin_base.WriteOnlyConverterBase):
12 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
13 | lrc_model = LrcGenerator(options).generate_project(project)
14 | render_lrc(lrc_model, path)
15 |
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/model.py:
--------------------------------------------------------------------------------
1 | from functools import partial
2 |
3 | from libresvip.model.base import BaseModel
4 |
5 |
6 | class TimeTag(BaseModel):
7 | minute: int
8 | second: int
9 | milisecond: int
10 |
11 |
12 | class LyricLine(BaseModel):
13 | time_tags: list[TimeTag]
14 | lyric: str | None = None
15 |
16 |
17 | class InfoTag(BaseModel):
18 | key: str
19 | value: str
20 |
21 |
22 | class LrcFile(BaseModel):
23 | info_tags: list[InfoTag]
24 | lyric_lines: list[LyricLine]
25 |
26 |
27 | TitleInfoTag = partial(InfoTag, key="ti")
28 | ArtistInfoTag = partial(InfoTag, key="ar")
29 | AlbumInfoTag = partial(InfoTag, key="al")
30 | ByInfoTag = partial(InfoTag, key="by")
31 | OffsetInfoTag = partial(InfoTag, key="offset")
32 |
--------------------------------------------------------------------------------
/libresvip/plugins/lrc/template.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from jinja2 import Template
4 |
5 | from .model import LrcFile
6 |
7 | LRC_TEMPLATE = Template(
8 | """\
9 | {% for info_tag in lrc_model.info_tags %}\
10 | [{{ info_tag.key }}:{{ info_tag.value }}]
11 | {% endfor %}\
12 | {% for lyric_line in lrc_model.lyric_lines %}\
13 | {% for time_tag in lyric_line.time_tags %}\
14 | [{{ (time_tag.minute).__str__().rjust(2, '0') }}:\
15 | {{ (time_tag.second).__str__().rjust(2, '0') }}.\
16 | {{ (time_tag.milisecond).__str__().rjust(3, '0') }}]{% endfor %}\
17 | {{ lyric_line.lyric }}\
18 | {% endfor %}"""
19 | )
20 |
21 |
22 | def render_lrc(lrc_model: LrcFile, output_path: pathlib.Path) -> None:
23 | output_path.write_bytes(LRC_TEMPLATE.render(lrc_model=lrc_model).encode("utf-8"))
24 |
--------------------------------------------------------------------------------
/libresvip/plugins/mid/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mid/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/mid/locales/de_DE/LC_MESSAGES/mid.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mid/locales/de_DE/LC_MESSAGES/mid.mo
--------------------------------------------------------------------------------
/libresvip/plugins/mid/locales/ja_JP/LC_MESSAGES/mid.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mid/locales/ja_JP/LC_MESSAGES/mid.mo
--------------------------------------------------------------------------------
/libresvip/plugins/mid/locales/zh_CN/LC_MESSAGES/mid.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mid/locales/zh_CN/LC_MESSAGES/mid.mo
--------------------------------------------------------------------------------
/libresvip/plugins/mid/note_overlap.py:
--------------------------------------------------------------------------------
1 | from operator import attrgetter
2 |
3 | from libresvip.core.time_interval import RangeInterval
4 | from libresvip.model.base import Note
5 |
6 |
7 | def has_overlap(notes: list[Note]) -> bool:
8 | if len(notes) < 2:
9 | return False
10 | notes.sort(key=attrgetter("start_pos"))
11 | interval = RangeInterval()
12 | for note in notes:
13 | if interval.includes(note.start_pos):
14 | return True
15 | interval |= RangeInterval([(note.start_pos, note.end_pos)])
16 | return False
17 |
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mtp/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/locales/de_DE/LC_MESSAGES/mtp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mtp/locales/de_DE/LC_MESSAGES/mtp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/locales/de_DE/LC_MESSAGES/mtp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/mtp/mtp.po\n"
8 | "X-Crowdin-File-ID: 130\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "Muta"
16 | msgstr ""
17 |
18 | msgid "Muta project file"
19 | msgstr "Muta-Projektdatei"
20 |
21 | msgid "Conversion plugin for mtp file"
22 | msgstr "Konvertierungs-Plugin für MTP-Dateien"
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 | msgid "Default Singer Name"
28 | msgstr "Standard-Sängername"
29 |
30 | msgid "The default singer name to use for all tracks"
31 | msgstr "Der Standard-Sängername, der für alle Tracks verwendet werden soll"
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/locales/ja_JP/LC_MESSAGES/mtp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mtp/locales/ja_JP/LC_MESSAGES/mtp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/locales/ja_JP/LC_MESSAGES/mtp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/mtp/mtp.po\n"
8 | "X-Crowdin-File-ID: 130\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "Muta"
16 | msgstr ""
17 |
18 | msgid "Muta project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for mtp file"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 | msgid "Default Singer Name"
28 | msgstr ""
29 |
30 | msgid "The default singer name to use for all tracks"
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/locales/zh_CN/LC_MESSAGES/mtp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/mtp/locales/zh_CN/LC_MESSAGES/mtp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/locales/zh_CN/LC_MESSAGES/mtp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/mtp/mtp.po\n"
8 | "X-Crowdin-File-ID: 130\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "Muta"
16 | msgstr ""
17 |
18 | msgid "Muta project file"
19 | msgstr "Muta工程文件"
20 |
21 | msgid "Conversion plugin for mtp file"
22 | msgstr "mtp 格式转换插件"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 | msgid "Default Singer Name"
28 | msgstr "默认歌手名称"
29 |
30 | msgid "The default singer name to use for all tracks"
31 | msgstr "在所有唱歌轨道中使用的默认歌手名称"
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/mtp.po:
--------------------------------------------------------------------------------
1 | msgid "Muta"
2 | msgstr ""
3 |
4 | msgid "Muta project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for mtp file"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 | msgid "Default Singer Name"
14 | msgstr ""
15 |
16 | msgid "The default singer name to use for all tracks"
17 | msgstr ""
18 |
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/muta_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .model import muta_project_struct
7 | from .muta_generator import MutaGenerator
8 | from .muta_parser import MutaParser
9 | from .options import InputOptions, OutputOptions
10 |
11 |
12 | class MutaConverter(plugin_base.SVSConverterBase):
13 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
14 | muta_project = muta_project_struct.parse(path.read_bytes())
15 | return MutaParser(options).parse_project(muta_project)
16 |
17 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
18 | muta_project = MutaGenerator(options).generate_project(project)
19 | path.write_bytes(muta_project_struct.build(muta_project))
20 |
--------------------------------------------------------------------------------
/libresvip/plugins/mtp/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 | from libresvip.utils.translation import gettext_lazy as _
8 |
9 |
10 | class InputOptions(
11 | EnableInstrumentalTrackImportationMixin,
12 | EnablePitchImportationMixin,
13 | BaseModel,
14 | ):
15 | pass
16 |
17 |
18 | class OutputOptions(BaseModel):
19 | default_singer_name: str = Field(
20 | "嫣汐",
21 | title=_("Default Singer Name"),
22 | description=_("The default singer name to use for all tracks"),
23 | )
24 |
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/musicxml/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/locales/de_DE/LC_MESSAGES/musicxml.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/musicxml/locales/de_DE/LC_MESSAGES/musicxml.mo
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/locales/de_DE/LC_MESSAGES/musicxml.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/musicxml/musicxml.po\n"
8 | "X-Crowdin-File-ID: 132\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "MusicXML"
16 | msgstr ""
17 |
18 | msgid "MusicXML file"
19 | msgstr "MusicXML-Datei"
20 |
21 | msgid "Conversion plugin for MusicXML Score file"
22 | msgstr "Konvertierungs-Plugin für MusicXML-Notendateien"
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/locales/ja_JP/LC_MESSAGES/musicxml.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/musicxml/locales/ja_JP/LC_MESSAGES/musicxml.mo
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/locales/ja_JP/LC_MESSAGES/musicxml.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/musicxml/musicxml.po\n"
8 | "X-Crowdin-File-ID: 132\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "MusicXML"
16 | msgstr ""
17 |
18 | msgid "MusicXML file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for MusicXML Score file"
22 | msgstr ""
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/locales/zh_CN/LC_MESSAGES/musicxml.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/musicxml/locales/zh_CN/LC_MESSAGES/musicxml.mo
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/locales/zh_CN/LC_MESSAGES/musicxml.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/musicxml/musicxml.po\n"
8 | "X-Crowdin-File-ID: 132\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "MusicXML"
16 | msgstr ""
17 |
18 | msgid "MusicXML file"
19 | msgstr "MusicXML 文件"
20 |
21 | msgid "Conversion plugin for MusicXML Score file"
22 | msgstr "MusicXML 乐谱文件转换插件"
23 |
24 | msgid "Sder Colin"
25 | msgstr "科林"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/models/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/musicxml/models/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/musicxml.po:
--------------------------------------------------------------------------------
1 | msgid "MusicXML"
2 | msgstr ""
3 |
4 | msgid "MusicXML file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for MusicXML Score file"
8 | msgstr ""
9 |
10 | msgid "Sder Colin"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/musicxml/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 |
4 | class InputOptions(BaseModel):
5 | pass
6 |
7 |
8 | class OutputOptions(BaseModel):
9 | pass
10 |
--------------------------------------------------------------------------------
/libresvip/plugins/nn/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/nn/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/nn/locales/de_DE/LC_MESSAGES/nn.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/nn/locales/de_DE/LC_MESSAGES/nn.mo
--------------------------------------------------------------------------------
/libresvip/plugins/nn/locales/de_DE/LC_MESSAGES/nn.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/nn/nn.po\n"
8 | "X-Crowdin-File-ID: 134\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "No singing track found"
16 | msgstr "Kein Gesangstrack gefunden"
17 |
18 | msgid "NIAONiao"
19 | msgstr ""
20 |
21 | msgid "NIAONiao Virtual Singer project file"
22 | msgstr "NIAONiao Virtual Singer-Projektdatei"
23 |
24 | msgid "Conversion plugin for NIAONiao project file"
25 | msgstr "Konvertierungs-Plugin für NIAONiao-Projektdateien"
26 |
27 | msgid "SoulMelody"
28 | msgstr ""
29 |
30 | msgid "Version"
31 | msgstr ""
32 |
33 | msgid "Version of NIAONiao project file"
34 | msgstr "Version der NIAONiao-Projektdatei"
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/nn/locales/ja_JP/LC_MESSAGES/nn.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/nn/locales/ja_JP/LC_MESSAGES/nn.mo
--------------------------------------------------------------------------------
/libresvip/plugins/nn/locales/ja_JP/LC_MESSAGES/nn.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/nn/nn.po\n"
8 | "X-Crowdin-File-ID: 134\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "No singing track found"
16 | msgstr ""
17 |
18 | msgid "NIAONiao"
19 | msgstr ""
20 |
21 | msgid "NIAONiao Virtual Singer project file"
22 | msgstr ""
23 |
24 | msgid "Conversion plugin for NIAONiao project file"
25 | msgstr ""
26 |
27 | msgid "SoulMelody"
28 | msgstr ""
29 |
30 | msgid "Version"
31 | msgstr ""
32 |
33 | msgid "Version of NIAONiao project file"
34 | msgstr ""
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/nn/locales/zh_CN/LC_MESSAGES/nn.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/nn/locales/zh_CN/LC_MESSAGES/nn.mo
--------------------------------------------------------------------------------
/libresvip/plugins/nn/locales/zh_CN/LC_MESSAGES/nn.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/nn/nn.po\n"
8 | "X-Crowdin-File-ID: 134\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "No singing track found"
16 | msgstr "未找到演唱轨"
17 |
18 | msgid "NIAONiao"
19 | msgstr "袅袅虚拟歌手"
20 |
21 | msgid "NIAONiao Virtual Singer project file"
22 | msgstr "袅袅虚拟歌手工程文件"
23 |
24 | msgid "Conversion plugin for NIAONiao project file"
25 | msgstr "袅袅工程格式转换插件"
26 |
27 | msgid "SoulMelody"
28 | msgstr "岁月静好_初心不忘"
29 |
30 | msgid "Version"
31 | msgstr "版本"
32 |
33 | msgid "Version of NIAONiao project file"
34 | msgstr "袅袅工程版本"
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/nn/nn.po:
--------------------------------------------------------------------------------
1 | msgid "No singing track found"
2 | msgstr ""
3 |
4 | msgid "NIAONiao"
5 | msgstr ""
6 |
7 | msgid "NIAONiao Virtual Singer project file"
8 | msgstr ""
9 |
10 | msgid "Conversion plugin for NIAONiao project file"
11 | msgstr ""
12 |
13 | msgid "SoulMelody"
14 | msgstr ""
15 |
16 | msgid "Version"
17 | msgstr ""
18 |
19 | msgid "Version of NIAONiao project file"
20 | msgstr ""
21 |
22 |
--------------------------------------------------------------------------------
/libresvip/plugins/nn/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.model.option_mixins import (
4 | EnablePitchImportationMixin,
5 | SelectSingleTrackMixin,
6 | StaticTempoMixin,
7 | )
8 | from libresvip.utils.translation import gettext_lazy as _
9 |
10 |
11 | class InputOptions(EnablePitchImportationMixin, BaseModel):
12 | pass
13 |
14 |
15 | class OutputOptions(SelectSingleTrackMixin, StaticTempoMixin, BaseModel):
16 | version: int = Field(
17 | default=19,
18 | title=_("Version"),
19 | description=_("Version of NIAONiao project file"),
20 | )
21 |
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ppsf/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/locales/de_DE/LC_MESSAGES/ppsf.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ppsf/locales/de_DE/LC_MESSAGES/ppsf.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/locales/de_DE/LC_MESSAGES/ppsf.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ppsf/ppsf.po\n"
8 | "X-Crowdin-File-ID: 136\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "Ppsf"
16 | msgstr ""
17 |
18 | msgid "Piapro Studio Song file"
19 | msgstr "Piapro Studio Song-Datei"
20 |
21 | msgid "Conversion plugin for Piapro Studio project file"
22 | msgstr "Konvertierungs-Plugin für Piapro Studio Projektdateien"
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/locales/ja_JP/LC_MESSAGES/ppsf.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ppsf/locales/ja_JP/LC_MESSAGES/ppsf.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/locales/ja_JP/LC_MESSAGES/ppsf.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ppsf/ppsf.po\n"
8 | "X-Crowdin-File-ID: 136\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "Ppsf"
16 | msgstr ""
17 |
18 | msgid "Piapro Studio Song file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for Piapro Studio project file"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/locales/zh_CN/LC_MESSAGES/ppsf.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ppsf/locales/zh_CN/LC_MESSAGES/ppsf.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/locales/zh_CN/LC_MESSAGES/ppsf.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ppsf/ppsf.po\n"
8 | "X-Crowdin-File-ID: 136\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "Ppsf"
16 | msgstr ""
17 |
18 | msgid "Piapro Studio Song file"
19 | msgstr "Piapro Studio 工程文件"
20 |
21 | msgid "Conversion plugin for Piapro Studio project file"
22 | msgstr "Piapro Studio 工程文件转换插件"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/ppsf/ppsf.po:
--------------------------------------------------------------------------------
1 | msgid "Ppsf"
2 | msgstr ""
3 |
4 | msgid "Piapro Studio Song file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for Piapro Studio project file"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ps_project/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/enums.py:
--------------------------------------------------------------------------------
1 | # mypy: disable-error-code="misc"
2 | from enum import Enum
3 | from typing import Annotated
4 |
5 | from pydantic import Field
6 |
7 | from libresvip.utils.translation import gettext_lazy as _
8 |
9 |
10 | class PocketSingerLyricsLanguage(Enum):
11 | CHINESE: Annotated[
12 | str,
13 | Field(
14 | title=_("Chinese"),
15 | ),
16 | ] = "ch"
17 | JAPANESE: Annotated[
18 | str,
19 | Field(
20 | title=_("Japanese"),
21 | ),
22 | ] = "jp"
23 | ENGLISH: Annotated[
24 | str,
25 | Field(
26 | title=_("English"),
27 | ),
28 | ] = "en"
29 |
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/locales/de_DE/LC_MESSAGES/ps_project.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ps_project/locales/de_DE/LC_MESSAGES/ps_project.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/locales/de_DE/LC_MESSAGES/ps_project.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ps_project/ps_project.po\n"
8 | "X-Crowdin-File-ID: 186\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-25 22:51\n"
14 |
15 | msgid "Chinese"
16 | msgstr "Chinesisch"
17 |
18 | msgid "Japanese"
19 | msgstr "Japanisch"
20 |
21 | msgid "English"
22 | msgstr "Englisch"
23 |
24 | msgid "Lyrics language"
25 | msgstr "Liedtextsprache"
26 |
27 | msgid "Title of the project"
28 | msgstr ""
29 |
30 | msgid "PocketSinger"
31 | msgstr ""
32 |
33 | msgid "Pocket Singer Project file"
34 | msgstr ""
35 |
36 | msgid "Conversion plugin for Pocket Singer project file"
37 | msgstr ""
38 |
39 | msgid "SoulMelody"
40 | msgstr ""
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/locales/ja_JP/LC_MESSAGES/ps_project.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ps_project/locales/ja_JP/LC_MESSAGES/ps_project.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/locales/ja_JP/LC_MESSAGES/ps_project.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ps_project/ps_project.po\n"
8 | "X-Crowdin-File-ID: 186\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-12-25 22:51\n"
14 |
15 | msgid "Chinese"
16 | msgstr ""
17 |
18 | msgid "Japanese"
19 | msgstr ""
20 |
21 | msgid "English"
22 | msgstr ""
23 |
24 | msgid "Lyrics language"
25 | msgstr ""
26 |
27 | msgid "Title of the project"
28 | msgstr ""
29 |
30 | msgid "PocketSinger"
31 | msgstr ""
32 |
33 | msgid "Pocket Singer Project file"
34 | msgstr ""
35 |
36 | msgid "Conversion plugin for Pocket Singer project file"
37 | msgstr ""
38 |
39 | msgid "SoulMelody"
40 | msgstr ""
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/locales/zh_CN/LC_MESSAGES/ps_project.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ps_project/locales/zh_CN/LC_MESSAGES/ps_project.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/locales/zh_CN/LC_MESSAGES/ps_project.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ps_project/ps_project.po\n"
8 | "X-Crowdin-File-ID: 186\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-12-26 18:52\n"
14 |
15 | msgid "Chinese"
16 | msgstr "中文"
17 |
18 | msgid "Japanese"
19 | msgstr "日语"
20 |
21 | msgid "English"
22 | msgstr "英语"
23 |
24 | msgid "Lyrics language"
25 | msgstr "歌词语言"
26 |
27 | msgid "Title of the project"
28 | msgstr "工程标题"
29 |
30 | msgid "PocketSinger"
31 | msgstr ""
32 |
33 | msgid "Pocket Singer Project file"
34 | msgstr "Pocket Singer 工程文件"
35 |
36 | msgid "Conversion plugin for Pocket Singer project file"
37 | msgstr "Pocket Singer 工程格式转换插件"
38 |
39 | msgid "SoulMelody"
40 | msgstr "岁月静好_初心不忘"
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | ExtractEmbededAudioMixin,
7 | StaticTempoMixin,
8 | )
9 | from libresvip.utils.translation import gettext_lazy as _
10 |
11 | from .enums import PocketSingerLyricsLanguage
12 |
13 |
14 | class InputOptions(
15 | EnableInstrumentalTrackImportationMixin,
16 | EnablePitchImportationMixin,
17 | ExtractEmbededAudioMixin,
18 | BaseModel,
19 | ):
20 | pass
21 |
22 |
23 | class OutputOptions(StaticTempoMixin, BaseModel):
24 | lyric_language: PocketSingerLyricsLanguage = Field(
25 | default=PocketSingerLyricsLanguage.CHINESE,
26 | title=_("Lyrics language"),
27 | )
28 | title: str = Field(
29 | default="New Project",
30 | title=_("Title of the project"),
31 | )
32 |
--------------------------------------------------------------------------------
/libresvip/plugins/ps_project/ps_project.po:
--------------------------------------------------------------------------------
1 | msgid "Chinese"
2 | msgstr ""
3 |
4 | msgid "Japanese"
5 | msgstr ""
6 |
7 | msgid "English"
8 | msgstr ""
9 |
10 | msgid "Lyrics language"
11 | msgstr ""
12 |
13 | msgid "Title of the project"
14 | msgstr ""
15 |
16 | msgid "PocketSinger"
17 | msgstr ""
18 |
19 | msgid "Pocket Singer Project file"
20 | msgstr ""
21 |
22 | msgid "Conversion plugin for Pocket Singer project file"
23 | msgstr ""
24 |
25 | msgid "SoulMelody"
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/s5p/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/locales/de_DE/LC_MESSAGES/s5p.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/s5p/locales/de_DE/LC_MESSAGES/s5p.mo
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/locales/de_DE/LC_MESSAGES/s5p.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/s5p/s5p.po\n"
8 | "X-Crowdin-File-ID: 138\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "SynthV Editor"
16 | msgstr ""
17 |
18 | msgid "Synthesizer V Editor project file"
19 | msgstr "Synthesizer V Editor Projektdatei"
20 |
21 | msgid "Conversion plugin for Synthesizer V Editor project file"
22 | msgstr "Konvertierungs-Plugin für Synthesizer V Editor Projektdateien"
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/locales/ja_JP/LC_MESSAGES/s5p.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/s5p/locales/ja_JP/LC_MESSAGES/s5p.mo
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/locales/ja_JP/LC_MESSAGES/s5p.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/s5p/s5p.po\n"
8 | "X-Crowdin-File-ID: 138\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "SynthV Editor"
16 | msgstr ""
17 |
18 | msgid "Synthesizer V Editor project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for Synthesizer V Editor project file"
22 | msgstr ""
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/locales/zh_CN/LC_MESSAGES/s5p.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/s5p/locales/zh_CN/LC_MESSAGES/s5p.mo
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/locales/zh_CN/LC_MESSAGES/s5p.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/s5p/s5p.po\n"
8 | "X-Crowdin-File-ID: 138\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:38\n"
14 |
15 | msgid "SynthV Editor"
16 | msgstr ""
17 |
18 | msgid "Synthesizer V Editor project file"
19 | msgstr "Synthesizer V Editor 工程文件"
20 |
21 | msgid "Conversion plugin for Synthesizer V Editor project file"
22 | msgstr "Synthesizer V Editor 工程格式转换插件。"
23 |
24 | msgid "Sder Colin"
25 | msgstr "科林"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/s5p/s5p.po:
--------------------------------------------------------------------------------
1 | msgid "SynthV Editor"
2 | msgstr ""
3 |
4 | msgid "Synthesizer V Editor project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for Synthesizer V Editor project file"
8 | msgstr ""
9 |
10 | msgid "Sder Colin"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/srt/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/srt/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/srt/locales/de_DE/LC_MESSAGES/srt.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/srt/locales/de_DE/LC_MESSAGES/srt.mo
--------------------------------------------------------------------------------
/libresvip/plugins/srt/locales/ja_JP/LC_MESSAGES/srt.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/srt/locales/ja_JP/LC_MESSAGES/srt.mo
--------------------------------------------------------------------------------
/libresvip/plugins/srt/locales/zh_CN/LC_MESSAGES/srt.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/srt/locales/zh_CN/LC_MESSAGES/srt.mo
--------------------------------------------------------------------------------
/libresvip/plugins/srt/srt_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .options import OutputOptions
7 | from .srt_generator import SrtGenerator
8 |
9 |
10 | class SrtConverter(plugin_base.WriteOnlyConverterBase):
11 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
12 | ssa_obj = SrtGenerator(options).generate_project(project)
13 | path.write_bytes(ssa_obj.to_string("srt").encode(options.encoding))
14 |
--------------------------------------------------------------------------------
/libresvip/plugins/svg/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svg/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/svg/locales/de_DE/LC_MESSAGES/svg.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svg/locales/de_DE/LC_MESSAGES/svg.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svg/locales/ja_JP/LC_MESSAGES/svg.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svg/locales/ja_JP/LC_MESSAGES/svg.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svg/locales/zh_CN/LC_MESSAGES/svg.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svg/locales/zh_CN/LC_MESSAGES/svg.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svg/model.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 |
4 | class NotePositionParameters(BaseModel):
5 | point_1: tuple[float, float]
6 | point_2: tuple[float, float]
7 | inner_text: tuple[float, float]
8 | upper_text: tuple[float, float]
9 | lower_text: tuple[float, float]
10 | text_size: float
11 |
--------------------------------------------------------------------------------
/libresvip/plugins/svg/svg_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 | from typing import TYPE_CHECKING
3 |
4 | from libresvip.extension import base as plugin_base
5 | from libresvip.model.base import Project
6 |
7 | from .options import OutputOptions
8 | from .svg_generator import SvgGenerator
9 |
10 | if TYPE_CHECKING:
11 | from drawsvg import Drawing
12 |
13 |
14 | class SvgConverter(plugin_base.WriteOnlyConverterBase):
15 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
16 | drawing: Drawing = SvgGenerator(options).generate_project(project)
17 | path.write_bytes(drawing.as_svg().encode("utf-8"))
18 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/svip/locales/de_DE/LC_MESSAGES/svip.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip/locales/de_DE/LC_MESSAGES/svip.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svip/locales/ja_JP/LC_MESSAGES/svip.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip/locales/ja_JP/LC_MESSAGES/svip.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svip/locales/zh_CN/LC_MESSAGES/svip.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip/locales/zh_CN/LC_MESSAGES/svip.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svip/msnrbf/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip/msnrbf/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/svip/msnrbf/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | LIBRARY_NAME_SINGING_TOOL_MODEL: Final[str] = (
4 | "SingingTool.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
5 | )
6 | LIBRARY_NAME_SINGING_TOOL_LIBRARY: Final[str] = (
7 | "SingingTool.Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
8 | )
9 |
10 | # Values
11 | VALUE_LIST_VERSION_SONG_TEMPO: Final[int] = 2
12 | VALUE_LIST_VERSION_SONG_BEAT: Final[int] = 2
13 | VALUE_LIST_VERSION_SONG_ITRACK: Final[int] = 4
14 | VALUE_LIST_VERSION_SONG_NOTE: Final[int] = 1054
15 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip3/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/color_pool.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | _colors = [
4 | "#24936E",
5 | "#B54434",
6 | "#B5495B",
7 | "#A8497A",
8 | "#4F726C",
9 | "#939650",
10 | "#CA7A2C",
11 | "#DB4D6D",
12 | "#77428D",
13 | "#005CAF",
14 | ]
15 |
16 |
17 | def count_color() -> int:
18 | return len(_colors)
19 |
20 |
21 | def get_color(index: int) -> str:
22 | return _colors[index % len(_colors)]
23 |
24 |
25 | def random_color() -> str:
26 | return random.choice(_colors)
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/constants.py:
--------------------------------------------------------------------------------
1 | from types import SimpleNamespace
2 | from typing import Final
3 |
4 | TYPE_URL_BASE: Final[str] = "type.googleapis.com/"
5 | DEFAULT_SINGER_ID: Final[str] = "7d0c0cfc-00b3-4dca-b7b0-d20b634b531a"
6 | MIN_NOTE_DURATION: Final[float] = 0.06
7 | MAX_NOTE_DURATION: Final[float] = 6.0
8 |
9 |
10 | Svip3TrackType = SimpleNamespace(
11 | SINGING_TRACK="xstudio.proto.SingingTrack",
12 | AUDIO_TRACK="xstudio.proto.AudioTrack",
13 | )
14 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/locales/de_DE/LC_MESSAGES/svip3.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip3/locales/de_DE/LC_MESSAGES/svip3.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/locales/ja_JP/LC_MESSAGES/svip3.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip3/locales/ja_JP/LC_MESSAGES/svip3.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/locales/ja_JP/LC_MESSAGES/svip3.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/svip3/svip3.po\n"
8 | "X-Crowdin-File-ID: 146\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "Svip3"
16 | msgstr ""
17 |
18 | msgid "Netease Cloud Music XStudio project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for Netease Cloud Music XStudio project file"
22 | msgstr ""
23 |
24 | msgid "FlutyDeer"
25 | msgstr ""
26 |
27 | msgid "Unsupported pinyin:"
28 | msgstr ""
29 |
30 | msgid "Note duration is too short:"
31 | msgstr ""
32 |
33 | msgid "Note duration is too long:"
34 | msgstr ""
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/locales/zh_CN/LC_MESSAGES/svip3.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svip3/locales/zh_CN/LC_MESSAGES/svip3.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/locales/zh_CN/LC_MESSAGES/svip3.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/svip3/svip3.po\n"
8 | "X-Crowdin-File-ID: 146\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-12-17 11:16\n"
14 |
15 | msgid "Svip3"
16 | msgstr ""
17 |
18 | msgid "Netease Cloud Music XStudio project file"
19 | msgstr "网易云音乐·X Studio 工程文件"
20 |
21 | msgid "Conversion plugin for Netease Cloud Music XStudio project file"
22 | msgstr "网易云音乐·X Studio 工程转换插件"
23 |
24 | msgid "FlutyDeer"
25 | msgstr "笛鹿"
26 |
27 | msgid "Unsupported pinyin:"
28 | msgstr "不支持的拼音:"
29 |
30 | msgid "Note duration is too short:"
31 | msgstr "音符时长过短:"
32 |
33 | msgid "Note duration is too long:"
34 | msgstr "音符时长过长:"
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/singers.py:
--------------------------------------------------------------------------------
1 | from importlib.resources import files
2 |
3 | from bidict import bidict
4 |
5 | from libresvip.core.compat import json
6 |
7 | singer_data_path = files("libresvip.plugins.svip3") / "singers.json"
8 | singers_data = bidict(json.loads(singer_data_path.read_text(encoding="utf-8")))
9 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/svip3.po:
--------------------------------------------------------------------------------
1 | msgid "Svip3"
2 | msgstr ""
3 |
4 | msgid "Netease Cloud Music XStudio project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for Netease Cloud Music XStudio project file"
8 | msgstr ""
9 |
10 | msgid "FlutyDeer"
11 | msgstr ""
12 |
13 | msgid "Unsupported pinyin:"
14 | msgstr ""
15 |
16 | msgid "Note duration is too short:"
17 | msgstr ""
18 |
19 | msgid "Note duration is too long:"
20 | msgstr ""
21 |
22 |
--------------------------------------------------------------------------------
/libresvip/plugins/svip3/svip3_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .model import Svip3Project
7 | from .options import InputOptions, OutputOptions
8 | from .svip3_generator import Svip3Generator
9 | from .svip3_parser import Svip3Parser
10 |
11 |
12 | class Svip3Converter(plugin_base.SVSConverterBase):
13 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
14 | svip3_project = Svip3Project.deserialize(path.read_bytes())
15 | return Svip3Parser(options).parse_project(svip3_project)
16 |
17 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
18 | svip3_project = Svip3Generator(options).generate_project(project)
19 | path.write_bytes(Svip3Project.serialize(svip3_project))
20 |
--------------------------------------------------------------------------------
/libresvip/plugins/svp/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svp/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/svp/constants.py:
--------------------------------------------------------------------------------
1 | from types import SimpleNamespace
2 | from typing import Final
3 |
4 | TICK_RATE: Final[int] = 1470000
5 | DEFAULT_PITCH_TRANSITION: Final[float] = 0.0
6 | DEFAULT_PITCH_PORTAMENTO: Final[float] = 0.07
7 | DEFAULT_PITCH_DEPTH: Final[float] = 0.15
8 | DEFAULT_VIBRATO_START: Final[float] = 0.25
9 | DEFAULT_VIBRATO_FADE: Final[float] = 0.2
10 | DEFAULT_VIBRATO_DEPTH: Final[float] = 1.0
11 | DEFAULT_VIBRATO_FREQUENCY: Final[float] = 5.5
12 | DEFAULT_VIBRATO_PHASE: Final[float] = 0.0
13 | DEFAULT_VIBRATO_JITTER: Final[float] = 1.0
14 | SYSTEM_PITCH_PORTAMENTO: Final[float] = 0.1
15 | SYSTEM_PITCH_DEPTH: Final[float] = 0.0
16 | MAX_BREAK: Final[float] = 0.01
17 | DEFAULT_PHONE_RATIO: Final[float] = 1.8
18 | DEFAULT_DURATIONS = SimpleNamespace(
19 | stop=0.10,
20 | affricate=0.125,
21 | fricative=0.125,
22 | aspirate=0.094,
23 | liquid=0.062,
24 | nasal=0.094,
25 | vowel=0.0,
26 | semivowel=0.055,
27 | diphthong=0.0,
28 | )
29 |
--------------------------------------------------------------------------------
/libresvip/plugins/svp/interval_utils.py:
--------------------------------------------------------------------------------
1 | from .constants import TICK_RATE
2 |
3 |
4 | def position_to_ticks(position: int) -> int:
5 | return round(position / TICK_RATE)
6 |
7 |
8 | def ticks_to_position(ticks: int) -> int:
9 | return ticks * TICK_RATE
10 |
--------------------------------------------------------------------------------
/libresvip/plugins/svp/locales/de_DE/LC_MESSAGES/svp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svp/locales/de_DE/LC_MESSAGES/svp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svp/locales/ja_JP/LC_MESSAGES/svp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svp/locales/ja_JP/LC_MESSAGES/svp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/svp/locales/zh_CN/LC_MESSAGES/svp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/svp/locales/zh_CN/LC_MESSAGES/svp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tlp/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/locales/de_DE/LC_MESSAGES/tlp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tlp/locales/de_DE/LC_MESSAGES/tlp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/locales/de_DE/LC_MESSAGES/tlp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tlp/tlp.po\n"
8 | "X-Crowdin-File-ID: 150\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:02\n"
14 |
15 | msgid "TuneLab"
16 | msgstr ""
17 |
18 | msgid "TuneLab project file"
19 | msgstr "TuneLab Projektdatei"
20 |
21 | msgid "Conversion plugin for TuneLab project file"
22 | msgstr "Konvertierungs-Plugin für TuneLab Projektdateien"
23 |
24 | msgid "LiuYunPlayer"
25 | msgstr ""
26 |
27 | msgid "Note overlap detected, cutting note "
28 | msgstr "Notenüberlappung erkannt, Note wird geschnitten "
29 |
30 | msgid "Note overlap detected, skipping note "
31 | msgstr "Notenüberlappung erkannt, Note wird übersprungen "
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/locales/ja_JP/LC_MESSAGES/tlp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tlp/locales/ja_JP/LC_MESSAGES/tlp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/locales/ja_JP/LC_MESSAGES/tlp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tlp/tlp.po\n"
8 | "X-Crowdin-File-ID: 150\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-12-12 01:22\n"
14 |
15 | msgid "TuneLab"
16 | msgstr ""
17 |
18 | msgid "TuneLab project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for TuneLab project file"
22 | msgstr ""
23 |
24 | msgid "LiuYunPlayer"
25 | msgstr ""
26 |
27 | msgid "Note overlap detected, cutting note "
28 | msgstr ""
29 |
30 | msgid "Note overlap detected, skipping note "
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/locales/zh_CN/LC_MESSAGES/tlp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tlp/locales/zh_CN/LC_MESSAGES/tlp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/locales/zh_CN/LC_MESSAGES/tlp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tlp/tlp.po\n"
8 | "X-Crowdin-File-ID: 150\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-12-12 01:23\n"
14 |
15 | msgid "TuneLab"
16 | msgstr ""
17 |
18 | msgid "TuneLab project file"
19 | msgstr "TuneLab工程文件"
20 |
21 | msgid "Conversion plugin for TuneLab project file"
22 | msgstr "TuneLab工程格式转换插件"
23 |
24 | msgid "LiuYunPlayer"
25 | msgstr "金刚小刘"
26 |
27 | msgid "Note overlap detected, cutting note "
28 | msgstr ""
29 |
30 | msgid "Note overlap detected, skipping note "
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/tlp.po:
--------------------------------------------------------------------------------
1 | msgid "TuneLab"
2 | msgstr ""
3 |
4 | msgid "TuneLab project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for TuneLab project file"
8 | msgstr ""
9 |
10 | msgid "LiuYunPlayer"
11 | msgstr ""
12 |
13 | msgid "Note overlap detected, cutting note "
14 | msgstr ""
15 |
16 | msgid "Note overlap detected, skipping note "
17 | msgstr ""
18 |
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/tlp/tlp.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = TuneLab
3 | module = tunelab_converter
4 |
5 | [Documentation]
6 | Author = LiuYunPlayer
7 | Version = 0.5.8
8 | Website = https://space.bilibili.com/24331207
9 | Format = TuneLab project file
10 | Description = Conversion plugin for TuneLab project file
11 | Suffix = tlp
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tsmsln/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | DEFAULT_PHONEME: Final[str] = "r,a"
4 | TIME_UNIT_AS_TICKS_PER_BPM: Final[float] = 4.8 / 120
5 | OCTAVE_OFFSET: Final[int] = -1
6 | TICK_RATE: Final[float] = 2.0
7 | MIN_DATA_LENGTH: Final[int] = 500
8 | TEMP_VALUE_AS_NULL: Final[float] = -1.0
9 |
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/locales/de_DE/LC_MESSAGES/tsmsln.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tsmsln/locales/de_DE/LC_MESSAGES/tsmsln.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/locales/de_DE/LC_MESSAGES/tsmsln.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tsmsln/tsmsln.po\n"
8 | "X-Crowdin-File-ID: 198\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2025-01-22 19:48\n"
14 |
15 | msgid "TSMSln"
16 | msgstr ""
17 |
18 | msgid "Techno-Speech Mobile Solution file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for VoiSona Mobile project file"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 | msgid "Unsupported lyric: "
28 | msgstr "Nicht unterstützter Text: "
29 |
30 | msgid "Pitch value is out of bounds"
31 | msgstr "Tonhöhenwert ist außerhalb des zulässigen Bereichs"
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/locales/ja_JP/LC_MESSAGES/tsmsln.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tsmsln/locales/ja_JP/LC_MESSAGES/tsmsln.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/locales/ja_JP/LC_MESSAGES/tsmsln.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tsmsln/tsmsln.po\n"
8 | "X-Crowdin-File-ID: 198\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2025-01-22 19:48\n"
14 |
15 | msgid "TSMSln"
16 | msgstr ""
17 |
18 | msgid "Techno-Speech Mobile Solution file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for VoiSona Mobile project file"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 | msgid "Unsupported lyric: "
28 | msgstr ""
29 |
30 | msgid "Pitch value is out of bounds"
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/locales/zh_CN/LC_MESSAGES/tsmsln.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tsmsln/locales/zh_CN/LC_MESSAGES/tsmsln.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/locales/zh_CN/LC_MESSAGES/tsmsln.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tsmsln/tsmsln.po\n"
8 | "X-Crowdin-File-ID: 198\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2025-01-23 19:00\n"
14 |
15 | msgid "TSMSln"
16 | msgstr ""
17 |
18 | msgid "Techno-Speech Mobile Solution file"
19 | msgstr "Techno-Speech 移动版项目文件"
20 |
21 | msgid "Conversion plugin for VoiSona Mobile project file"
22 | msgstr "VoiSona 移动版工程文件转换插件"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 | msgid "Unsupported lyric: "
28 | msgstr "不支持的歌词: "
29 |
30 | msgid "Pitch value is out of bounds"
31 | msgstr "音高值越界"
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnablePitchImportationMixin,
5 | SelectSingleTrackMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnablePitchImportationMixin,
11 | BaseModel,
12 | ):
13 | pass
14 |
15 |
16 | class OutputOptions(SelectSingleTrackMixin, BaseModel):
17 | pass
18 |
--------------------------------------------------------------------------------
/libresvip/plugins/tsmsln/tsmsln.po:
--------------------------------------------------------------------------------
1 | msgid "TSMSln"
2 | msgstr ""
3 |
4 | msgid "Techno-Speech Mobile Solution file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for VoiSona Mobile project file"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 | msgid "Unsupported lyric: "
14 | msgstr ""
15 |
16 | msgid "Pitch value is out of bounds"
17 | msgstr ""
18 |
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tssln/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | DEFAULT_PHONEME: Final[str] = "r,a"
4 | TIME_UNIT_AS_TICKS_PER_BPM: Final[float] = 4.8 / 120
5 | OCTAVE_OFFSET: Final[int] = -1
6 | TICK_RATE: Final[float] = 2.0
7 | MIN_DATA_LENGTH: Final[int] = 500
8 | TEMP_VALUE_AS_NULL: Final[float] = -1.0
9 |
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/locales/de_DE/LC_MESSAGES/tssln.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tssln/locales/de_DE/LC_MESSAGES/tssln.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/locales/ja_JP/LC_MESSAGES/tssln.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tssln/locales/ja_JP/LC_MESSAGES/tssln.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/locales/ja_JP/LC_MESSAGES/tssln.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tssln/tssln.po\n"
8 | "X-Crowdin-File-ID: 152\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:31\n"
14 |
15 | msgid "Unsupported project version"
16 | msgstr ""
17 |
18 | msgid "TSSln"
19 | msgstr ""
20 |
21 | msgid "Techno-Speech Solution file"
22 | msgstr ""
23 |
24 | msgid "Conversion plugin for VoiSona project file (Only versions 1.8.0 and later are supported)"
25 | msgstr ""
26 |
27 | msgid "SoulMelody"
28 | msgstr ""
29 |
30 | msgid "Unsupported lyric: "
31 | msgstr ""
32 |
33 | msgid "Pitch value is out of bounds"
34 | msgstr ""
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/locales/zh_CN/LC_MESSAGES/tssln.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/tssln/locales/zh_CN/LC_MESSAGES/tssln.mo
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/locales/zh_CN/LC_MESSAGES/tssln.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/tssln/tssln.po\n"
8 | "X-Crowdin-File-ID: 152\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2025-01-23 18:59\n"
14 |
15 | msgid "Unsupported project version"
16 | msgstr "不支持的工程版本"
17 |
18 | msgid "TSSln"
19 | msgstr ""
20 |
21 | msgid "Techno-Speech Solution file"
22 | msgstr "Techno-Speech 项目文件"
23 |
24 | msgid "Conversion plugin for VoiSona project file (Only versions 1.8.0 and later are supported)"
25 | msgstr "VoiSona 工程文件转换插件 (仅支持1.8.0及以上版本保存的工程)"
26 |
27 | msgid "SoulMelody"
28 | msgstr "岁月静好_初心不忘"
29 |
30 | msgid "Unsupported lyric: "
31 | msgstr "不支持的歌词: "
32 |
33 | msgid "Pitch value is out of bounds"
34 | msgstr "音高值越界"
35 |
36 |
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/tssln/tssln.po:
--------------------------------------------------------------------------------
1 | msgid "Unsupported project version"
2 | msgstr ""
3 |
4 | msgid "TSSln"
5 | msgstr ""
6 |
7 | msgid "Techno-Speech Solution file"
8 | msgstr ""
9 |
10 | msgid ""
11 | "Conversion plugin for VoiSona project file (Only versions 1.8.0 and later"
12 | " are supported)"
13 | msgstr ""
14 |
15 | msgid "SoulMelody"
16 | msgstr ""
17 |
18 | msgid "Unsupported lyric: "
19 | msgstr ""
20 |
21 | msgid "Pitch value is out of bounds"
22 | msgstr ""
23 |
24 |
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ufdata/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/locales/de_DE/LC_MESSAGES/ufdata.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ufdata/locales/de_DE/LC_MESSAGES/ufdata.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/locales/de_DE/LC_MESSAGES/ufdata.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ufdata/ufdata.po\n"
8 | "X-Crowdin-File-ID: 154\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:03\n"
14 |
15 | msgid "UFData"
16 | msgstr ""
17 |
18 | msgid "UtaFormatix3 data format"
19 | msgstr "UtaFormatix3 Datenformat"
20 |
21 | msgid "Conversion plugin for UFData format"
22 | msgstr "Konvertierungs-Plugin für das Ufdata-Format"
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/locales/ja_JP/LC_MESSAGES/ufdata.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ufdata/locales/ja_JP/LC_MESSAGES/ufdata.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/locales/ja_JP/LC_MESSAGES/ufdata.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ufdata/ufdata.po\n"
8 | "X-Crowdin-File-ID: 154\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:32\n"
14 |
15 | msgid "UFData"
16 | msgstr ""
17 |
18 | msgid "UtaFormatix3 data format"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for UFData format"
22 | msgstr ""
23 |
24 | msgid "Sder Colin"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/locales/zh_CN/LC_MESSAGES/ufdata.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ufdata/locales/zh_CN/LC_MESSAGES/ufdata.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/locales/zh_CN/LC_MESSAGES/ufdata.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ufdata/ufdata.po\n"
8 | "X-Crowdin-File-ID: 154\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:39\n"
14 |
15 | msgid "UFData"
16 | msgstr ""
17 |
18 | msgid "UtaFormatix3 data format"
19 | msgstr "UtaFormatix3 数据格式"
20 |
21 | msgid "Conversion plugin for UFData format"
22 | msgstr "UFData格式转换插件"
23 |
24 | msgid "Sder Colin"
25 | msgstr "科林"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import EnablePitchImportationMixin
4 |
5 |
6 | class InputOptions(EnablePitchImportationMixin, BaseModel):
7 | pass
8 |
9 |
10 | class OutputOptions(BaseModel):
11 | pass
12 |
--------------------------------------------------------------------------------
/libresvip/plugins/ufdata/ufdata.po:
--------------------------------------------------------------------------------
1 | msgid "UFData"
2 | msgstr ""
3 |
4 | msgid "UtaFormatix3 data format"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for UFData format"
8 | msgstr ""
9 |
10 | msgid "Sder Colin"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ust/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ust/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | MODE1_PITCH_SAMPLING_INTERVAL_TICK: Final[int] = 5
4 | MODE2_PITCH_SAMPLING_INTERVAL_TICK: Final[int] = 4
5 | MODE2_PITCH_MAX_POINT_COUNT: Final[int] = 50
6 | MAX_ACCEPTED_BPM: Final[float] = 10000.0
7 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/interpolation.py:
--------------------------------------------------------------------------------
1 | from libresvip.model.point import Point
2 | from libresvip.utils.music_math import (
3 | interpolate_cosine_ease_in,
4 | interpolate_cosine_ease_in_out,
5 | interpolate_cosine_ease_out,
6 | interpolate_linear,
7 | )
8 |
9 | from .model import UTAUPitchBendMode
10 |
11 |
12 | def interpolate(
13 | last_point: Point,
14 | this_point: Point,
15 | curve_type: UTAUPitchBendMode,
16 | sampling_interval_tick: int,
17 | ) -> list[Point]:
18 | input_data = [last_point, this_point]
19 | if curve_type == "s":
20 | return interpolate_linear(input_data, sampling_interval_tick)
21 | elif curve_type == "j":
22 | return interpolate_cosine_ease_in(input_data, sampling_interval_tick)
23 | elif curve_type == "r":
24 | return interpolate_cosine_ease_out(input_data, sampling_interval_tick)
25 | else:
26 | return interpolate_cosine_ease_in_out(input_data, sampling_interval_tick)
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/locales/de_DE/LC_MESSAGES/ust.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ust/locales/de_DE/LC_MESSAGES/ust.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ust/locales/ja_JP/LC_MESSAGES/ust.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ust/locales/ja_JP/LC_MESSAGES/ust.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ust/locales/ja_JP/LC_MESSAGES/ust.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ust/ust.po\n"
8 | "X-Crowdin-File-ID: 156\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:32\n"
14 |
15 | msgid "Text encoding"
16 | msgstr ""
17 |
18 | msgid "Version"
19 | msgstr ""
20 |
21 | msgid "UST file version"
22 | msgstr ""
23 |
24 | msgid "Ust"
25 | msgstr ""
26 |
27 | msgid "UTAU Sequence Text"
28 | msgstr ""
29 |
30 | msgid "Conversion plugin for UST file format"
31 | msgstr ""
32 |
33 | msgid "Sder Colin"
34 | msgstr ""
35 |
36 | msgid "No singing track found"
37 | msgstr ""
38 |
39 | msgid "UST project has no track"
40 | msgstr ""
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/locales/zh_CN/LC_MESSAGES/ust.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ust/locales/zh_CN/LC_MESSAGES/ust.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ust/locales/zh_CN/LC_MESSAGES/ust.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/ust/ust.po\n"
8 | "X-Crowdin-File-ID: 156\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:39\n"
14 |
15 | msgid "Text encoding"
16 | msgstr "文本编码"
17 |
18 | msgid "Version"
19 | msgstr "版本"
20 |
21 | msgid "UST file version"
22 | msgstr "UST文件版本号"
23 |
24 | msgid "Ust"
25 | msgstr ""
26 |
27 | msgid "UTAU Sequence Text"
28 | msgstr "UTAU 序列文本"
29 |
30 | msgid "Conversion plugin for UST file format"
31 | msgstr "UST文件格式转换插件"
32 |
33 | msgid "Sder Colin"
34 | msgstr "科林"
35 |
36 | msgid "No singing track found"
37 | msgstr "未找到演唱轨"
38 |
39 | msgid "UST project has no track"
40 | msgstr "UST工程中没有找到任何音轨"
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import Field
2 |
3 | from libresvip.model.base import BaseModel
4 | from libresvip.model.option_mixins import (
5 | EnablePitchImportationMixin,
6 | SelectSingleTrackMixin,
7 | )
8 | from libresvip.utils.text import supported_charset_names
9 | from libresvip.utils.translation import gettext_lazy as _
10 |
11 |
12 | class InputOptions(EnablePitchImportationMixin, BaseModel):
13 | encoding: str = Field(
14 | default="SHIFT_JIS",
15 | title=_("Text encoding"),
16 | json_schema_extra={"enum": supported_charset_names()},
17 | )
18 |
19 |
20 | class OutputOptions(SelectSingleTrackMixin, BaseModel):
21 | version: float = Field(
22 | default=1.2,
23 | title=_("Version"),
24 | description=_("UST file version"),
25 | )
26 | encoding: str = Field(
27 | default="SHIFT_JIS",
28 | title=_("Text encoding"),
29 | json_schema_extra={"enum": supported_charset_names()},
30 | )
31 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/ust.po:
--------------------------------------------------------------------------------
1 | msgid "Text encoding"
2 | msgstr ""
3 |
4 | msgid "Version"
5 | msgstr ""
6 |
7 | msgid "UST file version"
8 | msgstr ""
9 |
10 | msgid "Ust"
11 | msgstr ""
12 |
13 | msgid "UTAU Sequence Text"
14 | msgstr ""
15 |
16 | msgid "Conversion plugin for UST file format"
17 | msgstr ""
18 |
19 | msgid "Sder Colin"
20 | msgstr ""
21 |
22 | msgid "No singing track found"
23 | msgstr ""
24 |
25 | msgid "UST project has no track"
26 | msgstr ""
27 |
28 |
--------------------------------------------------------------------------------
/libresvip/plugins/ust/ust_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .model import UstWalker, get_ust_grammar
7 | from .options import InputOptions, OutputOptions
8 | from .template import render_ust
9 | from .ust_generator import USTGenerator
10 | from .ust_parser import USTParser
11 |
12 |
13 | class USTConverter(plugin_base.SVSConverterBase):
14 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
15 | ust_content = path.read_bytes()
16 | ust_text = ust_content.decode(options.encoding, errors="replace")
17 | tree = get_ust_grammar().parse(ust_text)
18 | ust_project = UstWalker().walk(tree)
19 | return USTParser(options).parse_project(ust_project)
20 |
21 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
22 | ust_project = USTGenerator(options).generate_project(project)
23 | render_ust(ust_project, path, options.encoding)
24 |
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ustx/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/locales/de_DE/LC_MESSAGES/ustx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ustx/locales/de_DE/LC_MESSAGES/ustx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/locales/ja_JP/LC_MESSAGES/ustx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ustx/locales/ja_JP/LC_MESSAGES/ustx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/locales/zh_CN/LC_MESSAGES/ustx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ustx/locales/zh_CN/LC_MESSAGES/ustx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/ustx.po:
--------------------------------------------------------------------------------
1 | msgid "Incompatible with ARPAsing-series Phonemizers"
2 | msgstr ""
3 |
4 | msgid "Compatible with ARPAsing-series Phonemizers"
5 | msgstr ""
6 |
7 | msgid "The way to handle english multisyllabic words"
8 | msgstr ""
9 |
10 | msgid "Compatibility with ARPAsing-series Phonemizer"
11 | msgstr ""
12 |
13 | msgid "Breath lyrics"
14 | msgstr ""
15 |
16 | msgid ""
17 | "Special lyrics that will be recognized as breath notes only when "
18 | "immediately followed by a regular note, each separated by a space"
19 | msgstr ""
20 |
21 | msgid "Silence lyrics"
22 | msgstr ""
23 |
24 | msgid "Special lyrics that will be ignored, each separated by a space"
25 | msgstr ""
26 |
27 | msgid "Ustx"
28 | msgstr ""
29 |
30 | msgid "OpenUtau project file"
31 | msgstr ""
32 |
33 | msgid "Conversion plugin for Ustx file format"
34 | msgstr ""
35 |
36 | msgid "Oxygen Dioxide"
37 | msgstr ""
38 |
39 | msgid "Notes Overlapped"
40 | msgstr ""
41 |
42 |
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/ustx/utils/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/utils/lyric_util.py:
--------------------------------------------------------------------------------
1 | from libresvip.utils.text import CustomBoundriesBlacklist
2 |
3 | unsupported_symbols = CustomBoundriesBlacklist(
4 | [",", ",", ".", "。", "?", "?", "!", "!"],
5 | right_boundary="$",
6 | match_substrings=True,
7 | )
8 |
9 |
10 | def is_punctuation(c: str) -> bool:
11 | return unsupported_symbols.is_blacklisted(c)
12 |
13 |
14 | def get_symbol_removed_lyric(lyric: str) -> str:
15 | return unsupported_symbols.cleanse_text(lyric)
16 |
--------------------------------------------------------------------------------
/libresvip/plugins/ustx/utils/music_math.py:
--------------------------------------------------------------------------------
1 | from libresvip.utils.music_math import (
2 | cosine_easing_in_interpolation,
3 | cosine_easing_in_out_interpolation,
4 | cosine_easing_out_interpolation,
5 | linear_interpolation,
6 | )
7 |
8 |
9 | def interpolate_shape(
10 | start: tuple[float, float], end: tuple[float, float], x: float, shape: str
11 | ) -> float:
12 | if shape == "io":
13 | return cosine_easing_in_out_interpolation(x, start, end)
14 | elif shape == "i":
15 | return cosine_easing_in_interpolation(x, start, end)
16 | elif shape == "o":
17 | return cosine_easing_out_interpolation(x, start, end)
18 | else:
19 | return linear_interpolation(x, start, end)
20 |
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vfp/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/locales/de_DE/LC_MESSAGES/vfp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vfp/locales/de_DE/LC_MESSAGES/vfp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/locales/de_DE/LC_MESSAGES/vfp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vfp/vfp.po\n"
8 | "X-Crowdin-File-ID: 192\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2025-01-12 02:57\n"
14 |
15 | msgid "VOX Factory"
16 | msgstr ""
17 |
18 | msgid "VOX Factory Project File"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for VOX Factory Project File"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/locales/ja_JP/LC_MESSAGES/vfp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vfp/locales/ja_JP/LC_MESSAGES/vfp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/locales/ja_JP/LC_MESSAGES/vfp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vfp/vfp.po\n"
8 | "X-Crowdin-File-ID: 192\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2025-01-12 02:57\n"
14 |
15 | msgid "VOX Factory"
16 | msgstr ""
17 |
18 | msgid "VOX Factory Project File"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for VOX Factory Project File"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/locales/zh_CN/LC_MESSAGES/vfp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vfp/locales/zh_CN/LC_MESSAGES/vfp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/locales/zh_CN/LC_MESSAGES/vfp.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vfp/vfp.po\n"
8 | "X-Crowdin-File-ID: 192\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2025-01-12 03:00\n"
14 |
15 | msgid "VOX Factory"
16 | msgstr ""
17 |
18 | msgid "VOX Factory Project File"
19 | msgstr "VOX Factory 工程文件"
20 |
21 | msgid "Conversion plugin for VOX Factory Project File"
22 | msgstr "VOX Factory 工程格式转换插件"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | ExtractEmbededAudioMixin,
7 | StaticTempoMixin,
8 | )
9 |
10 |
11 | class InputOptions(
12 | EnableInstrumentalTrackImportationMixin,
13 | EnablePitchImportationMixin,
14 | ExtractEmbededAudioMixin,
15 | BaseModel,
16 | ):
17 | pass
18 |
19 |
20 | class OutputOptions(StaticTempoMixin, BaseModel):
21 | pass
22 |
--------------------------------------------------------------------------------
/libresvip/plugins/vfp/vfp.po:
--------------------------------------------------------------------------------
1 | msgid "VOX Factory"
2 | msgstr ""
3 |
4 | msgid "VOX Factory Project File"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for VOX Factory Project File"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/vog/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vog/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vog/locales/de_DE/LC_MESSAGES/vog.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vog/locales/de_DE/LC_MESSAGES/vog.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vog/locales/de_DE/LC_MESSAGES/vog.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vog/vog.po\n"
8 | "X-Crowdin-File-ID: 160\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:03\n"
14 |
15 | msgid "Singer name"
16 | msgstr "Sängername"
17 |
18 | msgid "Please enter the singer's English name."
19 | msgstr "Bitte gebe den englischen Sängernamen ein."
20 |
21 | msgid "Vogen"
22 | msgstr ""
23 |
24 | msgid "Vogen project file"
25 | msgstr "Vogen Projektdatei"
26 |
27 | msgid "Conversion plugin for Vogen project file"
28 | msgstr "Konvertierungs-Plugin für Vogen-Projektdateien"
29 |
30 | msgid "SoulMelody"
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/vog/locales/ja_JP/LC_MESSAGES/vog.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vog/locales/ja_JP/LC_MESSAGES/vog.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vog/locales/ja_JP/LC_MESSAGES/vog.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vog/vog.po\n"
8 | "X-Crowdin-File-ID: 160\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:32\n"
14 |
15 | msgid "Singer name"
16 | msgstr ""
17 |
18 | msgid "Please enter the singer's English name."
19 | msgstr ""
20 |
21 | msgid "Vogen"
22 | msgstr ""
23 |
24 | msgid "Vogen project file"
25 | msgstr ""
26 |
27 | msgid "Conversion plugin for Vogen project file"
28 | msgstr ""
29 |
30 | msgid "SoulMelody"
31 | msgstr ""
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/vog/locales/zh_CN/LC_MESSAGES/vog.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vog/locales/zh_CN/LC_MESSAGES/vog.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vog/locales/zh_CN/LC_MESSAGES/vog.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vog/vog.po\n"
8 | "X-Crowdin-File-ID: 160\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:39\n"
14 |
15 | msgid "Singer name"
16 | msgstr "歌手名"
17 |
18 | msgid "Please enter the singer's English name."
19 | msgstr "请输入完整无误的歌手英文名字。"
20 |
21 | msgid "Vogen"
22 | msgstr ""
23 |
24 | msgid "Vogen project file"
25 | msgstr "Vogen 工程文件"
26 |
27 | msgid "Conversion plugin for Vogen project file"
28 | msgstr "Vogen 工程格式转换插件"
29 |
30 | msgid "SoulMelody"
31 | msgstr "岁月静好_初心不忘"
32 |
33 |
--------------------------------------------------------------------------------
/libresvip/plugins/vog/model.py:
--------------------------------------------------------------------------------
1 | from pydantic import Field
2 |
3 | from libresvip.model.base import BaseModel
4 |
5 |
6 | class VogenNote(BaseModel):
7 | pitch: int | None = None
8 | lyric: str | None = None
9 | rom: str | None = None
10 | on: int | None = None
11 | dur: int | None = None
12 |
13 |
14 | class VogenTrack(BaseModel):
15 | name: str | None = None
16 | singer_id: str | None = Field(None, alias="singerId")
17 | rom_scheme: str | None = Field("", alias="romScheme")
18 | notes: list[VogenNote] = Field(default_factory=list)
19 |
20 |
21 | class VogenProject(BaseModel):
22 | time_sig0: str = Field(alias="timeSig0")
23 | bpm0: float
24 | accom_offset: int | None = Field(0, alias="accomOffset")
25 | utts: list[VogenTrack] = Field(default_factory=list)
26 |
--------------------------------------------------------------------------------
/libresvip/plugins/vog/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.model.option_mixins import StaticTempoMixin
4 | from libresvip.utils.translation import gettext_lazy as _
5 |
6 |
7 | class InputOptions(BaseModel):
8 | pass
9 |
10 |
11 | class OutputOptions(StaticTempoMixin, BaseModel):
12 | singer_name: str = Field(
13 | title=_("Singer name"),
14 | description=_("Please enter the singer's English name."),
15 | default="Doaz",
16 | )
17 |
--------------------------------------------------------------------------------
/libresvip/plugins/vog/vog.po:
--------------------------------------------------------------------------------
1 | msgid "Singer name"
2 | msgstr ""
3 |
4 | msgid "Please enter the singer's English name."
5 | msgstr ""
6 |
7 | msgid "Vogen"
8 | msgstr ""
9 |
10 | msgid "Vogen project file"
11 | msgstr ""
12 |
13 | msgid "Conversion plugin for Vogen project file"
14 | msgstr ""
15 |
16 | msgid "SoulMelody"
17 | msgstr ""
18 |
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/vpr/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vpr/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vpr/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | DEFAULT_CHINESE_PHONEME: Final[str] = "l a"
4 | DEFAULT_JAPANESE_PHONEME: Final[str] = "4 a"
5 | PITCH_BEND_NAME: Final[str] = "pitchBend"
6 | PITCH_BEND_SENSITIVITY_NAME: Final[str] = "pitchBendSens"
7 | BPM_RATE: Final[float] = 100.0
8 |
--------------------------------------------------------------------------------
/libresvip/plugins/vpr/locales/de_DE/LC_MESSAGES/vpr.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vpr/locales/de_DE/LC_MESSAGES/vpr.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vpr/locales/ja_JP/LC_MESSAGES/vpr.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vpr/locales/ja_JP/LC_MESSAGES/vpr.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vpr/locales/zh_CN/LC_MESSAGES/vpr.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vpr/locales/zh_CN/LC_MESSAGES/vpr.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vshp/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/locales/de_DE/LC_MESSAGES/vshp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vshp/locales/de_DE/LC_MESSAGES/vshp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/locales/ja_JP/LC_MESSAGES/vshp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vshp/locales/ja_JP/LC_MESSAGES/vshp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/locales/zh_CN/LC_MESSAGES/vshp.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vshp/locales/zh_CN/LC_MESSAGES/vshp.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.utils.translation import gettext_lazy as _
4 |
5 |
6 | class InputOptions(BaseModel):
7 | wave_to_singing: bool = Field(True, title=_("Convert wave pattern to singing pattern"))
8 | use_edited_pitch: bool = Field(True, title=_("Use edited pitch curve"))
9 | use_edited_dynamics: bool = Field(True, title=_("Use edited dynamics curve"))
10 | import_dynamics: bool = Field(False, title=_("Import dynamics curve"))
11 | import_formant: bool = Field(False, title=_("Import formant curve"))
12 | import_breath: bool = Field(False, title=_("Import breath curve"))
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/utils.py:
--------------------------------------------------------------------------------
1 | import contextlib
2 |
3 |
4 | def ansi2unicode(content: bytes) -> str:
5 | for possible_encoding in [
6 | "utf-8",
7 | "gbk",
8 | "shift-jis",
9 | "euc-kr",
10 | "big5",
11 | ]:
12 | with contextlib.suppress(UnicodeDecodeError):
13 | return content.decode(possible_encoding)
14 | return content.decode(errors="replace")
15 |
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/vocalshifter_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .model import VocalShifterProjectData
7 | from .options import InputOptions
8 | from .vocalshifter_parser import VocalShifterParser
9 |
10 |
11 | class VocalShifterConverter(plugin_base.ReadOnlyConverterBase):
12 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
13 | vshp_proj = VocalShifterProjectData.parse_file(path)
14 | return VocalShifterParser(options).parse_project(vshp_proj)
15 |
--------------------------------------------------------------------------------
/libresvip/plugins/vshp/vshp.po:
--------------------------------------------------------------------------------
1 | msgid "Convert wave pattern to singing pattern"
2 | msgstr ""
3 |
4 | msgid "Use edited pitch curve"
5 | msgstr ""
6 |
7 | msgid "Use edited dynamics curve"
8 | msgstr ""
9 |
10 | msgid "Import dynamics curve"
11 | msgstr ""
12 |
13 | msgid "Import formant curve"
14 | msgstr ""
15 |
16 | msgid "Import breath curve"
17 | msgstr ""
18 |
19 | msgid "VocalShifter"
20 | msgstr ""
21 |
22 | msgid "VocalShifter project file"
23 | msgstr ""
24 |
25 | msgid "Import parameters from VocalShifter project file."
26 | msgstr ""
27 |
28 | msgid "SoulMelody"
29 | msgstr ""
30 |
31 |
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vspx/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/locales/de_DE/LC_MESSAGES/vspx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vspx/locales/de_DE/LC_MESSAGES/vspx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/locales/de_DE/LC_MESSAGES/vspx.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vspx/vspx.po\n"
8 | "X-Crowdin-File-ID: 166\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:03\n"
14 |
15 | msgid "VocalSharp"
16 | msgstr ""
17 |
18 | msgid "VocalSharp project file"
19 | msgstr "VocalSharp Projektdatei"
20 |
21 | msgid "Conversion plugin for VocalSharp project file"
22 | msgstr "Konvertierungs-Plugin für VocalSharp Projektdateien"
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/locales/ja_JP/LC_MESSAGES/vspx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vspx/locales/ja_JP/LC_MESSAGES/vspx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/locales/ja_JP/LC_MESSAGES/vspx.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vspx/vspx.po\n"
8 | "X-Crowdin-File-ID: 166\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:32\n"
14 |
15 | msgid "VocalSharp"
16 | msgstr ""
17 |
18 | msgid "VocalSharp project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for VocalSharp project file"
22 | msgstr ""
23 |
24 | msgid "SoulMelody"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/locales/zh_CN/LC_MESSAGES/vspx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vspx/locales/zh_CN/LC_MESSAGES/vspx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/locales/zh_CN/LC_MESSAGES/vspx.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vspx/vspx.po\n"
8 | "X-Crowdin-File-ID: 166\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-11-13 06:39\n"
14 |
15 | msgid "VocalSharp"
16 | msgstr ""
17 |
18 | msgid "VocalSharp project file"
19 | msgstr "VocalSharp 工程格式"
20 |
21 | msgid "Conversion plugin for VocalSharp project file"
22 | msgstr "VocalSharp格式转换插件"
23 |
24 | msgid "SoulMelody"
25 | msgstr "岁月静好_初心不忘"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnableInstrumentalTrackImportationMixin,
5 | EnablePitchImportationMixin,
6 | )
7 |
8 |
9 | class InputOptions(
10 | EnableInstrumentalTrackImportationMixin,
11 | EnablePitchImportationMixin,
12 | BaseModel,
13 | ):
14 | pass
15 |
16 |
17 | class OutputOptions(BaseModel):
18 | pass
19 |
--------------------------------------------------------------------------------
/libresvip/plugins/vspx/vspx.po:
--------------------------------------------------------------------------------
1 | msgid "VocalSharp"
2 | msgstr ""
3 |
4 | msgid "VocalSharp project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for VocalSharp project file"
8 | msgstr ""
9 |
10 | msgid "SoulMelody"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/plugins/vsq/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsq/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vsq/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | DEFAULT_PHONEME: Final[str] = "4 a"
4 |
--------------------------------------------------------------------------------
/libresvip/plugins/vsq/locales/de_DE/LC_MESSAGES/vsq.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsq/locales/de_DE/LC_MESSAGES/vsq.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vsq/locales/ja_JP/LC_MESSAGES/vsq.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsq/locales/ja_JP/LC_MESSAGES/vsq.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vsq/locales/zh_CN/LC_MESSAGES/vsq.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsq/locales/zh_CN/LC_MESSAGES/vsq.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vsq/vsq.po:
--------------------------------------------------------------------------------
1 | msgid "Ignore all breath notes"
2 | msgstr ""
3 |
4 | msgid "Keep as normal notes"
5 | msgstr ""
6 |
7 | msgid "Lyric text encoding"
8 | msgstr ""
9 |
10 | msgid "Unless the lyrics are garbled, this option should not be changed."
11 | msgstr ""
12 |
13 | msgid "The way to handle breath notes"
14 | msgstr ""
15 |
16 | msgid "Ticks per beat"
17 | msgstr ""
18 |
19 | msgid ""
20 | "Also known as parts per quarter, ticks per quarter note, the number of "
21 | "pulses per quarter note. This setting should not be changed unless you "
22 | "know what it is."
23 | msgstr ""
24 |
25 | msgid "Vsq"
26 | msgstr ""
27 |
28 | msgid "Vocaloid 2 Sequence file"
29 | msgstr ""
30 |
31 | msgid "Conversion plugin for Vocaloid 2 sequence file"
32 | msgstr ""
33 |
34 | msgid "Selio Jiang"
35 | msgstr ""
36 |
37 |
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsqx/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/constants.py:
--------------------------------------------------------------------------------
1 | from typing import Final
2 |
3 | DEFAULT_CHINESE_PHONEME: Final[str] = "l a"
4 | DEFAULT_JAPANESE_PHONEME: Final[str] = "4 a"
5 | BPM_RATE: Final[float] = 100.0
6 |
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/locales/de_DE/LC_MESSAGES/vsqx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsqx/locales/de_DE/LC_MESSAGES/vsqx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/locales/ja_JP/LC_MESSAGES/vsqx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsqx/locales/ja_JP/LC_MESSAGES/vsqx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/locales/zh_CN/LC_MESSAGES/vsqx.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vsqx/locales/zh_CN/LC_MESSAGES/vsqx.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/models/__init__.py:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/libresvip/plugins/vsqx/models/enums.py:
--------------------------------------------------------------------------------
1 | # mypy: disable-error-code="misc"
2 | import enum
3 | from typing import Annotated
4 |
5 | from pydantic import Field
6 |
7 | from libresvip.utils.translation import gettext_lazy as _
8 |
9 |
10 | class VsqxVersion(enum.IntEnum):
11 | VSQ3: Annotated[int, Field(title=_("VSQx 3"))] = 3
12 | VSQ4: Annotated[int, Field(title=_("VSQx 4"))] = 4
13 |
14 |
15 | class VocaloidLanguage(enum.IntEnum):
16 | JAPANESE: Annotated[int, Field(title=_("日本語"))] = 0
17 | ENGLISH: Annotated[int, Field(title=_("English"))] = 1
18 | KOREAN: Annotated[int, Field(title=_("한국어"))] = 2
19 | SPANISH: Annotated[int, Field(title=_("Español"))] = 3
20 | SIMPLIFIED_CHINESE: Annotated[int, Field(title=_("简体中文"))] = 4
21 |
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vvproj/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/locales/de_DE/LC_MESSAGES/vvproj.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vvproj/locales/de_DE/LC_MESSAGES/vvproj.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/locales/de_DE/LC_MESSAGES/vvproj.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vvproj/vvproj.po\n"
8 | "X-Crowdin-File-ID: 182\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:03\n"
14 |
15 | msgid "Unsupported lyric: "
16 | msgstr "Nicht unterstützter Text: "
17 |
18 | msgid "VVProj"
19 | msgstr ""
20 |
21 | msgid "VOICEVOX Project file"
22 | msgstr "VOICEVOX Projektdatei"
23 |
24 | msgid "Conversion plugin for VOICEVOX Project file"
25 | msgstr "Konvertierungs-Plugin für VOICEVOX-Projektdateien"
26 |
27 | msgid "SoulMelody"
28 | msgstr ""
29 |
30 |
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/locales/ja_JP/LC_MESSAGES/vvproj.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vvproj/locales/ja_JP/LC_MESSAGES/vvproj.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/locales/ja_JP/LC_MESSAGES/vvproj.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vvproj/vvproj.po\n"
8 | "X-Crowdin-File-ID: 182\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-12-12 01:22\n"
14 |
15 | msgid "Unsupported lyric: "
16 | msgstr ""
17 |
18 | msgid "VVProj"
19 | msgstr ""
20 |
21 | msgid "VOICEVOX Project file"
22 | msgstr ""
23 |
24 | msgid "Conversion plugin for VOICEVOX Project file"
25 | msgstr ""
26 |
27 | msgid "SoulMelody"
28 | msgstr ""
29 |
30 |
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/locales/zh_CN/LC_MESSAGES/vvproj.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vvproj/locales/zh_CN/LC_MESSAGES/vvproj.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/locales/zh_CN/LC_MESSAGES/vvproj.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/vvproj/vvproj.po\n"
8 | "X-Crowdin-File-ID: 182\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-12-12 01:23\n"
14 |
15 | msgid "Unsupported lyric: "
16 | msgstr "不支持的歌词: "
17 |
18 | msgid "VVProj"
19 | msgstr ""
20 |
21 | msgid "VOICEVOX Project file"
22 | msgstr "VOICEVOX 工程文件"
23 |
24 | msgid "Conversion plugin for VOICEVOX Project file"
25 | msgstr "VOICEVOX 工程格式转换插件"
26 |
27 | msgid "SoulMelody"
28 | msgstr "岁月静好_初心不忘"
29 |
30 |
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import EnablePitchImportationMixin
4 |
5 |
6 | class InputOptions(EnablePitchImportationMixin, BaseModel):
7 | pass
8 |
9 |
10 | class OutputOptions(BaseModel):
11 | pass
12 |
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/voicevox_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.core.compat import json
4 | from libresvip.extension import base as plugin_base
5 | from libresvip.model.base import Project
6 |
7 | from .model import VoiceVoxProject
8 | from .options import InputOptions, OutputOptions
9 | from .voicevox_generator import VOICEVOXGenerator
10 | from .voicevox_parser import VOICEVOXParser
11 |
12 |
13 | class VOICEVOXConverter(plugin_base.SVSConverterBase):
14 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
15 | voicevox_project = VoiceVoxProject.model_validate_json(path.read_bytes())
16 | return VOICEVOXParser(options).parse_project(voicevox_project)
17 |
18 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
19 | voicevox_project = VOICEVOXGenerator(options).generate_project(project)
20 | path.write_bytes(
21 | json.dumps(voicevox_project.model_dump(mode="json", by_alias=True)).encode("utf-8")
22 | )
23 |
--------------------------------------------------------------------------------
/libresvip/plugins/vvproj/vvproj.po:
--------------------------------------------------------------------------------
1 | msgid "Unsupported lyric: "
2 | msgstr ""
3 |
4 | msgid "VVProj"
5 | msgstr ""
6 |
7 | msgid "VOICEVOX Project file"
8 | msgstr ""
9 |
10 | msgid "Conversion plugin for VOICEVOX Project file"
11 | msgstr ""
12 |
13 | msgid "SoulMelody"
14 | msgstr ""
15 |
16 |
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vxf/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/locales/de_DE/LC_MESSAGES/vxf.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vxf/locales/de_DE/LC_MESSAGES/vxf.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/locales/ja_JP/LC_MESSAGES/vxf.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vxf/locales/ja_JP/LC_MESSAGES/vxf.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/locales/zh_CN/LC_MESSAGES/vxf.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/vxf/locales/zh_CN/LC_MESSAGES/vxf.mo
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel, Field
2 |
3 | from libresvip.core.constants import DEFAULT_BPM, TICKS_IN_BEAT
4 | from libresvip.model.option_mixins import EnablePitchImportationMixin
5 | from libresvip.utils.translation import gettext_lazy as _
6 |
7 |
8 | class InputOptions(EnablePitchImportationMixin, BaseModel):
9 | default_bpm: float = Field(
10 | default=DEFAULT_BPM,
11 | title=_("Default BPM"),
12 | description=_("Used when no BPM information is found in the MIDI file."),
13 | )
14 |
15 |
16 | class OutputOptions(BaseModel):
17 | ticks_per_beat: int = Field(
18 | default=TICKS_IN_BEAT,
19 | title=_("Ticks per beat"),
20 | description=_(
21 | "Also known as parts per quarter, ticks per quarter note, the number of pulses per quarter note. This setting should not be changed unless you know what it is."
22 | ),
23 | )
24 |
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/vx_beta_converter.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from libresvip.extension import base as plugin_base
4 | from libresvip.model.base import Project
5 |
6 | from .model import VxFile
7 | from .options import InputOptions, OutputOptions
8 | from .vx_beta_generator import VxBetaGenerator
9 | from .vx_beta_parser import VxBetaParser
10 |
11 |
12 | class VxBetaConverter(plugin_base.SVSConverterBase):
13 | def load(self, path: pathlib.Path, options: InputOptions) -> Project:
14 | vx_file = VxFile.parse(path.read_bytes())
15 | return VxBetaParser(options).parse_project(vx_file)
16 |
17 | def dump(self, path: pathlib.Path, project: Project, options: OutputOptions) -> None:
18 | vx_file = VxBetaGenerator(options).generate_project(project)
19 | path.write_bytes(VxFile.build(vx_file))
20 |
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/vxf.po:
--------------------------------------------------------------------------------
1 | msgid "Default BPM"
2 | msgstr ""
3 |
4 | msgid "Used when no BPM information is found in the MIDI file."
5 | msgstr ""
6 |
7 | msgid "Ticks per beat"
8 | msgstr ""
9 |
10 | msgid ""
11 | "Also known as parts per quarter, ticks per quarter note, the number of "
12 | "pulses per quarter note. This setting should not be changed unless you "
13 | "know what it is."
14 | msgstr ""
15 |
16 | msgid "No tempo labels found in the imported project."
17 | msgstr ""
18 |
19 | msgid "VX-β"
20 | msgstr ""
21 |
22 | msgid "VX-β project file"
23 | msgstr ""
24 |
25 | msgid "Conversion plugin for VX-β project file"
26 | msgstr ""
27 |
28 | msgid "SoulMelody"
29 | msgstr ""
30 |
31 |
--------------------------------------------------------------------------------
/libresvip/plugins/vxf/vxf.yapsy-plugin:
--------------------------------------------------------------------------------
1 | [Core]
2 | name = VX-β
3 | module = vx_beta_converter
4 |
5 | [Documentation]
6 | Author = SoulMelody
7 | Version = 3.0.2
8 | Website = https://space.bilibili.com/175862486
9 | Format = VX-β project file
10 | Description = Conversion plugin for VX-β project file
11 | Suffix = vxf
--------------------------------------------------------------------------------
/libresvip/plugins/y77/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/y77/__init__.py
--------------------------------------------------------------------------------
/libresvip/plugins/y77/locales/de_DE/LC_MESSAGES/y77.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/y77/locales/de_DE/LC_MESSAGES/y77.mo
--------------------------------------------------------------------------------
/libresvip/plugins/y77/locales/de_DE/LC_MESSAGES/y77.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: de\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/y77/y77.po\n"
8 | "X-Crowdin-File-ID: 172\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: German\n"
12 | "Language: de_DE\n"
13 | "PO-Revision-Date: 2024-12-19 01:03\n"
14 |
15 | msgid "Y77"
16 | msgstr ""
17 |
18 | msgid "Yuan77 project file"
19 | msgstr "Yuan77 Projektdatei"
20 |
21 | msgid "Conversion plugin for Yuan77 project file"
22 | msgstr "Konvertierungs-Plugin für Yuan77-Projektdateien"
23 |
24 | msgid "FlutyDeer"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/y77/locales/ja_JP/LC_MESSAGES/y77.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/y77/locales/ja_JP/LC_MESSAGES/y77.mo
--------------------------------------------------------------------------------
/libresvip/plugins/y77/locales/ja_JP/LC_MESSAGES/y77.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: ja\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/y77/y77.po\n"
8 | "X-Crowdin-File-ID: 172\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Japanese\n"
12 | "Language: ja_JP\n"
13 | "PO-Revision-Date: 2024-11-13 04:32\n"
14 |
15 | msgid "Y77"
16 | msgstr ""
17 |
18 | msgid "Yuan77 project file"
19 | msgstr ""
20 |
21 | msgid "Conversion plugin for Yuan77 project file"
22 | msgstr ""
23 |
24 | msgid "FlutyDeer"
25 | msgstr ""
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/y77/locales/zh_CN/LC_MESSAGES/y77.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/plugins/y77/locales/zh_CN/LC_MESSAGES/y77.mo
--------------------------------------------------------------------------------
/libresvip/plugins/y77/locales/zh_CN/LC_MESSAGES/y77.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Plural-Forms: nplurals=1; plural=0;\n"
4 | "X-Crowdin-Project: libresvip\n"
5 | "X-Crowdin-Project-ID: 645830\n"
6 | "X-Crowdin-Language: zh-CN\n"
7 | "X-Crowdin-File: /main/libresvip/plugins/y77/y77.po\n"
8 | "X-Crowdin-File-ID: 172\n"
9 | "Project-Id-Version: libresvip\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Language-Team: Chinese Simplified\n"
12 | "Language: zh_CN\n"
13 | "PO-Revision-Date: 2024-12-17 11:16\n"
14 |
15 | msgid "Y77"
16 | msgstr ""
17 |
18 | msgid "Yuan77 project file"
19 | msgstr "元七七工程文件"
20 |
21 | msgid "Conversion plugin for Yuan77 project file"
22 | msgstr "元七七工程格式转换插件"
23 |
24 | msgid "FlutyDeer"
25 | msgstr "笛鹿"
26 |
27 |
--------------------------------------------------------------------------------
/libresvip/plugins/y77/model.py:
--------------------------------------------------------------------------------
1 | from pydantic import Field
2 |
3 | from libresvip.core.constants import DEFAULT_BPM
4 | from libresvip.model.base import BaseModel
5 |
6 |
7 | class Y77Note(BaseModel):
8 | py: str = ""
9 | length: int = Field(alias="len")
10 | start: int
11 | lyric: str
12 | pitch: int
13 | pbs: int = 0
14 | pit: list[int | float] = Field(default_factory=list)
15 |
16 |
17 | class Y77Project(BaseModel):
18 | bpm: float = DEFAULT_BPM
19 | bars: int = 0
20 | notes: list[Y77Note] = Field(default_factory=list)
21 | nnote: int = 0
22 | bbar: int = 4
23 | v: int = 10001
24 | bbeat: int = 4
25 |
--------------------------------------------------------------------------------
/libresvip/plugins/y77/options.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | from libresvip.model.option_mixins import (
4 | EnablePitchImportationMixin,
5 | SelectSingleTrackMixin,
6 | StaticTempoMixin,
7 | )
8 |
9 |
10 | class InputOptions(EnablePitchImportationMixin, BaseModel):
11 | pass
12 |
13 |
14 | class OutputOptions(SelectSingleTrackMixin, StaticTempoMixin):
15 | pass
16 |
--------------------------------------------------------------------------------
/libresvip/plugins/y77/y77.po:
--------------------------------------------------------------------------------
1 | msgid "Y77"
2 | msgstr ""
3 |
4 | msgid "Yuan77 project file"
5 | msgstr ""
6 |
7 | msgid "Conversion plugin for Yuan77 project file"
8 | msgstr ""
9 |
10 | msgid "FlutyDeer"
11 | msgstr ""
12 |
13 |
--------------------------------------------------------------------------------
/libresvip/py.typed:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/py.typed
--------------------------------------------------------------------------------
/libresvip/res/libresvip.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/res/libresvip.ico
--------------------------------------------------------------------------------
/libresvip/res/locales/de_DE/LC_MESSAGES/libresvip.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/res/locales/de_DE/LC_MESSAGES/libresvip.mo
--------------------------------------------------------------------------------
/libresvip/res/locales/ja_JP/LC_MESSAGES/libresvip.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/res/locales/ja_JP/LC_MESSAGES/libresvip.mo
--------------------------------------------------------------------------------
/libresvip/res/locales/qt_standard_buttons.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | QPlatformTheme
6 |
7 | OK
8 | OK
9 |
10 |
11 | Cancel
12 | Cancel
13 |
14 |
15 | Yes to &All
16 | Yes to All
17 |
18 |
19 | N&o to All
20 | No to All
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/libresvip/res/locales/zh_CN/LC_MESSAGES/libresvip.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/res/locales/zh_CN/LC_MESSAGES/libresvip.mo
--------------------------------------------------------------------------------
/libresvip/res/qml/components/icon_menu_item.qml:
--------------------------------------------------------------------------------
1 | import QtQuick
2 | import QtQuick.Window
3 | import QtQuick.Controls
4 | import QtQuick.Controls.Material
5 | import LibreSVIP
6 |
7 | MenuItem {
8 | property string icon_name: ""
9 | property string label: ""
10 | contentItem: Row {
11 | Label {
12 | text: iconicFontLoader.icon(icon_name)
13 | font.family: "Material Design Icons"
14 | font.pixelSize: Qt.application.font.pixelSize * 1.2
15 | width: 35
16 | anchors.verticalCenter: parent.verticalCenter
17 | }
18 | Label {
19 | text: label
20 | width: parent.width - 35
21 | anchors.verticalCenter: parent.verticalCenter
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/libresvip/res/qml/components/qmldir:
--------------------------------------------------------------------------------
1 | module LibreSVIP
2 |
3 | RunningIndicator 1.0 running_indicator.qml
4 |
5 | Dialogs 1.0 dialogs.qml
6 |
7 | MessageBox 1.0 message_box.qml
8 |
9 | Actions 1.0 actions.qml
10 |
11 | SettingsDialog 1.0 settings_dialog.qml
12 |
13 | IconButton 1.0 icon_button.qml
14 |
15 | IconMenuItem 1.0 icon_menu_item.qml
16 |
17 | TopToolbar 1.0 top_toolbar.qml
18 |
19 | LabeledComboBox 1.0 labeled_combo_box.qml
20 |
21 | PluginInfo 1.0 plugin_info.qml
22 |
23 | DashedRectangle 1.0 dashed_rectangle.qml
24 |
25 | ConverterPage 1.0 converter_page.qml
--------------------------------------------------------------------------------
/libresvip/res/qml/resources.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | main.qml
4 | components/qmldir
5 | components/actions.qml
6 | components/converter_page.qml
7 | components/dashed_rectangle.qml
8 | components/dialogs.qml
9 | components/icon_button.qml
10 | components/icon_menu_item.qml
11 | components/labeled_combo_box.qml
12 | components/message_box.qml
13 | components/plugin_info.qml
14 | components/running_indicator.qml
15 | components/settings_dialog.qml
16 | components/task_row.qml
17 | components/top_toolbar.qml
18 |
19 |
20 |
--------------------------------------------------------------------------------
/libresvip/res/resources.rcc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/res/resources.rcc
--------------------------------------------------------------------------------
/libresvip/tui/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/tui/__init__.py
--------------------------------------------------------------------------------
/libresvip/tui/__main__.py:
--------------------------------------------------------------------------------
1 | from libresvip.tui.app import TUIApp
2 |
3 |
4 | def main() -> None:
5 | app = TUIApp()
6 | app.run()
7 |
8 |
9 | if __name__ == "__main__":
10 | main()
11 |
--------------------------------------------------------------------------------
/libresvip/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/libresvip/utils/__init__.py
--------------------------------------------------------------------------------
/libresvip/web/__init__.py:
--------------------------------------------------------------------------------
1 | import os
2 | from multiprocessing import freeze_support
3 |
4 | freeze_support()
5 |
6 | from libresvip.core.constants import app_dir # noqa: E402
7 |
8 | os.environ.setdefault("NICEGUI_STORAGE_PATH", str(app_dir.user_config_path / ".nicegui"))
9 |
--------------------------------------------------------------------------------
/libresvip/web/__main__.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | import sys
4 |
5 | from loguru import logger
6 |
7 | from libresvip.web.pages import main
8 |
9 |
10 | def unraisablehook(unraisable: sys.UnraisableHookArgs) -> None:
11 | if unraisable.exc_type is not KeyboardInterrupt:
12 | logger.exception(unraisable.exc_value)
13 | del unraisable
14 |
15 |
16 | sys.unraisablehook = unraisablehook
17 |
18 | if __name__ in {"__main__", "__mp_main__"}:
19 | main()
20 |
--------------------------------------------------------------------------------
/packaging/docker-compose-build-wine-arm64.yml:
--------------------------------------------------------------------------------
1 | version: "3"
2 | services:
3 | run_pyinstaller:
4 | image: linaro/wine-arm64
5 | volumes:
6 | - ./clangarm64:/clangarm64
7 | - ../:/src
8 | command: wine-arm64 cmd /c "cd /src/packaging && set PATH=/clangarm64/bin;%PATH% && pyinstaller libresvip.spec"
--------------------------------------------------------------------------------
/packaging/docker-compose-msys2-clangarm64.yml:
--------------------------------------------------------------------------------
1 | version: "3"
2 | services:
3 | install_mingw_dependencies:
4 | image: ghcr.io/msys2/msys2-docker-experimental
5 | volumes:
6 | - ./clangarm64:/root/.wine/drive_c/msys64/clangarm64
7 | - ./install_msys2_requirements.sh:/root/.wine/drive_c/install_msys2_requirements.sh:ro
8 | command: msys2 -c "bash /c/install_msys2_requirements.sh" || exit 0
9 |
10 | install_python_dependencies:
11 | image: linaro/wine-arm64
12 | volumes:
13 | - ./clangarm64:/clangarm64
14 | - ../:/src
15 | command: >
16 | wine-arm64 cmd /c "cd /src/dist &&
17 | set PATH=/clangarm64/bin;%PATH% &&
18 | dir *.whl /b > requirements.txt &&
19 | python -m pip install -r requirements.txt --no-deps &&
20 | cd ../packaging &&
21 | python -m pip install -r requirements-desktop.txt"
22 | depends_on:
23 | install_mingw_dependencies:
24 | condition: service_completed_successfully
--------------------------------------------------------------------------------
/packaging/macos-entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | com.apple.security.cs.allow-jit
7 |
8 | com.apple.security.cs.allow-unsigned-executable-memory
9 |
10 | com.apple.security.cs.disable-library-validation
11 |
12 |
13 |
--------------------------------------------------------------------------------
/packaging/requirements-desktop.in:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/packaging/requirements-desktop.in
--------------------------------------------------------------------------------
/packaging/requirements-flet.in:
--------------------------------------------------------------------------------
1 | flet-permission-handler
--------------------------------------------------------------------------------
/packaging/requirements-mobile.in:
--------------------------------------------------------------------------------
1 | pydantic==2.9.1
2 | pydantic-core==2.23.3
--------------------------------------------------------------------------------
/packaging/requirements-pyinstaller.in:
--------------------------------------------------------------------------------
1 | shellingham
2 | pyinstaller==6.14.0 ; platform_system != "Windows" or platform_machine == "arm64"
3 | https://github.com/webcomics/pyinstaller-builder/releases/download/snapshot/pyinstaller-6.14.0-py3-none-any.whl ; platform_system == "Windows" and platform_machine != "arm64"
4 | pillow ; sys_platform == "darwin"
5 |
--------------------------------------------------------------------------------
/packaging/requirements-pywebview.in:
--------------------------------------------------------------------------------
1 | pywebview
--------------------------------------------------------------------------------
/scripts/babel.cfg:
--------------------------------------------------------------------------------
1 | [extractors]
2 | yapsy_plugin = extract_messages:extract_from_plugin_metadata
3 | qt_ts = extract_messages:extract_from_qt_ts
4 |
5 | [yapsy_plugin: **.yapsy-plugin]
6 |
7 | [qt_ts: **.ts]
8 |
9 | [python: **.py]
--------------------------------------------------------------------------------
/scripts/batch_compile_catalog.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | from babel.messages import setuptools_frontend
4 |
5 | if __name__ == "__main__":
6 | base_dir = pathlib.Path("../libresvip")
7 | for file_path in base_dir.rglob("**/*.po"):
8 | if file_path.parent.name == "LC_MESSAGES":
9 | continue
10 | cmdinst = setuptools_frontend.compile_catalog()
11 | cmdinst.initialize_options()
12 | cmdinst.domain = file_path.stem
13 | cmdinst.directory = str(file_path.parent / "locales")
14 | cmdinst.output_file = str(file_path.with_suffix(".mo"))
15 | cmdinst.finalize_options()
16 | cmdinst.run()
17 |
--------------------------------------------------------------------------------
/scripts/gen_snake_case_pyi.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | python -m PySide6.support.generate_pyi all --feature snake_case true_property
--------------------------------------------------------------------------------
/scripts/patch_qt_resource.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 | import subprocess
3 |
4 | if __name__ == "__main__":
5 | subprocess.call(
6 | [
7 | "pyside6-qmlformat",
8 | "-i",
9 | *(str(qml_path) for qml_path in pathlib.Path("../libresvip/res/qml").rglob("**/*.qml")),
10 | ]
11 | )
12 | subprocess.call(
13 | [
14 | "pyside6-rcc",
15 | "--binary",
16 | "-o",
17 | "../libresvip/res/resources.rcc",
18 | "../libresvip/res/qml/resources.qrc",
19 | ]
20 | )
21 |
--------------------------------------------------------------------------------
/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/tests/__init__.py
--------------------------------------------------------------------------------
/tests/data/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SoulMelody/LibreSVIP/b2240d20b2fb0acd8d32304e9e33273eb86e7a92/tests/data/.gitkeep
--------------------------------------------------------------------------------