Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

JFugue - это библиотека программирования с открытым исходным кодом, которая позволяет программировать музыку на языке программирования Java без сложностей MIDI . Впервые он был выпущен в 2002 году Дэвидом Келле. Текущая версия, JFugue 5.0, была выпущена в марте 2015 года. Брайан Юбэнкс описал JFugue как «полезный для приложений, которым нужен быстрый и простой способ воспроизведения музыки или создания файлов MIDI». [1] JFugue - бесплатное программное обеспечение, выпущенное под лицензией Apache . [2]

Пример [ править ]

Вот пример Java-программы, которая будет воспроизводить до-мажорную гамму в JFugue.

import  org.jfugue.player.Player ;публичный  класс  HelloWorld  {  публичный  статический  void  main ( String []  args )  {  Player  player  =  new  Player ();  игрок . играть ( "CDEFGA B" );  } }

Строка, переданная JFugue, содержит серию музыкальных инструкций, которые JFugue анализирует и превращает в музыкальные события, которые по умолчанию отображаются в MIDI. Этот формат, называемый «стаккато», может представлять все музыкальные особенности MIDI [3] и специально разработан, чтобы люди могли легко читать и писать. [4] Хотя по умолчанию JFugue используется для преобразования Staccato в MIDI, архитектура позволяет ему читать и записывать музыкальную информацию из различных форматов (например, MIDI в MusicXML, [5] Staccato в LilyPond). Ниже приведен пример преобразования файла MIDI в формат Staccato.

 Парсер  MidiParser =  новый  MidiParser (); StaccatoParserListener  listener  =  новый  StaccatoParserListener (); парсер . addParserListener ( слушатель ); парсер . parse ( MidiSystem . getSequence ( новый  файл ( "YourMidiFile.mid" )));  // Измените имя MIDI-файла, права на который у вас есть на Pattern  staccatoPattern  =  listener . getPattern (); Система . из. println ( staccatoPattern );

JFugue 5.0 содержит набор классов, которые представляют идеи теории музыки, включая интервалы, гаммы, аккорды и последовательности аккордов.

Понятие паттернов является неотъемлемой частью JFugue. Паттерны используются для представления музыкальных фраз, которые можно комбинировать, повторять и изменять с помощью инструментов, которые осведомлены о музыкальном содержании паттерна.

Паттерн  pattern1  =  новый  паттерн ( «AB C» ); Шаблон  pattern2  =  новый  шаблон ( "GF E" ); шаблон1 . добавить ( шаблон2 ). повторить ( 3 ); Player  player  =  новый  игрок (); игрок . играть ( шаблон1 );

JFugue 5.0 широко использует плавные интерфейсы , также известные как цепочки методов , которые позволяют разработчикам писать короткие выразительные фрагменты кода, подобные следующему:

Хорда []  аккорды  =  новый  ChordProgression ( "I IV V" ). setRoot ( "C" ). getChords ();

Расширенные функции [ править ]

JFugue может воспроизводить микротональную музыку , используя элемент стаккато, состоящий из буквы «м», за которой следует частота желаемого тона в герцах. Как и другие ноты в JFugue, за этим тоном может следовать длительность (например, 'w' для всей ноты или 'q' для четвертой ноты) и динамика ноты (например, скорости нажатия «note on» и «note off») . JFugue преобразует частоту микротона в последовательность событий MIDI Pitch Wheel и Note для достижения желаемого тона.

Player  player  =  новый  игрок (); игрок . play ( "m440.0q A4q" );  // Звучит один и тот же игрок . play ( "m568.7w" );  // Нота всей продолжительности на 568,7 Гц

JFugue предоставляет интуитивно понятный интерфейс программирования для создания битов и ритмов. Символы в нижних струнах соответствуют ноте перкуссии, которая воспроизводится на перкуссионном MIDI-канале (десятый канал); для обычных звуков предусмотрены настройки по умолчанию (например, «O» вместо «[BASS_DRUM] q»), хотя в конструктор Rhythm можно передать любую карту Java или символ в строку.

Ритм-  ритм  =  новый  ритм ()  . addLayer ( "O..oO ... O..oOO .." )  . addLayer ( "..S ... S ... S ... S." )  . addLayer ( "` `` `` `` `` `` `` `" )  . addLayer ( "............... +" ); новый  игрок (). играть ( ритм . getPattern (). repeat ( 2 ));

