doc:appunti:linux:audio:audio_recording
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:linux:audio:audio_recording [2020/12/27 17:50] – [External mic on the Acer Travelmate TMB113-E] niccolo | doc:appunti:linux:audio:audio_recording [2020/12/28 17:20] – [Wireless mic on Ugreen USB audio adapter] niccolo | ||
---|---|---|---|
Line 44: | Line 44: | ||
A small movable **induction coil**, positioned in the **magnetic field** of a permanent magnet, is attached to the diaphragm. The sound wave moves the diaphragm and the coil moves in the magnetic field, producing a varying current in the coil through **electromagnetic induction**. No power is required: the current is carried directly on **two poles** to the mic input. These microphones generally have a **1/4" mono jack**. | A small movable **induction coil**, positioned in the **magnetic field** of a permanent magnet, is attached to the diaphragm. The sound wave moves the diaphragm and the coil moves in the magnetic field, producing a varying current in the coil through **electromagnetic induction**. No power is required: the current is carried directly on **two poles** to the mic input. These microphones generally have a **1/4" mono jack**. | ||
+ | |||
==== Condenser ==== | ==== Condenser ==== | ||
Line 56: | Line 57: | ||
Unlike capacitor ones, electret microphones **do not require polarizing voltage**, but generally they contain an integrated preamplifier that **does require power**. In this cases a **TRS jack** can be used, where the ring carries power via a resistor from, normally, a 5 V supply in the computer (often incorrectly called // | Unlike capacitor ones, electret microphones **do not require polarizing voltage**, but generally they contain an integrated preamplifier that **does require power**. In this cases a **TRS jack** can be used, where the ring carries power via a resistor from, normally, a 5 V supply in the computer (often incorrectly called // | ||
- | ====== External mic on the Acer Travelmate TMB113-E ====== | + | ====== Problem: silence gaps using a cheap USB dongle |
- | + | ||
- | Running **Debian GNU/Linux 10 Stretch**, it seems that the use of the **headphone/ | + | |
- | + | ||
- | < | + | |
- | jack/ | + | |
- | jack/ | + | |
- | </ | + | |
- | + | ||
- | but nothing is reported about the microphone. Beside that the bias current does not appear on the microphone jack. The solution is to run the **hdajackretask** tool (from the **alsa-tools-gui** Debian package), then force the connection of **Pin 0x19**: | + | |
- | + | ||
- | * Enable the **Show unconnected pins** option. | + | |
- | * Click **Pin ID: 0x19** => **Override** => **Microphone**. | + | |
- | * **Apply now** (it asks for the root password, as it has to run a script with superuser privileges). | + | |
- | + | ||
- | the running **acpi_listen** will print: | + | |
- | + | ||
- | < | + | |
- | jack/ | + | |
- | </ | + | |
- | + | ||
- | Now you can also measure a **bias current of 2.85 V** between the ground (**sleeve**) and the **ring** or the **tip**. | + | |
- | + | ||
- | In some cases the **hdajackretask** is unable to perform the **Apply now** function because the audio device is in use, so you get the following error message: | + | |
- | + | ||
- | < | + | |
- | / | + | |
- | </ | + | |
- | + | ||
- | The culprit can be some PulseAudio or ALSA process, or something else which is using the **snd-hda-intel** kernel module. I tried several commands to free the audio device, stopping user and system services: | + | |
- | + | ||
- | < | + | |
- | systemctl --user stop pulseaudio.socket | + | |
- | systemctl --user stop pulseaudio.service | + | |
- | sudo systemctl stop alsa-state.service | + | |
- | </ | + | |
- | + | ||
- | I was unable to free the module on a Debian 10 with XFCE, so I tried the **Install boot override** button of hdajackretask. This option will add a modprobe configuration file **/ | + | |
- | + | ||
- | < | + | |
- | options snd-hda-intel patch=hda-jack-retask.fw, | + | |
- | </ | + | |
- | + | ||
- | This will pass the **patch** option on module loading, using the content of the file **/ | + | |
- | + | ||
- | < | + | |
- | [codec] | + | |
- | 0x10ec0269 0x10250748 0 | + | |
- | + | ||
- | [pincfg] | + | |
- | 0x12 0x411111f0 | + | |
- | 0x14 0x90170110 | + | |
- | 0x17 0x411111f0 | + | |
- | 0x18 0x411111f0 | + | |
- | 0x19 0x03a19020 | + | |
- | 0x1a 0x411111f0 | + | |
- | 0x1b 0x90a70920 | + | |
- | 0x1d 0x40189b2d | + | |
- | 0x1e 0x411111f0 | + | |
- | 0x21 0x0321101f | + | |
- | </ | + | |
- | + | ||
- | The **pincfg** hex values are shown on stdout by hdajackretask when you press the //Apply now// button, so you can take note and build different files for different scenarios to use during bootstrap. For the TBM113-E the normal status of **pin 0x19** corresponds to the value **0x411111f0**, | + | |
- | + | ||
- | I used the PulseAudio mixer **pavucontrol** to set the recording volume level: it turned out that a value of **16463** (corresponding to 25% of the slider, or -36.00 dB) is the best setting for normal speach. At the ALSA level (lower level interface used by PylseAudio) it means a **Capture** level of **100** and a **Mic Boost** of **0**. This is a table of value correspondence between PulseAudio and ALSA: | + | |
- | + | ||
- | ^ ALSA ^ PulseAudio | + | |
- | | Capture 100, Mic Boost 0 | Volume: 16463 / 25% / -36.00 dB | | + | |
- | | Capture 100, Mic Boost 20 | Volume: 26092 / 40% / -24.00 dB | | + | |
- | | Capture 100, Mic Boost 51 | Volume: 41353 / 63% / -12.00 dB | | + | |
- | + | ||
- | When you apply the pin override in **hdajackretask**, | + | |
- | + | ||
- | If instead the override is made at bootstrap via the modules patch option, the settings survive after the hibernation: | + | |
- | ===== Problem: silence gaps using a cheap USB dongle ===== | + | |
I was **unable to use the microphone connector** on my Acer TravelMate, so I tried to use an USB dongle, marked **LinQ**. The device was detected by the Linux Kernel 4.9.0: | I was **unable to use the microphone connector** on my Acer TravelMate, so I tried to use an USB dongle, marked **LinQ**. The device was detected by the Linux Kernel 4.9.0: | ||
Line 157: | Line 84: | ||
{{audacity-track-gaps.png? | {{audacity-track-gaps.png? | ||
- | ===== Ugreen USB audio adapter ===== | + | ====== Wireless UHF microphone |
- | + | ||
- | The device is detected by the Linux Kernel 4.9.0 in this way: | + | |
- | + | ||
- | < | + | |
- | usb 2-1.3: new full-speed USB device number 5 using ehci-pci | + | |
- | usb 2-1.3: New USB device found, idVendor=0d8c, | + | |
- | usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 | + | |
- | usb 2-1.3: Product: USB Advanced Audio Device | + | |
- | usb 2-1.3: Manufacturer: | + | |
- | input: C-Media Electronics Inc. USB Advanced Audio Device as / | + | |
- | / | + | |
- | hid-generic 0003: | + | |
- | input, | + | |
- | on usb-0000: | + | |
- | </ | + | |
- | + | ||
- | {{ ugreen-usb-audio.jpg? | + | |
- | + | ||
- | Launching **alsamixer** and hitting F6 you can select the **USB Advanced Audio Device** sound card. Hit F4 to view the only one capture device, i.e. the microphone input line. Press **Space** to enable/ | + | |
- | + | ||
- | It seems that the best setting for audio recording through the mic, is to keep the **capture mic gain to 100**: | + | |
- | + | ||
- | {{usb-advanced-audio-device-alsamixer.png? | + | |
- | + | ||
- | The **microphone socket** is a **3.5 mm TRS type** (three poles), it provides a bias current of **2.6 V** on both the **tip** and the **ring**, so it is advisable, as reported in the device manual, to **NOT use a simple two poles mono jack** (TS type), because it will short-circuit the bias current on the ring with the ground on the sleeve. | + | |
- | + | ||
- | ===== Wireless UHF microphone ===== | + | |
We have purchased an **UHF wireless microphone** on Aliexpress.com for about 25 €. It is composed by: | We have purchased an **UHF wireless microphone** on Aliexpress.com for about 25 €. It is composed by: | ||
Line 215: | Line 115: | ||
The **2.6 volt** current provided by the USB adapter on th **jack ring** will go nowhere (not connected). The **2.6 volt** current provided on the **jack tip** is probably not required by the UHF receiver, but **it should not harm**. **No infromation** is available about **microphone impedence** expected by the USB adapter, on the other hand no information is available about the **impedence of the mic interface** of the UHF receiver. | The **2.6 volt** current provided by the USB adapter on th **jack ring** will go nowhere (not connected). The **2.6 volt** current provided on the **jack tip** is probably not required by the UHF receiver, but **it should not harm**. **No infromation** is available about **microphone impedence** expected by the USB adapter, on the other hand no information is available about the **impedence of the mic interface** of the UHF receiver. | ||
- | Despite all this empirical approach, the **voice registration is quite satisfying**! | + | Despite all this empirical approach, the **voice registration is quite satisfying**! |
- | ====== Audio Recording With Android ====== | + | |
- | + | ||
- | Recording audio using an **external microphone** connected to an **Android device** can be a real nightmare. We tried the hard way using a Chinese, no-brand, **wireless UHF microphone**! | + | |
- | + | ||
- | We can group the problems you can face in three main categories: | + | |
- | + | ||
- | * Physical connection | + | |
- | * Electrical compatibility and hardware autodetection | + | |
- | * Software capabilities and settings | + | |
- | + | ||
- | ===== Physical connection ===== | + | |
- | + | ||
- | {{ android-external-mic.jpg? | + | |
- | Most Android devices have a **3.5 mm jack** accepting a **TRRS connector in CTIA standard** and every brand of mobile phones produces **headsets** with their own standard. The vast majority of solutions uses **electret microphones** requiring a **bias current**, but use **some combinations of impedence** | + | |
- | + | ||
- | So, connecting | + | |
- | + | ||
- | ===== Electrical compatibility and hardware autodetection ===== | + | |
- | + | ||
- | As stated above, the first problem is **powering the microphone** itself, because generally we will use an **electret** one. It is a **common practice** to provide the power on the same line of the microphone signal, so **requiring just two wires** for both power (from the device to the mic) and for signal (from the mic to the device). The power, also called //bias current//, is generally in the range of **2.5** to **5.0 volt**. | + | |
- | + | ||
- | On a Xiaomi Mi A1 smartphone, which has a **TRRS 3.5 mm jack, CTIA standard**, we measured a bias current of **2.19 volt** between the microphone (sleeve) and the ground (ring). | + | |
- | + | ||
- | Another parameter which should be considered is the **impedence**, | + | |
- | + | ||
- | ===== Software capabilities and settings ===== | + | |
- | Wishing to connect | + | ===== Wireless mic on the Acer Travelmate TMB113-E ===== |
- | ^ 1/4" TS female jack ^ Signal | + | See this article about **[[audio_recording_tmb113_e]]**. |
- | | | Not connected | + | |
- | | | Not connected | + | |
- | | **Sleeve** | + | |
- | | **Tip** | + | |
- | The smartphone **did not sensed the microphone**, | + | ===== Wireless |
- | Once completed the electrical connection and acknowledged that **automatic detection of the external microphone does not work**, I decided to use the **[[https:// | + | See this article about **[[audio_recording_android]]**. |
- | + | ||
- | To realize the electrical connection explained in the above table, I used a **mic/ | + | |
- | To record audio I used the **[[https:// | + | ===== Wireless |
- | The resulting recording is quite good: a **48 kHz 16 bits** file with good sound quality and low noise. | + | See this article about **[[audio_recording_usb_adapter]]**. |
===== Web References ===== | ===== Web References ===== |
doc/appunti/linux/audio/audio_recording.txt · Last modified: 2020/12/28 18:22 by niccolo