Knowledge

JFugue

Source 📝

1461: 688:
In addition to allowing music to be converted from one music format to another, the architecture of JFugue can be used to create programmatic tools that are capable of both performing computations on incoming music (from any format) and changing incoming music. The example below is a simple tool that
155:
The string passed to JFugue contains a series of musical instructions that JFugue parses and turns into musical events, which by default are rendered in MIDI. This format, called "Staccato," can represent all of the musical features of MIDI and is specifically designed to be easy for people to read
563:
JFugue provides an intuitive programming interface for creating beats and rhythms. The characters in the strings below each correspond to a percussion note that is played on the percussive MIDI Channel (the tenth channel); default settings are provided for common sounds (e.g., "O" for "q"), although
495:
by using a Staccato element consisting of the letter 'm' followed by the frequency in Hertz of the desired tone. Like other notes in JFugue, this tone may be followed by a duration (such as 'w' for a whole note or 'q' for a quarter note) and note dynamics (e.g., "note on" and "note off" velocities).
156:
and write. While the default use case for JFugue is to convert Staccato to MIDI, the architecture allows it to read and write musical information from and to a variety of formats (e.g., MIDI to MusicXML, Staccato to LilyPond). Below is an example converting a MIDI file to the Staccato format.
1194:
Log4JFugue is a utility for converting log files created by log4j into musical patterns; this allows one to listen for changes in a log file, which provides a much different experience than reading through the file
307:
The notion of Patterns is integral to JFugue. Patterns are used to represent phrases of music that can be combined, repeated, and altered using tools that are aware of the musical content of the pattern.
1205:
JFugue is one of the few Java libraries that lets one do something interesting in as little as one or two lines of code. This distinction earned JFugue a place in the book "Groovy in Action"
1173:
JFugue provides functionality on top of Java's MIDI Transmitter and Receiver classes to reduce the amount of code that a developer would need to write to connect to external MIDI devices.
1502: 46:
license. Brian Eubanks has described JFugue as "useful for applications that need a quick and easy way to play music or to generate MIDI files."
1487: 38:. It was first released in 2002 by David Koelle. Version 2 was released under a proprietary license. Versions 3 and 4 were released under the 304:
JFugue 5.0 contains a set of classes that represent ideas in music theory, including intervals, scales, chords, and chord progressions.
1497: 1466: 1309: 496:
JFugue converts the microtone frequency to a sequence of MIDI Pitch Wheel and Note events to achieve the desired tone.
1275: 1239: 1350: 1221: 1257: 1492: 1482: 1383: 1181:
JFugue has been used in a number of applications, including software projects and artistic installations.
39: 31: 23: 8: 437:, which lets developers write short, expressive pieces of code like the following: 1413: 492: 430: 1387: 1313: 434: 42:
license. The current version, JFugue 5.0, was released in March 2015, under the
43: 1306: 1476: 1354: 1335: 564:
any Java Map or Character to String may be passed to the Rhythm constructor.
55: 1367: 1202:
JFugue has been used to play music when a software build fails or succeeds.
1198:
Audovia is a database application for making music using JFugue MusicStrings
1347: 1279: 1243: 1188:
The JFugue Music NotePad provides a user interface for composing music
1225: 1191:
JFrets is an application for teaching and training guitar tablature
1261: 1293: 1380: 254:// Change to the name of a MIDI file that you own the rights to 1426: 1185:
TransProse, which turns classic novels into music, uses JFugue
1222:"License Agreement - JFugue - Java API for Music Programming" 27: 1258:"Download JFugue - JFugue - Java API for Music Programming" 1240:"Download JFugue - JFugue - Java API for Music Programming" 35: 1450: 1400: 689:
keeps track of all instruments used in a musical piece.
1503:
Free software programmed in Java (programming language)
1456: 54:Here's an example Java program that will play the 1474: 1414:http://www.pragprog.com/magazines/download/3.pdf 1325:"slideshare.net/dmkoelle/4130-musical-programs" 1176: 1412:PragPub Magazine, Issue 3, September 2009, " 1305:"The Complete Guide to JFugue," Chapter 2, " 1307:http://www.jfugue.org/4/jfugue-chapter2.pdf 1336:http://www.recordare.com/xml/software.html 1368:https://java.net/projects/nbjfuguesupport 1348:http://www.musicfromtext.com/about.html 1475: 1488:Java (programming language) libraries 558:// Whole duration note at 568.7 Hertz 1467:Free and open-source software portal 763:// Remember, you can use any Parser! 486: 26:library that allows one to program 13: 429:JFugue 5.0 makes extensive use of 14: 1514: 1444: 1459: 1432: 1419: 1406: 1393: 1373: 1366:JFugue Music NotePad project, " 1360: 491:JFugue is capable of producing 1340: 1328: 1319: 1299: 1286: 1268: 1250: 1232: 1214: 1: 1208: 1438:Koenig, Dierk, et al. (2007) 1381:https://jfrets.dev.java.net/ 841:// Change to a real filename 835:"YourMidiFile.mid" 641:"...............+" 626:"````````````````" 611:"..S...S...S...S." 596:"O..oO...O..oOO.." 248:"YourMidiFile.mid" 34:without the complexities of 7: 1498:Audio programming languages 1427:https://songbase.github.io/ 1292:Eubanks, Brian D. (2005), " 10: 1519: 1177:Uses in Other Applications 49: 16:Audio programming language 1054:INSTRUMENT_BYTE_TO_STRING 141:"C D E F G A B" 32:Java programming language 1453:—Official JFugue website 733:InvalidMidiDataException 691: 566: 498: 439: 310: 158: 66:org.jfugue.player.Player 60: 537:// These sound the same 531:"m440.0q A4q" 24:open source programming 1401:http://log4jfugue.org/ 191:StaccatoParserListener 179:StaccatoParserListener 940:ParserListenerAdapter 1493:Free audio software 1483:Free music software 1346:About TransProse, " 552:"m568.7w" 1386:2007-07-28 at the 1312:2016-03-04 at the 1141:getInstrumentNames 1021:onInstrumentParsed 868:getInstrumentNames 700:InstrumentToolDemo 460:"I IV V" 1379:JFrets project, " 1276:"Download JFugue" 790:addParserListener 487:Advanced Features 431:fluent interfaces 355:"G F E" 331:"A B C" 203:addParserListener 40:LGPL-2.1-or-later 1510: 1469: 1464: 1463: 1462: 1439: 1436: 1430: 1423: 1417: 1410: 1404: 1397: 1391: 1377: 1371: 1364: 1358: 1344: 1338: 1334:Recordare LLC, " 1332: 1326: 1323: 1317: 1303: 1297: 1294:Wicked Cool Java 1290: 1284: 1283: 1278:. Archived from 1272: 1266: 1265: 1260:. Archived from 1254: 1248: 1247: 1242:. Archived from 1236: 1230: 1229: 1224:. Archived from 1218: 1169: 1166: 1163: 1160: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 989: 986: 983: 980: 977: 974: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 887: 884: 881: 878: 875: 872: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 713: 710: 707: 704: 701: 698: 695: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 648: 645: 642: 639: 636: 633: 630: 627: 624: 621: 618: 615: 612: 609: 606: 603: 600: 597: 594: 591: 588: 585: 582: 579: 576: 573: 570: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 493:microtonal music 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 454:ChordProgression 452: 449: 446: 443: 433:, also known as 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 362: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 300: 297: 294: 291: 288: 285: 282: 279: 276: 273: 270: 267: 264: 261: 258: 255: 252: 249: 246: 243: 240: 237: 234: 231: 228: 225: 222: 219: 216: 213: 210: 207: 204: 201: 198: 195: 192: 189: 186: 183: 180: 177: 174: 171: 168: 165: 162: 151: 148: 145: 142: 139: 136: 133: 130: 127: 124: 121: 118: 115: 112: 109: 106: 103: 100: 97: 94: 91: 88: 85: 82: 79: 76: 73: 70: 67: 64: 1518: 1517: 1513: 1512: 1511: 1509: 1508: 1507: 1473: 1472: 1465: 1460: 1458: 1447: 1442: 1437: 1433: 1424: 1420: 1411: 1407: 1398: 1394: 1388:Wayback Machine 1378: 1374: 1365: 1361: 1345: 1341: 1333: 1329: 1324: 1320: 1314:Wayback Machine 1304: 1300: 1296:". pp. 154–156. 1291: 1287: 1274: 1273: 1269: 1256: 1255: 1251: 1238: 1237: 1233: 1220: 1219: 1215: 1211: 1179: 1171: 1170: 1167: 1164: 1161: 1159:instrumentNames 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1102:instrumentNames 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1081:instrumentNames 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 985:instrumentNames 984: 981: 978: 975: 972: 969: 966: 963: 961:instrumentNames 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 889:instrumentNames 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 856:instrumentNames 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 686: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 634: 631: 628: 625: 622: 619: 616: 613: 610: 607: 604: 601: 598: 595: 592: 589: 586: 583: 580: 577: 574: 571: 568: 561: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 489: 484: 483: 480: 477: 474: 471: 468: 465: 462: 459: 456: 453: 450: 447: 444: 441: 435:method chaining 427: 426: 423: 420: 417: 414: 411: 408: 405: 402: 399: 396: 393: 390: 387: 384: 381: 378: 375: 372: 369: 366: 363: 360: 357: 354: 351: 348: 345: 342: 339: 336: 333: 330: 327: 324: 321: 318: 315: 312: 302: 301: 298: 296:staccatoPattern 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 265: 262: 260:staccatoPattern 259: 256: 253: 250: 247: 244: 241: 238: 235: 232: 229: 226: 223: 220: 217: 214: 211: 208: 205: 202: 199: 196: 193: 190: 187: 184: 181: 178: 175: 172: 169: 166: 163: 160: 153: 152: 149: 146: 143: 140: 137: 134: 131: 128: 125: 122: 119: 116: 113: 110: 107: 104: 101: 98: 95: 92: 89: 86: 83: 80: 77: 74: 71: 68: 65: 62: 52: 17: 12: 11: 5: 1516: 1506: 1505: 1500: 1495: 1490: 1485: 1471: 1470: 1455: 1454: 1446: 1445:External links 1443: 1441: 1440: 1431: 1418: 1405: 1392: 1372: 1359: 1353:2015-04-04 at 1339: 1327: 1318: 1298: 1285: 1282:on 2015-04-02. 1267: 1264:on 2015-02-18. 1249: 1246:on 2007-05-10. 1231: 1228:on 2004-02-10. 1212: 1210: 1207: 1200: 1199: 1196: 1192: 1189: 1186: 1178: 1175: 1114:instrumentName 1093:instrumentName 1048:MidiDictionary 1042:instrumentName 970:InstrumentTool 934:InstrumentTool 862:instrumentTool 796:instrumentTool 778:InstrumentTool 769:instrumentTool 766:InstrumentTool 692: 567: 499: 488: 485: 440: 311: 159: 61: 51: 48: 15: 9: 6: 4: 3: 2: 1515: 1504: 1501: 1499: 1496: 1494: 1491: 1489: 1486: 1484: 1481: 1480: 1478: 1468: 1457: 1452: 1449: 1448: 1435: 1428: 1422: 1415: 1409: 1402: 1399:Log4JFugue, " 1396: 1389: 1385: 1382: 1376: 1369: 1363: 1356: 1355:archive.today 1352: 1349: 1343: 1337: 1331: 1322: 1315: 1311: 1308: 1302: 1295: 1289: 1281: 1277: 1271: 1263: 1259: 1253: 1245: 1241: 1235: 1227: 1223: 1217: 1213: 1206: 1203: 1197: 1195:line-by-line. 1193: 1190: 1187: 1184: 1183: 1182: 1174: 690: 565: 497: 494: 472:"C" 438: 436: 432: 309: 305: 157: 59: 57: 56:C-major scale 47: 45: 41: 37: 33: 29: 25: 21: 1434: 1421: 1408: 1395: 1375: 1362: 1342: 1330: 1321: 1301: 1288: 1280:the original 1270: 1262:the original 1252: 1244:the original 1234: 1226:the original 1216: 1204: 1201: 1180: 1172: 687: 562: 490: 428: 306: 303: 154: 53: 19: 18: 820:getSequence 739:IOException 233:getSequence 58:in JFugue. 1477:Categories 1451:JFugue.org 1425:Audovia, " 1209:References 1066:instrument 1030:instrument 814:MidiSystem 757:MidiParser 745:MidiParser 668:getPattern 272:getPattern 227:MidiSystem 173:MidiParser 161:MidiParser 78:HelloWorld 44:Apache-2.0 1012:@Override 994:ArrayList 478:getChords 1384:Archived 1351:Archived 1310:Archived 1087:contains 635:addLayer 620:addLayer 605:addLayer 590:addLayer 421:pattern1 373:pattern2 361:pattern1 340:pattern2 316:pattern1 266:listener 209:listener 182:listener 946:private 937:extends 910:println 466:setRoot 349:Pattern 337:Pattern 325:Pattern 313:Pattern 290:println 257:Pattern 50:Example 30:in the 1150:return 1135:String 1126:public 1039:String 1015:public 1000:String 967:public 955:String 898:System 880:String 850:String 802:parser 784:parser 748:parser 730:throws 721:String 709:static 706:public 694:public 674:repeat 662:rhythm 650:Player 581:Rhythm 572:rhythm 569:Rhythm 540:player 519:player 513:Player 504:player 501:Player 445:chords 409:player 403:Player 394:player 391:Player 379:repeat 278:System 215:parser 197:parser 164:parser 129:player 123:Player 114:player 111:Player 99:String 87:static 84:public 72:public 63:import 22:is an 20:JFugue 979:super 931:class 808:parse 697:class 442:Chord 221:parse 75:class 28:music 1153:this 1138:> 1132:< 1129:List 1027:byte 1018:void 1003:> 997:< 958:> 952:< 949:List 916:name 883:name 853:> 847:< 844:List 838:))); 829:File 724:args 715:main 712:void 656:play 546:play 525:play 415:play 251:))); 242:File 135:play 102:args 93:main 90:void 36:MIDI 1108:add 1060:get 1006:(); 991:new 982:(); 904:out 874:for 871:(); 826:new 781:(); 775:new 760:(); 754:new 683:)); 671:(). 653:(). 647:new 578:new 516:(); 510:new 481:(); 451:new 406:(); 400:new 367:add 346:new 322:new 284:out 275:(); 239:new 194:(); 188:new 176:(); 170:new 126:(); 120:new 1479:: 1144:() 1117:); 1096:)) 1072:if 1069:); 973:() 919:); 799:); 644:); 584:() 555:); 534:); 475:). 463:). 424:); 388:); 376:). 358:); 334:); 299:); 212:); 144:); 1429:" 1416:" 1403:" 1390:" 1370:" 1357:" 1316:" 1168:} 1165:} 1162:; 1156:. 1147:{ 1123:} 1120:} 1111:( 1105:. 1099:{ 1090:( 1084:. 1078:! 1075:( 1063:( 1057:. 1051:. 1045:= 1036:{ 1033:) 1024:( 1009:} 988:= 976:{ 964:; 943:{ 928:} 925:} 922:} 913:( 907:. 901:. 895:{ 892:) 886:: 877:( 865:. 859:= 832:( 823:( 817:. 811:( 805:. 793:( 787:. 772:= 751:= 742:{ 736:, 727:) 718:( 703:{ 680:2 677:( 665:. 659:( 638:( 632:. 629:) 623:( 617:. 614:) 608:( 602:. 599:) 593:( 587:. 575:= 549:( 543:. 528:( 522:. 507:= 469:( 457:( 448:= 418:( 412:. 397:= 385:3 382:( 370:( 364:. 352:( 343:= 328:( 319:= 293:( 287:. 281:. 269:. 263:= 245:( 236:( 230:. 224:( 218:. 206:( 200:. 185:= 167:= 150:} 147:} 138:( 132:. 117:= 108:{ 105:) 96:( 81:{ 69:;

Index

open source programming
music
Java programming language
MIDI
LGPL-2.1-or-later
Apache-2.0
C-major scale
fluent interfaces
method chaining
microtonal music
"License Agreement - JFugue - Java API for Music Programming"
the original
"Download JFugue - JFugue - Java API for Music Programming"
the original
"Download JFugue - JFugue - Java API for Music Programming"
the original
"Download JFugue"
the original
Wicked Cool Java
http://www.jfugue.org/4/jfugue-chapter2.pdf
Archived
Wayback Machine
http://www.recordare.com/xml/software.html
http://www.musicfromtext.com/about.html
Archived
archive.today
https://java.net/projects/nbjfuguesupport
https://jfrets.dev.java.net/
Archived
Wayback Machine

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.