Alsa list plugins. - amidi: read from and write to ALSA RawMIDI ports.

The following is a brief introduction. BlueALSA permits applications to access Bluetooth audio devices using the ALSA alsa-lib API. # ALSA EQ (alsaeq plugin) # add a real-time adjustable equalizer plugin for ALSA sound server to your audiophile server. For this, you need to link the audiotestsrc element to an output element that matches your hardware. sltest { pcm "hw:1,0" } This defines a slave without any parameters. Plugins. alsa-firmware contains binary drivers for various third-party products. At least, start, stop and pointer callbacks must be set before calling this function. . testing migrations. 1 Is dsnoop available? 1. ) A/52 upmixing preferred when playing computer games or watching video without Dolby/DTS encoded material, such as older Movies. This will effectively dmix all output and upconvert the sample rate of all 2. Selecting a certaine one ("plughw:CARD=PCH,DEV=0") in arecord works, the other PCM's do not work. Use pulseaudio -k or killall pulseaudio to kill the current PulseAudio daemon. For capture stop PCM permitting to retrieve residual frames. A plugin may have one or more parameters followed by its extra parameters. udisks Queries the udisks2 daemon via D-Bus and obtains a list of file systems (e. A very simple slave could be defined as follows: pcm_slave. WirePlumber merely loads the plugin and lets it do its work. Once you have a working setup you could try something like pactl exit; pulseaudio --start. alsa-plugins-lavrate - Rate converter plugin for ALSA using libavcodec. Find name of device Read the codes in alsa-plugins package for the real examples. asoundrc file (in your home directory) and /etc/asound. In addition, future fixes or compatibility code may be placed in the library code instead of the kernel Jun 21, 2024 · View the file list for pulseaudio-alsa. Jul 11, 2024 · To simulate A/52 encoded audio from normal one or two channel audio streams or files, ALSA can upmix using its A/52 plugin. May 11, 2003 · Now you can shape your sound with EQ plugin (obviously not suitable for native DSD playback) # see the next tutorial to install remote control and select on-fly your EQ setup by pressing key 6 or 9 of the remote control, # key 0 (zero) reset to default audio output (no EQ) Updated: March 18, 2023. alsa-plugins-jack - Jack PCM output plugin for ALSA. (Jack typcially does not need this. osssink and oss4sink for OSS/OSSv4 output. Apr 17, 2017 · ALSA. upnp Provides a list of UPnP servers on the local network. The easiest way to determine if you have only a dummy backend is to get a list of available audio devices. Also see the page on DmixPlugin for info on how to use the OssEmulation with PCM plugins. It has to be the file like libasound_module_pcm_MYPLUGIN. Converts S16 linear sound format to A52 compressed format and sends it to an SPDIF output. We create our alsa chain in audio_settings. We would like to show you a description here but the site won’t allow us. Package Actions. \ Contents. Ladspa. IEMLADSPA uses any multichannel LADSPA Plugin for audio processing. 1 license. Note: Extra parameters are triggered with '--data' and must be trailed for each plugin with '--' to mark the end of extra parameters for a particular plugin. alsa-info. " Ordinary users can then use this reverb within any LADSPA-friendly audio application. a script to gather information about ALSA subsystem. The slave plugin can be specified directly with a string or the definition can be entered inside a compound configuration node. It has to be the file like libasound_module_ctl_MYPLUGIN. The filter-type plugin is a plugin to convert the PCM signals from the input and feeds to the output. alsa-plugins-arcamav - Arcam AV amplifier plugin for ALSA. sending them by email to the alsa-devel mailing list. asoundef. the ALSA driver configurator script. Allows native ALSA applications to work with jackd . 12-1. The controls section sets the delay time and the dry/wet level i think): pcm. Included tools: - alsactl: advanced controls for ALSA sound drivers. DSSI, LADSPA and LV2 are not yet supported. device is set to 'default', and music is being played to whichever sound card happens to be assigned to ALSA card #0. Oct 20, 2020 · The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. May 11, 2003 Linux Audio Team. 0 and 5. PCM plugins extends functionality and features of PCM devices. : xfreerdp --plugin rdpsnd --data alsa latency:50 -- --plugin drdynvc --data tsmf audin -- serveradress External Control Plugins. E. Input plugins alsa An alsa PCM device can be many different things, like a simple alias for a hardware device, or any of the many plugins supported by ALSA. $ sudo nano / var / lib / mpd / . The following plugins are included, among other: - a52: S16 to A52 stream converter. Slave definition. Relevant packages: hal, hal-libs Global Functions. conf. debian. Concretely, I'm using a Unix-based setup with ALSA and as cross-plattform audio library libportaudio2 installed via pip. Application interface library for the ALSA driver. Then start it again with pulseaudio -vv. - pulse: play or capture via Pulse Audio. sh --no-upload It will generate a file containing detailed information about your sound hardware with the name /tmp/alsa-info. * qtbase: qtbase: Delay any communication until encrypted () can be responded to (CVE-2024-39936) Tenable has extracted the preceding description block directly from the AlmaLinux security advisory. Currently, these seem to be set-able only at build-time, or by using a . conf: change the location for add-on configs to /etc/alsa/conf. There are a number of solutions to this problem. hands-free devices much as if they were local devices. Jan 2, 2012 · The alsa-lib is a library to interface with ALSA in the Linux kernel and virtual devices using a plugin system. You might want to ensure that your package is ready for it. Package has 22 files and 3 directories. This package will soon be part of the auto-ffmpeg transition. wav. LADSPA is a standard that allows software audio processors and effects to be plugged into a wide range of audio synthesis and recording packages. I have tried defining my own . alsa-plugins-avtp - Audio Video Transport Protocol (AVTP) plugin for ALSA. All sound cards in your system will be controlled using drivers and card specific settings. ALSA plugins, one for PCM audio streams and one for CTL volume controls. rate_converter "samplerate_best" in your . The alsa-utils package comes ready installed on the debian wheezy distribution I am using (2012-12-16-wheezy-raspbian. There are these states: SND_PCM_STATE_OPEN. This module has been merged into the main GStreamer repo for further development. Then every other key corresponds to a plugin supported in the plugins folder. Examples. asoundlib. IEMLADSPA is a plugin for ALSA that loads a LADSPA plugin, and allows control with any ALSA compatible mixer, e. 5. However, as a. !default line in the . Next, we’ll use the build tools to compile and install the plugin: $ make && sudo make install. The remote AlmaLinux 9 host has packages installed that are affected by a vulnerability as referenced in the ALSA-2024:4623 advisory. pulsesink for Pulseaudio output. Attach this file to your bug report. - alsaloop: create loopbacks between PCM capture and playback devices. ALSA とは、Linux で音声入出力を行うための標準的な仕組み。開発者は ALSA を使う事によってサウンドカードの違いに煩わせず互換性のある音声入出力プログラムを書くことが出来る。ALSA による音声再生をテストするには aplay コマンドを使う。 Here's an entry from the asoundrc. associated interface definition files, plus the scripts used to. In ALSA device names, hw specifies a hardware device, while plughw adds plugins to automatically convert sample formats and rates if the capabilities of the hardware and the application do not match. In addition ALSA offers libraries and tools to control our sound system. # install plugin. See the alsa-lib and . so 2. 1) Install the libasound_module_rate plugin and set defaults. device to use a particular sound card for playback. View the soname list for alsa-plugins Oct 27, 2023 · Now, we need a few dependencies before we build the plugin: $ sudo apt install -y libasound2-dev gcc make. d from the datadir alsa. Plugin: Multiple streams to One. 1 and onwards, asym is included with ALSA. alsa-devel package on Linux), or create your own plugin with a default key to always override the dummy fallback. Today, I learned that you can run a LADSPA plugin on bare ALSA. GPL-2. Users of those applications can then use Bluetooth speakers, headphones, headsets and hands-free devices much as if they were local devices. alsa-utils contains various generic ALSA command line tools, such as amixer, aplay, alsaconf, etc. alsa-tools contains various more obscure tools and loaders. It's nothing more than another alias for your sound device. pcm. For this, alsa-lib, the userspace API interface to the ALSA drivers, provides PCM plugins. It differs from similar plugins (e. GitHub is where people build software. pcm. So if you need asym, you'll need to upgrade to at least this version of ALSA. usr/ usr/lib32/ usr/lib32/alsa-lib/ This package contains plugins for the ALSA library that are not included in the main libasound2 package. card0 { type hw. channel, and mixer. alsa-plugins-a52 - A52 output plugin for ALSA using libavcodec. so libasound_module_pcm_equal. That window is the QJackCtl tool, which is commonly used to start Jack. json. 2 Feb 9, 2014 · To see a full list of plugins and options, go to the alsa-lib documentation. To fix this problem, make sure the dependencies for the Qt plugins are installed on the system and reconfigure Qt (e. 1, GPL-2. c. The function is thread-safe when built with the proper option. Links to so-names. The configuration is super easy ( here's all I needed to define my LCD-X EQ) and I've experienced zero dropouts, stuttering, artifacts, etc. Note Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books. Michelangelo Edition 2016. To hear a demo of RNNoise in action, on your voice or a voice sample, see this page. The ALSA monitor is enabled by default and can be disabled using the monitor. Categories: ALSA EQ Plugin, Audio Server Jun 21, 2024 · View the file list for alsa-plugins. asoundrc config file with something like: pcm. txt. int snd_pcm_ioplug_create( snd_pcm_ioplug_t* io, const char* name, snd_pcm_stream_t stream, int mode ) Create an ioplug instance. (A/52 is also known as AC-3 or Dolby Digital encoding. Application programmers should use the library API rather than the kernel API. Jump to: navigation, search. A short explanation of the various backends: https Apr 8, 2019 · But when I try to open Audacity to try and play and capture, none of inch1, inch2, inch3, outch1, outch2, outch3 are available in the recording device or playback device list! How do I modify or create a . After the snd_pcm_open () open call, the device is in this state. I can't believe I didn't figure this Utilities for configuring and using ALSA. rear. The entry point of the plugin is defined via SND_CTL_PLUGIN_DEFINE May 25, 2024 · Alsa EQ Plugin. dsp. SLAVE { type Dec 15, 2021 · alsa-utils. Oct 16, 2018 · conf: remove alsa. USB sticks or other removable media). The PCM device is in the open state. dsnoop is the equivalent of the dmix plugin, but for recording sound. 0 licenses found Nov 26, 2023 · We can see there are 2 audio cards installed that provide capturing capabilities, namely "card 0" (Intel ICH5) and "card 1" (Microphone on the USB web cam). g Subpackages. ALSA serves as a kernel based system to connect your sound hardware to the operating system. The most common use case would be separating a 4 or 8-channel sound card in multiple stereo PCM devices. Jul 14, 2022 · sudo apt-get -y install alsa-tools. asoundrc (or create one if doesnt exist) # mpd home. 0-pre2:``` using -ao ```alsa9:dmixer``` PulseAudio — a multi-platform, open source, sound server that provides a number of features on top of the low-level audio interface ALSA. zip). \ Here's Takashi's email announcing it: lib32-alsa-plugins 1. It was originally developped as the new 'VU Meter' screensaver for Peppy Player. so file that has the plugin "delay_5s" stored in it. The plugin then monitors UDev and creates device and node objects for 'Base' GStreamer plugins and helper libraries. 2 Recording from the default dsnoop interface Aug 6, 2017 · gtkiostream provides a C++ class for implementing ALSA plugins. card 0} card0 is the fake alsa device name, with type hw, which represents for the first real alsa device. BlueALSA permits applications to access Bluetooth audio devices using the ALSA alsa-lib. Then copy the !default, surround40 and surround51 pcms from it as they are. Source Files / View Changes; Bug Reports / Add New Bug; Search Wiki Application programmers should use the library API rather than the kernel API. so, where MYPLUGIN corresponds to your own plugin name. - amixer: command line mixer. Set the Master volume on the first sound card to 100%: amixer -c 0 set Master 100%. org bug . I thought I might as well see if I can cut down on the warnings on start up ( using PortAudio from Julia) and some of them I've been able to knock out but some of them not so much: These ones. type ladspa. g. How do I create an ALSA device which outputs to another PulseAudio sink? LGPL-2. - alsamixer: curses mixer. I've recently got a USB sound card, but I can't figure out how to configure dsp. Most applications will work without them. alsa-plugins. This helps to find out which parameters do not require resampling (something to be avoided) and to troubleshoot ALSA problems. For instance, it allows a developer to write a reverb program and bundle it into a LADSPA "plugin library. Jul 11, 2018 · I wonder, if its possible to use ALSA's plugins to appear in 'list-devices' and to use those in the audiostream callback. Here is a list of all documented files with brief descriptions: [detail level 1 2 3] include. The ALSA PCM API design uses the states to determine the communication phase between application and library. ucm: list also hardware configs (hw:X) in uc_mgr_scan_master_configs() fcn Configuration conf: Use ino64_t to save and compare inode numbers alsa-ucm-conf Configuration mt8195_demo: fix the HDMI device name USB-Audio: ALC1220 - add support for Gigabyte TRX40 Aorus Pro WiFi Rev 1. This package contains the command line utilities for the ALSA project. 1 Default Alsa interface. ALSA. This allows a developer to make a reverb program and bundle it into a LADSPA plugin library. You can test this by trying to play a sine tone. conf (for system-wide settings) are the configuration files for ALSA drivers. Jan 19, 2013 · ALSA is the lowest level of the Linux sound stack. Alsaequal is a real-time adjustable equalizer plugin for ALSA. PCM devices are normally defined in the ALSA configuration file see the ALSA Plugin Documentation for a list of the available plugins. Method 3: Using aptitude. Jack PCM plugin - jack: use program_invocation_short_name - jack: implement pcm operation sw_params Alsa-lib commit 88e4ae27 introduced a dynamic recalculation of the avail_min value on the underlaying slave devices. The entry point of the plugin is defined See full list on wiki. txt included in the alsa-lib source package (It searches the "/usr/lib/ladspa" directory for a . For more than a decade now, ALSA comes with these plugins enabled and configured by default. pcm "plughw:0,0"; Mar 12, 2019 · Various examples on the web, as well as the output of aplay -L, indicate that I have an ALSA device named "pulse" which I can use as a shim to let ALSA-compliant applications output to Pulseaudio. On this site you can find download links for equalizer plugins, filter plugins, delay and reverb plugins, and more. - jack: play or capture via JACK. The easiest thing to do is to reference each of them directly using -f alsa -i hw:0 or -f alsa -i hw:1 : ffmpeg -f alsa -i hw:1 -t 30 out. output { type hw card 0 # Also "xlnxi2ssndcard0" device 0 subdevice 0 format S16_LE rate 48000 channels 2 } This is a fairly common use case, we would like to share in this blog post how we achieved this, for both input and output audio channels. Set the Master volume on the second sound card to 50%: amixer -c 1 set Master 50%. Jan 6, 2004 · From ALSA version 1. You can use that code base for a C++ abstracted ALSA subsystem OR you can figure out what your code is missing from that code. - alsaucm: alsa use case manager. The definition of this PCM device is of type plug so audio format conversion, if required, is done automatically by the PCM. 2. The callback is the mandatory field of ioplug handle. The plugins contain vulnerability information, a simplified set of remediation actions and The external plugins are implemented in a shared object file located at /usr/lib/alsa-lib (the exact location depends on the build option and asoundrc configuration). ALSA lib pcm. You can adjust them with various commands that follow the basic pattern of amixer -c <card-number> set <control> <value>. Say aplay -L lists something like. In addition, future fixes or compatibility code may be placed in the library code instead of the kernel If you want the default to be, for example, a USB Device instead of the onboard sound, you can place a pcm. Creates the ioplug instance. d External PCM I/O Plugin SDK ioplug: Fix comment in struct snd_pcm_ioplug pcm: ioplug: Provide avail helper function for plugins Kernel Headers timer: fix wrong comment to refer to 'SNDRV_TIMER_PSFLG_*' Overview. - GStreamer/gst-plugins-base May 14, 2018 · These are the audio controls you can change. alsasink for ALSA output. Dec 23, 2012 · alsacap serves to list the sampling rates, number of channels and sample formats supported by installed sound cards and their ALSA drivers. The entry point of the plugin is defined via SND_CTL_PLUGIN_DEFINE From the ALSA wiki. Description. Jul 21, 2014 · alsa-info. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects. " Here is his recipe for success: xmms 1. alsactl. Neither file is required for ALSA to work properly. It provides some useful commands: amixer, alsamixer, alsactl, aplay and speaker-test. c:2660:(snd_pcm_open_noupdate) Unknown PCM cards. 1 sources to the sample rate that was set in the dmixed pcm. For example, pcm. #10 opened on May 8, 2020 by riddicc. Back to Package. The Advanced Linux Sound Architecture (ALSA) - plugins License LGPL-2. Relevant packages: kernel, alsa-lib, alsa-plugins-pulseaudio; Permissions on device files are managed by HAL. Allows native ALSA applications to access a PulseAudio sound daemon. The package can be compiled only with the installed ALSA driver and the ALSA C library (alsa-lib). special exception, the source code distributed need not include. archlinux. Alsaequal uses the Eq10 CAPS LADSPA Plugin for audio processing, actually alsaequal is a generic LADSPA plugin interface with real-time access to the LADSPA controls (the LADSPA plugin included May 3, 2013 · First copy the "dmixed" pcm, and modify it's hardware section to the desired sample rate and format. These programs are named plugins and are written in the Nessus Attack Scripting Language (NASL). API. LADSPA provides a standard way for plugin audio processors to be used with a wide range of audio synthesis and recording packages. alsa-plugins contains plugins for various ALSA needs (e. Handling of data input from different audio players through ALSA file plugin. alsa (from GStreamer Base Plug-ins) Name Classification Description; alsamidisrc: Source: Push ALSA MIDI sequencer events around: Read from a sound card via ALSA: External Plugins. It can be adjusted using any ALSA compatible mixer, e. The entry point of the plugin is defined via SND Sep 26, 2020 · Hello there, I would like to request a feature to set things like ALSA_PLUGIN_DIR etc during runtime using environment variables. RNNoise based noise removal plugin for ALSA. Neighbor plugins smbclient Provides a list of SMB/CIFS servers on the local network. Step 2: After upgrading the apt database, we can use apt to install alsa-tools by performing the following command: sudo apt -y install alsa-tools. Most of this is done under the hood with no need for users to interfere. What kind of plugin the name represents for is decided by configuration. alsa. In the following example you have hpf which stands for high pass filter. you can put the following line in your . conf. 1 The dsnoop howto. 8, using alsa plugin, user defined output: dmixer; mp layer ```1. alsaconf. Pipewire — low-latency, graph-based, processing engine and server, for interfacing with audio and video devices. control compilation and installation of the executable. Users of those applications can then use Bluetooth speakers, headphones, headsets and. front:CARD=External,DEV=0 SB Live! 24-bit External, USB Audio Front speakers. Nov 7, 2019 · hmalissa. dmix plugin muxes multiple playback streams; dsnoop plugin allow multiple applications to capture from a single microphone; and plug plugin transparently converts audio between various sample formats, sample rates and channel numbers. It has parameters DEV, PROFILE, CODEC, VOL, SOFTVOL, DELAY, and SRV. It supports the ALSA, JACK, and Pulseaudio audio backends, as well as ALSA (raw) and JACK midi. For stopping the PCM stream immediately, use ::snd_pcm_drop () instead. 05. The . ) Jack does not have a list of devices. asoundrc pages for details on PCM plugins. asoundrc. This updated avail_min value is not reaching the alsa-jack plugin due to lack of the sw_params operation. crackling microphone. For example, to bind two PCM streams with two-channel stereo (hw:0,0 and hw:0,1) as one 4-channel stereo PCM stream, define like this: Note that the resultant pcm “quad” is not in the interleaved format but in the “complex” format. ALSA has the following significant features: Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces. Saved searches Use saved searches to filter your results more quickly Aug 2, 2020 · The jack plugin wasn’t working for me and adenosine on the archlinux forum found the bug and wrote a patch for me. 2 ucm2: MediaTek: mt8195-demo: Add Initial support The ALSA Plugins package contains plugins for various audio libraries and sound servers. Method 2: Using apt-get. # edit the . The main use of these two configuration files is to add functionality such as routing and sample-rate conversion. - amidi: read from and write to ALSA RawMIDI ports. ladspa {. asoundrc for stereo play and stereo capture on my device? For playback wait for all pending frames to be played and then stop the PCM. device, mixer. ProTip! What’s not been updated in a month: updated:<2023-11-30 . sudo apt update. The plugin is now installed to /usr/lib/alsa-lib: $ ls -1 /usr/lib/alsa-lib libasound_module_ctl_equal. External Plugin: Filter-Type Plugin. This integration is achieved by two. jackaudiosink for JACK output It's clearly a problem of not having the proper ALSA configuration for the sound card inside ALSA's config dirs: /usr/share/alsa/<various dirs and config files>. Utility. This file contains two components. You can probably find supplementary information in the debian-release archives or in the corresponding release. The plugins take care about various sample conversions, sample copying among channels and so on. The external plugins are implemented in a shared object file located at /usr/lib/alsa-lib (the exact location depends on the build option and asoundrc configuration). adenosine already posted it to the alsa-devel mailing list, but it hasn’t been applied so far. 12-1 File List. plug { @args [ SLAVE ] @args. Mar 25, 2020 · In Alsa "List all PCMs" (arecord -L) show many different PCM's (for my one sound card). 09. The actual state can be determined using snd_pcm_state () call. asoundrc file. The simplest way to use the PCM plugin is with the predefined ALSA PCM device bluealsa. alsa feature in the configuration file. The order field whereby you list the plugins you want (order matters). 1. All these parameters have defaults. This integration is achieved by two ALSA plugins, one for PCM audio streams and one for CTL volume controls. This answer seems to come close to what I Apr 8, 2003 · code means all the source code for all modules it contains, plus any. This plugin converts multiple streams to one. The library offers 100% of the functionality of the kernel API, but adds major improvements in usability, making the application code simpler and better looking. c, and /test/pcm_min. This site features download links to various plugins for Audacity, which can be used to extend Audacity's functionality to better match your workflow. View the soname list for pulseaudio-alsa The Predefined bluealsa PCM. The dsnoop plugin allows several applications to record from the same device simultaneously. Allows upmixing sound to 4 or 6 channels. So I'm either looking for a way to change the default pcm to plughw, or to have Pulseaudio pick my working alsa PCM. If you'd like to download many plugins at once, you also can try entire plugin 1 day ago · Description. Of course, you'll need to do this every time you edit ~/. ALSA parameters are not always independent: for example, the available sampling Oct 16, 2014 · Alsa-lib API pretend to be an alsa device and provide a name for caller to open. 0 license. This plugin uses the SRC_SINC_BEST_QUALITY algorithm from libsamplerate and seems to offer excellent quality. 1. - oss: run native ALSA apps on OSS drivers. Step 1: The apt database will be updated by the next command. alsa_rnnoise provides ALSA with a high-performance denoiser in real-time, perfect for VoIP conferences and calls, streaming, screencasting, and chatting with friends. As information about new vulnerabilities is discovered and released into the general public domain, Tenable Research designs programs to detect them. 0. Saved searches Use saved searches to filter your results more quickly Aug 23, 2018 · REAPER is available for the i686, x86_64, and ARMv7 (Raspberry Pi 3) platforms. alsamixergui. The plugin can modify the format and the channels of the input/output PCM. A (non-complete) list of output plug-ins for audio is. /test/latency. Plugin formats supported are the builtin ReaPlugs, and Linux VST 2/3. Presumably this outputs to the default PulseAudio sink by default. Apr 23, 2021 · I've been trying to get Julia's PortAudio to load alsa-plugins (it's been a process). Allows downmixing sound from 4-6 channels to 2 channel stereo output. Implemented support for output to Serial Interafce and I2C interface. Thus, this plugin always needs a slave PCM as its output. Jun 14, 2024 · lib32-alsa-plugins 1. 0, 4. PeppyMeter is a software VU Meter written in Python. 'alsaequal') as it will process both the recording and the playback streams in a single callback. alsa-tools. The monitor, as with all device monitors, is implemented as a SPA plugin and is part of PipeWire. That will give us a 30 seconds WAV audio alsa_rnnoise. I completely removed Pipewire, set up dsp on ALSA using the instructions in the repo, and it's perfect. org Henrik Farre wrote to the alsa-user mailing-list saying: "I just want to say GOOD work! I can run xmms, aplay, ogg123 and mplayer at the same time. $ sudo apt-get install libasound2-plugin-equal. h. slave. alsa-firmware. nq no uf eb ly sm rf cw kt xq