LINUX.ORG.RU

Избранные сообщения Dementy

Как принудительно включить AAC для моих bluetooth наушников?

Форум — Desktop

Всем привет!

  1. Купил наушники HONOR Earbuds 2 Lite

  2. Купил для ПК bluetooth адаптер TP-Link UB4A

  3. Скачал blueman-manager и подключил уши к компу

  4. Вроде все ок, но на малой громкости слышны шумы в ушах на ПК, когда к айфону подключаю такого нету

  5. Начал разбираться, у меня стоит Ubuntu 22.04, перешел с PulseAudio на PipeWire

  6. Заюзал дефолтный конфиг wireplumber и там изменил кодек на aac - https://i.imgur.com/jtfUBEp.png

  7. Рестартанул PipeWire и AAC не появилось - https://i.imgur.com/2REoim4.png

  8. Когда выставляю SBC в конфиге - все работает, а вот конкретно AAC не хочет, в чем может быть причина?

 , ,

bayanruby
()

ImageMagick. Пакетная обработка изображений

Форум — General

Нужно через командную строку обработать все изображения из каталога (уменьшить размеры) и сохранить в другой каталог под этими же именами.
Вот с сохранением у меня проблема.
Не могу понять, как обработать все файлы сразу (не по одиночке) и сохранить под этими же именами.
Не подскажете?

Slon747
()

Pipewire - неизбежная... победа!

Форум — Multimedia

Есть snap, flatpak, wayland. Вроде хорошее дело, но - они добавляют изоляцию между приложениями, и такие штуки как jack, pulseaudio уже не могут работать как раньше. Надо что-то решать. И тут появляется надежда - pipewire. Но надежда ложная, потому что это катастрофа!

Нет, надежда все-таки есть.

Вот мои претензии (которые в итоге разрешились):

1. Обязательный ресемплинг. Как известно, pulseaudio поддерживало две частоты дискретизации микшера - основную и альтернативную. Это позволяло, в случае воспроизведения например только музыки со spotify переключать микшер на частоту дискретизации потока и УБРАТЬ ресемплинг! Если воспроизводит только одно приложение, ресемплинга быть НЕ ДОЛЖНО! Потому что он не нужен. Pipewire не позволяет, и похоже что реализовать это в той архитектуре, которую заложили, будет весьма непросто. На практике он всегда делает ресемплинг и всегда портит звук.

Последняя версия pipewire поддерживает до 16 значений частоты дискретизации и будет переключаться на нужную, когда это возможно.

Переключение РАБОТАЕТ уже сейчас, на версии из Git! На релизе 0.3.33 у меня не работает.

КАК СДЕЛАТЬ:

В pipewire.conf пишем:

default.clock.rate          = 48000
default.clock.allowed-rates = [ 44100, 48000 ]

Можно перечислить в allowed-rates до 16 значений. Все!

ТЕПЕРЬ - если воспроизведения не было, и запустить на воспроизведение ОДНО приложение, pipewrire будет переводить себя и звуковую карту на частоту дискретизации этого приложения, и ресемплинга НЕ БУДЕТ.

2. При работе с jack клиентами может меняться размер буфера. Занавес! То есть я играю на гитаре, и тут мне меняют размер буфера? А ничего что это приведет к слышимому и чувствуемому изменению задержки звука? Как играть??? Так НЕЛЬЗЯ ДЕЛАТЬ, а надо делать ровно наоборот. Я уже молчу про то, что изменение на лету размера буфера может просто крашануть jack приложение, которое такого бреда не ожидало!

3. Для того, чтобы вообще хоть как-то задать размер буфера для jack клиентов, надо запускать приложение с переменной окружения PIPEWIRE_LATENCY. То есть мне теперь все приложения из консоли стартовать? Или все desktop файлы править? С настоящим jack это решается элементарно - программой управления типа qjackctl. Там просто выбирается какой буфер, и все приложения используют его. Должно быть ВОТ ТАК.

Решение:

pw-metadata -n settings 0 clock.force-quantum <size>

