New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v0.4.4 - Sound and Timing #147
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Conflicts: # autopilot/transform/geometry.py
[bugfix] make sure welcome_msg in manifest
[bugfix] initialize _fps to None in camera metaclass [bugfix] raise ImportErrors when picamera, ffmpeg can't be found instead of logging exceptions [docs] add name and fps to PiCamera example in quickstart
# Conflicts: # autopilot/stim/sound/jackclient.py
# Conflicts: # autopilot/stim/sound/jackclient.py # autopilot/stim/sound/sounds.py # autopilot/tasks/task.py
…of autodetecting architectures which has bad downstream consequences
…of autodetecting architectures which has bad downstream consequences
…of autodetecting architectures which has bad downstream consequences
… to use filter before it is created in __init__, but it cant be created until the superclass __init__ methods finish.
[docs] documenting functionality of jack client a bit more within the class documentation
…using with_suffix
…enerate tables of sounds without needing a backend, and more... [bugfix] logging names were adding in the sense of string contatenation rather than addition [refactor] base sound classes were split into their own module, and a bit of tidying was done to better handle their dependency checks and etc. Instead of BASE_CLASS being defined within the sounds module itself, you now use get_sound_class() which should read from prefs and do the thing properly [refactor] a dummy Sound class was made that will eventually be the parent class for all sounds (and then backend specific stuff will be added as a mixin. Currently the Sound class is not in the inheritance tree of the jack backend, but it will [lateral enhancement] added some methods in sound generation to accomodate the dummy class [logging] a few logging flags in the jack server [enhancement] Requires module! Module for specifying object requirements. just a stub for now, but will be where we go with v0.5.0 [enhancement] types module for declaring common and basic types. will eventually be used for handling units. remains to be seen how we will make data carrying structures. [partial bugfix] Added workarounds for prefs when multiprocessing fails, to use a dict instead of failing. Still needs some polish because of async exceptions, but better than before which would prevent import
[skip travis]
# Conflicts: # autopilot/stim/sound/jackclient.py # autopilot/stim/sound/sounds.py
- check continuous queue every time, use it if updated - abstractmethod for init_sound - correct type hints on get_sound_class - use write_to_outports if got no continuous sound in process method
remove __del__ calls
…ly expanding dict
- adding exceptions module with default pref warning to make it easier to filter - clean prefs fixture
it was the first ping that needed confirmation!
Jackd triggers Improvements to sound timing and stability!!! The major change here is in the sound modules - Changed the way that continuous sounds work. Rather than cycling through an array, which was easy to drop, now pass a sound object that can generate its own samples on the fly using the `hydration` module. - More accurate timing of sound ending callbacks. Before, the event would be called immediately on buffering the sounds into the jack ports, but that was systematically too early. Instead, use jack timing methods to account for delay from blocksize and n_periods to wait_until a certain delay to `set()` the event. See `_wait_for_end` # New - `hydration` module for creating and storing autopilot objects between processes and computers! - `@Introspect` made and added to sound classes. Will be moved to root class. Allows storing the parameters given on instantiation. - minor - added exceptions module # Improvements - Made `ALSA_NPERIODS` its own pref - More debugging flags! - Changed `repeat` to false by default in Nodes because it is largely unnecessary in normal use and causes a lot of overhead! - Made a method to debug timing within the sound server, pass `debug_timing=True` to `jackclient` - `Noise` now can generate noise continuously as a model for refactoring sound classes to do that as the main way of doing so in the future. - Incremental improvements to `requires` classes. # Bugfixes - Fixed several lists that would grow indefinitely and cause hard to diagnose memory issues, particularly with continuously operating things like the sound server or streaming data. Using a deque - `__del__` methods cause more problems than they solve, need to start moving towards registering signal handles explicitly rather than trying to clean up as a last resort when removing from memory. Removed from hardware and networking classes or at least wrapped in try blocks for now. - use `str(Path)` rather than passing a `Path` instance to `pkgutil.iter_modules` - use `importlib-metadata` for python3.7 # Deprecations - Removed `jack_apt` because it only causes problems. `jackd_source` works every time and doesn't take that long. -
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Several parts to this update!
hydration
module.set()
the event. See_wait_for_end
Other stuff:
New
hydration
module for creating and storing autopilot objects between processes and computers!@Introspect
made and added to sound classes. Will be moved to root class. Allows storing the parameters given on instantiation.requires
module for more explicit declarations of by-object dependencies to resolve lots of the little fragile checks throughout the package, as well as make it easier for plugins :)Linefit_Prasad
and ordering points in a line from, eg. edge detection inOrder_Points
Improvements
get_sound_class
instead of declaring within the module.extras_require
so now can install withpip install auto-pi-lot -E pilot
rather than autodetecting based on architecture. Further improvements (moving to poetry) will be in v0.5.0Bugfixes
Docs