JFugue - JFugue
JFugue je open source programování knihovna, která umožňuje programování hudba v Programovací jazyk Java bez složitosti MIDI. Poprvé byl vydán v roce 2002 Davidem Koelle. Aktuální verze, JFugue 5.0, byla vydána v březnu 2015. Brian Eubanks popsal JFugue jako „užitečný pro aplikace, které vyžadují rychlý a snadný způsob přehrávání hudby nebo generování souborů MIDI.“[1] JFugue je svobodný software propuštěn pod Licence Apache.[2]
Příklad
Zde je příklad Java programu, který bude přehrávat Stupnice C-dur v JFugue.
import org.jfugue.player.Player;veřejnost třída Ahoj světe { veřejnost statický prázdnota hlavní(Tětiva[] args) { Hráč hráč = Nový Hráč(); hráč.hrát si(„C D E F G A B“); }}
Řetězec předaný JFugue obsahuje řadu hudebních instrukcí, které JFugue analyzuje a promění se v hudební události, které se standardně vykreslují v MIDI. Tento formát, zvaný „Staccato“, může představovat všechny hudební vlastnosti MIDI [3] a je speciálně navržen tak, aby lidem snadno četl a psal.[4] Zatímco výchozím případem použití JFugue je převod Staccata na MIDI, architektura mu umožňuje číst a zapisovat hudební informace za do různých formátů (např. MIDI to MusicXML,[5] Staccato na LilyPond). Níže je uveden příklad převodu souboru MIDI do formátu Staccato.
MidiParser analyzátor = Nový MidiParser();StaccatoParserListener posluchač = Nový StaccatoParserListener();analyzátor.addParserListener(posluchač);analyzátor.analyzovat(MidiSystem.getSequence(Nový Soubor(„YourMidiFile.mid“))); // Změňte název souboru MIDI, ke kterému vlastníte právaVzor staccatoVzorek = posluchač.getPattern();Systém.ven.tisk(staccatoVzorek);
JFugue 5.0 obsahuje sadu tříd, které představují myšlenky v hudební teorii, včetně intervalů, stupnic, akordů a postupů akordů.
Pojem vzory je nedílnou součástí JFugue. Vzory se používají k vyjádření hudebních frází, které lze kombinovat, opakovat a měnit pomocí nástrojů, které znají hudební obsah vzoru.
Vzor vzor1 = Nový Vzor(„A B C“);Vzor vzor2 = Nový Vzor(„G F E“);vzor1.přidat(vzor2).opakovat(3);Hráč hráč = Nový Hráč();hráč.hrát si(vzor1);
JFugue 5.0 hojně využívá plynulá rozhraní, také známý jako řetězení metod, který umožňuje vývojářům psát krátké expresivní části kódu, jako je následující:
Akord[] akordy = Nový ChordProgression(„I IV V“).setRoot("C").getChords();
Pokročilé funkce
JFugue je schopen produkovat mikrotonální hudba pomocí prvku Staccato skládajícího se z písmene „m“ následovaného frekvencí požadovaného tónu v Hertzích. Stejně jako ostatní noty v JFugue, i po tomto tónu může následovat doba trvání (například „w“ pro celou notu nebo „q“ pro čtvrtinovou notu) a dynamika not (např. Rychlosti „nota zapnutá“ a „nota vypnutá“) . JFugue převádí frekvenci mikrotonů na sekvenci událostí MIDI Pitch Wheel a Note, aby dosáhl požadovaného tónu.
Hráč hráč = Nový Hráč();hráč.hrát si(„m440.0q A4q“); // Zní to stejněhráč.hrát si("m568.7w"); // Celá doba trvání na 568,7 Hertzu
JFugue poskytuje intuitivní programovací rozhraní pro vytváření rytmů a rytmů. Znaky v řetězcích pod každou odpovídají perkusní notě, která se hraje na perkusním MIDI kanálu (desátý kanál); výchozí nastavení jsou k dispozici pro běžné zvuky (např. „O“ pro „[BASS_DRUM] q“), ačkoli konstruktoru Rhythm lze předat jakoukoli mapu Java nebo znak na řetězec.
Rytmus rytmus = Nový Rytmus() .addLayer(„O..oO ... O..oOO ..“) .addLayer(„..S ... S ... S ... S.“) .addLayer("````````````````") .addLayer("...............+");Nový Hráč().hrát si(rytmus.getPattern().opakovat(2));
Kromě toho, že umožňuje převod hudby z jednoho hudebního formátu do jiného, lze architekturu JFugue použít k vytvoření programových nástrojů, které jsou schopné jak provádět výpočty příchozí hudby (z jakéhokoli formátu), tak měnit příchozí hudbu. Níže uvedený příklad je jednoduchý nástroj, který sleduje všechny nástroje použité v hudební skladbě.
veřejnost třída InstrumentToolDemo { veřejnost statický prázdnota hlavní(Tětiva[] args) hodí InvalidMidiDataException, IOException { MidiParser analyzátor = Nový MidiParser(); // Pamatujte, že můžete použít jakýkoli analyzátor! InstrumentTool instrumentTool = Nový InstrumentTool(); analyzátor.addParserListener(instrumentTool); analyzátor.analyzovat(MidiSystem.getSequence(Nový Soubor(„YourMidiFile.mid“))); // Změna na skutečný název souboru Seznam<Tětiva> názvy nástrojů = instrumentTool.getInstrumentNames(); pro (Tětiva název : názvy nástrojů) { Systém.ven.tisk(název); } }}třída InstrumentTool rozšiřuje ParserListenerAdapter { soukromé Seznam<Tětiva> názvy nástrojů; veřejnost InstrumentTool() { super(); názvy nástrojů = Nový ArrayList<Tětiva>(); } @ Přepis veřejnost prázdnota onInstrumentParsed(byte nástroj) { Tětiva instrumentName = MidiDictionary.INSTRUMENT_BYTE_TO_STRING.dostat(nástroj); -li (!názvy nástrojů.obsahuje(instrumentName)) { názvy nástrojů.přidat(instrumentName); } } veřejnost Seznam<Tětiva> getInstrumentNames() { vrátit se tento.názvy nástrojů; }}
JFugue poskytuje funkce nad třídami Java MIDI Transmitter a Receiver, aby se snížilo množství kódu, který by vývojář musel zapsat, aby se mohl připojit k externím zařízením MIDI.
Použití v jiných aplikacích
JFugue se používá v řadě aplikací, včetně softwarových projektů a uměleckých instalací.
- TransProse, který proměňuje klasické romány v hudbu, používá JFugue[6]
- JFugue Music NotePad poskytuje uživatelské rozhraní pro skládání hudby[7]
- JFrets je aplikace pro výuku a výcvik kytarových tabulatur[8]
- Log4JFugue je nástroj pro převod souborů protokolu vytvořených log4j na hudební vzory; toto umožňuje poslouchat změny v souboru protokolu, což poskytuje mnohem jiný zážitek než čtení souboru po řádku.[9][10]
- Audovia je databázová aplikace pro vytváření hudby pomocí JFugue MusicStrings[11]
Program JFugue se používá k přehrávání hudby, když selže nebo uspěje sestavení softwaru.
JFugue je jednou z mála knihoven Java, která umožňuje člověku dělat něco zajímavého už za jeden nebo dva řádky kódu. Tento rozdíl vynesl JFugue místo v knize „Groovy in Action“[12]
Reference
- ^ Eubanks, Brian D. (2005), "Wicked Cool Java ". str. 154–156.
- ^ http://www.jfugue.org/download.html
- ^ „The Complete Guide to JFugue,“ Chapter 2, “http://www.jfugue.org/4/jfugue-chapter2.pdf Archivováno 04.03.2016 na Wayback Machine "
- ^ „slideshare.net/dmkoelle/4130-musical-programs“
- ^ Recordare LLC, "http://www.recordare.com/xml/software.html
- ^ O společnosti TransProse, “http://www.musicfromtext.com/about.html Archivováno 04.04.2015 v Archiv. Dnes "
- ^ Projekt JFugue Music NotePad, “https://java.net/projects/nbjfuguesupport "
- ^ Projekt JFrets, “https://jfrets.dev.java.net/ Archivováno 2007-07-28 na Wayback Machine "
- ^ Log4JFugue, "http://log4jfugue.org/ "
- ^ Časopis PragPub, 3. vydání, září 2009, “http://www.pragprog.com/magazines/download/3.pdf "
- ^ Audovia, “https://songbase.github.io/ "
- ^ Koenig, Dierk a kol. (2007)
externí odkazy
- JFugue.org —Oficiální web JFugue