guía del usuario de jfugue

40
Guía del usuario de JFugue Cómo JFugue en http://www.jfugue.org . Vea las novedades de JFugue 2,0 en el apéndice. Impresión sugerencia: Si desea imprimir esta guía, se recomienda imprimir en modo horizontal. Las páginas más amplios permitirá que todos los valores en elapéndice para que quepa en la página correctamente. Tabla de contenidos Bienvenido a JFugue Fundamentos de JFugue Presentación de la Cadena de música o Notas, acordes y silencios, Notas Octava Duración Acordes Velocidad Notas combinación Comandos de ejemplo para las notas o Tempo o Voz o Instrumento de Cambio o Mensajes del controlador o Definiendo constantes Introducción a Patrones o Patrones como partes de una canción o Las fábricas de patrones o Patrón Transformers o Pattern Herramientas o Escribir su propio patrón de fábrica o Escribir su propio patrón Transformer o Escribir su propio patrón Tool Analizar y Representación

Upload: oswaldo-valdez

Post on 03-Aug-2015

385 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Guía del usuario de JFugue

Guía del usuario de JFugueCómo JFugue en http://www.jfugue.org . Vea las novedades de JFugue 2,0 en el apéndice.Impresión sugerencia: Si desea imprimir esta guía, se recomienda imprimir en modo horizontal. Las páginas más amplios permitirá que todos los valores en elapéndice para que quepa en la página correctamente.

Tabla de contenidos Bienvenido a JFugue Fundamentos de JFugue Presentación de la Cadena de música

o Notas, acordes y silencios, Notas Octava Duración Acordes Velocidad Notas combinación Comandos de ejemplo para las notas

o Tempo o Voz o Instrumento de Cambio o Mensajes del controlador o Definiendo constantes

Introducción a Patrones o Patrones como partes de una canción o Las fábricas de patrones o Patrón Transformers o Pattern Herramientas o Escribir su propio patrón de fábrica o Escribir su propio patrón Transformer o Escribir su propio patrón Tool

Analizar y Representación o Escuchar el analizador o Idea: una Partituras Renderer o Adición de nuevos tokens para la cadena de música

Cómo trabajar con MIDI o Guardando su música en archivos MIDI o Obtención de la secuencia MIDI

Programas de ejemplo

Page 2: Guía del usuario de JFugue

o Ejemplo 1: A Simple Song o Ejemplo 2: "Frere Jacques" o Ejemplo 3: "Frere Jacques" como una ronda

Apéndice o ¿Qué hay de nuevo en 2,0 JFugue

La actualización a 2.0 JFugue o Nombres de instrumentos o Nombres de percusión o Nombres de los controladores o Combinado nombres de los controladores

Bienvenido a JFugueJFugue es una API de Java para la programación de música. Con JFugue, puede programar música de forma rápida y sencilla, y sin saber MIDI.JFugue se diferencia de otros de Java API música de dos maneras significativas. En primer lugar, programar música en JFugue, envía cadenas que especifican las notas, cambios de instrumento, mensajes de controlador y otros datos musicales. Estas cadenas se apresuran a crear y fácil de entender: por ejemplo, para reproducir un C, dices juego ("C"); . Otros objetos de la API a utilizar para representar cada nota en una partitura musical, lo que hace que la programación musical muy tedioso. O bien, que requieren bajo nivel manipulación de eventos MIDI.En segundo lugar, JFugue permite crear "patrones" de la música que puede ser manipulado, recombinar, y se transforma, lo que le permite jugar y experimentar con las declaraciones musicales de una manera nueva e interesante. ¿Quiere invertir su música, o cambiar todas las notas en tres intervalos? Todo lo que se necesita una llamada al método.JFugue está especialmente dirigido a desarrolladores que necesitan crear música durante el tiempo de ejecución. No se puede reproducir la música que ya ha sido grabado, porque no lo sé todavía lo que la música va a ser! Las aplicaciones incluyen música algorítmica o evolutiva, editores de música, y los improvisadores de jazz.Puede utilizar JFugue para reproducir música mientras se ejecuta la aplicación, o puede guardar música en archivos MIDI.JFugue es 100% basado en Java. Se utiliza el paquete javax.sound.midi para generar música.

Fundamentos de JFugueEn primer lugar, asegúrese de que tiene el entorno Java 2 Standard (J2SE) versión 1.3 o posterior. Se necesita al menos la versión 1.3, porque esa es la versión que tiene los paquetes javax.sound.midi.

Page 3: Guía del usuario de JFugue

Es posible que desee para ver si otros bancos de sonidos MIDI están disponibles para su instalación de Java. Instalación de bancos de sonido adicionales pueden darle más ricos sonidos del instrumento.Después, usted necesita el paquete JFugue, jfugue.jar, que se puede descargar aquí. Recuerde dónde poner jfugue.jar, dondequiera que sea, vamos a llamar a ese directorio%% JFUGUE_DIR.Ahora está listo para crear su aplicación de música primero! Vamos a caminar a través de un programa rápido, así que usted puede estar seguro de que tienes todo configurado correctamente. A continuación, vamos a entrar en más detalles acerca de la programación JFugue.Crear un nuevo archivo llamado MyMusicApp.java y entrar en este programa:

importar org.jfugue *.;

público MyMusicApp clase{

public static void main (String [] args){

Jugadores Jugadores Jugadores = new ();Patrón patrón patrón = nuevo ("CDEFGA B");player.play (patrón);System.exit (0);

}}

Guarde el archivo y compilarlo, asegurándose jfugue.jar está en la ruta de clases:javac-classpath%% JFUGUE_DIR \ jfugue.jar MyMusicApp.java

Y correr ...java-classpath%% JFUGUE_DIR \ jfugue.jar MyMusicApp

Encienda sus altavoces - su primera aplicación JFugue debe cantar para ti No era tan fácil?(Tal vez se pregunte por qué es necesario poner System.exit (0); al final del programa Resulta que las clases Java MIDI abiertas un montón de temas, pero no todos están bien cerrada cuando la canción es. hecho de tocar. Esto evita que el programa de fin en sí mismo, pero no afectará de otro modo a la ejecución del programa.)

Presentación de la Cadena de músicaLa Cadena de música se utiliza para especificar las notas, cambios de instrumentos, y otros datos necesarios para reproducir música. Junto con Patrones , es una de las dos características de JFugue que lo hacen único, fácil de usar, ideal para crear y experimentar con la música.La Cadena de música es una cadena de caracteres, donde cada grupo de personajes representa un comando musical. No importa que el analizador si

Page 4: Guía del usuario de JFugue

utiliza caracteres en mayúsculas o minúsculas, pero las directrices de estilo siguientes se recomiendan para ayudar a mantener sus cuerdas Música legible:

1. Utilice Lettes de capital para los comandos y notas2. Utilizar caracteres en minúscula para duraciones3. Usado con mayúsculas y minúsculas para los nombres de instrumentos y

el tambor¿Qué comandos se encuentran disponibles?Aquí está una lista de los tipos de comandos disponibles en una cadena de música.

1. Notas, acordes y silencios  : Especifique una nota o un acorde para jugar, así como su duración. También puede indicar la velocidad de una nota.

2. Tempo  : Especifica la velocidad de la canción.3. Voz  : Indica la voz (también conocido como el canal o pista) en la que las

notas se van a reproducir.4. Cambio de instrumento  : Cambiar el instrumento o parche, que se utiliza

para tocar las notas.5. Mensajes del controlador  : Ajuste cualquiera de los eventos de

controlador MIDI, incluyendo portamento, el equilibrio, y mucho más.6. Variables  : Definición de un valor de uso por parte de otros comandos.