устанавливает фиксированный размер буфера.

Или в jack.conf:

node.lock-quantum = true

4. Нельзя нормальным образом поменять частоту дискретизации при работе с jack клиентом. Используется та, на которую настроен pipewire своим конфигом. С нормальным jack частота просто выбирается в qjackctl. А с pipewire что, мне править конфиг и перезапускать его, или как?

Решение, можно менять на лету:

pw-metadata -n settings 0 clock.force-rate <samplerate>

В итоге, имеем огромные практически нерешаемые проблемы на уровне архитектуры, из-за которых pipewire идет в противоположную от нужной сторону.

Последний релиз и коммиты, которые делаются прямо сейчас показывают, что развитие пошло именно в нужную сторону.

 , ,

James_Holden
()

Преобразование звука в MIDI в реальном времени

Галерея — Скриншоты

Спустя 2,5 месяца работы я готов вам представить свою программу wave2midi. Она анализирует спектр нот в звуковом сигнале в реальном времени и выдает на выход MIDI события, которые можно записывать в таких программах, как MuseScore, или проигрывать в синтезаторе Yoshimi. Моя программа может воспринимать даже аккорды!

Программа работает в среде UNIX подобных систем с звуковой системой JACK Audio Connection Kit.

К ней можно подключать любые программы, поддерживающие JACK.

Я использую w2midi для того, чтобы получать звук синтезатора, играя на электрогитаре и для того, чтобы получать звук синтезатора своим голосом в микрофон! Вы можете придумать свой способ её использовать. Можно, например, для более точного распознавания пропускать входящий сигнал через компрессор, а выходящие ноты транспонировать (я думаю есть такие утилиты, если нет, то напишу).

>>> Видео демонстрация

Программа состоит из интерфейса командной строки (w2midi) и графического интерфейса (w2midi_qt). CLI часть написана на C99, а графическая - на C++ с использованием фреймворка Qt5.

w2midi распространяется под лицензией Apache 2.0, w2midi_qt под GPL-3.0-only.

Хочу обратить внимание на настройку:

  • Чем выше буфер, тем выше задержка и точность
  • Если программа улавливает лишние звуки, измените порог срабатывания в Дб

Программа распознает частоты с помощью преобразования Фурье, а конкретно, с помощью библиотеки FFTW3. Частоты преобразуются в ноты по простой формуле: 12 * \log_2 \frac{f}{d}, где f - полученная частота, d - опорная. Гармонический ряд - относителен, я считаю его относительно частоты 440 герц (нота ля первой октавы).

Отдельно хочу обратить внимание на обертоны. Если просто анализировать ноты по такому алгоритму, то получается настоящая какафония… Это из за того, что музыкальные инструменты издают не чистую синусоиду, а еще и дополнительные гармоники, называемые обертонами, придающие тембр. Но они нам не нужны во время записи нот. Чтобы их побороть я придумал очень простой алгоритм: из полутонов, стоящий в интервале (расстояние между нотами) секунда (1-2 полутона) выбирается самый громкий. Да, все так просто… В музыке НИКОГДА не используются секунды. Самое интересное, что об этом нигде не написано, просто заметил эмпирическим путём такое интересное свойство.

Вот такая история. Инструкции по сборке из исходных кодов находятся в README.

>>> Видео демонстрация

>>> Репозиторий w2midi

>>> Репозиторий w2midi_qt

 , , , ,

realbarmaley
()

Jpg2pdf

Форум — Desktop

Нужно из jpg сделать pdf

Жипегов 380 штук по 1мб каждый.

При попытке сделать это с помощью

 convert *.jpg - resize 40% - quality 60 out.pdf

Компьютер отжирает 8Г памяти, 5Г свопа и впадает в кататонию.

Как собрать пдф из этих файлов?

 , jpg2pdf,

pyometra
()

Инструкция получения более-менее шустрого ThinkPad 16g ram/IPS/ssd ноута в 2021 году за 20-30 тыр - вариант на базе T440p

