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

  1. ^ Eubanks, Brian D. (2005), "Wicked Cool Java ". str. 154–156.
  2. ^ http://www.jfugue.org/download.html
  3. ^ „The Complete Guide to JFugue,“ Chapter 2, “http://www.jfugue.org/4/jfugue-chapter2.pdf Archivováno 04.03.2016 na Wayback Machine "
  4. ^ „slideshare.net/dmkoelle/4130-musical-programs“
  5. ^ Recordare LLC, "http://www.recordare.com/xml/software.html
  6. ^ O společnosti TransProse, “http://www.musicfromtext.com/about.html Archivováno 04.04.2015 v Archiv. Dnes "
  7. ^ Projekt JFugue Music NotePad, “https://java.net/projects/nbjfuguesupport "
  8. ^ Projekt JFrets, “https://jfrets.dev.java.net/ Archivováno 2007-07-28 na Wayback Machine "
  9. ^ Log4JFugue, "http://log4jfugue.org/ "
  10. ^ Časopis PragPub, 3. vydání, září 2009, “http://www.pragprog.com/magazines/download/3.pdf "
  11. ^ Audovia, “https://songbase.github.io/ "
  12. ^ Koenig, Dierk a kol. (2007)

externí odkazy