Commit Graph

1400 Commits (93a9848a4ca5d9b6c5fd3e8b0fb54aa25a13db92)

Author SHA1 Message Date
Åke Forslund 93a9848a4c Move speech information methods to audio 2017-07-31 13:37:17 +02:00
Åke Forslund a2e0f31dd3 Add playback-control skill to defaults 2017-07-31 13:37:17 +02:00
Åke Forslund 769b4f900e Move text to speech to audio service 2017-07-31 13:37:17 +02:00
Åke Forslund 824503ae4d Volume is now changed in relation to current volume for vlc 2017-07-31 13:37:17 +02:00
Åke Forslund 8d4aabe6ca Correct resume handler 2017-07-31 13:37:17 +02:00
Åke Forslund e1eb61e9d8 Update default setting to new standard 2017-07-31 13:37:17 +02:00
Åke Forslund d012702bde Update control logic for mpg123 process
Removes the cases where the process keeps playing in the background
when a new track is started.
2017-07-31 13:37:17 +02:00
Åke Forslund 839803c958 Rename messages.
As requested by Augusto Monteiro
2017-07-31 13:37:17 +02:00
Åke Forslund 86a557e1ac Docstrings! 2017-07-31 13:37:17 +02:00
Åke Forslund e9a8eb01ca Handle file:// uri's in mpg123 backend 2017-07-31 13:37:17 +02:00
Åke Forslund c81ad57ebf Populate AudioService class with more methods
Pause, resume, next and previous added to the interface.
The play method was updated to add 'file://' to uri's lacking uri type.
2017-07-31 13:37:17 +02:00
Åke Forslund 5c874677cc Add check for valid type of tracks 2017-07-31 13:37:17 +02:00
Åke Forslund 581aafc3b6 Add pychromecast and python-vlc to requirements.txt 2017-07-31 13:37:17 +02:00
Åke Forslund 0749b3c088 Only display message bus messages related to audio service 2017-07-31 13:37:17 +02:00
Åke Forslund 44a7c5ec0c Fix playback_control skill 2017-07-31 13:37:17 +02:00
Åke Forslund 2270448fff Fix pep8 errors 2017-07-31 13:37:17 +02:00
Åke Forslund bddccad7b9 Make service loading more robust 2017-07-31 13:37:17 +02:00
Åke Forslund aab65d8178 Add docstrings. 2017-07-31 13:37:17 +02:00
Åke Forslund 177187bee6 Rename manual_load to load_service. 2017-07-31 13:37:17 +02:00
Åke Forslund bfc2d3eced Starup audio process together with mycroft 2017-07-31 13:37:17 +02:00
Åke Forslund bccc9f78d8 Handle stop 2017-07-31 13:37:17 +02:00
Åke Forslund a39033fa98 Re-add resume functionality 2017-07-31 13:37:17 +02:00
Åke Forslund 3001dd5a83 Move backend base class to audio/services 2017-07-31 13:37:17 +02:00
Åke Forslund 7dc746370a Load all audio services in the service directory 2017-07-31 13:37:17 +02:00
Åke Forslund c7ad6b11bb Move audio service to separate process. 2017-07-31 13:37:17 +02:00
Åke Forslund ac5bd17041 Add chromecast service
Chromecast can be manually added with a backend entry with type set to "chromecast" or the service can autodetect all chromecast and register them with their names by setting the Audio configuration parameter autodetect-chromecast set to true.

