Ошибка при воссоздании загрузчика: «не удается найти каталог EFI»

Недавно я приобрел E-MU 0404 USB, так что, возможно, мой опыт работы с ним поможет вам.

После некоторой борьбы он, кажется, способен воспроизводить и 44100 Гц, и 48000 Гц (и, возможно - но я не проверял - различные частоты вплоть до 192 кГц...)

GStreamer способен выполнять преобразование частоты дискретизации, но это, вероятно, не совсем правильное место для настройки. Как вы, несомненно, заметили, способы настройки невероятно запутаны и, скорее всего, связаны с gconf. Тем не менее, есть несколько других мест, которые должны работать. Я перечислил их в порядке убывания предпочтений.

Хитрость с этими устройствами заключается в установке ползунка 'Clock Rate' в микшере (в alsamixer на базе терминала он должен просто отображаться, я думаю, что другие требуют, чтобы вы убрали ползунок). Установка значения 0 дает 44100 Гц, 1 - 48000 Гц и так далее. Раздражает - но работает.

Примечание: Если вы хотите использовать выход SPDIF, вам нужно настроить медиаплеер на вывод с устройства 1. Если кто-то пытается получить сквозное воспроизведение (AC3/DTS), это не сработает, если только частота дискретизации не установлена правильно (обычно это 48000 кГц, ака "1").

На данный момент все должно работать, ниже говорится о том, как сделать все без возиться с этим ползунком:

Если вы действительно хотите сделать преобразование частоты дискретизации, вы должны быть в состоянии получить желаемый эффект, создав соответствующий ~/.asoundrc (это предполагает, что E-MU является вторым звуковым устройством - вы можете проверить с помощью aplay -l). Следующий вариант не проверен, так как у меня нет под рукой аналоговых кабелей:

pcm.!default {
         card 1
         device 0
         rate 48000
}

ctl.!default {
         type hw           
         card 1
}

Настройка через ALSA должна заставить всё работать, однако, если вы предпочитаете настраивать через PulseAudio, отредактируйте /etc/pulse/daemon.conf и убедитесь, что строка default-sample-rate имеет следующий вид (убедитесь, что она не закомментирована символом ';' и число правильное):

default-sample-rate = 48000

(from https://wiki.archlinux.org/index.php/PulseAudio#Choppy.2C_overdriven_sound )

6
21.02.2019, 03:40
4 ответа

Вот решение только для bash (другие исполняемые файлы не используются):

while read X; do read Y <&3; echo $((X + Y)); done <file1 3<file2

Здесь file1перенаправляется на стандартный ввод, а file2перенаправляется на произвольный дескриптор файла, 3.

Затем while считывает строки из file1в Xи для каждой итерации явно считывает строку из файлового дескриптора 3 (file2), а затем выполняет вычисления с использованием арифметики оболочки.

1
27.01.2020, 20:20

Хорошо, это немного загадочно, но также с арифметикой bash, pasteи sed.

$ # debug
$ paste -d+ <(sed 's/\(.*\)/echo $((\1/' file1) <(sed 's/\(.*\)/\1))/' file2)
echo $((1+6))
echo $((2+7))
echo $((3+8))
echo $((4+9))
echo $((5+10))

$ eval "$(paste -d+ <(sed 's/\(.*\)/echo $((\1/' file1) <(sed 's/\(.*\)/\1))/' file2))"
7
9
11
13
15
0
27.01.2020, 20:20

единственное решениеawk-

awk '(getline a <"file2") <= 0 {exit}; {print $0 + a}' file1
6
27.01.2020, 20:20

Слишком сложно Только Bash решение

для файла /tmp/file1

1
2
3
4
5

и /tmp/file2

6
7
8
9
10

напишите следующее script.sh

#!/bin/bash
# counters
n=0
m=0
i=0

# read every line from the first file
while read line1;
do
  declare firstfile[$n]=$line1
  n=$((n+1))
done <$1

# read every line from the second file 
while read line2;
do
  declare secondfile[$m]=$line2
  m=$((m+1))
done <$2

# combine them with arithemtic
while read foo;
do
  num=$((${firstfile[$i]} + ${secondfile[$i]}))
  echo $num 
  i=$((i+1))
done <$1

и выполнить его

#:~$ bash script.sh /tmp/file1 /tmp/file2
7
9
11
13
15
0
27.01.2020, 20:20

Теги

Похожие вопросы