Существует ли какой-либо инструмент командной строки, который я могу использовать для определения и записи метаданных ключа песни?

Вопрос или проблема

Я хотел бы заняться диджеингом, или хотя бы составлением песен в серии и сделать так, чтобы это работало. Я уже использовал bpmwrap, чтобы пометить темп каждой песни в моей библиотеке, и это сразу заставило меня понять, что даже когда работа с темпом сделана за меня, мне очень трудно сопоставить тональность. Есть ли какой-либо инструмент командной строки для Linux, который я мог бы использовать для определения тональности каждой песни в моей библиотеке?

Правка: вот текст скрипта, который я написал для анализа и тональности, и темпа. Вы можете изменить его по мере необходимости. Я могу прояснить что-то, если это нужно, но я сейчас устал и не сделаю это сейчас.

#!/bin/bash
total=$(tree | grep .mp3 | wc -l)
declare -i count=0
echo -ne "Анализ темпов... неизвестно/$total \r"
/home/spyndling/bigboy4tb/compiling/bpmwrap/bpmwrap.sh -w "/home/spyndling/bigboy4tb/Music imports/" > /dev/null
echo -ne "\033[2K"
echo "Темпы проанализированы."
for f in ./**/**/*.mp3; do
    count+=1
    echo -ne "Анализ тональностей... $count/$total \r"
    mid3v2 --TKEY "$(keyfinder-cli "$f")" "$f"
    echo -ne "\033[2K"
done
echo "Тональности проанализированы."

Это было немного приключением, но мне удалось установить keyfinder-cli.
Вы хотите собрать эти пакеты в следующем порядке.

Catch2-3.6.0.zip
fftw-3.3.10.tar.gz
libkeyfinder-2.2.8.tar.gz
keyfinder-cli-main.zip

Создайте директорию, я использовал название build_temp, затем загрузите и извлеките все в эту папку.

Сборка Catch2:

sudo cmake -S . -B build
cd build
make
sudo make install

FFTW3 необходимо собрать с использованием -fPIC, чтобы удовлетворить требования сборки libkeyfinder.

./configure CFLAGS=-fPIC --enable-shared
make
sudo make install

Сборка libkeyfinder:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local -S . -B build
cmake --build build --parallel
sudo cmake --install build

Сборка keyfinder-cli.
Первое, что нужно сделать, это скопировать заголовки libkeyfinder в /usr/local/include.

sudo mv /usr/bin/include/keyfinder /usr/local/include/

Вы не можете просто переместить файлы ffmpeg, как заголовки libkeyfinder.
Самое простое – это скопировать их в /usr/local/include из директории ffmpeg.

sudo cp /usr/include/ffmpeg/libavutil  /usr/local/include/
sudo cp /usr/include/ffmpeg/libavcodec /usr/local/include/
sudo cp /usr/include/ffmpeg/libavformat /usr/local/include/
sudo cp /usr/include/ffmpeg/libswresample /usr/local/include/

Перейдите в директорию keyfinder-cli. В Makefile LDFLAGS необходимо изменить, чтобы включить /usr/local/lib64. Замените его следующим:

PREFIX=/usr/local

CXX = g++
CXXFLAGS = -std=c++11 -Wall -I/usr/local/include/keyfinder -I/usr/local/include
LDFLAGS = -L/usr/local/lib64 -lkeyfinder -lavcodec -lavformat -lavutil -lswresample -lfftw3
TARGET = keyfinder-cli

all: $(TARGET)

$(TARGET): keyfinder_cli.o
    $(CXX) $^ -o $@ $(LDFLAGS)

keyfinder_cli.o: keyfinder_cli.cpp
    $(CXX) $(CXXFLAGS) -c $<

install: keyfinder-cli keyfinder-cli.1
    install -d "${DESTDIR}${PREFIX}/bin"
    install -m 755 keyfinder-cli "${DESTDIR}${PREFIX}/bin/keyfinder-cli"
    install -d "${DESTDIR}${PREFIX}/share/man/man1"
    install -m 644 keyfinder-cli.1 "${DESTDIR}${PREFIX}/share/man/man1/keyfinder-cli.1"

clean:
    rm -f *.o $(TARGET)

Экспортируйте путь: export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
Теперь соберите keyfinder-cli:

sudo make
sudo make install

make install output

Теперь у вас должна быть установлена keyfinder-cli.

Ответ или решение

Для обнаружения и записи метаданных о тональности музыкальных треков в командной строке Linux, существует несколько инструментов, которые могут значительно упростить задачу. На основании вашего запроса и уже выполненной работы, предлагаю рассмотреть использование библиотеки KeyFinder и её интерфейса командной строки keyfinder-cli, который вы успешно установили.

Установка и использование keyfinder-cli

1. Установка keyfinder-cli

Вы уже сделали большую часть работы по установке keyfinder-cli. Чтобы убедиться, что всё установлено корректно, выполните следующие команды в терминале:

keyfinder-cli --version

Это должно отобразить версию инструмента, если он установлен правильно.

2. Скрипт для анализа ключа и темпа

У вас уже имеется скрипт, который использует bpmwrap для анализа темпа и keyfinder-cli для определения ключа. Давайте внесем небольшие улучшения в ваш скрипт для повышения его эффективности и читаемости:

#!/bin/bash

# Параметры
music_dir="/home/spyndling/bigboy4tb/Music imports/"
total=$(find "$music_dir" -name "*.mp3" | wc -l)
count=0

echo -ne "Анализируем темпы... неизвестно/$total \r"
# Анализируем темпы
/home/spyndling/bigboy4tb/compiling/bpmwrap/bpmwrap.sh -w "$music_dir" > /dev/null
echo -ne "\033[2K"
echo "Темпы проанализированы."

# Анализ ключа и запись метаданных
for f in "$music_dir"/**/*.mp3; do
    count+=1
    echo -ne "Анализируем ключи... $count/$total \r"
    key=$(keyfinder-cli "$f") # Сохраняем результат в переменной

    if [ -n "$key" ]; then  # Проверяем, что ключ определен
        mid3v2 --TKEY "$key" "$f" # Записываем ключ в метаданные
    else
        echo "Ключ не найден для: $f" >> errors.log # Логируем ошибки
    fi
    echo -ne "\033[2K"
done

echo "Ключи проанализированы."

Объяснение изменений и улучшений

  1. Использование find: Вместо tree | grep .mp3, который может быть менее эффективным, мы используем find, который непосредственно находит все файлы .mp3 в указанной директории и ее поддиректориях.

  2. Проверка ключа: Перед записью ключа в метаданные проверяем, что он действительно найден. Это позволит избежать возможных ошибок при работе с файлами, которые не могут быть проанализированы.

  3. Логирование ошибок: Если ключ не может быть определён, мы записываем сообщение в лог. Это может помочь вам в дальнейшем, если потребуется проанализировать, какие треки нуждаются в дополнительной обработке.

Заключение

Использование keyfinder-cli вместе с существующим скриптом позволяет эффективно анализировать и устанавливать метаданные о тональности ваших музыкальных файлов. Это, безусловно, является важным шагом в подготовке вашей музыки для DJ-сетов. Такой подход обеспечит лучшее соответствие музыкальных треков, что сделает ваши выступления более гармоничными и профессиональными.

Попробуйте предложенные изменения, и надеюсь, это поможет вам более эффективно управлять своей музыкальной библиотекой!

Оцените материал
Добавить комментарий

Капча загружается...