Помимо возможности преобразования музыки из одного музыкального формата в другой, архитектура JFugue может использоваться для создания программных инструментов, способных как выполнять вычисления с входящей музыкой (из любого формата), так и изменять входящую музыку. Пример ниже представляет собой простой инструмент, который отслеживает все инструменты, используемые в музыкальном произведении.

открытый  класс  InstrumentToolDemo  {  public  static  void  main ( String []  args )  выбрасывает  InvalidMidiDataException ,  IOException  {  MidiParser  parser  =  new  MidiParser ();  // Помните, вы можете использовать любой парсер!  InstrumentTool  instrumentTool  =  новый  InstrumentTool ();  парсер . addParserListener ( instrumentTool );  парсер . синтаксический анализ ( MidiSystem .getSequence ( новый  файл ( "YourMidiFile.mid" )));  // Меняем на настоящее имя файла  Список < String >  instrumentNames  =  instrumentTool . getInstrumentNames ();  for  ( Строковое  имя  :  instrumentNames )  {  System . из . println ( имя );  }  } }class  InstrumentTool  расширяет  ParserListenerAdapter  {  частный  список < String >  instrumentNames ;  общедоступный  Инструмент Инструмент ()  {  супер ();  instrumentNames  =  новый  ArrayList < String > ();  }  @Override  public  void  onInstrumentParsed ( байтовый  инструмент )  {  String  instrumentName  =  MidiDictionary . INSTRUMENT_BYTE_TO_STRING . получить ( инструмент );  if  ( ! instrumentNames . содержит (имя инструмента ))  {имя  инструмента . добавить (имя инструмента );  }  }  public  List < String >  getInstrumentNames ()  {  вернуть  это . instrumentNames ;  } }

JFugue предоставляет функциональные возможности поверх классов Java Transmitter и Receiver, чтобы уменьшить объем кода, который разработчику потребуется написать для подключения к внешним MIDI-устройствам.

Использование в других приложениях [ править ]

JFugue использовался во многих приложениях, включая программные проекты и художественные инсталляции.

  • TransProse, превращающая классические романы в музыку, использует JFugue [6]
  • JFugue Music NotePad предоставляет пользовательский интерфейс для создания музыки [7]
  • JFrets - приложение для обучения игре на гитаре табулатуре [8]
  • Log4JFugue - это утилита для преобразования файлов журнала, созданных log4j, в музыкальные паттерны; это позволяет отслеживать изменения в файле журнала, что обеспечивает совершенно иной опыт, чем построчное чтение файла. [9] [10]
  • Audovia - это приложение базы данных для создания музыки с использованием JFugue MusicStrings [11]

JFugue использовался для воспроизведения музыки в случае сбоя или успеха сборки программного обеспечения.

JFugue - одна из немногих библиотек Java, которая позволяет делать что-то интересное, используя всего одну или две строчки кода. Эта награда принесла JFugue место в книге "Groovy in Action" [12].

Ссылки [ править ]

  1. ^ Юбэнкс, Brian D. (2005), " Злая Прохладный Java ". С. 154–156.
  2. ^ http://www.jfugue.org/download.html
  3. ^ "Полное руководство по JFugue," Глава 2, http://www.jfugue.org/4/jfugue-chapter2.pdf Архивировано 4 марта 2016 г. на Wayback Machine "
  4. ^ "slideshare.net/dmkoelle/4130-musical-programs"
  5. ^ Recordare LLC, http://www.recordare.com/xml/software.html
  6. ^ О TransProse, " http://www.musicfromtext.com/about.html Архивировано 4 апреля 2015 г.в Archive.today "
  7. ^ Проект JFugue Music NotePad, " https://java.net/projects/nbjfuguesupport "
  8. ^ Проект JFrets, " https://jfrets.dev.java.net/ Архивировано 28 июля 2007 г.на Wayback Machine "
  9. ^ Log4JFugue, " http://log4jfugue.org/ "
  10. ^ Журнал PragPub, выпуск 3, сентябрь 2009 г., " http://www.pragprog.com/magazines/download/3.pdf "
  11. ^ Audovia, " https://songbase.github.io/ "
  12. ^ Кениг, Дирк и др. (2007)

Внешние ссылки [ править ]

  • JFugue.org - официальный веб-сайт JFugue.