Форум — Linux-hardware
  1. Покупаем на авито thinkpad T440p с отстойной TN-матрицей, HDD и 4gb RAM, CDROM. Проц любой, они меняются, но i5 4300m хватит с избытком, у него же не U на конце. На конце «T440p» буква p - это важно - туда ставят съёмные 47-ваттные процы, а не припаивают на мять 15-ваттные U-модели процов. Данный ноут ещё хорош тем, что закупался мегакорпорациями и мог остаться на складах, их списывали вагонами. Если вы живёте в богатой Швейцарии, то может посто достаточно по помойкам вечером пройтись. ~13000 руб.

  2. Важно найти модель T440p без дискретной Nvidia. В названии «T440p» не отражается, есть там нвидиа или нет, просто T440p бывает с двумя вариантами матери - на одну из матерей припаяна NVidia, на другую нет и стоит система охлаждения полегче (без одной трубки-площадки до чипа нвидии). Толку от nvidia нет, ускорение в игрунях 0.0000001% а зря греется и жрёт питалово. А без неё надёжнее, экономичнее. Это важный пункт выбора породистого девайса - nvidia быть не должно. Авито завален в основном T440p + Nvidia, поэтому нужно тщательно отбирать.

  3. Покупаем на aliexpress правильную матрицу LP140WF3-SPD1 (можете погуглить варианты вокруг неё, но там то цветопередача не та, то яркость), старую выдёргиваем, эту втыкаем (там 1 разьём воткнуть - паять не надо - там такой 40-пиновый разьём - ноут просто находит монитор новой модели) - получаем немерцающий кошерный IPS экран FullHD. Не 4K и хорошо, тормозов поменьше и всё предсказуемее. В матрице официально 262K цветов, но по исследованиям каких-то чуваков из ссылки ниже, цветопередача там лучше, чем в тех про которые написано, что там 16.2M цветов. 4700 руб.

  4. Покупаем на aliexpress touchpad для T450. Родной T440p слишком модный и без физических кнопок, а на T450 физические нормальные кнопки вернули обратно. T450-touchpad физически совместим с T440p - 1500 руб.

  5. Втыкаем SSD любимой модели, я ставил samsung evo pro 860 256G (фильмы не качаю, в игруни не играю, фотки и музло не храню, мне с избытком). В этом ноуте вы упираетесь в скорость SATA. В этом ноуте есть M.2, в который втыкают LTE-модемы, но с SSD там то-ли места не хватает, то-ли не все поддерживаются, то-ли надо что-то мутить в BIOS и непонятно что там будет за скорость. Возможно это самое дорогое, скажем 6-12 тыр.

  6. Воткнуть 16 гигов оперативы. 2 sodimm DDR3L (1.35v), макс 16GB 2133Mhz DDR3 (например Corsair Vengeance 2133Mhz DDR3 Sodimm). 2 планки по 8 гигов: 3500 + 3500 руб

  7. Клавиатура. Если повезло, у вас она американская (а не европейская с большим enter) и сразу с 2-уровневой подсветкой. Можно фильтровать на этапе покупки, если не повезло - аликспресс, но точную модель не знаю. possible 1500 rur

  8. CD-ROM: выдёргиваем, покупаем на Ali sata caddy кейс для второго SSD: 600 руб. Может быть будет пустовать, зато сидюк не будет жрать питалово. Там можно спрятать немного бабла в свёрнутом виде! Потенциально в ноут втыкается до 3 физических дисков - рай файлового плюшкиниста или RAID-маньяка.

  9. M.2 слот: можно втыкать наверное много чего, гипотетически 3-й диск или модем или второй wi-fi, но я не трогал.

Личный опыт - T440p + дефолтная убунта (16.04, 18.04, 20.04) - работает всё, режим сна прекрасен (закрыл крышку, кинул в рюкзак, через неделю открыл - работает), wi-fi 5ghz есть, BT есть, SD-карты читает (фотографам надо), LAN-гигабитка есть (HFT-трейдерам запускать low-latency торговых роботов). Ну ещё в выключенном состоянии работает как power bank через USB-порт, правда без fast charge.

