default_value=False,
)
+CONF_ENTRY_FLOW_MODE_ENFORCED = ConfigEntry(
+ key=CONF_FLOW_MODE,
+ type=ConfigEntryType.BOOLEAN,
+ label=CONF_FLOW_MODE,
+ default_value=True,
+ value=True,
+)
CONF_ENTRY_AUTO_PLAY = ConfigEntry(
key=CONF_AUTO_PLAY,
category="audio",
)
+CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED = ConfigEntry(
+ key=CONF_CROSSFADE,
+ type=ConfigEntryType.BOOLEAN,
+ label="Enable crossfade",
+ default_value=False,
+ description="Enable a crossfade transition between (queue) tracks.\n\n "
+ "Requires flow-mode to be enabled",
+ category="audio",
+ depends_on=CONF_FLOW_MODE,
+)
+
CONF_ENTRY_CROSSFADE_DURATION = ConfigEntry(
key=CONF_CROSSFADE_DURATION,
type=ConfigEntryType.INTEGER,
CONF_ENTRY_EQ_BASS,
CONF_ENTRY_EQ_MID,
CONF_ENTRY_EQ_TREBLE,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
CONF_ENTRY_OUTPUT_CHANNELS,
CONF_ENTRY_SYNC_ADJUST,
ConfigEntry,
PLAYER_CONFIG_ENTRIES = (
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
CONF_ENTRY_CROSSFADE,
CONF_ENTRY_CROSSFADE_DURATION,
CONF_ENTRY_EQ_BASS,
from music_assistant.common.models.config_entries import (
CONF_ENTRY_CROSSFADE_DURATION,
- CONF_ENTRY_FLOW_MODE,
+ CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED,
ConfigEntry,
ConfigValueType,
)
-from music_assistant.common.models.enums import (
- ConfigEntryType,
- MediaType,
- PlayerFeature,
- PlayerState,
- PlayerType,
-)
+from music_assistant.common.models.enums import MediaType, PlayerFeature, PlayerState, PlayerType
from music_assistant.common.models.errors import PlayerUnavailableError
from music_assistant.common.models.player import DeviceInfo, Player, PlayerMedia
-from music_assistant.constants import (
- CONF_CROSSFADE,
- CONF_FLOW_MODE,
- CONF_PLAYERS,
- MASS_LOGO_ONLINE,
- VERBOSE_LOG_LEVEL,
-)
+from music_assistant.constants import CONF_PLAYERS, MASS_LOGO_ONLINE, VERBOSE_LOG_LEVEL
from music_assistant.server.models.player_provider import PlayerProvider
from .helpers import CastStatusListener, ChromecastInfo
PLAYER_CONFIG_ENTRIES = (
- ConfigEntry(
- key=CONF_CROSSFADE,
- type=ConfigEntryType.BOOLEAN,
- label="Enable crossfade",
- default_value=False,
- description="Enable a crossfade transition between (queue) tracks. \n\n"
- "Note that Cast does not natively support crossfading so you need to enable "
- "the 'flow mode' workaround to use crossfading with Cast players.",
- category="audio",
- depends_on=CONF_FLOW_MODE,
- ),
- CONF_ENTRY_FLOW_MODE,
+ CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED,
CONF_ENTRY_CROSSFADE_DURATION,
)
from music_assistant.common.models.config_entries import (
CONF_ENTRY_CROSSFADE_DURATION,
+ CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED,
CONF_ENTRY_ENFORCE_MP3,
- CONF_ENTRY_FLOW_MODE,
ConfigEntry,
ConfigValueType,
)
)
from music_assistant.common.models.errors import PlayerUnavailableError
from music_assistant.common.models.player import DeviceInfo, Player, PlayerMedia
-from music_assistant.constants import (
- CONF_CROSSFADE,
- CONF_ENFORCE_MP3,
- CONF_FLOW_MODE,
- CONF_PLAYERS,
- VERBOSE_LOG_LEVEL,
-)
+from music_assistant.constants import CONF_ENFORCE_MP3, CONF_PLAYERS, VERBOSE_LOG_LEVEL
from music_assistant.server.helpers.didl_lite import create_didl_metadata
from music_assistant.server.models.player_provider import PlayerProvider
default_value=False,
description="If the player supports enqueuing the next item for fluid/gapless playback. "
"\n\nUnfortunately this feature is missing or broken on many DLNA players. \n"
- "Enable it with care. If music stops after one song, disable this setting.",
- ),
- ConfigEntry(
- key=CONF_CROSSFADE,
- type=ConfigEntryType.BOOLEAN,
- label="Enable crossfade",
- default_value=False,
- description="Enable a crossfade transition between (queue) tracks. \n\n"
- "Note that DLNA does not natively support crossfading so you need to enable "
- "the 'flow mode' workaround to use crossfading with DLNA players.",
- category="audio",
- depends_on=CONF_FLOW_MODE,
+ "Enable it with care. If music stops after one song, "
+ "disable this setting (and use flow-mode instead).",
),
- CONF_ENTRY_FLOW_MODE,
+ CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED,
CONF_ENTRY_CROSSFADE_DURATION,
CONF_ENTRY_ENFORCE_MP3,
)
from music_assistant.common.models.config_entries import (
CONF_ENTRY_CROSSFADE,
CONF_ENTRY_CROSSFADE_DURATION,
+ CONF_ENTRY_ENFORCE_MP3,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
ConfigEntry,
ConfigValueType,
)
base_entries = await super().get_player_config_entries(player_id)
return (
*base_entries,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
CONF_ENTRY_CROSSFADE,
CONF_ENTRY_CROSSFADE_DURATION,
- ConfigEntry(
- key=CONF_ENFORCE_MP3,
- type=ConfigEntryType.BOOLEAN,
- label="Enforce (lossy) mp3 stream",
- default_value=False,
- description="By default, Music Assistant sends lossless, high quality audio "
- "to all players. Some devices can not deal with that and require "
- "the stream to be packed into a lossy mp3 codec. Only enable when needed.",
- category="advanced",
- ),
+ CONF_ENTRY_ENFORCE_MP3,
)
async def cmd_volume_set(self, player_id: str, volume_level: int) -> None:
from music_assistant.common.helpers.datetime import from_iso_string
from music_assistant.common.models.config_entries import (
CONF_ENTRY_CROSSFADE_DURATION,
- CONF_ENTRY_FLOW_MODE,
+ CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED,
+ CONF_ENTRY_ENFORCE_MP3,
ConfigEntry,
ConfigValueOption,
ConfigValueType,
)
from music_assistant.common.models.errors import SetupFailedError
from music_assistant.common.models.player import DeviceInfo, Player, PlayerMedia
-from music_assistant.constants import CONF_CROSSFADE, CONF_FLOW_MODE
from music_assistant.server.models.player_provider import PlayerProvider
from music_assistant.server.providers.hass import DOMAIN as HASS_DOMAIN
CONF_ENFORCE_MP3 = "enforce_mp3"
PLAYER_CONFIG_ENTRIES = (
- ConfigEntry(
- key=CONF_CROSSFADE,
- type=ConfigEntryType.BOOLEAN,
- label="Enable crossfade",
- default_value=False,
- description="Enable a crossfade transition between (queue) tracks. \n\n"
- "Note that you need to enable the 'flow mode' workaround to use "
- "crossfading with Home Assistant players.",
- category="audio",
- depends_on=CONF_FLOW_MODE,
- ),
- CONF_ENTRY_FLOW_MODE,
+ CONF_ENTRY_CROSSFADE_FLOW_MODE_REQUIRED,
CONF_ENTRY_CROSSFADE_DURATION,
- ConfigEntry(
- key=CONF_ENFORCE_MP3,
- type=ConfigEntryType.BOOLEAN,
- label="Enforce (lossy) mp3 stream",
- default_value=False,
- description="By default, Music Assistant sends lossless, high quality audio "
- "to all players. Some players can not deal with that and require the stream to be packed "
- "into a lossy mp3 codec. \n\n "
- "Only enable when needed. Saves some bandwidth at the cost of audio quality.",
- category="audio",
- ),
+ CONF_ENTRY_ENFORCE_MP3,
)
from music_assistant.common.models.config_entries import (
CONF_ENTRY_CROSSFADE,
CONF_ENTRY_CROSSFADE_DURATION,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
ConfigEntry,
ConfigValueType,
)
async def get_player_config_entries(self, player_id: str) -> tuple[ConfigEntry]:
"""Return all (provider/player specific) Config Entries for the given player (if any)."""
base_entries = await super().get_player_config_entries(player_id)
- return (*base_entries, CONF_ENTRY_CROSSFADE, CONF_ENTRY_CROSSFADE_DURATION)
+ return (
+ *base_entries,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
+ CONF_ENTRY_CROSSFADE,
+ CONF_ENTRY_CROSSFADE_DURATION,
+ )
async def cmd_volume_set(self, player_id: str, volume_level: int) -> None:
"""Send VOLUME_SET command to given player."""
from aiohttp import web
from music_assistant.common.models.config_entries import (
+ CONF_ENTRY_CROSSFADE,
CONF_ENTRY_CROSSFADE_DURATION,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
ConfigEntry,
ConfigValueOption,
ConfigValueType,
)
from music_assistant.common.models.media_items import AudioFormat
from music_assistant.common.models.player import DeviceInfo, Player, PlayerMedia
-from music_assistant.constants import CONF_CROSSFADE, CONF_GROUP_MEMBERS, SYNCGROUP_PREFIX
+from music_assistant.constants import CONF_GROUP_MEMBERS, SYNCGROUP_PREFIX
from music_assistant.server.controllers.streams import DEFAULT_STREAM_HEADERS
from music_assistant.server.helpers.audio import get_ffmpeg_stream, get_player_filter_params
from music_assistant.server.helpers.multi_client_stream import MultiClientStream
base_entries = await super().get_player_config_entries(player_id)
return (
*base_entries,
+ CONF_ENTRY_FLOW_MODE_ENFORCED,
ConfigEntry(
key=CONF_GROUP_MEMBERS,
type=ConfigEntryType.STRING,
"allows you to group any player, it will not enable audio sync "
"between players of different ecosystems.",
),
- ConfigEntry(
- key=CONF_CROSSFADE,
- type=ConfigEntryType.BOOLEAN,
- label="Enable crossfade",
- default_value=False,
- description="Enable a crossfade transition between (queue) tracks. \n\n"
- "Note that DLNA does not natively support crossfading so you need to enable "
- "the 'flow mode' workaround to use crossfading with DLNA players.",
- category="audio",
- ),
+ CONF_ENTRY_CROSSFADE,
CONF_ENTRY_CROSSFADE_DURATION,
)