Установка 🤖
Сборка из исходников
Зависимости:
- 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 в уникальные звуковые волны.