В чём может быть печаль: 2 кг вместо 1 кг (lenovo carbon X1, macbook m1 и т.п. - я не страдаю, но есть капризные слабаки с лимитом в 1 кг), отсутствует задротский способ подключения внешних видюх (как на x230), нет USB-C. Клавиатура не классическая thinkpad, а «новая thinkpad», но старую клавиатуру официально похоронили решением ЦК КПСС навсегда, а её чертежами выстрелили из пушки на солнце, поэтому уже проще один раз перестроить мозговой движок слепой печати под эту новую клаву, чем вечно грустить о былом. Я страдал, я изменился, я полюбил 4++-серию клав.

Итого где-то вокруг 30 тыр получаем железяку с достаточно нормальным кол-вом оперативы и процом для агрессивного компиления и этой железки похоже хватит ещё надолго. Из породистых магазинных ноутов эту железку начинают рвать по производительности девайсы только подбираясь к 150-200 тырам, да и то на какие-то величины процентов в синтетических тестах, которые вам скорее всего похрен. Хотя конечно thinkpad P15 с 128 гигами ОЗУ будет интереснее, но это в 10 раз дороже)

Мегаинструкия на ту же тему с бОльшим колвом деталей и пояснений: https://octoperf.com/blog/2018/11/07/thinkpad-t440p-buyers-guide/#cpu

Бложик и личная история

Как я понял, развитие процов тормознуло к настоящему моменту. Всмысле, в руки попадают всякие thinkpad carbon X1 gen7 или Dell XPS и я не вижу преимуществ в них, относительно старой шарманки T440p i5 4300m. Единственное, что было заметно: T440p на каком-то Dell 27" через displayport на разрешении НИЖЕ 4K, но больше FullHD тянул на полный экран одну WebGL-игрушку в гуглхроме с микроподлагиваниями, а Dell XPS 13" с процом i7 7550U и какой-то новой интегрированной видяхой тянул БЕЗ подлагиваний и с меньшим поеданием электричества.

То есть, если нам нужна переносимость железки, компактность, но работаем мы всё равно от розетки и нам не важна разница между 3 часами и 10 часами от батарейки, то этот тред для вас. На практике при офисно-домашней жизни всё равно надо думать где у тебя зарядник. Какая разница когда об этом думат - через 3 часа или через 8: (хотя при компилении ядра 8 не будет никогда) - всё равно думать надо, а значит зарядник всегда где-то есть и это не нокия 3310 с неделей работы от зарядки.

 

igloev
()

Эффективная борьба с зависаниями по исчерпании памяти?

Форум — General

В последние дни вроде как активизировались обсуждения на тему зависаний линукса при нехватке памяти. Но сейчас на дворе 2019, почему на такую серьёзную проблему никто не обращает внимания уже больше 20 лет? Неужели она не решаемая?

Вроде как появились какие-то студентоподелки вроде earlyoom (вызывающие system() на сырые команды пришедшие через dbus или что-то такое там), но разве нельзя решить эту проблему средствами того же systemd?

Вот вам кусочек из лога, система ушла подумать и не вернулась. В ядре были включены все возможные счётчики, таймеры реагирующие на зависания и всё такое, в логе ничего не появилось от момента зависания до вызова manual oom. Готово для продакшена.

[126549.382913] sysrq: SysRq : Manual OOM execution
[126549.382990] Mem-Info:
[126549.382994] active_anon:1907880 inactive_anon:18992 isolated_anon:0
                 active_file:635 inactive_file:1258 isolated_file:0
                 unevictable:1 dirty:0 writeback:0 unstable:0
                 slab_reclaimable:4522 slab_unreclaimable:15053
                 mapped:65700 shmem:19656 pagetables:6750 bounce:0
                 free:14265 free_pcp:1481 free_cma:0
