diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 7895618..2d7cd46 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -17,6 +17,6 @@ sphinx: # Optionally declare the Python requirements required to build your docs python: install: - - path: . + - path: . # Required by importlib.version for Sphinx (setuptools_scm) - requirements: docs/requirements.txt - requirements: requirements.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index b19b608..a0413c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## [2.0.0] - 2023-03-18 + +Welcome PyFLP 2.0 🎉 +Read the previous changelogs to get the complete list of changes. + +### Added + +- `FruityBloodOverdrive` - thanks to @@ttaschke [#120]. + +### Changed + +- Docs are way more easier to navigate now. ### Fixed @@ -19,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Support for PyPy 3.7 (unable to run tox, cannot find a download). [#113]: https://github.com/demberto/PyFLP/issues/113 +[#120]: https://github.com/demberto/PyFLP/pull/120 ## [2.0.0a7] - 2022-12-19 @@ -629,6 +641,7 @@ Same as in 0.1.1 - `flpinfo` doesn't output correctly sometimes due to long strings. - Extraneous data dumped sometimes by `InsertSlotEvent.Plugin`, why this is caused is not known. +[2.0.0]: https://github.com/demberto/PyFLP/compare/v2.0.0a7.post0...v2.0.0 [2.0.0a7]: https://github.com/demberto/PyFLP/compare/v2.0.0a6...v2.0.0a7 [2.0.0a6]: https://github.com/demberto/PyFLP/compare/v2.0.0a5.post...v2.0.0a6 [2.0.0a5.post]: https://github.com/demberto/PyFLP/compare/v2.0.0a5...v2.0.0a5.post diff --git a/docs/architecture/flp-format.rst b/docs/architecture/flp-format.rst index 2a1f345..9b21354 100644 --- a/docs/architecture/flp-format.rst +++ b/docs/architecture/flp-format.rst @@ -4,7 +4,7 @@ Part I: FLP Format & Events FLP is a binary format used by Image-Line FL Studio, a music production software, to store project files. Instead of using C-style structs entirely, the FLP format has evolved from what once was a MIDI-like format to a really -bad and messy combination of :wikipedia:`type-length-value` encoded "events" +bad and messy combination of :wikipedia:`Type-length-value` encoded "events" and structs. Specification diff --git a/docs/conf.py b/docs/conf.py index 1d6eccb..13361cd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,16 +22,22 @@ from pyflp.arrangement import _TrackColorProp BITLY_LINK = re.compile(r"!\[.*\]\((https://bit\.ly/[A-z0-9]*)\)") +"""Shortened URLs for links to in-docstring images and docs.""" + NEW_IN_FL = re.compile(r"\*New in FL Studio v([^\*]*)\*[\.:](.*)") +"""Matched in docstrings and replaced with an SVG by :meth:`badge_flstudio`.""" + EVENT_ID_DOC = re.compile(r"([0-9\.]*)\+") FL_BADGE = "https://img.shields.io/badge/FL%20Studio-{}+-5f686d?labelColor=ff7629&style=for-the-badge" GHUC_PREFIX = "https://raw.githubusercontent.com/demberto/PyFLP/master/docs/" +"""Raw image URL root used for in-docstring images and docs.""" + IGNORED_BITLY = ["3RDM1yn"] project = "PyFLP" author = "demberto" copyright = f"2022, {author}" -release = importlib.metadata.version("pyflp") +release = importlib.metadata.version("pyflp") # Needs package installation! extensions = [ "hoverxref.extension", "m2r2", # Markdown to reStructuredText conversion @@ -48,7 +54,7 @@ "sphinx.ext.todo", # Items I need to document "sphinx.ext.viewcode", # "Show source" button next to autodoc output "sphinx_toolbox", # Badges and goodies - "sphinx_toolbox.github", + "sphinx_toolbox.github", # Link to project issues / PRs easily "sphinx_toolbox.more_autodoc.autoprotocol", # Autodoc extension for typing.Protocol "sphinx_toolbox.more_autodoc.sourcelink", # Python docs-style source code link "sphinx_toolbox.sidebar_links", # Links to repo and PyPi project in the sidebar @@ -73,9 +79,9 @@ todo_include_todos = True # Include .. todo:: directives in output todo_emit_warnings = True # Emit warnings about it as well, so I don't forget html_css_files = [ - "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" + "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css" ] # https://sphinx-design.rtfd.io/en/furo-theme/badges_buttons.html#fontawesome-icons -sd_fontawesome_latex = True +sd_fontawesome_latex = True # Output FontAwesome icons in LaTeX intersphinx_mapping = { "python": ("https://docs.python.org/3", None), "construct": ("https://construct.readthedocs.io/en/latest", None), diff --git a/docs/img/plugin/effects/fruity-blood-overdrive.png b/docs/img/plugin/effects/fruity-blood-overdrive.png new file mode 100644 index 0000000..7af4b6c Binary files /dev/null and b/docs/img/plugin/effects/fruity-blood-overdrive.png differ diff --git a/docs/reference.rst b/docs/reference.rst index 591a43c..023e77a 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -7,6 +7,7 @@ :caption: Contents: :glob: + reference/*/index reference/* :material-outlined:`api` API diff --git a/docs/reference/arrangement/arrangement.rst b/docs/reference/arrangement/arrangement.rst new file mode 100644 index 0000000..37e62f9 --- /dev/null +++ b/docs/reference/arrangement/arrangement.rst @@ -0,0 +1,14 @@ +\ :fas:`trowel-bricks` Arrangement +================================== + +.. currentmodule:: pyflp.arrangement + +.. autoclass:: Arrangement + :members: + +.. autoclass:: TimeSignature + :members: + +.. autoclass:: ArrangementID + :members: + :member-order: bysource diff --git a/docs/reference/arrangement/index.rst b/docs/reference/arrangement/index.rst new file mode 100644 index 0000000..60767ef --- /dev/null +++ b/docs/reference/arrangement/index.rst @@ -0,0 +1,19 @@ +Arrangements +============ + +.. module:: pyflp.arrangement + +.. toctree:: + :maxdepth: 2 + :titlesonly: + :caption: Contents: + :glob: + + * + +.. autoclass:: Arrangements + :members: + +.. autoclass:: ArrangementsID + :members: + :member-order: bysource diff --git a/docs/reference/arrangement/playlist.rst b/docs/reference/arrangement/playlist.rst new file mode 100644 index 0000000..4ecebb8 --- /dev/null +++ b/docs/reference/arrangement/playlist.rst @@ -0,0 +1,15 @@ +\ :material-sharp:`playlist_play;1.2em;sd-pb-1` Playlist +======================================================== + +.. currentmodule:: pyflp.arrangement + +.. autoclass:: PLItemBase + :members: + +.. autoclass:: ChannelPLItem + :members: + :show-inheritance: PLItemBase + +.. autoclass:: PatternPLItem + :members: + :show-inheritance: PLItemBase diff --git a/docs/reference/arrangements.rst b/docs/reference/arrangement/track.rst similarity index 54% rename from docs/reference/arrangements.rst rename to docs/reference/arrangement/track.rst index 2714639..d5d928c 100644 --- a/docs/reference/arrangements.rst +++ b/docs/reference/arrangement/track.rst @@ -1,30 +1,7 @@ -Arrangements -============ - -.. module:: pyflp.arrangement -.. autoclass:: Arrangements - :members: - -Arrangement ------------ - -.. autoclass:: Arrangement - :members: - -Playlist --------- - -.. autoclass:: PLItemBase - :members: -.. autoclass:: ChannelPLItem - :members: - :show-inheritance: PLItemBase -.. autoclass:: PatternPLItem - :members: - :show-inheritance: PLItemBase - Track ------ +===== + +.. currentmodule:: pyflp.arrangement .. autoclass:: Track :members: @@ -68,21 +45,6 @@ Track .. image:: /img/arrangement/track/sync.png -Classes -------- - -.. autoclass:: TimeSignature - :members: - -Event IDs ---------- - -.. autoclass:: ArrangementsID - :members: - :member-order: bysource -.. autoclass:: ArrangementID - :members: - :member-order: bysource .. autoclass:: TrackID :members: :member-order: bysource diff --git a/docs/reference/channel/automation.rst b/docs/reference/channel/automation.rst new file mode 100644 index 0000000..57269cf --- /dev/null +++ b/docs/reference/channel/automation.rst @@ -0,0 +1,13 @@ +\ :fas:`bezier-curve` Automation +================================ + +.. currentmodule:: pyflp.channel + +.. autoclass:: Automation + :members: + +.. autoclass:: AutomationLFO + :members: + +.. autoclass:: AutomationPoint + :members: diff --git a/docs/reference/channel/channel.rst b/docs/reference/channel/channel.rst new file mode 100644 index 0000000..0df9e16 --- /dev/null +++ b/docs/reference/channel/channel.rst @@ -0,0 +1,17 @@ +Channel +======= + +.. currentmodule:: pyflp.channel + +.. autoclass:: Channel + :members: + +Enums +----- + +.. autoclass:: ChannelType + :members: + +.. autoclass:: ChannelID + :members: + :member-order: bysource diff --git a/docs/reference/channel/display-group.rst b/docs/reference/channel/display-group.rst new file mode 100644 index 0000000..3717dbe --- /dev/null +++ b/docs/reference/channel/display-group.rst @@ -0,0 +1,11 @@ +DisplayGroup +============ + +.. currentmodule:: pyflp.channel + +.. autoclass:: DisplayGroup + :members: + +.. autoclass:: DisplayGroupID + :members: + :member-order: bysource diff --git a/docs/reference/channel/index.rst b/docs/reference/channel/index.rst new file mode 100644 index 0000000..dcbb709 --- /dev/null +++ b/docs/reference/channel/index.rst @@ -0,0 +1,20 @@ +\ :material-sharp:`dns;1.2em;sd-pb-1` Channel Rack +================================================== + +.. toctree:: + :maxdepth: 2 + :titlesonly: + :caption: Contents: + :glob: + + * + +.. module:: pyflp.channel +.. autoclass:: ChannelRack + :members: + +.. autoclass:: RackID + :members: + :member-order: bysource + +.. autoexception:: ChannelNotFound diff --git a/docs/reference/channel/instrument.rst b/docs/reference/channel/instrument.rst new file mode 100644 index 0000000..31bb353 --- /dev/null +++ b/docs/reference/channel/instrument.rst @@ -0,0 +1,7 @@ +Instrument +========== + +.. currentmodule:: pyflp.channel + +.. autoclass:: Instrument + :members: diff --git a/docs/reference/channel/layer.rst b/docs/reference/channel/layer.rst new file mode 100644 index 0000000..21914f6 --- /dev/null +++ b/docs/reference/channel/layer.rst @@ -0,0 +1,7 @@ +\ :fas:`layer-group` Layer +========================== + +.. currentmodule:: pyflp.channel + +.. autoclass:: Layer + :members: diff --git a/docs/reference/channel/sampler.rst b/docs/reference/channel/sampler.rst new file mode 100644 index 0000000..ffd7a5d --- /dev/null +++ b/docs/reference/channel/sampler.rst @@ -0,0 +1,56 @@ +\ :material-sharp:`audio_file;1.2em;sd-pb-1` Sampler +==================================================== + +.. currentmodule:: pyflp.channel + +.. autoclass:: Sampler + :members: + +.. autoclass:: Content + :members: + +.. autoclass:: Envelope + :members: + +.. autoclass:: Filter + :members: + +.. autoclass:: FX + :members: + +.. autoclass:: Playback + :members: + +.. autoclass:: Reverb + :members: + +.. autoclass:: SamplerLFO + :members: + +.. autoclass:: TimeStretching + :members: + +Enums +----- + +.. autoclass:: DeclickMode + :members: + +.. autoclass:: LFOShape + :members: + +.. autoclass:: ReverbType + :members: + +.. grid:: + + .. grid-item:: + + .. autoclass:: StretchMode + :members: + + .. grid-item:: + :child-align: center + :columns: auto + + .. image:: /img/channel/stretch-mode.png diff --git a/docs/reference/channel/shared.rst b/docs/reference/channel/shared.rst new file mode 100644 index 0000000..030407f --- /dev/null +++ b/docs/reference/channel/shared.rst @@ -0,0 +1,33 @@ +Shared +====== + +.. currentmodule:: pyflp.channel + +These implement functionality used by :class:`Channel` or its subclasses. + +.. autoclass:: Arp + :members: + +.. autoclass:: Delay + :members: + +.. autoclass:: Keyboard + :members: + +.. autoclass:: LevelAdjusts + :members: + +.. autoclass:: Polyphony + :members: + +.. autoclass:: Time + :members: + +.. autoclass:: Tracking + :members: + +Enums +----- + +.. autoclass:: ArpDirection + :members: diff --git a/docs/reference/channels.rst b/docs/reference/channels.rst deleted file mode 100644 index 023fcfa..0000000 --- a/docs/reference/channels.rst +++ /dev/null @@ -1,117 +0,0 @@ -\ :material-regular:`dns;1.2em;sd-pb-1` Channel Rack -==================================================== - -.. module:: pyflp.channel -.. autoclass:: ChannelRack - :members: - -Channel Types -------------- - -.. autoclass:: Channel - :members: -.. autoclass:: Automation - :members: -.. autoclass:: Instrument - :members: -.. autoclass:: Layer - :members: -.. autoclass:: Sampler - :members: -.. autoclass:: DisplayGroup - :members: - -Classes -------- - -These implement functionality used by :class:`Channel` or its subclasses. - -.. autoclass:: Arp - :members: -.. autoclass:: AutomationLFO - :members: -.. autoclass:: AutomationPoint - :members: -.. autoclass:: Content - :members: -.. autoclass:: Delay - :members: -.. autoclass:: Envelope - :members: -.. autoclass:: Filter - :members: -.. autoclass:: FX - :members: -.. autoclass:: Keyboard - :members: -.. autoclass:: LevelAdjusts - :members: -.. autoclass:: SamplerLFO - :members: -.. autoclass:: Polyphony - :members: -.. autoclass:: Playback - :members: -.. autoclass:: Reverb - :members: -.. autoclass:: Time - :members: -.. autoclass:: TimeStretching - :members: -.. autoclass:: Tracking - :members: - -Enumerations ------------- - -.. autosummary:: - :nosignatures: - - ArpDirection - ChannelType - DeclickMode - LFOShape - ReverbType - StretchMode - -.. autoclass:: ArpDirection - :members: -.. autoclass:: ChannelType - :members: -.. autoclass:: DeclickMode - :members: -.. autoclass:: LFOShape - :members: -.. autoclass:: ReverbType - :members: - -.. grid:: - - .. grid-item:: - - .. autoclass:: StretchMode - :members: - - .. grid-item:: - :child-align: center - :columns: auto - - .. image:: /img/channel/stretch-mode.png - -Event IDs ---------- - -.. autoclass:: ChannelID - :members: - :member-order: bysource -.. autoclass:: DisplayGroupID - :members: - :member-order: bysource -.. autoclass:: RackID - :members: - :member-order: bysource - -Exceptions ----------- - -.. autoexception:: ChannelNotFound diff --git a/docs/reference/controllers.rst b/docs/reference/controllers.rst index 037ae8b..9cd66ea 100644 --- a/docs/reference/controllers.rst +++ b/docs/reference/controllers.rst @@ -5,8 +5,8 @@ .. autoclass:: RemoteController :members: -Event IDs ---------- +Enums +----- .. autoclass:: ControllerID :members: diff --git a/docs/reference/events.rst b/docs/reference/events.rst index 900497a..4eec746 100644 --- a/docs/reference/events.rst +++ b/docs/reference/events.rst @@ -1,5 +1,5 @@ -Events -====== +\ :fas:`ellipsis` Events +======================== This section is intended for those who want to delve into PyFLP's low-level API or understand how internally events are ordered. A good understanding diff --git a/docs/reference/mixer/index.rst b/docs/reference/mixer/index.rst new file mode 100644 index 0000000..170fd71 --- /dev/null +++ b/docs/reference/mixer/index.rst @@ -0,0 +1,22 @@ +\ :material-sharp:`settings_input_component;1.2em;sd-pb-1` Mixer +================================================================ + +.. module:: pyflp.mixer + +.. toctree:: + :maxdepth: 2 + :titlesonly: + :caption: Contents: + :glob: + + * + +.. autoclass:: Mixer + :members: + +Enums +----- + +.. autoclass:: MixerID + :members: + :member-order: bysource diff --git a/docs/reference/mixer.rst b/docs/reference/mixer/insert.rst similarity index 55% rename from docs/reference/mixer.rst rename to docs/reference/mixer/insert.rst index f65bd7f..b4063fb 100644 --- a/docs/reference/mixer.rst +++ b/docs/reference/mixer/insert.rst @@ -1,24 +1,19 @@ -Mixer -===== +\ :fas:`sliders` Insert +======================= -.. module:: pyflp.mixer -.. autoclass:: Mixer - :members: - -Classes -------- +.. currentmodule:: pyflp.mixer .. autoclass:: Insert - :members: -.. autoclass:: Slot :members: + .. autoclass:: InsertEQ :members: + .. autoclass:: InsertEQBand :members: -Enumerations ------------- +Enums +----- .. grid:: auto @@ -32,15 +27,6 @@ Enumerations .. image:: /img/mixer/insert/dock.png -Event IDs ---------- - -.. autoclass:: MixerID - :members: - :member-order: bysource .. autoclass:: InsertID :members: :member-order: bysource -.. autoclass:: SlotID - :members: - :member-order: bysource diff --git a/docs/reference/mixer/slot.rst b/docs/reference/mixer/slot.rst new file mode 100644 index 0000000..af61d8e --- /dev/null +++ b/docs/reference/mixer/slot.rst @@ -0,0 +1,14 @@ +\ :fas:`folder-tree` Slot +========================= + +.. currentmodule:: pyflp.mixer + +.. autoclass:: Slot + :members: + +Enums +----- + +.. autoclass:: SlotID + :members: + :member-order: bysource diff --git a/docs/reference/patterns.rst b/docs/reference/patterns.rst deleted file mode 100644 index 03a923a..0000000 --- a/docs/reference/patterns.rst +++ /dev/null @@ -1,26 +0,0 @@ -🎹 Patterns -============ - -.. module:: pyflp.pattern -.. autoclass:: Patterns - :members: - -Classes -------- - -.. autoclass:: Pattern - :members: -.. autoclass:: Controller - :members: -.. autoclass:: Note - :members: - -Event IDs ---------- - -.. autoclass:: PatternsID - :members: - :member-order: bysource -.. autoclass:: PatternID - :members: - :member-order: bysource diff --git a/docs/reference/patterns/index.rst b/docs/reference/patterns/index.rst new file mode 100644 index 0000000..ae5f7be --- /dev/null +++ b/docs/reference/patterns/index.rst @@ -0,0 +1,22 @@ +🎹 Patterns +============ + +.. module:: pyflp.pattern + +.. toctree:: + :maxdepth: 2 + :titlesonly: + :caption: Contents: + :glob: + + * + +.. autoclass:: Patterns + :members: + +Enums +----- + +.. autoclass:: PatternsID + :members: + :member-order: bysource diff --git a/docs/reference/patterns/pattern.rst b/docs/reference/patterns/pattern.rst new file mode 100644 index 0000000..a97c36f --- /dev/null +++ b/docs/reference/patterns/pattern.rst @@ -0,0 +1,20 @@ +Pattern +======= + +.. currentmodule:: pyflp.pattern + +.. autoclass:: Pattern + :members: + +.. autoclass:: Controller + :members: + +.. autoclass:: Note + :members: + +Enums +----- + +.. autoclass:: PatternID + :members: + :member-order: bysource diff --git a/docs/reference/plugins.rst b/docs/reference/plugins.rst deleted file mode 100644 index 7bc82bf..0000000 --- a/docs/reference/plugins.rst +++ /dev/null @@ -1,83 +0,0 @@ -\ :material-sharp:`extension;1.2em;sd-pb-1` Plugins -=================================================== - -.. module:: pyflp.plugin -.. autoclass:: _PluginBase - :members: -.. autoclass:: PluginIOInfo - :members: - -Generators ----------- - -.. autoclass:: BooBass - :members: - -Effects -------- - -.. autoclass:: FruityBalance - :members: -.. autoclass:: FruityBloodOverdrive - :members: -.. autoclass:: FruityCenter - :members: -.. autoclass:: FruityFastDist - :members: -.. autoclass:: FruityNotebook2 - :members: -.. autoclass:: FruitySend - :members: -.. autoclass:: FruitySoftClipper - :members: -.. autoclass:: FruityStereoEnhancer - :members: -.. autoclass:: Soundgoodizer - :members: - -VST ---- - -.. autoclass:: VSTPlugin - :members: - - .. tab-set:: - - .. tab-item:: Settings - - .. image:: /img/plugin/wrapper/settings.png - - .. autoclass:: pyflp.plugin::VSTPlugin._AutomationOptions - :members: - .. autoclass:: pyflp.plugin::VSTPlugin._MIDIOptions - :members: - .. autoclass:: pyflp.plugin::VSTPlugin._UIOptions - :members: - - .. tab-item:: Processing - - .. image:: /img/plugin/wrapper/processing.png - - .. autoclass:: pyflp.plugin::VSTPlugin._ProcessingOptions - :members: - - .. tab-item:: Troubleshooting - - .. image:: /img/plugin/wrapper/troubleshooting.png - - .. autoclass:: pyflp.plugin::VSTPlugin._CompatibilityOptions - :members: - - -Enums ------ - -.. autoclass:: WrapperPage - :members: - -Event IDs ---------- - -.. autoclass:: PluginID - :members: - :member-order: bysource diff --git a/docs/reference/plugins/effects.rst b/docs/reference/plugins/effects.rst new file mode 100644 index 0000000..717de6e --- /dev/null +++ b/docs/reference/plugins/effects.rst @@ -0,0 +1,31 @@ +Effects +======= + +.. currentmodule:: pyflp.plugin + +.. autoclass:: FruityBalance + :members: + +.. autoclass:: FruityBloodOverdrive + :members: + +.. autoclass:: FruityCenter + :members: + +.. autoclass:: FruityFastDist + :members: + +.. autoclass:: FruityNotebook2 + :members: + +.. autoclass:: FruitySend + :members: + +.. autoclass:: FruitySoftClipper + :members: + +.. autoclass:: FruityStereoEnhancer + :members: + +.. autoclass:: Soundgoodizer + :members: diff --git a/docs/reference/plugins/generators.rst b/docs/reference/plugins/generators.rst new file mode 100644 index 0000000..792bc4f --- /dev/null +++ b/docs/reference/plugins/generators.rst @@ -0,0 +1,7 @@ +Generators +========== + +.. currentmodule:: pyflp.plugin + +.. autoclass:: BooBass + :members: diff --git a/docs/reference/plugins/index.rst b/docs/reference/plugins/index.rst new file mode 100644 index 0000000..94ea3c8 --- /dev/null +++ b/docs/reference/plugins/index.rst @@ -0,0 +1,28 @@ +\ :material-sharp:`extension;1.2em;sd-pb-1` Plugins +=================================================== + +.. module:: pyflp.plugin + +.. toctree:: + :maxdepth: 2 + :titlesonly: + :caption: Contents: + :glob: + + * + +.. autoclass:: _PluginBase + :members: + +.. autoclass:: PluginIOInfo + :members: + +Enums +----- + +.. autoclass:: WrapperPage + :members: + +.. autoclass:: PluginID + :members: + :member-order: bysource diff --git a/docs/reference/plugins/vst.rst b/docs/reference/plugins/vst.rst new file mode 100644 index 0000000..1d7ba5d --- /dev/null +++ b/docs/reference/plugins/vst.rst @@ -0,0 +1,34 @@ +VST +=== + +.. currentmodule:: pyflp.plugin + +.. autoclass:: VSTPlugin + :members: + + .. tab-set:: + + .. tab-item:: Settings + + .. image:: /img/plugin/wrapper/settings.png + + .. autoclass:: pyflp.plugin::VSTPlugin._AutomationOptions + :members: + .. autoclass:: pyflp.plugin::VSTPlugin._MIDIOptions + :members: + .. autoclass:: pyflp.plugin::VSTPlugin._UIOptions + :members: + + .. tab-item:: Processing + + .. image:: /img/plugin/wrapper/processing.png + + .. autoclass:: pyflp.plugin::VSTPlugin._ProcessingOptions + :members: + + .. tab-item:: Troubleshooting + + .. image:: /img/plugin/wrapper/troubleshooting.png + + .. autoclass:: pyflp.plugin::VSTPlugin._CompatibilityOptions + :members: diff --git a/docs/reference/project.rst b/docs/reference/project.rst index dc8b095..fe7836c 100644 --- a/docs/reference/project.rst +++ b/docs/reference/project.rst @@ -46,19 +46,17 @@ .. image:: /img/project/settings.png :align: right -Enumerations ------------- +Enums +----- .. autoclass:: FileFormat :members: :member-order: bysource + .. autoclass:: PanLaw :members: :member-order: bysource -Event IDs ---------- - .. autoclass:: ProjectID :members: :member-order: bysource diff --git a/docs/reference/timemarkers.rst b/docs/reference/timemarkers.rst index dd8adab..6e1b8e9 100644 --- a/docs/reference/timemarkers.rst +++ b/docs/reference/timemarkers.rst @@ -1,10 +1,14 @@ -Timemarkers -=========== +\ :fas:`timeline` Timemarkers +============================= .. module:: pyflp.timemarker + .. autoclass:: TimeMarker :members: +Enums +----- + .. grid:: .. grid-item:: @@ -18,9 +22,6 @@ Timemarkers .. image:: /img/arrangement/timemarker/action.png -Event IDs ---------- - .. autoclass:: TimeMarkerID :members: :member-order: bysource diff --git a/docs/requirements.txt b/docs/requirements.txt index fdeb673..d4b1f0e 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,8 +1,8 @@ furo m2r2==0.3.2 # https://github.com/CrossNox/m2r2/issues/55 -sphinx +sphinx==5.3.0 sphinx-copybutton -sphinx-design +sphinx-design==0.3.0 sphinx-hoverxref sphinx-toolbox>=3.4.0 sphinxcontrib-spelling diff --git a/pyflp/_descriptors.py b/pyflp/_descriptors.py index c024921..c322188 100644 --- a/pyflp/_descriptors.py +++ b/pyflp/_descriptors.py @@ -29,6 +29,11 @@ else: from typing_extensions import Protocol, final, runtime_checkable +if sys.version_info >= (3, 10): + from typing import TypeAlias +else: + from typing_extensions import TypeAlias + import construct as c import construct_typed as ct @@ -238,7 +243,7 @@ def _set(self, ev_or_ins: ItemModel[Any], value: T) -> None: ev_or_ins[self._prop] = value -SimpleAdapter = ct.Adapter[T, T, U, U] +SimpleAdapter: TypeAlias = ct.Adapter[T, T, U, U] """Duplicates type parameters for `construct.Adapter`.""" diff --git a/pyflp/plugin.py b/pyflp/plugin.py index f353d7f..ef719b4 100644 --- a/pyflp/plugin.py +++ b/pyflp/plugin.py @@ -651,7 +651,7 @@ class _ProcessingOptions(EventModel): """ class _UIOptions(EventModel): - """See :attr:`VSTPlugin.ui`.. + """See :attr:`VSTPlugin.ui`. ![](https://bit.ly/3Nb3dtP) """ @@ -772,7 +772,7 @@ class FruityBalance(_PluginBase[FruityBalanceEvent], _IPlugin, ModelReprMixin): class FruityBloodOverdrive( _PluginBase[FruityBloodOverdriveEvent], _IPlugin, ModelReprMixin ): - """![]()""" # noqa + """![](https://bit.ly/3LnS1LE)""" INTERNAL_NAME = "Fruity Blood Overdrive" diff --git a/requirements.txt b/requirements.txt index f1a009f..02db12a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ colour==0.1.5 -construct-typing==0.5.3 +construct-typing==0.5.5 f-enum==0.2.0;python_version<="3.10" sortedcontainers==2.4.0 typing_extensions==4.5.0