LinuxWave: Музыка из энтропии ядра Linux 🎶

Установка 🤖

Сборка из исходников

Зависимости:

  • Zig (версия 0.14)

Инструкция:

git clone https://github.com/orhun/linuxwave   && cd linuxwave/

Соберите проект:

zig build --release=safe

Готовый бинарный файл будет находиться по пути:

zig-out/bin/linuxwave

Вы также можете запустить его напрямую:

zig build run

Если вы хотите использовать linuxwave в своём Zig-проекте как пакет, документация по API доступна здесь.

Готовые бинарники

Посмотрите доступные бинарные сборки для разных платформ на странице релизов. Сборки выполняются автоматически с использованием Continuous Deployment.

Архивы релизов подписаны следующим PGP-ключом: 0xC0701E98290D90B8

Arch Linux

Установите из репозитория community с помощью pacman:

pacman -S linuxwave

Void Linux

Установите из официального репозитория Void Linux:

xbps-install linuxwave

Docker

Контейнеры

Сборки Docker создаются автоматически и доступны в следующих реестрах:

  • Docker Hub
  • GitHub Container Registry

Использование:

Сгенерируйте output.wav в текущей директории:

docker run --rm -v "$(pwd)":/app "orhunp/linuxwave:${TAG:-latest}"

Сборка:

Соберите собственный Docker-образ из Dockerfile:

docker build -t linuxwave .

Примеры 🎵

По умолчанию:

Прочитать случайные данные из /dev/urandom, сгенерировать 20-секундную музыкальную композицию в масштабе A4 и сохранить её в output.wav:

linuxwave

Воспроизвести напрямую (через mpv), не сохраняя:

linuxwave -o - | mpv -

Блюзовая гамма ля минор (A minor blues):

linuxwave -s 0,3,5,6,7,10 -n 220 -o blues.wav

Использовать произвольный файл и создать 10-секундную композицию в C major:

linuxwave -i build.zig -n 261.63 -d 10 -o music.wav

Читать из stdin (стандартного ввода):

cat README.md | linuxwave -i -

Записать в stdout:

linuxwave -o - > output.wav

Пресеты 🎹

Спокойная музыка:

Частота дискретизации: 2000 Гц, формат: 32-битный little-endian signed int

linuxwave -r 2000 -f S32_LE -o calm.wav

Чиптюн:

44100 Гц, стерео (2 канала), 8-бит unsigned int

linuxwave -r 44100 -f U8 -c 2 -o chiptune.wav

Музыка для босса:

Громкость 65

linuxwave -s 0,7,1 -n 60 -v 65 -o boss.wav

Жуткая Lo-Fi музыка:

Частота дискретизации: 1000 Гц, 4 канала

linuxwave -s 0,1,5,3 -n 100 -r 1000 -v 55 -c 4 -o spooky_manor.wav

Вы можете предложить свой собственный пресет через pull request!

Также, ознакомьтесь с этим обсуждением, чтобы послушать музыку, созданную другими пользователями.

Использование 📚

ФлагНазначениеЗначение по умолчанию
-s, –scaleУстанавливает музыкальную гамму0,2,3,5,7,8,10,12
-n, –noteЧастота ноты440 (A4)
-r, –rateЧастота дискретизации24000
-c, –channelsКоличество каналов1
-f, –formatФормат сэмпловS16_LE
-v, –volumeГромкость (0–100)50
-d, –durationПродолжительность (сек)20
-i, –inputВходной файл/dev/urandom
-o, –outputВыходной файлoutput.wav
-V, –versionПоказать версию
-h, –helpПоказать справку

Дополнительно

scale

Список полутонов, разделённых запятыми.
По умолчанию: 0,2,3,5,7,8,10,12 (мажор от C)

Примеры:

  • A natural minor: 0,2,3,5,7,8,10
  • Pentatonic от G: 7,9,10,12,14
  • Blues от D: 2,3,4,6,7,10
  • Octatonic от F#: 6,7,9,10,12,13,15,16
  • Ryukyuan (японская): 4,5,7,11

note

Частота основной ноты в герцах.
По умолчанию: 440 (A4)

Примеры:

  • A3: 220
  • C4: 261.63
  • G4: 392
  • E5: 659.26

rate

Частота дискретизации в Гц.
По умолчанию: 24000

channels

Количество аудиоканалов.
По умолчанию: 1 (моно). Для стерео используйте 2.

format

Формат сэмплов:

  • U8: 8-бит беззнаковый
  • S16_LE: 16-бит со знаком, little-endian
  • S24_LE: 24-бит со знаком, little-endian
  • S32_LE: 32-бит со знаком, little-endian

volume

Громкость от 0 до 100.
По умолчанию: 50

duration

Длительность композиции в секундах.
По умолчанию: 20

input

Входной файл.
По умолчанию: /dev/urandom

Можно использовать любой другой файл или стандартный ввод (-)

output

Имя выходного .wav файла.
По умолчанию: output.wav

Проект LinuxWave не является традиционным музыкальным инструментом. Это скорее эксперимент в области генеративного звука, превращающий энтропию ядра Linux в уникальные звуковые волны.

Источник: LinuxWave: Музыка из энтропии ядра Linux 🎶