Skip to content

Latest commit

 

History

History
634 lines (525 loc) · 47.2 KB

CHANGELOG.md

File metadata and controls

634 lines (525 loc) · 47.2 KB

CHANGELOG

All notable changes to this project will be documented in this file.

Unreleased

Added

  • reapy.map for efficient mapping of reapy functions to large iterables of arguments.

Fixed

  • Native ReaScript functions RPR_MIDI_GetAllEvts, RPR_MIDI_GetTextSysexEvt, RPR_MIDI_SetAllEvts, RPR_MIDI_SetCC, RPR_MIDI_SetEvt, RPR_MIDI_SetNote and RPR_MIDI_SetTextSysexEvt used to raise errors because they tried to encode MIDI messages as UTF-8. Their counterparts in reapy.reascript_api are patched and work as described in the official ReaScript documentation.

0.10.0 - 2020-12-29

Added

0.9.0 - 2020-11-10

Added

  • set_info_value methods for Item and Take.

Fixed

  • reapy.reconnect() not working after REAPER crashes on macOS (see issue #96).
  • Typo in region.end getter (see issue #101).

0.8.0 - 2020-08-28

Added

  • Project.record() method to start recording.
  • reapy.configure_reaper() to simplify installation process. See the installation guide in the docs for details.

0.7.2 - 2020-05-26

Fixed

  • Crash on import introduced in 0.7.1.

0.7.1 - 2020-05-26

Fixed

  • SWS functions were not available from outside REAPER on portable installs (see detailed issue on the REAPER forum).

0.7.0 - 2020-05-09

Added

  • add_project_tab(make_current_project=True) -> Project:
  • Project extended with:
    • close() -> None
    • open(in_new_tab=False)
  • Track extended with:
    • set_info_value(param_name: str, param_value: float) -> None
    • index -> int property
  • Parameters in_new_tab: bool and make_current_project: bool in open_project.
  • has_valid_id property on Project, Track, Item, Take, Envelope, and Source. Example use case is checking whether an object has been deleted.
  • Take.project property (parent project of a take).
  • errors.InvalidObjectError that may be raised when trying to use an object that has invalid ID.

Fixed

  • Several Track properties (e.g. Track.name or Track.items) only worked if their parent project was currently selected (see issues #62 and #80). Now they can be retrieved regardless of the current project.
  • ReaScript function RPR_ValidatePtr2 is bugged and always returns False. However, reapy.reascript_api.ValidatePtr2 now works as intended.
  • Bug with take envelopes: Take.envelopes[x] always raised a KeyError even for valid x.
  • Envelope.parent used to return an EnvelopeList instead of the actual Track or Take parent.

Changed

  • Getting FX by name (e.g. track.fxs[name]) used to work with unprefixed FX name (e.g. 'ReaComp (Cockos)' instead of 'VST: ReaComp (Cockos)'). Now it is the opposite, which is consistent with the prefixed value returned by FX.name.

0.6.0 - 2020-04-18

Added

  • New API inSend:
    • read-only property Send.dest_track -> Track
    • properties Send.midi_source, Send.midi_dest
  • Track.received read-only property
  • Support for Project external state:
    • Project.set_ext_state(section: str, key: str, value: Union[Any, str], pickled: bool) -> int size
    • Project.get_ext_state(section: str, key: str, pickled: bool) -> Union[Any, str
  • First argument id of Project can now be a project name (with or without extension) or an integer (the GUI index of the project).
  • Project extended with methods:
    • get_info_string(param_name: str) -> str
    • get_info_value(param_name: str) -> float
    • set_info_string(param_name: str, param_string: str)
    • set_info_value(param_name: str, param_value: float)
  • REAPER control over the network. reapy can be installed on a machine even if it does not have REAPER installed, and then control other instances by using reapy.connect.
  • Several ReaScript API bugs of reaper_python.py are fixed in reapy.reascript_api. Currently replaced:
    • MIDI_GetHash
    • MIDI_GetTrackHash
    • MIDI_InsertEvt
    • MIDI_InsertTextSysexEvt
    • MIDI_SetEvt
  • MIDIEvent and MIDIEventList classes now not only abstract, but can be used directly. MIDIEvent extended with:
    • delete() for deleting from the take. Works in every Event class.
    • set(self, message=None, position=None, selected=None, muted=None, unit="seconds", sort=True), currently works only in generic event.
  • Take extended with:
    • add_event(self, message: ty.Iterable[int], position, unit: str = "seconds") -> None.
    • add_sysex(self, message: ty.Iterable[int], position: float, unit: str = "seconds", evt_type: int = -1) -> None.
    • midi_events property (MIDIEventList).
    • midi_hash(self, notes_only: bool = False) -> str.
    • n_midi_events property.
  • Track extended with midi_hash(self, notes_only: bool = False) -> str:.

Deprecated

  • index argument in reapy.Project is deprecated in favor of id. reapy.Project(index=3) becomes reapy.Project(3).

Fixed

  • Typo in reapy.has_ext_state (issue #46).
  • Deferred script error in REAPER when subclassing reapy classes (issue #66).
  • Project.selected_items returning invalid items (issue #72).
  • sort boolean argument in Take.add_note behaving oppositely to expected.

0.5.0 - 2019-11-23

Added

Project.play_state was buggy and has been removed.

Fixed

  • Fix error when terminating ReaScripts (issue #35)

Removed

  • Project.play_state property. It was buggy and has been replaced by the four play states properties mentioned above.

0.4.3 - 2019-10-27

Added

  • Stubs to use reapy with mypy.

Fixed

  • Endless loop when using Project.tracks (issue #40).

Improved

  • Iterating over Project.tracks takes only one distant API call, instead of one per track.

0.4.2 - 2019-10-06

Fixed

  • Error when importing reapy from outside REAPER while the distant API is disabled.
  • Error when using Project.make_current_project() (issue #35).

0.4.1 - 2019-09-22

Fixed

  • Bug when enabling distant API.

0.4.0 - 2019-09-18

Added

  • Project.make_current_project can be used as a context manager to temporarily set a project as current project.
  • Decorator inside_reaper, that can be used with functions and properties.
  • Methods on Take:
  • Context managers + decorators prevent_ui_refresh, reaprint, undo_block
  • inside_reaper can now be used as a function decorator, too
  • Methods and properties on Track:
  • Access to tracks by name (example: project.tracks["PIANO"])
  • Access to tracks and FXs with slices (example: project.tracks[3:6])
  • Ability to delete tracks and FXs with the del keyword (example: del project.tracks[2])
  • Track selection helpers at the project level:
    • Methods [Project.select_all_tracks], [Project.unselect_all_tracks]
    • Project.selected_tracks property can now be manually set to any iterable of tracks.
  • Mute and solo helpers on Track:
    • Methods [Track.solo], [Track.mute], [Track.unsolo], [Track.unmute],
    • Properties [Track.is_solo] and [Track.is_muted]. Manually setting them is equivalent to calling the methods above.

Improved

  • External code can work about 10% faster due to refactoring tools.json encoding and decoding.
  • Project.add_track supports name keyword argument and negative indices.

Fixed

  • Bug when using with reapy.inside_reaper(): from inside REAPER
  • No more lost data when transferring too long lists over the local network (issue 12)
  • Fix Project.time_selection setter (wouldn't set initial non-zero start values properly)
  • Fix Take.add_note when adding notes with unit='beats'
  • Fix BrokenPipeError when an external app disconnects silently
  • Fix setting color in Project.add_marker and Project.add_region methods

Removed

  • reapy.Program is replaced by reapy.inside_reaper.

0.3.0 - 2019-05-08

Added

  • SWS support (if the SWS extension is installed, then its functions are available in reapy.reascript_api from inside and outside REAPER)

Fixed

  • Bug when running from reapy.reascript_api import * from inside REAPER when extensions such as ReaPack are installed.

0.2.1 - 2019-04-30

Fixed

0.2.0 - 2019-03-23

Added

API Helper Functions

Audio Management

Audio/MIDI Device Management

Envelope Management

Extended states

FX Management

Item Management

MIDI Management

Other

Project Management

Track Management

Transport Management

User Interface

Removed

Envelope Management

Fixed

  • Bug when enabling reapy for MacOS (issue here)
  • Bug when enabling reapy when no Control/OSC/web has ever been enabled in REAPER (issue here)

0.1.0 - 2019-02-28

Added