Notas, acordes y silencios,Un comando de nota comienza con el nombre de la nota o acorde raíz, o el resto de caracteres: A , B , C , D , E , F , G , o R , o bien, con una representación numérica de la nota, que se explica a continuación. En los párrafos siguientes se describen detalles adicionales que puede especificar para una nota.NotasPuede indicar que una nota es bemol o sostenido mediante el uso de la # y b caracteres, respectivamente.Además de especificar una nota con la carta en cuenta que hay otras dos formas de especificar una nota. Uno es utilizar el valor de la nota , que es un valor numérico que indica la nota. MIDI dispone de 128 notas, numerados del 0 al 127. Nota 60 es Medio-C. Para especificar un valor de nota, encierre el valor entre corchetes, por ejemplo [60] .La segunda manera es utilizar un nombre percusión . En MIDI, la voz décimo (voz 9, las voces empiezan por 0) está reservado para los sonidos de percusión. Hay un montón de sonidos de percusión diferentes que puede jugar en esa voz, y esto puede hacerse dando el nombre percusión entre paréntesis. Por ejemplo,[Hi_Bongo] . Apéndice: Los sonidos de percusión se muestran los nombres de los sonidos de percusión disponibles.Vamos a hablar de acordes un poco más tarde.

Page 5: Guía del usuario de JFugue

OctavaMIDI es capaz de reproducir las notas que abarcan 10 octavas. Este diagrama muestra las octavas más comunes.

Para indicar una octava, utilice los números 0 a través de nueve (recuerde, contando en el inicio de MIDI a 0, por lo que del 0 al 9 es 10 octavas). Por ejemplo, aquí hay una nota de A en la sexta octava: A6 .Si no se especifica la octava, el valor predeterminado es 5 Octave, que incluye Middle-C (así, Middle-C se puede representar por tanto C y C5 ).DuraciónLa duración indica durante cuánto tiempo para tocar la nota. Los siguientes valores están permitidos. Si no se introduce una duración, el valor predeterminado es una negra.

1. w - duración total2. h - duración media3. q - Duración trimestre4. i - Duración octavo5. s - duración decimosexto6. t - treinta segundos de duración7. x - 64a duración8. n - 1/128 ª duración

Puede especificar una duración de puntos, siguiendo el carácter duración con un punto ('.'). La duración de una nota punteada es la duración original, además de la duración media.Puede añadir duraciones a conseguir una mayor duración. Por ejemplo, . qh sería una negra y una nota media de puntos; wwww es de cuatro notas enteras.Además de especificar una duración de una carta, también puede especificar la duración como una fracción decimal. Un cuarto de nota sería de 0,25, una corchea sería 0,125, y así sucesivamente. Para representar un número como una fracción decimal, utilizar el / carácter, seguido por la fracción. Por ejemplo, el siguiente es un A nota, octava cuarto, la duración media: A4/0.5 .Echemos un vistazo a algunos ejemplos. He aquí una nota media C5: C5H . ¿Puedes pensar como se indica un fa sostenido, octava cuarta nota,

Page 6: Guía del usuario de JFugue

trimestre? La respuesta es F # 4q o F 4/0.25 # si está utilizando fracciones decimales.AcordesUna vez que haya especificado la raíz de un acorde, puede dar a su estructura. Todas las notas de un acorde se reproducen utilizando el mismo instrumento, con la misma voz.Aquí están las estructuras de acordes que son reconocidos por JFugue:

1. maj - Major2. min - Minor3. maj7 - Major séptimo4. min7 - Minor séptimo5. dim - Disminución6. agosto - Aumentada7. aug7 - Aumentada séptimo8. sos - Sostenida9. add9 - Añadir 9

El indicador acorde va directamente después de la raíz, y antes de la octava o duración. Por ejemplo, un Do mayor, quinta octava nota, cuarto sería Cmaj5q .¿Cómo se especifica un acorde de re menor, tercera nota octava, todo? La respuesta es Dmin3w .Nota especial para los acordes en la séptima octava: Si quieres tocar un acorde mayor, menor o aumentada en la octava séptima, utilice valor de nota en lugar de notas reales. Por ejemplo, en vez de Cmaj7 para indicar un acorde de Do mayor en la octava séptima, utilice [84] maj . 84 es el número de nota para C7. Usted puede entender cómo el analizador fácilmente se confunden entre Cmaj7 significado "C-acorde mayor séptima en la octava" y "C-major-séptimo acorde". De hecho, si usted hizo decir Cmaj7 , se llega a un acorde de séptima mayor, con C5 como root (utilizando el valor predeterminado de la octava). Por cierto, Cmaj75le daría lo mismo.VelocidadUsted puede indicar cuán dura es la nota es golpeada, y la rapidez con la nota se libera.Para indicar la fuerza con una nota es golpeada, establecer la velocidad de ataque usando el un indicador, seguido de un valor de 0 a 127. Para indicar la rapidez con una nota se libera, establecer la velocidad de decaimiento usando el d indicador, seguido de un valor de 0 a 127.La velocidad de ataque y la velocidad de decaimiento defecto para cada nota es 64. Por cierto, este es un valor estándar por defecto para los dispositivos MIDI que no son compatibles con la velocidad.

Page 7: Guía del usuario de JFugue

He aquí un ejemplo: C5qa120d30 . Esto representa un Medio C, duración trimestre, que es golpeado muy fuertemente (120), y se libera suavemente (30).Notas combinaciónHay dos caracteres especiales que se pueden utilizar para combinar notas. El signo más ( + ) personaje puede utilizar para reproducir varias notas en al mismo tiempo (en armonía). El guión bajo ( _ ) carácter se puede utilizar para tocar las notas en orden (en la melodía), cuando la melodía se juega con una armonía. Los escenarios siguientes ilustran esto.

Éstos son C, E, G y jugó en una melodía. La cadena de música para representar esta pieza musical es C5q E5q G5Q . No hay nada nuevo aquí.

Usted puede jugar más de una nota al mismo tiempo con la misma voz. Para ello, conecte las notas con el signo más ( + ) characer. Por ejemplo, C5q + + E5q G5Q jugará la C, E, G y notas, duración trimestre, al mismo tiempo. En este caso en particular, pero también puede representar esta armonía como un acorde, ya que estas notas forman un acorde de Do mayor: Cmaj5q

También puede reproducir varias notas al mismo tiempo, con una duración mixtos. Utilice el carácter de subrayado ( _ ) para indicar las notas que deben ser jugados en secuencia, mientras que la secuencia juega en paralelo con otras notas. Por ejemplo, este conjunto de notas sería interpretado por el comando C5H + E5q_G5q .

Comandos de ejemplo para las notasNota Los comandos son muy útiles, y como se escribe la música para JFugue, usted encontrará que sean fáciles de entender. Inicialmente, puede parecer un poco intimidante. Estos son algunos ejemplos, que las descripciones que pueden ayudarle a entender mejor.

1. A - Juega una nota de A, quinto octava (por defecto), la duración trimestre (por defecto).

2. Rw - Un descanso de todo el período.3. Cmaj3w - Toque un acorde de Do mayor, octava 3, la duración entera.4. [77] h - Juega nota # 77 (equivalente a una F, 6 de octava - recuerda la

nota # 60 es Medio-C), la duración media.5. [Cowbell] qi - Esta nota es para voz 9, el canal de percusión. Se reproduce

un sonido de cencerro durante un cuarto más duración octavo. Si jugaste esta nota en una voz que no sea voz 9, se obtendría Nota N º 56, ya que el código de un cencerro es 56 (ver la lista de sonidos de percusión para obtener más información). Eso sería A #, 4 ª octava.

Page 8: Guía del usuario de JFugue

6. D4Q + + F4q A4Q - Reproduce la D notas, F, y junto A, lo que jugaría las mismas notas que Dmin4q .

