Things for the Ears
- card: A physical device. Within pulseaudio this is a mostly organizational unit above input output devices that allows control over what abilities can be offered.
- port: A physical port of a device. For example 'Headphones' and 'Speakers' port.
- profile: A configurational profile of a card, regulating which ports can be used interchangeably. For example Headphones and Speakers are both stereo so one profile will be able to offer both ports as options. Surround 5.1 however can have streams with up to 6 channels which makes it impossible to directly switch to Headphones.
- device: An input or output device. Each card has usually 0-1 inputs and 0-1 outputs.
- stream: A virtual output entity created by an application. A stream will either be an input or output stream and will have exactly one device it outputs to or gets input from.
- application: A piece of software using one or more streams to generate output or obtain input.
- volume: Is the loudness of either a device or a stream.
Technically Possible Features
- Change volume of a device (lowering/increasing the volume of all streams on this device).
- Change volume of a stream.
- Change volume of all streams of one application.
- Move one or more streams of one application to a different device.
- Set the default/fallback device for all streams at once (i.e. reroute all output to a different device or all input to a different device)?
- Set the port of a card. Ports are for the most part actual physical ports on the hardware, for example the Headphones and the Speaker port. Changing the port offers necessary control over which physical ports will actually output the sound.
- Set the profile of a card. Profiles are essentially controlling which ports will be available. For example one card might offer Surround 5.1 which would result in limited port selections (those that can do 5.1) while a Stereo profile would offer both Headphones and Stereo as available ports as both can produce stereo sound.
- Set the port and profile of a card.
- "Virtual" stream for notification/event sounds controlling their volume outside the regular application->stream->device scope.
- Volume overdrive. Pulseaudio allows the volume to be increased beyond 100%. This is an often requested feature and should be supported in some form. It likely needs visual cues as to where 100% is and where the overdrive limit is (usually applications will allow up to 130% although technically much more is possible).
- Terminate a stream. This is pretty much a kill feature killing the entire stream. Since this is roughly equal to simply muting a * stream I find it a questionable feature at best and with unaware applications this can actually mess up the application such that it requires a restart to output audio again.
- Multi-channel volume control (i.e. volume balance). This actually has some inherent design problems from PulseAudio which makes me not want to spend to much brain power on it. For now I consider this very advanced feature.
- Display of virtual devices (e.g. monitors allowing the use an output device's output as input) and virtual streams (I don't think there is anything implementing a virtual stream at this point).
- Rename a device.
- Change device latency (technically this is a port-dependent latency).
For Plasma users Plasma Volume provides a way to change relevant sound volume in a quick and easy manner. Unlike KMix it is built using Plasma and integrates visually into the Plasma system tray. Unlike veromix it doesn't bury the user in options they will not ever need.
Susan, 34, Recreational user. While Susan seldom uses her computer for work, it has become an essential part of her social life. With her computer, she can be creative and spread this creativity in the world. She chats with her friends, shares music, playlists and other media, creates videos and uploads them to her web space, and runs a blog with her own style. She can't imagine a life without her laptop. Still, she is a fun person and does not want to worry about technical details. She expects her machine to work.
- Education level: College student
- Income: 300€/month
- Family situation: Large family and a girlfriend
- Mobility: going home a few times a year
- Origin: Delhi, but studies in west India
- Attitude towards others: Shy, except for college peers
- Age: 21
- Acquaintances: Entire dorms (males-only), possibly a few girls
- Tech savvinness: Engineering student, power user
- Number of owned devices: Lower end smartphone, laptop
- Hobbies: Porn-brainwashed, cricket, getting wasted
- A friend calls Susan on Skype. She answers, but her friend complains that they can't hear her.
- Susan opens the volume applet and moves the Microphone slider. The recording volume changes. She continues doing this until her friend can hear her clearly.
- Susan is still on the Skype call when her neighbors start drilling a hole into a wall causing very loud noise. The noise makes it impossible for Susan's friend to understand her through the laptop built-in microphone and Susan also has a hard time understanding anything because the laptop speakers are too weak.
- Susan plugs in her USB headphones. All her sound output and input is routed through the headphones now.
- Having plugged in her headphones, Susan's friend again complains about not being able to hear her. Susan again opens the volume applet and adjusts the Microphone slider until her friend can hear her.
- Listens to music in Juk
- Raj wants to watch a video on the web. He goes to the website, the video loads, but can barely hear anything even though the video player in the browser is set to maximum volume.
- He scrolls on the speaker icon in the Plasma system tray. The overall loudness of sound increases.
- It's night time and Raj opens opens his browser because he needs to check something. Previously he was watching porn on some website. His browser is very smart and restores the previous tabs when being opened. The previously watched video starts playing at full volume and is about to wake up everyone in the neighborhood.
- Raj middle clicks on the speaker icon in the system tray to silence everything immediately.
^ explain why he needs this. eg. because the applet otherwise would cover the video. and it is easier to operate the mutness by just slamming at some thing rather than having to look at the entire massive applet ui
more professional thingums
- does voice call with headphones and music on the speakers? (vice versa?) (not at all?)
- move an application from one device to another (TV HDMI for dragon while rest uses headphones)
- less advanced version ... send all audio to the tv
- game without volume control?
- when plugging in things it should be used by default in particular this applies to usb headphones
- implement our own automatic order for device formfactors (bluetooth>usbheadphones>speakers...)
- user story for plugging in tv should get auto routed
- additionally story assuming it doesn't work as intended and needs manual routing
- second applet for very advanced nonsense
- event sounds volume control (possibly call it system sounds. apparently gnome calls it system sounds)
- maybe have only one slider for all devices in the simple applet and per-device/app stuff in the advanced one