JFugue
JFugue to biblioteka programistyczna typu open source , która umożliwia programowanie muzyki w języku programowania Java bez złożoności MIDI . Po raz pierwszy został wydany w 2002 roku przez Davida Koelle. Wersja 2 została wydana na licencji zastrzeżonej. Wersje 3 i 4 zostały wydane na LGPL-2.1-lub nowszej . Obecna wersja, JFugue 5.0, została wydana w marcu 2015 roku pod Apache-2.0 licencja. Brian Eubanks opisał JFugue jako „przydatny w aplikacjach, które wymagają szybkiego i łatwego sposobu odtwarzania muzyki lub generowania plików MIDI”.
Przykład
Oto przykładowy program Java, który będzie odtwarzał skalę C-dur w JFugue.
import org.jfugue.player.Player ; public class HelloWorld { public static void main ( String [] args ) { Player player = new Player (); gracz . odtwórz ( "CDEFGA B" ); } }
Ciąg przekazany do JFugue zawiera serię muzycznych instrukcji, które JFugue analizuje i przekształca w zdarzenia muzyczne, które domyślnie są renderowane w formacie MIDI. Ten format, nazwany „Staccato”, może reprezentować wszystkie muzyczne cechy MIDI i został specjalnie zaprojektowany, aby był łatwy do czytania i pisania. Chociaż domyślnym przypadkiem użycia JFugue jest konwersja Staccato na MIDI, architektura pozwala na odczyt i zapis informacji muzycznych zi do różnych formatów (np. MIDI do MusicXML, Staccato do LilyPond). Poniżej znajduje się przykład konwersji pliku MIDI do formatu Staccato.
Parser MidiParser = nowy MidiParser (); Słuchacz StaccatoParserListener = nowy StaccatoParserListener (); parser . addParserListener ( słuchacz ); parser . parse ( MidiSystem . getSequence ( nowy plik ( "YourMidiFile.mid" ))); // Zmień nazwę pliku MIDI, do którego masz prawa Pattern staccatoPattern
= słuchacz . pobierz wzór (); systemu . na zewnątrz println ( staccatoPattern );
JFugue 5.0 zawiera zestaw klas reprezentujących idee w teorii muzyki, w tym interwały, skale, akordy i progresje akordów.
Pojęcie wzorców jest integralną częścią JFugue. Wzory są używane do reprezentowania fraz muzycznych, które można łączyć, powtarzać i zmieniać za pomocą narzędzi, które są świadome muzycznej zawartości wzorca.
Wzór wzór1 = nowy wzór ( "AB C" ); Pattern pattern2 = new Pattern ( "GF E" ); wzór1 . dodaj ( wzór2 ). powtórz ( 3 ); Gracz gracz = nowy gracz (); gracz . zagraj ( wzór1 );
JFugue 5.0 szeroko wykorzystuje płynne interfejsy , znane również jako łączenie metod , które pozwalają programistom pisać krótkie, wyraziste fragmenty kodu, takie jak:
Chord [] akordy = nowy ChordProgression ( "I IV V" ). setRoot ( "C" ). pobierz akordy ();
Zaawansowane funkcje
JFugue jest w stanie tworzyć muzykę mikrotonową przy użyciu elementu Staccato składającego się z litery „m”, po której następuje częstotliwość w hercach żądanego tonu. Podobnie jak inne nuty w JFugue, po tym tonie może następować czas trwania (taki jak „w” dla całej nuty lub „q” dla ćwierćnuty) i dynamika nuty (np. „nuta włączona” i „nuta wyłączona”). . JFugue konwertuje częstotliwość mikrotonów na sekwencję zdarzeń MIDI Pitch Wheel i Note, aby uzyskać żądany ton.
Gracz gracz = nowy gracz (); gracz . odtwórz ( "m440.0q A4q" ); // To brzmi jak ten sam odtwarzacz . odtwórz ( "m568.7w" ); // Nuta o całym czasie trwania przy 568,7 Hz
JFugue zapewnia intuicyjny interfejs programowania do tworzenia bitów i rytmów. Znaki w poniższych ciągach odpowiadają nutom perkusyjnym, które są odtwarzane na perkusyjnym kanale MIDI (kanał dziesiąty); domyślne ustawienia są dostępne dla typowych dźwięków (np. „O” dla „[BASS_DRUM]q”), chociaż do konstruktora Rhythm można przekazać dowolną mapę Java lub znak na ciąg znaków.
Rytm Rytm = nowy Rytm () . addLayer ( "O..oO...O..oOO.." ) . addLayer ( "..S...S...S...S." ) . addLayer ( "````````````````" ) . addLayer ( "............+" ); nowy gracz (). graj ( rytm . getPattern (). powtórz ( 2 ));
Oprócz umożliwienia konwersji muzyki z jednego formatu muzycznego na inny, architektura JFugue może służyć do tworzenia narzędzi programistycznych, które są w stanie zarówno wykonywać obliczenia na przychodzącej muzyce (z dowolnego formatu), jak i zmieniać przychodzącą muzykę. Poniższy przykład to proste narzędzie, które śledzi wszystkie instrumenty użyte w utworze muzycznym.
Public class InstrumentToolDemo { public static void main ( String [] args ) rzuca InvalidMidiDataException , IOException { MidiParser parser = nowy MidiParser (); // Pamiętaj, możesz użyć dowolnego parsera! InstrumentNarzędzie InstrumentNarzędzie = nowy InstrumentNarzędzie (); parser . addParserListener ( instrumentTool
); parser . parse ( MidiSystem . getSequence ( nowy plik ( "YourMidiFile.mid" ))); // Zmiana na rzeczywistą nazwę pliku List < String > instrumentNames = instrumentTool . getInstrumentNames (); for ( Nazwa ciągu : instrumentNames ) { System . na zewnątrz println (
imię ); } } } class InstrumentTool extends ParserListenerAdapter { private List <String> instrumentNames ; _ _ publiczne narzędzie instrumentu () { super (); instrumentNames = new ArrayList < String > (); } @Override public void onInstrumentParsed ( instrument bajtowy
) { String nazwa instrumentu = MidiDictionary . INSTRUMENT_BYTE_TO_STRING . dostać ( instrument ); if ( ! instrumentNames . zawiera ( instrumentName )) { instrumentNames . dodaj ( nazwa instrumentu ); } } lista publiczna < String > getInstrumentNames () { return
to . nazwy instrumentów ; } }
JFugue zapewnia funkcjonalność oprócz klas Java Transmitter i Receiver MIDI, aby zmniejszyć ilość kodu, który programista musiałby napisać, aby połączyć się z zewnętrznymi urządzeniami MIDI.
Zastosowania w innych zastosowaniach
JFugue był używany w wielu aplikacjach, w tym w projektach oprogramowania i instalacjach artystycznych.
- TransProse, która zamienia klasyczne powieści w muzykę, używa JFugue
- JFugue Music NotePad zapewnia interfejs użytkownika do komponowania muzyki
- JFrets to aplikacja do nauczania i treningu tabulatury gitarowej
- Log4JFugue to narzędzie do konwersji plików dziennika utworzonych przez log4j na wzorce muzyczne; pozwala to na nasłuchiwanie zmian w pliku dziennika, co zapewnia znacznie inne wrażenia niż czytanie pliku wiersz po wierszu.
- Audovia to aplikacja bazodanowa do tworzenia muzyki przy użyciu JFugue MusicStrings
JFugue był używany do odtwarzania muzyki, gdy kompilacja oprogramowania kończy się niepowodzeniem lub sukcesem.
JFugue jest jedną z nielicznych bibliotek Java, która pozwala zrobić coś interesującego w zaledwie jednej lub dwóch liniach kodu. To wyróżnienie zapewniło JFugue miejsce w książce „Groovy in Action”
Linki zewnętrzne
- JFugue.org — Oficjalna witryna JFugue