7. C5W + + E5h_G5h Dmaj3w - Reproduce una nota C, duración quinta octava, todo; al mismo tiempo, desempeña un E, quinta octava, duración media, seguido por una duración T, quinta octava, media; al mismo tiempo, desempeña un D-acorde mayor, tercera octava duración, entero. Tenga en cuenta que una mejor manera de jugar esta podría ser la de tocar las notas en una sola voz y el eco en otra voz, por ejemplo, V0 V1 C5W + E5h_G5h Dmaj3w o V0 C5W V1 V2 E5h G5h Dmaj3w .

TempoEs necesario indicar el tempo de su canción - lo rápido o lento que la canción debería ser jugado. El valor del tempo representa "Pulsos por trimestre", o PPQ, que es el número de "pulsos", o ciclos de reloj, para dar una nota negra. Un valor más pequeño dará lugar a una canción más rápido, y un número más grande resultará en una canción más lenta. Un buen valor para empezar es de 120, lo que es la opción por defecto si no specfy un tempo.Usted sólo tiene que especificar el tempo una vez en la cadena de música, incluso si está utilizando múltiples voces. Distintas voces no pueden tener ritmos diferentes. Además, no importa donde se especifica el tempo en la cadena de música, aunque se recomienda que lo coloca en el comienzo de una canción.El comando es un T, seguido de un número de 0 a infinito. Por ejemplo: T120 .VozEl comando de voz dice JFugue para reproducir las notas siguientes en la voz dada MIDI (también conocido como un canal ). Usted puede pensar en una voz como una pista musical. Las voces le dan la capacidad de reproducir melodías de múltiples al mismo tiempo. Si está programando música de piano, se puede utilizar una sola voz por la clave de sol, y una segunda voz de la clave de fa. Si va a crear una pieza sinfónica, puede dar a cada instrumento su propia pista.El comando es un V, seguido por un número de 0 a 15. Por ejemplo: V5Hay 16 voces, numeradas del 0 al 15. La voz décimo (o canal) es especial - es el canal que reproduce los instrumentos rhythym. Las notas tocadas en este sonido de voz como tambores, platillos, bloques de madera, y otros instrumentos de percusión. Ya que estamos contando desde 0, la voz décimo voz 9. Durante la reproducción de notas de voz 9, puede utilizar nombres de percusión para representar a los instrumentos de percusión, véase el comando Nota para obtener más información al respecto.Instrumento de CambioEl comando Cambiar Instrumento dice JFugue a tocar las notas siguientes con el número determinado instrumento MIDI o el nombre.

Page 9: Guía del usuario de JFugue

El comando es una I, seguido por un número de 0 a 127, o el nombre de un instrumento entre corchetes:

I9I [guitarra]

Cambios de instrumento (también conocidos como cambios de patch ) son específicos de la voz en el que se realiza el cambio. En el ejemplo siguiente, las notas A y B se jugarán con el piano, y C y D con la flauta:

V0 I [Piano] A V1 I [Flauta] C V0 V1 B D

Apéndice: Nombres de instrumentos contiene preestablecidos nombres de instrumentos. También puede crear sus propios nombres para los aparatos que utilizan el comando Variable .Mensajes del controladorEl protocolo MIDI define alrededor de 100 eventos de controlador, que se utilizan para especificar una gran variedad de configuraciones que controlan el sonido de la música. Estos incluyen pedales, balance de izquierda a derecha, portamento (notas deslizantes entre sí), trémulo y mucho más. Para obtener una lista completa, consulte el documento de especificaciones MIDI.El mandato de controlador, X , cuenta JFugue para establecer el controlador dado:

X controller_number = valorX37 = 18X [Chorus_Level] = 64

Si está familiarizado con los controladores MIDI, usted sabe que hay 14 controladores que tienen tanto "gruesos" y "finos" ajustes. Estos controladores esencialmente tienen 16 bits de datos, en lugar de los típicos 8 bits (un byte) para la mayoría de los otros. Hay dos maneras que usted puede especificar ajustes gruesos y finos.La primera forma es bastante aburrida:

X [Foot_Pedal_Coarse] = 10X [Foot_Pedal_Fine] = 65

Seguramente, JFugue puede ser más inteligente que eso. De hecho, es: Para cualquiera de esos 14 eventos de controlador que tienen componentes gruesos y finos, se puede especificar ambos valores al mismo tiempo:

X [Foot_Pedal] = 1345

Ahí lo tienen. Quiere ajustar el volumen a 10200, sobre un total de 16383? No hay necesidad de averiguar lo que el byte alto y el byte bajo de 10.200 son. Sólo tiene que usar X [Volumen] = 10200 .

Page 10: Guía del usuario de JFugue

El valor numérico del volumen de palabra es igual a un número de 16-bits, utilizando el valor de VOLUME_COARSE como el byte alto, y el valor para VOLUME_FINE como el byte bajo.Algunos eventos de controlador tiene dos ajustes: ON y OFF. Normalmente, ON significa 127 y OFF significa 0. JFugue ha definido dos constantes, ON y OFF, que se puede utilizar en lugar de los números: X [Local_Keyboard] = ON . JFugue también ha definido DEFAULT, que se fija a 64 años.Definiendo constantesCuando usted está programando música, su tarea principal es hacer sonidos hermosos - para no ser inundado con números aleatorios y sin sentido. Usted debe ser capaz de establecer el volumen y el uso de la flauta, sin tener que recordar que el volumen es 935 y FLAUTA es 73.El comando para establecer una constante es la siguiente:

$ Palabra = DEFINICIÓN

He aquí un ejemplo: $ ELEC_GRAND = 2 . Por supuesto, JFugue ya ha definido ELECTRIC_GRAND a ser 2. Pero tal vez usted quisiera utilizar un nombre más corto, o tal vez usted tiene un nombre más memorable de este instrumento, como simplemente ELEC.JFugue define un grupo de constantes - alrededor de 360! - Para cosas como nombres de los instrumentos, instrumentos de percusión, y eventos de controlador.La creación de estas definiciones es el trabajo de la clase JFugueDefinitions.Las palabras que se definen con el comando constantes se pone en el Diccionario JFugue, listo para ser consultado cada vez que se refieren a ellos.Las constantes son también útiles en casos en los que tienen una configuración que es posible que desee cambiar algún día. Suponga que quiere jugar un poco de música con su instrumento favorito, el piano. Usted podría definine FAV_INST a ser 0, y entonces usted puede decir que [Fav_Inst] cuando desee utilizarlo.Pero si su instrumento favorito nunca cambia, todo lo que tiene que cambiar en la cadena de música es la definición de FAV_INST, usted no tiene que cambiar todo lugar que se refieren a su instrumento favorito.Usted puede utilizar una constante en cualquier lugar donde un número era de esperar, con la excepción del valor de octava (pero eso está bien, porque sólo se puede especificar la misma nota, con la octava, como un solo número), y si usted está utilizando una constante durante un tiempo, usted tiene que utilizar valores decimales duración (y preceder a la duración con una barra, / ).Usted debe colocar la palabra constante entre corchetes, pero dependiendo de las circunstancias, el analizador probablemente todavía entender la palabra si no utiliza los soportes.

Page 11: Guía del usuario de JFugue

Introducción a PatronesUn patrón es una colección de notas que comprenden una declaración musical. Un patrón puede representar toda una canción, las partes individuales de una canción, o fragmentos de música de uso frecuente. Los patrones pueden ser creados a partir de otros patrones, y la música en un patrón se puede transformar de una manera interesante y creativa.Patrones como partes de una canciónLos patrones pueden ser usados para representar partes de una canción. Supongamos que usted está escribiendo una roca estándar o una canción pop. Usted puede romper su canción en las siguientes partes:

Introducción El versículo 1 Coro El versículo 2 Coro Desglose / Interlude El versículo 3 Coro Outro

