JFugue

An open-source Java API for programming music without the complexities of MIDI
Download

JFugue Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • David Koelle
  • Publisher web site:
  • http://www.jfugue.org/
  • Operating Systems:
  • Mac OS X
  • File Size:
  • 110 KB

JFugue Tags


JFugue Description

An open-source Java API for programming music without the complexities of MIDI JFugue is full of useful and interesting features that will allow you to experiment with music like no other programming tool lets you do.In addition, JFugue provides many more features:· Music Strings let you specify notes, chords, instruments, tracks. More...· Music can be played at runtime, or saved to and opened from MIDI files· Music can be sent to and received from external devices: keyboards, mixers, etc.· A "Pattern" of music can be transformed and manipulated in interesting ways· Support for microtonal music, intuitive rhythm tracks, anticipating musical events· Other music parsers and renderers can be easily integrated into the JFugue architectureJFugue is ideal for applications in which music is generated at run-time, such as:· Algorithmic, generative, aleatoric, or evolutionary music· Music editors, beat boxes, drum machines· Jazz improvisers, mimicking classical composers, AI in music· Procedural synthesis, virtual instruments, interactive software playthings· Dynamic mood setting, adaptive music, music that depends on game state, games that require musical skill· ...And much more, limited only by your imagination! Using JFugue is also a great way to inspire future programmers, and to experiment with music theory and composition. Here are some key features of "JFugue": Create music using JFugue "MusicStrings", an easy and quick way to specify musical notes and other events: · Support for all audible MIDI events. If you can play it in MIDI, you can play it in JFugue · Easily specify notes, chords, chord inversions (new!), triplets and other tuplets (new!), ties, instruments, key signatures, controller events, percussion sounds, and more · Play your MusicStrings directly from your program · Save MusicStrings as text files, or save them into MIDI files · MusicStrings can be specified up-front, or played interactively/dynamically (new!) Convert existing MIDI files into JFugue MusicStrings: · Read and understand any of your MIDI files · Manipulating musical patterns and snippets from existing MIDI files Manipulate Patterns of music: · JFugue's Pattern class lets you change, transform, or measure pieces of music · Change octaves, scales, durations · Replace notes, instruments, chords, and more · Mutate musical patterns to come up with a variety of related sounds · Patterns can be easily recombined, looped, and otherwise manipulated · Patterns can be attributed with author, title, and other information Easily and intuitively specify rhythms: · Type or generate rhythm sections easily. For example: "ooO' ooO' ooO' OOO'", where "o" might represent a snare drum, "O" a bass drum, and ' a hi-hat · Create layers of percussion sounds to be played on the same MIDI channel Express music as intervals instead of notes: · Specify music using the steps between notes instead of the notes themselves · Generate actual music using a variety of root notes Support for Microtonal Music: · Easily create music like an Indonedian gamelan, or in an Indian classical or Turkish style - all you have to know is the frequency of the notes you want to play. JFugue manipulates MIDI events to do the rest Send music to, or receive music from, other MIDI devices: · Send your Patterns or any of your MIDI files to your MIDI keyboard or sequencer · Record music into Patterns as you play it on the keyboard · Develop music training software, or games that involve playing notes on the MIDI device · (Of course, you'll need a MIDI cable - try looking for USB MIDI cables) Experience simplified use of MIDI: · One line of code to play any MIDI file (well, you'll have to manage any exceptions) · MIDI generated from JFugue Music Strings can be worked with like any other MIDI sequence - add lyrics, track names, etc. Anticipate musical events before they happen: · Easily set up JFugue to alert you before a musical event is fired · Develop your own virtual instruments or interactive characters that need to begin some animated action before the notes actually sound Excellent architecture maps any Parser to any Renderer, allows for easy and powerful reconfiguration: · A Parser converts data into musical events. Examples: MusicStringParser, MidiParser · A Renderer converts musical events into something that can be seen or heard. Examples: MidiRenderer, MusicStringRenderer · New MusicXML Parser and Renderer for using MusicXML · Create your own Parsers and Renderers, and easily use them in your program! · Create your own Parser to convert music from ABC format · Create your own Renderer to turn musical events into LilyPond sheetmusic, or create a music-driven light show · If you do any of these wishlist items, please let Dave know! · Multiple Renderers can listen to an individual Parser Requirements: · Java 1.5 or later What's New in This Release: · Lots of fixes to Tempo calculations · Fix to parsing durations of MIDI notes - no more "/1.0466666667" durations! · Fix to make parallel and sequential notes play correctly (C+E_G had sounded like C+E+G) · MidiParser now sends a note event with duration=0 to indicate a note has been started · JFugueElement (the interface common to Note, Voice, etc), Pattern, and Rhythm now implement Serializable · Separate download for JFugue with MusicXML, to cut down on library size · Fix to MusicStringParser to set the decimal duration of a note · Fix to allow Rs+Rs+Rs+Rs to sound correct · Added Player constructor that takes boolean, to creates MidiSequencer instance that is not attached to a particular synthesizer


JFugue Related Software