[126549.382996] Node 0 active_anon:7631520kB inactive_anon:75968kB active_file:2540kB inactive_file:5032kB unevictable:4kB isolated(anon):0kB isolated(file):0kB mapped:262800kB dirty:0kB writeback:0kB shmem:78624kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
[126549.382998] DMA free:15900kB min:20kB low:32kB high:44kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:15996kB managed:15900kB mlocked:0kB kernel_stack:0kB pagetables:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
[126549.382998] lowmem_reserve[]: 0 2982 7935 7935
[126549.383002] DMA32 free:27064kB min:4280kB low:7332kB high:10384kB active_anon:2897840kB inactive_anon:28604kB active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB present:3119804kB managed:3054044kB mlocked:0kB kernel_stack:720kB pagetables:7968kB bounce:0kB free_pcp:4264kB local_pcp:1328kB free_cma:0kB
[126549.383002] lowmem_reserve[]: 0 0 4952 4952
[126549.383006] Normal free:14096kB min:7108kB low:12176kB high:17244kB active_anon:4733680kB inactive_anon:47364kB active_file:2172kB inactive_file:4324kB unevictable:4kB writepending:0kB present:5234688kB managed:5075588kB mlocked:4kB kernel_stack:3824kB pagetables:19032kB bounce:0kB free_pcp:1660kB local_pcp:16kB free_cma:0kB
[126549.383006] lowmem_reserve[]: 0 0 0 0
[126549.383007] DMA: 1*4kB (U) 1*8kB (U) 1*16kB (U) 0*32kB 2*64kB (U) 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (U) 3*4096kB (M) = 15900kB
[126549.383014] DMA32: 182*4kB (UME) 60*8kB (UME) 82*16kB (UME) 83*32kB (UME) 128*64kB (UME) 65*128kB (UME) 17*256kB (UM) 2*512kB (U) 0*1024kB 0*2048kB 0*4096kB = 27064kB
[126549.383021] Normal: 779*4kB (UME) 239*8kB (UME) 149*16kB (UME) 115*32kB (UME) 43*64kB (UE) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 13844kB
[126549.383027] 21739 total pagecache pages
[126549.383027] 2092622 pages RAM
[126549.383027] 0 pages HighMem/MovableOnly
[126549.383028] 56239 pages reserved
[126549.383028] Tasks state (memory values in pages):
[126549.383028] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[126549.383031] [    550]     0   550     3752      337    53248        0             0 udevd
[126549.383032] [   1372]     0  1372      627       14    32768        0             0 busybox
[126549.383033] [   1506]     0  1506    54386      306    69632        0             0 rsyslogd
[126549.383034] [   1537]     0  1537      662       30    45056        0             0 rasdaemon
[126549.383035] [   1668]     0  1668    19558       86    53248        0             0 chronyd
[126549.383036] [   1698]     0  1698     2241      200    49152        0             0 crond
[126549.383037] [   1764]     0  1764      975      100    45056        0             0 login
[126549.383038] [   1765]     0  1765      975      100    45056        0             0 login
[126549.383039] [   1766]     0  1766     1993       30    53248        0             0 agetty
[126549.383040] [   1767]     0  1767     1993       29    49152        0             0 agetty
[126549.383041] [   1768]     0  1768     1993       30    53248        0             0 agetty
[126549.383042] [   1769]     0  1769     1993       29    49152        0             0 agetty
[126549.383043] [   1771]     0  1771     2442      168    57344        0             0 bash
[126549.383044] [   2038]  1000  2038     2407      143    57344        0             0 bash
[126549.383045] [   3819]     0  3819    34164      306   118784        0             0 sddm
[126549.383046] [  25344]     0 25344    57765    18947   331776        0             0 X
[126549.383048] [  25362]     0 25362    13354      308   102400        0             0 sddm-helper
[126549.383049] [  25366]  1000 25366    68432     1053   241664        0             0 kwalletd5
[126549.383050] [  25367]  1000 25367     2317       77    57344        0             0 startkde
[126549.383051] [  25373]  1000 25373     1143       70    45056        0             0 dbus-launch
[126549.383051] [  25374]  1000 25374     1227      293    45056        0             0 dbus-daemon
[126549.383052] [  25398]  1000 25398      561       22    40960        0             0 start_kdeinit
[126549.383053] [  25399]  1000 25399    24169      749   176128        0             0 kdeinit5
[126549.383054] [  25400]  1000 25400    68126     1123   233472        0             0 klauncher
[126549.383055] [  25403]  1000 25403   147607     3503   319488        0             0 kded5
[126549.383056] [  25409]  1000 25409    67982     1056   233472        0             0 kaccess
[126549.383057] [  25418]  1000 25418    68083     1367   233472        0             0 kglobalaccel5
[126549.383058] [  25422]  1000 25422    11436      133    81920        0             0 kwrapper5
[126549.383059] [  25423]  1000 25423    88283     1272   253952        0             0 ksmserver
[126549.383060] [  25429]  1000 25429    55222      475   151552        0             0 kscreen_backend
[126549.383061] [  25436]  1000 25436   128268     7376   430080        0             0 krunner
[126549.383062] [  25438]  1000 25438   291634    42985   897024        0             0 plasmashell
[126549.383063] [  25446]  1000 25446    38475      535   159744        0             0 xembedsniproxy
[126549.383064] [  25449]  1000 25449    57216      531   172032        0             0 gmenudbusmenupr
[126549.383065] [  25455]  1000 25455    81168      970   217088        0             0 org_kde_powerde
[126549.383066] [  25469]  1000 25469   135246      963   241664        0             0 kactivitymanage
[126549.383067] [  25693]  1000 25693    83725     5711   368640        0             0 konsole
[126549.383068] [  25696]  1000 25696     2407      151    61440        0             0 bash
[126549.383069] [  30544]  1000 30544     2407      156    57344        0             0 bash
[126549.383070] [   3640]  1000  3640    95579     8042   360448        0             0 thumbnail.so
[126549.383071] [  14305]  1000 14305   749453    94288  1695744        0             0 falkon
[126549.383072] [  14310]  1000 14310    67726     1633   348160        0             0 QtWebEngineProc
[126549.383073] [  14345]  1000 14345   499805   107824  4390912        0           300 QtWebEngineProc
[126549.383074] [  14518]  1000 14518   870434    33733   987136        0             0 kwin_x11
[126549.383075] [  14720]  1000 14720   442839    21406  2011136        0           300 QtWebEngineProc
[126549.383076] [  14880]  1000 14880     2348       85    57344        0             0 ex.sh
[126549.383077] [  14882]  1000 14882  2440872  1572825 13651968        0             0 java
[126549.383078] [  14951]  1000 14951   469635    35992  3039232        0           300 QtWebEngineProc
[126549.383079] Out of memory: Kill process 14882 (java) score 773 or sacrifice child
[126549.383136] Killed process 14882 (java) total-vm:9763488kB, anon-rss:6281980kB, file-rss:9252kB, shmem-rss:68kB
[126549.494043] oom_reaper: reaped process 14882 (java), now anon-rss:0kB, file-rss:30532kB, shmem-rss:68kB

 , , , ,

linuxnewbie
()

Голосовой ассистент. Что доступно?

Форум — General

Не всегда есть возможность трогать клавиатуру и мышь (руки в масле\пыли\стружке). Нужен голосовой ассистент, который:

* Может быть активен в фоне, слушая команды и активируясь по заданному слову\фразе
* Иметь возможность выполнить кастомно заданную команду (типа «активируй узел 1443», где «активируй узел» выполнит скрипт node.sh, а 1443 пойдет в параметр.
* Работать автономно от сети. Хранилище для настроенного локального анализатора можно выделить до 100 ГБ.
* Давать аудиоподтверждение принятой команды (не всегда есть возможность посмотреть на экран).

Если надо будет долго обучать под распознавание своего голоса - норм.

Что есть из доступного? Если опенсорс - еще лучше.

В теги добавляю пистон, обычно по этим вопросам его долбят.

 ,

PPP328
()