Muchas de estas piezas comparten similitudes. Por ejemplo, el coro probablemente será la misma en toda la canción. Los versos tendrán la misma música, aunque las palabras son diferentes. El outro es probable que se repita el coro como se desvanece.Para programar esto en JFugue, puede crear las secciones de la música como los patrones: Patrón de introducción = new Patrón (" cadena de música "); Verso Pattern Pattern = nuevo (" cadena de música "); Coro = Patrón de nuevo (" cadena de música "); Desglose Pattern Pattern = nuevo (" cadena de música "); Patrón outro = new Patrón (" cadena de música ");

A continuación, puede crear la canción con esas secciones. Incluso vamos a crear un verseAndChorus patrón, ya que se repite tres veces: VerseAndChorus = Patrón de nuevo (); verseAndChorus.add (verso); verseAndChorus.add (coro);

Canción Pattern Pattern = new (); song.add (intro); song.add (verseAndChorus, 2) / / Esto agrega verseAndChorus dos veces song.add (descomposición); song.add (verseAndChorus); song.add (outro);

Page 12: Guía del usuario de JFugue

Puede reproducir la canción entera diciendo player.play (canción); . También puede reproducir las secciones fuera de la misma canción: player.play (descomposición); .Las fábricas de patronesSi va a crear una canción que tiene una pista de batería, ¿no sería genial si pudieras hacer una llamada a un método que al instante le pondrías a ritmo de rock, o un ritmo 8-Beat, o incluso un ritmo Swing? Con JFugue, usted puede!Una fábrica patrón le da un patrón que usted puede utilizar en sus propias canciones. También puede escribir sus propias fábricas de patrones - y si usted cree su propio y ponerlas en la web, que me haga saber para que yo pueda vincular a usted para que otros usuarios de todo el mundo puede utilizar sus ritmos.Una llamada de fábrica patrón es el siguiente:

RockPatternFactory rpf = new RockPatternFactory ();Patrón de ritmo = rpf.getPattern (0);

¡Eso es!RockPatternFactory se suministra con JFugue, y se puede encontrar en el paquete de org.jfugue.demo.Algunas fábricas también ofrecen diferentes partes al mismo ritmo. Por ejemplo, RockPatternFactory tiene un patrón de relleno que se puede acceder congetPattern (2); . Se podía oír a todos los patrones diferentes a PatternFactory pueden producir al llamar al método patrón de la fábrica getDemo:

Jugadores Jugadores Jugadores = new ();RockPatternFactory rpf = new RockPatternFactory ();Demo del Patrón = rpf.getDemo ();player.play (demo);

La demostración se reproducirán todos los diferentes modelos que la fábrica puede producir, sumadas en un patrón que se devuelve desde getDemo () .Información sobre escribiendo su propio patrón de fábrica se proporciona a continuación .Patrón TransformersUna de las mejores cosas acerca de los patrones de la música es que se puede aplicar una transformación en ellos, y obtener música diferente, basado en la misma base musical.¿Cuáles son algunas cosas que usted puede hacer para transformar un patrón? Hay muchos, aquí están algunas ideas:

Page 13: Guía del usuario de JFugue

Ordenar las notas por orden de mayor a menor, o de otra forma reorganizar su orden

Aumente el intervalo entre las notas Añadir un eco a las notas Realice notas en un modelo con trémolo

La lista de transformaciones posibles es ilimitado, por lo que usted es capaz de crear sus propios transformadores de patrones.El paquete viene con un JFugue transformadores patrón pocos. Son todos XxxxPatternTransformer nombre, donde xxxx indica lo que hacen - por ejemplo, los cambios IntervalPatternTransformer los intervalos entre las notas, cambios DurationPatternTransformer la duración de las notas, y ReversePatternTransformer invierte un patrón.Antes de utilizar un transformador patrón, usted tiene que saber cuáles son las variables que esperan. Por ejemplo, el IntervalPatternTransformer necesita saber cuántos pasos para cambiar los intervalos entre las notas. Esta información se puede encontrar en los comentarios del código transformador patrón, o en la documentación que acompaña al transformador. También hay un método, getVariables (), que se puede llamar en un transformador. Si imprime esa salida, ya verás lo que se requiere:

IntervalPatternTransformer ipt = new IntervalPatternTransformer ();String salida = ipt.getVariables ();System.out.println (salida);

Si estás escribiendo un programa de edición de música y desea utilizar transformadores de patrón, puede utilizar los getVariables () para obtener una lista de las variables necesarias, que luego se pueden presentar en la interfaz de usuario. La salida de getVariables () debe ser fácil de analizar.Para establecer una variable transformador patrón, utilice el setVariable () método. Este método toma dos argumentos. La primera es una cadena que representa el nombre de la variable. Puede escribir la cadena real, pero para mantener a las mejores prácticas de programación, lo mejor es utilizar las constantes proporcionados por la clase para representar la cadena. Por ejemplo, IntervalPatternTransformer define un intervalo constante estática, que contiene la cadena "Intervalo". Si mis-escriba el intervalo palabra para referirse a la constante, obtendrá un error en tiempo de compilación que se puede corregir inmediatamente.Pero si te quedas a escribir mal la cadena "Intervalo", el programa se compile limpiamente, a pesar de que no funcionará como se espera.

Jugadores Jugadores Jugadores = new ();Patrón patrón patrón = nuevo (" cadena de música ");IntervalPatternTransformer ipt = new IntervalPatternTransformer ();ipt.setVariable (IntervalPatternTransformer.INTERVAL, 2);

Page 14: Guía del usuario de JFugue

Patrón transformedPattern = ipt.transform (patrón);player.play (transformedPattern);

Información sobre escribiendo su propio patrón transformador se proporciona a continuación .Pattern HerramientasLos patrones son una gran manera de manejar las secciones de una declaración musical. Como usted está usando patrones, usted puede darse cuenta de la necesidad de realizar algún cálculo en un patrón. ¿Cuánto tiempo toma este patrón de juego? ¿Cuál es la última voz que se ha utilizado en este patrón? ¿Cuántos billetes hay en este patrón?Herramientas preestablecidas se utiliza para realizar cálculos a través de un patrón. Al igual que los transformadores de patrones, son oyentes del analizador, y funcionan mediante el análisis del patrón, y el desempeño de sus calcuations cuando el analizador realiza devoluciones de llamada a los métodos de eventos (por ejemplo, voiceEvent (voz Voice) ).Existe un patrón de herramientas que se incluye con JFugue. DurationPatternTool le permite saber cuánto tiempo un patrón juega. Puede utilizar DurationPatternTool como un ejemplo para sus propias herramientas.Para utilizar una herramienta de dibujo, en primer instancia de la herramienta, a continuación, llamar a su ejecución método. La ejecución de método toma un patrón como parámetro y devuelve un objeto con el resultado. También puede obtener el resultado de un cálculo herramienta patrón que ya se ha realizado, llamando al getResult () . He aquí un ejemplo:

Patrón patrón patrón = nuevo (" cadena de música ");DurationPatternTool dpt = new DurationPatternTool ();System.out.println ("Duración del modelo es" + dpt.execute (pattern));

Información sobre escribiendo su propio patrón transformador se proporciona a continuación .Escribir su propio patrón de fábricaEscribir su propio patrón de fábrica es fácil. Basta con crear una nueva clase que se extiende PatternFactory y rellene el getPattern (int whichPattern) ygetDemo () métodos.getPattern (int) debe devolver un patrón, y usted puede devolver diferentes modelos basados en el valor pasado pulg Si usted está creando un ritmo de 8 tiempos, por ejemplo, es posible que desee hacer un 0 regresar el ritmo base, un 1 devolver un ritmo base ligeramente diferente, una vuelta 2 una avería, un retorno 3 una introducción, y un retorno del 4 un outro. El código podría tener el siguiente aspecto:

Page 15: Guía del usuario de JFugue