Currently this implementation is very basic and is using the default media controller. This limits the usable uri's to http(s), adding support for local files and hopefully more services will be added later.
2017-07-31 13:37:17 +02:00
Åke Forslund 67502372bf fix pep8 issues 2017-07-31 13:37:17 +02:00
Åke Forslund 51b98a11b7 Fix trailing comma in default config 2017-07-31 13:37:17 +02:00
Åke Forslund e55cd018f2 Activate default-backend option 2017-07-31 13:37:17 +02:00
Åke Forslund b098f2ad30 Make sure mopidy startup doesn't block 2017-07-31 13:37:17 +02:00
Åke Forslund ee5141ed6f Make all audio backend build on the base class
Abstract base class is now a bit more lenient
2017-07-31 13:37:16 +02:00
Åke Forslund 34dd679d3e Fix mopidy configuration 2017-07-31 13:37:16 +02:00
Åke Forslund 6d36cf4cd1 Add default configuration 2017-07-31 13:37:16 +02:00
Åke Forslund 8686cade3b Update service alias to use config name 2017-07-31 13:37:16 +02:00
Åke Forslund 06a9eb7ee5 Initial update to follow changes in mycroft 2017-07-31 13:37:16 +02:00
Åke Forslund e6723b2a56 Add backend selection
The user can now specify which backend to use to play media. default the keywords are the name of the backend (vlc, mpg123, mopidy) but can be set with the config.

Example:
audio.mopidy.name = "livingroom"

A possible user interaction might be

- "Hey mycroft, play the news in the livingroom"

The detection is very basic and not very elegant but works as a proof of concept.
2017-07-31 13:37:16 +02:00
Åke Forslund 8078bdd4c2 Correct return value from track_info 2017-07-31 13:37:16 +02:00
Åke Forslund 37b8c17121 Add name property to VlcService 2017-07-31 13:37:16 +02:00
Åke Forslund 4af620c968 Add configuration handling for mpg123 backend 2017-07-31 13:37:16 +02:00
Åke Forslund 7ea387988d Add vocab dir to project 2017-07-31 13:37:16 +02:00
Åke Forslund a28a435ddf Add configuration options 2017-07-31 13:37:16 +02:00
Åke Forslund 26e63cdff3 Add abstract base class for audio backends 2017-07-31 13:37:16 +02:00
Åke Forslund 717c6fa49b Add track_info to audio service connection 2017-07-31 13:37:16 +02:00
Åke Forslund f596992a88 Remove unused vocabulary. 2017-07-31 13:37:16 +02:00
Åke Forslund 89d4cc5f0a Add basic configuration to activate services 2017-07-31 13:37:16 +02:00
Åke Forslund 89adf6e8ac Initial commit of audio service
Three backends have been added, mopidy, vlc and mpg123. Depending on uri type an apporpriate service is selected when media playback is requested. (for example mopidy service can handle spotify://... and local://...)

A playback Control skill can pause, resume, stop change track, etc any started media. So for example if the NPR news skill used this after starting playing the news the user can say "Hey Mycroft, pause" and the playback will pause. The playback control also handles stuff like lowering the volume of the playback if mycroft is asked another question.

Currently the different backend runs under the playbeck control, this was made most for convenience and the services should be moved in the future.

Usage:
The user needs to import the audioservice interface
`from mycroft.skills.audioservice import AudioService`

and initialize an instance in the skill `initialize` method

`self.audio_service = AudioService(self.emitter)`

Then playing an uri is as simple as

`self.audio_service.play(uri)`

TODO:
* Configuration (Alias for the different backends, service specific config, active services, etc.)
* Manual selection of backend (This is prepared in the audioservice interface biut not implemented)
* More feature complete audio service interface (playback control, get trackname etc)
* Separate audio services from the playback control
* Probably lots more
2017-07-31 13:37:16 +02:00
Åke edbd8edeb2 Merge pull request #928 from forslund/bugfix/issue-926
Add libjpeg-turbo package to build_host scripts
2017-07-25 20:23:50 +02:00
Arron Atchison 2a595931ba bump enclosure version to 1.0.0 2017-07-24 17:16:32 -05:00
Åke Forslund 44f4428e27 Add libjpeg-turbo package to build_host scripts
==== Fixed Issues ====
#926
====  Tech Notes ====
All build_host_setup_* scripts updated with versions of the
libjpeg62-turbo package

====  Documentation Notes ====
NONE

==== Localization Notes ====
NONE

==== Environment Notes ====
libjpeg-turbo62-dev will be needed as a requirement for the mycroft-core
package.

==== Protocol Notes ====
NONE
2017-07-24 08:32:47 +02:00
Steve Penrod e8e0853825 Merge pull request #838 from MycroftAI/feature/display_state_manager
Feature/display state manager
2017-07-21 19:58:07 -05:00