- Generator plików WAV z linii poleceń
- Do czego służy gen-files?
- Jak to działa – mechanizm wewnętrzny
- Wymagania
- Instalacja i uruchomienie
- Opcje wiersza poleceń – szczegółowy opis
- Przykłady użycia
- 1. Domyślne uruchomienie
- 2. Fala sinusoidalna 2 sekundy
- 3. Fala prostokątna 1000 Hz
- 4. Fala piłokształtna 220 Hz, pół sekundy, niższa częstotliwość próbkowania
- 5. Własna nazwa pliku i długi czas
- Pliki w repozytorium
- Zatrzymywanie programu
- Podsumowanie
Generator plików WAV z linii poleceń
gen-files to lekki generator plików WAV napisany w Pythonie, który pozwala tworzyć próbki dźwiękowe o różnych kształtach fali. Program działa w całości na standardowej bibliotece Pythona – nie wymaga żadnych zewnętrznych bibliotek, wystarczy zainstalowany Python 3.
GitHub: github.com/IgorBrzezek/gen-files
Do czego służy gen-files?
Generator przydaje się zawsze, gdy potrzebujemy szybko uzyskać plik WAV o określonych parametrach – bez uruchamiania ciężkiego DAW (cyfrowej stacji roboczej) czy edytora audio. Przykładowe zastosowania:
- Testowanie sprzętu audio – generowanie próbek o znanej częstotliwości do pomiarów.
- Edukacja – pokazanie różnic między falą sinusoidalną, piłokształtną i prostokątną.
- Prototypowanie – szybkie przygotowanie materiału dźwiękowego do wstępnych testów.
- Automatyzacja – generowanie sygnałów w skryptach i potokach CI/CD.
Jak to działa – mechanizm wewnętrzny
Program generuje próbkę dźwiękową, wyliczając kolejne próbki w pętli na podstawie wzoru matematycznego odpowiedniego dla wybranego typu fali. Każda próbka to 16-bitowa liczba całkowita ze znakiem (zakres od -32768 do 32767), co daje standardową jakość CD-audio. Gotowe próbki są zapisywane do pliku WAV za pomocą modułu wave z biblioteki standardowej Pythona.
Obsługiwane są trzy typy fali:
- sinus (sinusoidalna) – gładka, czysta fala, wzór:
sin(2 * pi * f * t). - piła (piłokształtna) – narastająca rampa, wzór:
2 * (t * f - floor(t * f + 0.5)). - kwadrat (prostokątna) – sygnał włącz/wyłącz, wartość
1gdy sinus >= 0, w przeciwnym razie-1.
Wynikowy plik WAV ma następujący format:
- Format: RIFF WAV
- Kanały: mono
- Próbka: 16-bit
- Częstotliwość próbkowania: domyślnie 44100 Hz (można zmienić)
Wymagania
- Python 3.7 lub nowszy
- Brak zewnętrznych bibliotek – tylko standardowa biblioteka Pythona
- System operacyjny: dowolny (Linux, Windows, macOS)
Instalacja i uruchomienie
Pobierz plik generate_wav.py z repozytorium i uruchom:
python generate_wav.py [opcje]
Opcje wiersza poleceń – szczegółowy opis
| Krótka | Długa | Opis | Domyślnie |
|---|---|---|---|
-o |
--output |
Nazwa pliku wyjściowego | output.wav |
-d |
--duration |
Czas trwania w sekundach | 1.0 |
-f |
--frequency |
Częstotliwość w Hz | 440 |
-t |
--type |
Typ fali: sinus, piła, kwadrat |
sinus |
-s |
--sample-rate |
Częstotliwość próbkowania w Hz | 44100 |
Przykłady użycia
1. Domyślne uruchomienie
python generate_wav.py
Tworzy plik output.wav z falą sinusoidalną 440 Hz (ton A4) o czasie trwania 1 sekunda.
2. Fala sinusoidalna 2 sekundy
python generate_wav.py -d 2 -f 440 -t sinus -o sine.wav
Dwusekundowa fala sinusoidalna o częstotliwości 440 Hz zapisana do pliku sine.wav.
3. Fala prostokątna 1000 Hz
python generate_wav.py -d 1 -f 1000 -t kwadrat -o square.wav
Sekunda fali prostokątnej o częstotliwości 1 kHz.
4. Fala piłokształtna 220 Hz, pół sekundy, niższa częstotliwość próbkowania
python generate_wav.py -d 0.5 -f 220 -t piła -s 22050 -o saw.wav
Półsekundowa fala piłokształtna o częstotliwości 220 Hz próbkowana z częstotliwością 22050 Hz.
5. Własna nazwa pliku i długi czas
python generate_wav.py -o moj_ton.wav -d 5 -f 528
Pięciosekundowy ton 528 Hz zapisany jako moj_ton.wav.
Pliki w repozytorium
Repozytorium zawiera trzy pliki:
generate_wav.py– główny skrypt generatora, zawiera całą logikę.data.py– plik pomocniczy (w rozwoju).turbo.py– plik pomocniczy (w rozwoju).
Na obecnym etapie jedynie generate_wav.py jest w pełni funkcjonalny.
Zatrzymywanie programu
Program działa natychmiastowo – generuje plik i kończy działanie. Nie wymaga interakcji użytkownika poza ewentualnym zatrzymaniem przez Ctrl+C, gdyby coś poszło nie tak (co w praktyce nie jest potrzebne, bo wykonanie trwa ułamek sekundy).
Podsumowanie
gen-files to minimalistyczne, ale funkcjonalne narzędzie do generowania plików WAV z linii poleceń. Dzięki wykorzystaniu wyłącznie standardowej biblioteki Pythona jest w pełni przenośne i nie wymaga instalacji dodatkowych pakietów. Trzy dostępne typy fali – sinusoidalna, piłokształtna i prostokątna – w pełni pokrywają podstawowe potrzeby związane z generowaniem próbek dźwiękowych. To dobry przykład, jak napisać praktyczne narzędzie audio w czystym Pythonie bez zewnętrznych zależności.
Źródła: github.com/IgorBrzezek/gen-files