público Patrón getPattern (int whichPattern){Patrón patrón patrón = new ();

interruptor (whichPattern) {defecto,case 0: pattern.setMusicString (" Notas para el ritmo de base ");

break;Caso 1: pattern.setMusicString (" Notas para el ritmo de base

alternativo "); break;

Caso 2: pattern.setMusicString (" notas de ruptura "); break;

Caso 3: pattern.setMusicString (" notas de introducción "); break;

Caso 4: pattern.setMusicString (" notas para outro "); break;

}

volver patrón;}

También hay que profundizar en los getNumberOfPatterns () método. Este método devuelve un entero que indica cómo los patrones de muchos de su fábrica puede producir. Recuerde que debe empezar a contar a 0 - por lo que si su patrón fábrica produce 5 patrones, deben estar numeradas del 0 al 4 en su getPattern () método.La clase PatternFactory crea automáticamente una demo para su fábrica. Este se compone de un número de pitidos que indican qué modelo se reproducirá (0 patrón consigue ningún pitidos), seguido por el patrón. La demostración utiliza getNumberOfPatterns () para determinar cómo los patrones de muchos la fábrica puede producir. Utilice el getDemo () método para obtener una demostración de PatternFactory.Escribir su propio patrón TransformerA PatternTransformer puede hacer algunas cosas poderosas con sus patrones. La posibilidad de modificar los patrones musicales es una característica única que sólo JFugue entrega.En primer lugar, crear una nueva clase que se extiende PatternTransformer . PatternTransformer implementa ParserListener. Cuando el objeto analizador traduce patrones musicales de cuerdas a los datos que es más fácilmente entendido por el ordenador, envía los eventos a ParserListeners.Su patrón Transformer también escuchar los eventos analizados. El transformador puede hacer cosas interesantes con estos eventos.Lo primero que debe hacer es reemplazar los métodos ParserListener. Hay siete de ellos, pero usted no tiene que anular todos ellos. Cada se implementa en

Page 16: Guía del usuario de JFugue

PatternTransformer sí; allí, el método simplemente añade el evento para el patrón de retorno. Si se extiende PatternTransformer pero no reemplazar cualquiera de los métodos de evento, recibirá un transformador patrón que simplemente devuelve el mismo patrón que se fue adentro Estos son los siete métodos de evento:

public void voiceEvent (voz Voz)public void tempoEvent (Tempo tempo)instrumentEvent public void (Instrumento)público controllerEvent vacío (controlador de controlador)noteEvent public void (note Nota)sequentialNoteEvent public void (note Nota)parallelNoteEvent public void (note Nota)

Si va a crear un Transformer que modificará los valores de nota, asegúrese de que los tres métodos de notas realizar la transformación. Para obtener más información sobre la escucha analizador, consulte esta sección .Agregue todos los cambios en el returnPattern variable. returnPattern se define por PatternTransformer.java, y es el patrón que sostiene el modelo transformado.He aquí un ejemplo de un transformador que siempre va a convertir todos los cambios de instrumento flauta en saxofones:

instrumentEvent public void (Instrumento){

/ / La flauta es el instrumento 73/ / El Soprano_Sax es 64 Instrumentosi (instrument.getInstrumentNumber () == 73) {

instrument.setInstrumentNumber (64);}

returnPattern.addElement (instrumento);}

Cuando estás tratando con evento de nota, siempre se encargará tanto de la propia nota y su duración como valores, no como letras. Así que, aunque se puede decir C5q a desempeñar un C-nota, octava quinta, la duración trimestre, en sus métodos noteEvent, se le trata de [60] / 0.25 . Esto hace que sea muy fácil de modificar valores de las notas y duraciones, ya que todo lo que tienes que hacer es un poco de matemáticas - usted no tiene que interpretar las letras.He aquí un ejemplo, directamente desde DurationPatternTransformer. Cambia la duración de las notas sobre la base de un factor que se pasa como una variable.Por razones de brevedad, sólo los métodos de devolución de llamada de eventos importantes se muestran.

noteEvent public void (note Nota){

doble durationValue note.getTotalDurationNumber = ();durationValue * = ((Doble) GetVariable (FACTOR)) doubleValue ().;

Page 17: Guía del usuario de JFugue

note.setTotalDurationNumber (durationValue);

returnPattern.addElement (nota);}

sequentialNoteEvent public void (note Nota){

/ / Lo mismo cosas como en noteEvent}

parallelNoteEvent public void (note Nota){

/ / Lo mismo cosas como en noteEvent}

Además de los métodos de evento de devolución de llamada, usted tiene que anular getDescription () , que debe devolver una cadena que da una breve descripción de lo que hace este transformador.A continuación, hay que indicar al usuario qué variables son requeridos por el transformador. Por ejemplo, la IntervalPatternTransformer requiere que el usuario diga del transformador por cuántos intervalos para transformar un patrón.Para ello, ampliar las getVariables () método, y devolver una cadena que contiene la información necesaria.Existe un formato para los getVariables () de cadena que se deben seguir para mantener la coherencia. Observe el uso de comillas y barras.' nombre de la variable '/ tipo / descripción / default

Si usted necesita devolver cadenas múltiples, finalice cada cadena con un n \ , el carácter de nueva línea.Además, asegúrese de agregar sus cadenas al JavaDoc para los getVariables () método, así que los usuarios pueden aprender lo que el código necesita de su documentación.He aquí un ejemplo, directamente desde IntervalPatternTransformer:

/ ** * Devuelve una cadena que declarar las variables que IntervalPatternTransformer * Se puede utilizar para llevar a cabo la transformación. * <p> * IntervalPatternTransformer requiere lo siguiente: MedlinePlus * <i> "Intervalo" </ i> - Entero - Número de intervalos de * Que cambiar cada nota, puede ser positivo o negativo. * Predeterminado 1. * </ P> * /getVariables public String (){

Cadena ReturnString = "'intervalo' / int / Número de intervalos" + "Por la cual cambiar cada

nota, puede" +

Page 18: Guía del usuario de JFugue

"Ser positivo o negativo / 1";

volver ReturnString;}

Finalmente, una última cosa que hacer es crear un constructor para la clase que define los valores por defecto de las variables. Esto es importante porque de lo contrario, las personas (incluido usted mismo!) Que están usando su transformador y se olvida de establecer las variables se encuentra que sus errores en el programa en tiempo de ejecución.Cuando usted está declarando su propio constructor, asegúrese de llamar al constructor padre en primer lugar mediante super () . He aquí un ejemplo de IntervalPatternTransformer:

IntervalPatternTransformer público (){

super ();putVariable (INTERVAL, new Integer (1));

}

¡Ya está! Cuando alguien quiere usar el transformador, que tendrán que establecer las variables que se declaran a ser importante, y entonces pueden llamarYourPatternTransformer.transform ( patrón ) para obtener su patrón transformado!Una rápida revisión de los pasos:

1. 1. Ignorar cualquiera de los métodos de devolución de llamada Seven Event

2. 2. Cree un método getDescription que devuelve una cadena3. 3. Cree un método getVariables que devuelve una cadena que sigue el

formato estándar metioned arriba4. 4. Asegúrese de que su constructor inicializa las variables utilizadas por el

transformadorEscribir su propio patrón ToolEs bastante fácil de hacer su propia herramienta para realizar un cálculo en un patrón determinado. Al igual que el modelo Transformer, una herramienta de patrones es una ParserListener, por lo que puede reemplazar cualquiera de los siguientes métodos:

public void voiceEvent (voz Voz)public void tempoEvent (Tempo tempo)instrumentEvent public void (Instrumento)público controllerEvent vacío (controlador de controlador)noteEvent public void (note Nota)sequentialNoteEvent public void (note Nota)parallelNoteEvent public void (note Nota)

Page 19: Guía del usuario de JFugue

Además, como el Transformador Patrón, usted tiene que anular getDescription () , que debe devolver una cadena que da una breve descripción de lo que hace esta herramienta.Debe crear un reset () método. Este método se limita a establecer los contadores y las variables de la herramienta a sus estados iniciales. Se llama cada vez que se ejecuta la herramienta. Al exigir reset () , los usuarios pueden crear un objeto PatternTool una vez, luego volver a usarlo en varios patrones:

Patrón Patrón pattern1 = nuevo (" cadena de música 1 ");Patrón Patrón pattern2 = nuevo (" cadena de música 2 ");DurationPatternTool dpt = new DurationPatternTool ();System.out.println ("Duración del patrón 1 es" + dpt.execute (pattern1));

/ / Si execute () no llamó reset (), entonces la siguiente línea podría dar una mala/ / El resultado, ya que sus variables aún tienen cálculos de la primera/ / Tiempo fue utilizadoSystem.out.println ("Duración del patrón 2 es" + dpt.execute (pattern2));

Por último, es necesario crear un getResult () método. Este método devuelve la respuesta que la herramienta Patrón está destinado a calcular. Se llama al final de execute () , y también se puede llamar tantas veces como desee para obtener el resultado del cálculo, sin llegar a perfoming todo el cálculo de nuevo:

Patrón patrón patrón = nuevo (" cadena de música ");DurationPatternTool dpt = new DurationPatternTool ();System.out.println ("Duración del modelo es" + dpt.execute (pattern));System.out.println ("Ese nuevo valor es" + dpt.getResult ());System.out.println ("Una vez más, sin correr el cálculo:" + dpt.getResult ());

Analizar y RepresentaciónCuando se envía una cadena de música a JFugue, los tokens en la cadena se analiza, o intepreted. Estos símbolos interpretados y luego ir al procesador, lo que convierte a los eventos MIDI eventos musicales.Escuchar el analizadorCuando una señal se analiza, el analizador envía eventos de devolución de llamada a todos los oyentes del analizador. Usted puede escuchar a estos eventos para averiguar lo que el analizador está interpretando. Para escuchar eventos del analizador, su clase debe implementar ParserListener y añadir a la lista en sí del analizador analizador de oyentes con la addActionListener método.El Renderer es un ejemplo de un oyente analizador. En cada ficha se analiza, el Renderer recibe un evento, que se utiliza para añadir evnts MIDI a la secuencia de la música.

Page 20: Guía del usuario de JFugue

Existen siete métodos de devolución de llamada:

public void voiceEvent (voz Voz)public void tempoEvent (Tempo tempo)instrumentEvent public void (Instrumento)público controllerEvent vacío (controlador de controlador)noteEvent public void (note Nota)sequentialNoteEvent public void (note Nota)parallelNoteEvent public void (note Nota)

Observe que hay tres métodos diferentes para notas: noteEvent, sequentialNoteEvent y parallelNoteEvent. El método noteEvent se dispara cuando una sola nota viene a través, por ejemplo A5q . El método sequentialNoteEvent se dispara cuando el carácter de subrayado se utiliza para conectar las notas, como enA5q_C4q . El método parallelNoteEvent se dispara cuando el personaje más se utiliza para conectar las notas, o cuando se toque un acorde, como en A5q + C5q o Cminq .Idea: una Partituras RendererLa clase Renderer tiene eventos del analizador y los convierte en música. Del mismo modo, se podría crear una clase SheetmusicRenderer que tomaría eventos del analizador y convertirlos en gráficos.Adición de nuevos tokens para la cadena de músicaSi usted encuentra la necesidad de añadir nuevas fichas a la cadena de música, aquí es lo que debe hacer.En Parser.java, encuentra el bit interruptor comunicado, y agrega una entrada para el nuevo token. Asegúrese de que la señal comienza con un carácter que no está en uso.Crear un nuevo método que realmente va a hacer el análisis. Puedes modelar este método después de algo como parseInstrumentElement .El resultado final de su método de análisis debe llamar a una función callback de evento nuevo que se sumará a ParserListener.java. Para completar, también deberá actualizar ParserListenerAdapter.java y PatternTransformer.java, que tanto ParserListener implemento.Si desea ver el programa de análisis a medida que avanza sobre el análisis, activar el rastreo: Parser.setTracing (Parser.TRACING_ON) . También puede imprimir una nueva salida con el rastreo huella método.

Cómo trabajar con MIDICuando se reproduce un patrón de la música a través de JFugue, todo lo que se especifica en la cadena de música se analiza y se convirtieron en eventos MIDI.Son estos eventos MIDI que se escucha al reproducir una canción.Guardando su música en archivos MIDI

Page 21: Guía del usuario de JFugue

Puede guardar los resultados de su programa como un archivo MIDI. Todos los archivos MIDI disponibles en estas páginas fueron creadas con programas JFugue, las salidas de los cuales se guardan en MIDI.Guardar la canción como un archivo MIDI es muy fácil de hacer: player.save (" nombre de archivo "); . Tienes que lanzar un bloque try / catch en torno al método save, sólo en caso de que haya un problema al escribir en el archivo. He aquí un ejemplo más completo:

Jugadores Jugadores Jugadores = new (); Patrón patrón patrón = nuevo (" cadena de música "); try {

player.save (patrón, " nombre de archivo "); } Catch (Exception e) {

e.printStackTrace (); }

Usted no puede cargar datos MIDI en un jugador, porque el jugador siempre genera una secuencia nueva y fresca sobre la base de los patrones que se pide para jugar.Obtención de la secuencia MIDISi alguna vez siente la necesidad de obtener la secuencia MIDI después JFugue lo ha prestado, puede hacerlo utilizando player.getSequencer (); . El jugador no tiene un método setSequencer () porque siempre se crea un objeto nuevo secuenciador para reproducir música especificado por patrones.

Programas de ejemploUna de las mejores maneras de aprender algo nuevo es verlo en acción. Los ejemplos siguientes son programas completos que muestran cómo utilizar JFugue.Ejemplo 1: A Simple SongEn esta canción simple, usted será llevado a la cadena de música, que es la cantidad de datos de música está representada en JFugue. El modelo se divide en varias líneas, así que es fácil de leer.importar com.innix.jfugue.Player;importar com.innix.jfugue.Pattern;

Ejemplo 1 public class{public static void main (String [] args){

Jugadores Jugadores Jugadores = new ();Patrón patrón patrón = nuevo ("T160 I [Cello]" +

"G3q G3q G3q Eb3q Bb3i G3q Eb3q Bb3i G3H");player.play (canción);

}}

Page 22: Guía del usuario de JFugue

Ejemplo 2: "Frere Jacques"En este ejemplo, vamos a utilizar los patrones de replicar fácilmente piezas idénticas de la música. En la partitura abajo, te darás cuenta de que hay ocho medidas, pero las medidas 1 y 2 son duplicados de sí, al igual que las medidas 3 y 4, 5 y 6, y 7 y 8. En lugar de volver a escribir las medidas duplicadas, sólo podemos añadir que el patrón de la canción dos veces.

importar com.innix.jfugue.Player;importar com.innix.jfugue.Pattern;

FrereJacques public class{public static void main (String [] args){

Jugadores Jugadores Jugadores = new ();

/ / "Frere Jacques"Patrón Patrón pattern1 = nuevo ("C5q D5q E5q C5q");

/ / "Dormez-vous?"Patrón Patrón pattern2 = nuevo ("E5q F5q G5h");

/ / "Sonnez les matines"Patrón Patrón PATTERN3 = nuevo ("G5i A5i G5i F5i E5q C5q");

/ / "Ding ding dong"Patrón Patrón pattern4 = nuevo ("C5q G4q C5H");

/ / Poner todo juntoCanción Pattern Pattern = new ();song.add (pattern1);song.add (pattern1);song.add (pattern2);song.add (pattern2);song.add (PATTERN3);song.add (PATTERN3);song.add (pattern4);song.add (pattern4);

/ / Escuchar la canción!player.play (canción);

}}

Page 23: Guía del usuario de JFugue

Ejemplo 3: "Frere Jacques" como una rondaEl ejemplo anterior muestra cómo utilizar patrones para reproducir piezas similares de la música. En este ejemplo, vamos a convertir toda la canción en un patrón, por lo que se puede replicar toda la canción. Con esta técnica, podemos crear una ronda.Note como en este ejemplo, vamos a añadir secciones de canciones juntos en un solo patrón, como lo hicimos en el ejemplo 2. En el Ejemplo 2 de los patrones se reproducen en orden, pero en el Ejemplo 3 de los patrones se reproducirán al mismo tiempo. Para ello, añadimos cada patrón con una voz diferente con el V0 , V1y V2 comandos cadena de música. Todas las voces se reproducen simultáneamente. El Rw Rw Cadena Music representa dos enteros nota restos, que se utilizan para escalonar los patrones simultáneos para cada uno inicia dos medidas separadas.En este ejemplo se requiere el código del Ejemplo 2. Vuelva a colocar la "Reproducir la canción!" y "player.play (canción)" líneas en el Ejemplo 2 con el segmento de programa siguiente.Haga clic aquí para escuchar la canción de este programa genera: FrereJacques.mid

DoubleMeasureRest = Patrón de nuevo ("Rw Rw");

/ / Crear la primera vozPatrón Patrón RONDA1 = nuevo ("V0");round1.add (canción);

/ / Crear la segunda vozPatrón Patrón Round2 = nuevo ("V1");round2.add (doubleMeasureRest);round2.add (canción);

/ / Crear la tercera vozPatrón Patrón round3 = nuevo ("V2");round3.add (doubleMeasureRest);round3.add (doubleMeasureRest);round3.add (canción);

/ / Poner las voces juntasPatrón Patrón roundSong = new ();roundSong.add (RONDA1);roundSong.add (Round2);roundSong.add (round3);

/ / Escuchar la canción!player.play (roundSong);

Apéndice¿Qué hay de nuevo en 2,0 JFugue

Page 24: Guía del usuario de JFugue

JFugue 1,0 presentó al mundo JFugue, y dio los programadores de música una manera fácil de crear música usando cadenas musicales y patrones, y guardar archivos como MIDI.JFugue 2.0 mejora sobre la primera versión, e introduce las siguientes novedades:

Apoyo a eventos de controlador MIDI en la cadena de música Ataque y la velocidad de desintegración de notas, para indicar cómo

bruscamente una nota es golpeada, o con qué rapidez se lo libera Definibles por el usuario (constantes entradas de diccionario), para

referirse a los instrumentos, voces y otros valores en la cadena de Música de nombres que son especialmente memorable para usted

Introducción de Pattern Herramientas para realizar cálculos en un patrón JFugue paquete es ahora org.jfugue, no com.innix.jfugue Modificaciones internas para el analizador, que permite modificar el

analizador más claro Más completas comentarios JavaDoc

La actualización a 2.0 JFugueSi ha utilizado JFugue 1.0 y desea utilizar JFugue 2.0, usted debe saber lo siguiente:

El nombre del paquete ha cambiado. Para incluir los archivos JFugue, es necesario decir que la importación org.jfugue *;. lugar de importación com.innix.jfugue *.;

Eventos favoritos, que nunca fueron implementadas completamente, se han eliminado. Controlador de eventos se han añadido. Si ha creado las clases ParserListener o PatternTransformer, retire el bookmarkEvent (Agregar a favoritos) método, y añadir el controllerEvent (controlador de controlador) método.

Nombres de instrumentosLas siguientes palabras vienen predefinidos en el programa de análisis JFugue. Puede utilizar cualquiera de estos valores para especificar un instrumento. Por ejemplo, para reproducir música con el clavicordio, se puede decir que [Clavinet]

PIANO 0ACOUSTIC_GRAND 0BRIGHT_ACOUSTIC 1ELECTRIC_GRAND 2HONKEY_TONK 3ELECTRIC_PIANO 4ELECTRIC_PIANO_1 4ELECTRIC_PIANO_2 5HARPISCHORD 6Clavinet 7CELESTA 8

SYNTHSTRINGS_1 50SYNTHSTRINGS_2 51CHOIR_AAHS 52VOICE_OOHS 53SYNTH_VOICE 54ORCHESTRA_HIT 55TROMPETA 56TROMBON 57TUBA 58MUTED_TRUMPET 59

PAD_POLYSYNTH 90Polysynth 90PAD_CHOIR 91CORO 91PAD_BOWED 92Se inclinó 92PAD_METALLIC 93METALLIC 93PAD_HALO 94HALO 94PAD_SWEEP 95

Page 25: Guía del usuario de JFugue

GLOCKENSPIEL 9

MUSIC_BOX 10VIBRAPHONE 11MARIMBA 12XYLOPHONE 13TUBULAR_BELLS 14DULCIMER 15DRAWBAR_ORGAN 16PERCUSSIVE_ORGAN 17ROCK_ORGAN 18CHURCH_ORGAN 19

REED_ORGAN 20ACCORIDAN 21ARMÓNICA 22TANGO_ACCORDIAN 23GUITARRA 24NYLON_STRING_GUITAR 24STEEL_STRING_GUITAR 25ELECTRIC_JAZZ_GUITAR 26ELECTRIC_CLEAN_GUITAR 27ELECTRIC_MUTED_GUITAR 28OVERDRIVEN_GUITAR 29

DISTORTION_GUITAR 30GUITAR_HARMONICS 31ACOUSTIC_BASS 32ELECTRIC_BASS_FINGER 33ELECTRIC_BASS_PICK 34FRETLESS_BASS 35SLAP_BASS_1 36SLAP_BASS_2 37SYNTH_BASS_1 38SYNTH_BASS_2 39

VIOLIN 40VIOLA 41CELLO 42CONTRABAJO 43TREMOLO_STRINGS 44PIZZICATO_STRINGS 45ORCHESTRAL_STRINGS 46TIMPANI 47STRING_ENSEMBLE_1 48STRING_ENSEMBLE_2 49

FRENCH_HORN 60BRASS_SECTION 61SYNTHBRASS_1 62SYNTHBRASS_2 63SOPRANO_SAX 64ALTO_SAX 65TENOR_SAX 66BARITONE_SAX 67OBOE 68ENGLISH_HORN 69

BASSOON 70CLARINET 71PICCOLO 72FLAUTA 73REGISTRADOR 74PAN_FLUTE 75BLOWN_BOTTLE 76SKAKUHACHI 77WHISTLE 78OCARINA 79

LEAD_SQUARE 80Cuadrado 80LEAD_SAWTOOTH 81DIENTE DE SIERRA 81LEAD_CALLIOPE 82CALLIOPE 82LEAD_CHIFF 83Chiff 83LEAD_CHARANG 84Charang 84LEAD_VOICE 85VOZ 85LEAD_FIFTHS 86QUINTAS PARTES 86LEAD_BASSLEAD 87BASSLEAD 87PAD_NEW_AGE 88NEW_AGE 88PAD_WARM 89CALENTAMIENTO 89

SWEEP 95FX_RAIN 96LLUVIA 96FX_SOUNDTRACK 97SOUNDTRACK 97FX_CRYSTAL 98CRYSTAL 98FX_ATMOSPHERE 99AMBIENTE 99

FX_BRIGHTNESS 100BRILLO 100FX_GOBLINS 101DUENDES 101FX_ECHOES 102ECOS 102FX_SCI-FI 103SCI-FI 103SITAR 104BANJO 105SHAMISEN 106KOTO 107KALIMBA 108GAITA 109

VIOLÍN 110Shanai 111TINKLE_BELL 112AGOGO 113STEEL_DRUMS 114WOODBLOCK 115TAIKO_DRUM 116MELODIC_TOM 117SYNTH_DRUM 118REVERSE_CYMBAL 119

GUITAR_FRET_NOISE 120BREATH_NOISE 121COSTA 122BIRD_TWEET 123TELEPHONE_RING 124HELICÓPTERO 125Aplausos 126GUNSHOT 127

Nombres de percusiónVoz 9 es un canal especial que reproduce sonidos de percusión en lugar de notas musicales. Puede utilizar estos nombres de sonidos de percusión en lugar de un valor de nota al reproducir música en voz 9. Por ejemplo: V9 [Bass_Drum] q jugaría un bombo con una duración trimestre.Usted puede jugar más de un sonido de percusión al mismo tiempo mediante la adición de ellos juntos, como si estuvieras tocando varias notas a la vez. En este

Page 26: Guía del usuario de JFugue

ejemplo se va a jugar un aplauso y un choque de platillos al mismo tiempo: V9 [Hand_Clap] q + [Crash_Cymbal_1] q

ACOUSTIC_BASS_DRUM 35BASS_DRUM 36SIDE_STICK 37ACOUSTIC_SNARE 38HAND_CLAP 39

ELECTRIC_SNARE 40LOW_FLOOR_TOM 41CLOSED_HI_HAT 42HIGH_FLOOR_TOM 43PEDAL_HI_HAT 44LOW_TOM 45OPEN_HI_HAT 46LOW_MID_TOM 47HI_MID_TOM 48CRASH_CYMBAL_1 49

HIGH_TOM 50RIDE_CYMBAL_1 51CHINESE_CYMBAL 52RIDE_BELL 53PANDERETA 54SPLASH_CYMBAL 55CENCERRO 56CRASH_CYMBAL_2 57Vibraslap 58RIDE_CYMBAL_2 59

HI_BONGO 60LOW_BONGO 61MUTE_HI_CONGA 62OPEN_HI_CONGA 63LOW_CONGA 64HIGH_TIMBALE 65LOW_TIMBALE 66HIGH_AGOGO 67LOW_AGOGO 68CABASA 69

MARACAS 70SHORT_WHISTLE 71LONG_WHISTLE 72SHORT_GUIRO 73LONG_GUIRO 7475 CLAVESHI_WOOD_BLOCK 76LOW_WOOD_BLOCK 77MUTE_CUICA 78OPEN_CUICA 79

MUTE_TRIANGLE 80OPEN_TRIANGLE 81

Nombres de los controladoresEl protocolo MIDI define un número de controladores que modifican cómo suena la música. Puede utilizar cualquiera de estos nombres de controladores con el mandato de controlador. Por ejemplo, para establecer el pedal hold, se puede decir X [Hold_Pedal] = 127 .Algunos de estos eventos de controlador vienen en pares gruesa / fina. Puede configurar estos controladores por separado o junto con los nombres de los controladores combinados .

0 BANK_SELECT_COARSEMOD_WHEEL_COARSE 12 BREATH_COARSE4 FOOT_PEDAL_COARSEPORTAMENTO_TIME_COARSE 5DATA_ENTRY_COARSE 67 VOLUME_COARSEBALANCE_COARSE 8PAN_POSITION_COARSE 10EXPRESIÓN 1112 EFFECT_CONTROL_1_COARSEEFFECT_CONTROL_2_COARSE 13

SLIDER_1 16SLIDER_2 17SLIDER_3 18

SOUND_VARIATION 70VARIACIÓN 70SOUND_TIMBRE 71TIMBRE 71SOUND_RELEASE_TIME 72RELEASE_TIME 72SOUND_ATTACK_TIME 73ATTACK_TIME 73SOUND_BRIGHTNESS 74BRILLO 74SOUND_CONTROL_6 75CONTROL_6 75SOUND_CONTROL_7 76CONTROL_7 76SOUND_CONTROL_8 77CONTROL_8 77SOUND_CONTROL_9 78CONTROL_9 78

DATA_BUTTON_INCREMENT 96DATA_BUTTON_INC 96BUTTON_INC 96DATA_BUTTON_DECREMENT 97DATA_BUTTON_DEC 97BUTTON_DEC 97

NON_REGISTERED_COARSE 98NON_REGISTERED_FINE 99REGISTERED_COARSE 100REGISTERED_FINE 101

ALL_SOUND_OFF 120ALL_CONTROLLERS_OFF 121

Page 27: Guía del usuario de JFugue

SLIDER_4 19

BANK_SELECT_FINE 32MOD_WHEEL_FINE 33BREATH_FINE 34FOOT_PEDAL_FINE 36PORTAMENTO_TIME_FINE 37DATA_ENTRY_FINE 38VOLUME_FINE 39BALANCE_FINE 40PAN_POSITION_FINE 42EXPRESIÓN 43EFFECT_CONTROL_1_FINE 44EFFECT_CONTROL_2_FINE 45

HOLD_PEDAL 64Para 64PORTAMENTO 65SUSTENUTO_PEDAL 66SUSTENUTO 66SOFT_PEDAL 67SUAVE 67LEGATO_PEDAL 68LEGATO 68HOLD_2_PEDAL 69HOLD_2 69

SOUND_CONTROL_10 79CONTROL_10 79

GENERAL_PURPOSE_BUTTON_1 80GENERAL_BUTTON_1 80BUTTON_1 80GENERAL_PURPOSE_BUTTON_2 81GENERAL_BUTTON_2 81BUTTON_2 81GENERAL_PURPOSE_BUTTON_3 82GENERAL_BUTTON_3 82BUTTON_3 82GENERAL_PURPOSE_BUTTON_4 83GENERAL_BUTTON_4 83BUTTON_4 83

EFFECTS_LEVEL 91EFECTOS 91TREMULO_LEVEL 92Trémulo 92CHORUS_LEVEL 93CORO 93CELESTE_LEVEL 94CELESTE 94PHASER_LEVEL 95PHASER 95

LOCAL_KEYBOARD 122ALL_NOTES_OFF 123OMNI_MODE_OFF 124OMNI_OFF 124OMNI_MODE_ON 125OMNI_ON 125MONO_OPERATION 126MONO 126POLY_OPERATION 127POLY 127

Eventos en la especificación MIDI tomar bytes como un valor, pero algunos controladores puede tener una gama más amplia de opciones que está disponible en un byte. Estos controladores tienen un grueso y un ajuste fino.Sin embargo, cuando se quiere establecer algo como volumen, no debería tener que descomponer el volumen que desea establecer en un byte alto y un byte bajo, a continuación, establecer dos controladores. Con reguladores combinados JFugue, usted puede simplemente decir X [Volumen] = nnnn , donde nnnn es un valor entre 0 y 2 14 -1, o 16383. JFugue se darán cuenta de los montos a colocar los controladores de grueso y fino en su propio (y, en última instancia, va a generar dos eventos de controlador separado - pero usted no tiene que preocuparse de que a menos que estés interactuando directamente con el analizador).

BANK_SELECT 16383MOD_WHEEL 161ALIENTO 290FOOT_PEDAL 548PORTAMENTO_TIME 677DATA_ENTRY 806VOLUMEN 935

Page 28: Guía del usuario de JFugue

BALANCE 1064PAN_POSITION 1322EXPRESIÓN 1451EFFECT_CONTROL_1 1580EFFECT_CONTROL_2 1709NON_REGISTERED 12770REGISTRADO 13028

Otras constantes predefinidasJFugue define las siguientes constantes para su conveniencia. Usted las puede utilizar como valores de configuración para los controladores, como en X [Hold_Pedal] = ON .

EN 127OFF 0DEFAULT 64