- Audio Modulator i Mikser – modulacja AM, FM i miksowanie plików WAV
- Do czego służy Audio Modulator i Mikser?
- Jak to działa – mechanizm wewnętrzny
- Wymagania
- Instalacja
- Użycie z poziomu wiersza poleceń
- Podstawowe wywołanie
- Argumenty wymagane
- Opcje dodatkowe
- Przykłady użycia
- 1. Modulacja amplitudy (AM)
- 2. Miksowanie (sumowanie) ze statystykami i nadpisywaniem
- 3. Modulacja częstotliwości (FM)
- 4. Wyświetlenie szczegółowej pomocy
- Typy modulacji – szczegółowy opis
- Modulacja amplitudy (AM)
- Modulacja częstotliwości (FM)
- Proste sumowanie (miksowanie)
- Ochrona przed nadpisywaniem
- Statystyki plików
- Podsumowanie
Audio Modulator i Mikser – modulacja AM, FM i miksowanie plików WAV
Audio Modulator i Mikser to skrypt napisany w Pythonie, który służy do przetwarzania sygnałów audio w plikach WAV. Program umożliwia wykonywanie trzech operacji: modulacji amplitudy (AM), modulacji częstotliwości (FM) oraz prostego sumowania dwóch sygnałów (miksowania). Narzędzie działa z poziomu wiersza poleceń i oferuje szereg przydatnych opcji, takich jak wyświetlanie statystyk plików wejściowych czy kolorowane wyjście w terminalu.
GitHub: github.com/IgorBrzezek/modulation
Do czego służy Audio Modulator i Mikser?
Program służy do eksperymentowania z modulacją sygnałów audio. Znajdzie zastosowanie w edukacji (nauka o modulacji AM i FM), w tworzeniu efektów dźwiękowych, a także w podstawowym miksowaniu dwóch ścieżek dźwiękowych. Dzięki niemu można na przykład nałożyć efekt tremolo (AM) na nagranie, wygenerować efekty typu vibrato (FM) lub połączyć dwie ścieżki w jedną.
Jak to działa – mechanizm wewnętrzny
Skrypt wczytuje dwa pliki WAV: nośną (carrier) oraz sygnał modulujący (signal). Oba sygnały są normalizowane do zakresu [-1.0, 1.0], a następnie łączone zgodnie z wybranym efektem. Wynik jest ponownie normalizowany i zapisywany jako plik WAV 16-bitowy.
Poszczególne tryby działają następująco:
- AM (Amplitude Modulation) – amplituda sygnału nośnego jest zmieniana zgodnie z chwilową amplitudą sygnału modulującego według wzoru:
(1.0 + signal_norm) * carrier_norm. Efekt przypomina znane z radia zniekształcenia AM. - FM (Frequency Modulation) – program tworzy syntetyczną falę nośną o częstotliwości 2000 Hz i moduluje jej częstotliwość z dewiacją 1000 Hz zgodnie z amplitudą sygnału modulującego. Implementacja została wzmocniona dla wyraźnej słyszalności efektu.
- SUM (Sumowanie/miksowanie) – oba sygnały są dodawane do siebie (amplituda + amplituda), a wynik jest ponownie normalizowany, aby uniknąć przesterowania. To zwykłe łączenie dwóch ścieżek.
Wymagania
- Python 3.x
- Biblioteki:
numpy,scipy - Opcjonalnie:
colorama(dla kolorowanego wyjścia w terminalu)
Instalacja
Wymagane biblioteki instalujemy za pomocą pip:
pip install numpy scipy colorama
Użycie z poziomu wiersza poleceń
Podstawowe wywołanie
python modulation.py -c CARRIER_FILE -s SIGNAL_FILE -e EFFECT -o OUTPUT_FILE [OPCJE]
Argumenty wymagane
| Opcja | Opis |
|---|---|
-c, --carrier |
Ścieżka do pliku WAV z sygnałem nośnym |
-s, --signal |
Ścieżka do pliku WAV z sygnałem modulującym |
-e, --effect |
Efekt do zastosowania: am, fm lub sum |
-o, --output |
Ścieżka do wynikowego pliku WAV |
Opcje dodatkowe
| Opcja | Opis |
|---|---|
--stat |
Wyświetla szczegółowe statystyki plików wejściowych (częstotliwość próbkowania, czas trwania, liczba próbek, wartości amplitud) |
--color |
Włącza kolorowane wyjście ANSI w terminalu |
--overwrite |
Nadpisuje istniejący plik wyjściowy bez pytania |
-h |
Wyświetla krótką pomoc |
--help |
Wyświetla szczegółową pomoc z przykładami i metadanymi |
Przykłady użycia
1. Modulacja amplitudy (AM)
python modulation.py -c carrier.wav -s signal.wav -e am -o modulated_am.wav
Wykonuje modulację amplitudy sygnału nośnego carrier.wav sygnałem modulującym signal.wav. Wynik zapisuje do pliku modulated_am.wav.
2. Miksowanie (sumowanie) ze statystykami i nadpisywaniem
python modulation.py -c tone_c.wav -s music_s.wav -e sum -o mixed.wav --stat --overwrite
Miksuje dwie ścieżki, wyświetla statystyki obu plików wejściowych i nadpisuje plik wynikowy bez pytania.
3. Modulacja częstotliwości (FM)
python modulation.py -c 2000hz_tone.wav -s 10hz_tone.wav -e fm -o modulated_fm.wav
Wykonuje modulację częstotliwości. Dla najlepszego efektu nośna powinna być tonem, a sygnał modulujący bardzo wolnym tonem (np. 10 Hz), aby wyraźnie słyszeć zmiany częstotliwości.
4. Wyświetlenie szczegółowej pomocy
python modulation.py --help
Wyświetla pełną dokumentację z metadanymi autora, wersją oraz przykładami.
Typy modulacji – szczegółowy opis
Modulacja amplitudy (AM)
Modulacja amplitudy polega na zmianie amplitudy fali nośnej zgodnie z przebiegiem sygnału modulującego. W implementacji skryptu użyto wzoru: (1.0 + signal_norm) * carrier_norm. Oznacza to, że sygnał modulujący przesuwany jest o 1.0 (aby uniknąć ujemnych wartości mnożenia), a następnie mnożony przez sygnał nośny. Efektem jest typowa modulacja AM – amplituda nośnej „faluje” zgodnie z kształtem sygnału modulującego.
Modulacja częstotliwości (FM)
Modulacja częstotliwości zmienia częstotliwość fali nośnej zgodnie z amplitudą sygnału modulującego. Implementacja w skrypcie tworzy syntetyczną falę nośną o częstotliwości 2000 Hz. Sygnał modulujący jest normalizowany, a następnie całkowany numerycznie (za pomocą np.cumsum). Faza wynikowa dodawana jest do fazy fali nośnej, co daje efekt FM. Dewiacja wynosi 1000 Hz, co zapewnia wyraźną słyszalność modulacji. Implementacja została specjalnie poprawiona w wersji 1.1.3, aby efekt był lepiej słyszalny.
Proste sumowanie (miksowanie)
Tryb sumowania (SUM) po prostu dodaje do siebie amplitudy obu sygnałów. Ponieważ wynik może przekroczyć zakres [-1.0, 1.0], sygnał wynikowy jest automatycznie normalizowany. To najprostsza forma miksowania dwóch ścieżek dźwiękowych – idealna do łączenia dźwięków, nakładania efektów tła itp.
Ochrona przed nadpisywaniem
Domyślnie przed nadpisaniem istniejącego pliku program pyta użytkownika o zgodę:
Output file 'modulated_am.wav' already exists. Overwrite? (y/N):
Dodanie flagi --overwrite pomija to pytanie i zawsze nadpisuje plik.
Statystyki plików
Flaga --stat wyświetla szczegółowe informacje o plikach wejściowych: częstotliwość próbkowania (Hz), czas trwania (sekundy), liczbę próbek, minimalną i maksymalną amplitudę, średnią amplitudę bezwzględną oraz typ danych. W połączeniu z flagą --color statystyki są wyświetlane z kolorami ANSI dla lepszej czytelności.
Podsumowanie
Audio Modulator i Mikser to proste, ale funkcjonalne narzędzie do eksperymentów z modulacją AM i FM oraz podstawowym miksowaniem audio w Pythonie. Dzięki przejrzystemu interfejsowi wiersza poleceń i czytelnym komunikatom sprawdzi się zarówno w celach edukacyjnych, jak i przy tworzeniu efektów dźwiękowych. Wersja 1.1.3 wprowadza ulepszoną słyszalność modulacji FM, co czyni program jeszcze bardziej przydatnym w praktyce.
