Sei sulla pagina 1di 32

Gua del usuario de JFugue

Cmo JFugue en http://www.jfugue.org . Vea las novedades de JFugue 2,0 en el apndice. Impresin sugerencia: Si desea imprimir esta gua, se recomienda imprimir en modo horizontal. Las pginas ms amplios permitir que todos los valores en elapndice para que quepa en la pgina correctamente.

Tabla de contenidos

Bienvenido a JFugue Fundamentos de JFugue Presentacin de la Cadena de msica o Notas, acordes y silencios, Notas Octava Duracin Acordes Velocidad Notas combinacin Comandos de ejemplo para las notas o Tempo o Voz o Instrumento de Cambio o Mensajes del controlador o Definiendo constantes Introduccin a Patrones o Patrones como partes de una cancin o Las fbricas de patrones o Patrn Transformers o Pattern Herramientas o Escribir su propio patrn de fbrica o Escribir su propio patrn Transformer o Escribir su propio patrn Tool Analizar y Representacin o Escuchar el analizador o Idea: una Partituras Renderer o Adicin de nuevos tokens para la cadena de msica Cmo trabajar con MIDI o Guardando su msica en archivos MIDI

Obtencin de la secuencia MIDI Programas de ejemplo o Ejemplo 1: A Simple Song o Ejemplo 2: "Frere Jacques" o Ejemplo 3: "Frere Jacques" como una ronda Apndice o Qu hay de nuevo en 2,0 JFugue La actualizacin a 2.0 JFugue o Nombres de instrumentos o Nombres de percusin o Nombres de los controladores o Combinado nombres de los controladores
o

Bienvenido a JFugue
JFugue es una API de Java para la programacin de msica. Con JFugue, puede programar msica de forma rpida y sencilla, y sin saber MIDI. JFugue se diferencia de otros de Java API msica de dos maneras significativas. En primer lugar, programar msica en JFugue, enva cadenas que especifican las notas, cambios de instrumento, mensajes de controlador y otros datos musicales. Estas cadenas se apresuran a crear y fcil 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 programacin musical muy tedioso. O bien, que requieren bajo nivel manipulacin de eventos MIDI. En segundo lugar, JFugue permite crear "patrones" de la msica 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 msica, o cambiar todas las notas en tres intervalos? Todo lo que se necesita una llamada al mtodo. JFugue est especialmente dirigido a desarrolladores que necesitan crear msica durante el tiempo de ejecucin. No se puede reproducir la msica que ya ha sido grabado, porque no lo s todava lo que la msica va a ser! Las aplicaciones incluyen msica algortmica o evolutiva, editores de msica, y los improvisadores de jazz. Puede utilizar JFugue para reproducir msica mientras se ejecuta la aplicacin, o puede guardar msica en archivos MIDI.

JFugue es 100% basado en Java. Se utiliza el paquete javax.sound.midi para generar msica.

Fundamentos de JFugue
En primer lugar, asegrese de que tiene el entorno Java 2 Standard (J2SE) versin 1.3 o posterior. Se necesita al menos la versin 1.3, porque esa es la versin que tiene los paquetes javax.sound.midi. Es posible que desee para ver si otros bancos de sonidos MIDI estn disponibles para su instalacin de Java. Instalacin de bancos de sonido adicionales pueden darle ms ricos sonidos del instrumento. Despus, usted necesita el paquete JFugue, jfugue.jar, que se puede descargar aqu. Recuerde dnde poner jfugue.jar, dondequiera que sea, vamos a llamar a ese directorio%% JFUGUE_DIR. Ahora est listo para crear su aplicacin de msica primero! Vamos a caminar a travs de un programa rpido, as que usted puede estar seguro de que tienes todo configurado correctamente. A continuacin, vamos a entrar en ms detalles acerca de la programacin JFugue. Crear un nuevo archivo llamado MyMusicApp.java y entrar en este programa:
importar org.jfugue *.; pblico MyMusicApp clase { public static void main (String [] args) { Jugadores Jugadores Jugadores = new (); Patrn patrn patrn = nuevo ("CDEFGA B"); player.play (patrn); System.exit (0); } }

Guarde el archivo y compilarlo, asegurndose 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 aplicacin JFugue debe cantar para ti No era tan fcil? (Tal vez se pregunte por qu es necesario poner System.exit (0); al final del programa Resulta que las clases Java MIDI abiertas un montn de temas, pero no todos estn bien cerrada cuando la cancin es. hecho de tocar. Esto evita que el programa de fin en s mismo, pero no afectar de otro modo a la ejecucin del programa.)

Presentacin de la Cadena de msica


La Cadena de msica se utiliza para especificar las notas, cambios de instrumentos, y otros datos necesarios para reproducir msica. Junto con Patrones , es una de las dos caractersticas de JFugue que lo hacen nico, fcil de usar, ideal para crear y experimentar con la msica. La Cadena de msica es una cadena de caracteres, donde cada grupo de personajes representa un comando musical. No importa que el analizador si utiliza caracteres en maysculas o minsculas, pero las directrices de estilo siguientes se recomiendan para ayudar a mantener sus cuerdas Msica legible: 1. Utilice Lettes de capital para los comandos y notas 2. Utilizar caracteres en minscula para duraciones 3. Usado con maysculas y minsculas 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 msica. 1. Notas, acordes y silencios : Especifique una nota o un acorde para jugar, as como su duracin. Tambin puede indicar la velocidad de una nota. 2. Tempo : Especifica la velocidad de la cancin. 3. Voz : Indica la voz (tambin 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 ms. 6. Variables : Definicin 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 raz, o el resto de caracteres: A , B , C , D , E , F , G , o R , o bien, con una representacin numrica de la nota, que se explica a continuacin. En los prrafos siguientes se describen detalles adicionales que puede especificar para una nota. Notas Puede indicar que una nota es bemol o sostenido mediante el uso de la # y b caracteres, respectivamente. Adems 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 numrico 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 percusin . En MIDI, la voz dcimo (voz 9, las voces empiezan por 0) est reservado para los sonidos de percusin. Hay un montn de sonidos de percusin diferentes que puede jugar en esa voz, y esto puede hacerse dando el nombre percusin entre parntesis. Por ejemplo,[Hi_Bongo] . Apndice: Los sonidos de percusin se muestran los nombres de los sonidos de percusin disponibles. Vamos a hablar de acordes un poco ms tarde. Octava MIDI es capaz de reproducir las notas que abarcan 10 octavas. Este diagrama muestra las octavas ms comunes.

Para indicar una octava, utilice los nmeros 0 a travs 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 ). Duracin La duracin indica durante cunto tiempo para tocar la nota. Los siguientes valores estn permitidos. Si no se introduce una duracin, el valor predeterminado es una negra. 1. 2. 3. 4. 5. 6. 7. 8. - duracin total h - duracin media q - Duracin trimestre i - Duracin octavo s - duracin decimosexto t - treinta segundos de duracin x - 64a duracin n - 1/128 duracin
w

Puede especificar una duracin de puntos, siguiendo el carcter duracin con un punto ('.'). La duracin de una nota punteada es la duracin original, adems de la duracin media. Puede aadir duraciones a conseguir una mayor duracin. Por ejemplo, . una negra y una nota media de puntos; wwww es de cuatro notas enteras.
qh

sera

Adems de especificar una duracin de una carta, tambin puede especificar la duracin como una fraccin decimal. Un cuarto de nota sera de 0,25, una corchea sera 0,125, y as sucesivamente. Para representar un nmero como una fraccin decimal, utilizar el / carcter, seguido por la fraccin. Por ejemplo, el siguiente es un A nota, octava cuarto, la duracin 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, trimestre? La respuesta es F # 4q o F 4/0.25 # si est utilizando fracciones decimales. Acordes

Una vez que haya especificado la raz 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 estn las estructuras de acordes que son reconocidos por JFugue: 1. 2. 3. 4. 5. 6. 7. 8. 9. - Major min - Minor maj7 - Major sptimo min7 - Minor sptimo dim - Disminucin agosto - Aumentada aug7 - Aumentada sptimo sos - Sostenida add9 - Aadir 9
maj

El indicador acorde va directamente despus de la raz, y antes de la octava o duracin. Por ejemplo, un Do mayor, quinta octava nota, cuarto sera Cmaj5q .Cmo se especifica un acorde de re menor, tercera nota octava, todo? La respuesta es Dmin3w . Nota especial para los acordes en la sptima octava: Si quieres tocar un acorde mayor, menor o aumentada en la octava sptima, 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 sptima, utilice [84] maj . 84 es el nmero de nota para C7. Usted puede entender cmo el analizador fcilmente se confunden entre Cmaj7 significado "C-acorde mayor sptima en la octava" y "C-majorsptimo acorde". De hecho, si usted hizo decir Cmaj7 , se llega a un acorde de sptima mayor, con C5 como root (utilizando el valor predeterminado de la octava). Por cierto, Cmaj75le dara lo mismo. Velocidad Usted puede indicar cun 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 estndar por defecto para los dispositivos MIDI que no son compatibles con la velocidad. He aqu un ejemplo: C5qa120d30 . Esto representa un Medio C, duracin trimestre, que es golpeado muy fuertemente (120), y se libera suavemente (30). Notas combinacin Hay dos caracteres especiales que se pueden utilizar para combinar notas. El signo ms ( + ) personaje puede utilizar para reproducir varias notas en al mismo tiempo (en armona). El guin bajo ( _ ) carcter se puede utilizar para tocar las notas en orden (en la meloda), cuando la meloda se juega con una armona. Los escenarios siguientes ilustran esto.
stos son C, E, G y jug en una meloda. La cadena de msica para representar esta pieza musical es C5q E5q G5Q . No hay nada nuevo aqu. Usted puede jugar ms de una nota al mismo tiempo con la misma voz. Para ello, conecte las notas con el signo ms ( + ) characer. Por ejemplo, C5q + + E5q G5Q jugar la C, E, G y notas, duracin trimestre, al mismo tiempo. En este caso en particular, pero tambin puede representar esta armona como un acorde, ya que estas notas forman un acorde de Do mayor: Cmaj5q Tambin puede reproducir varias notas al mismo tiempo, con una duracin mixtos. Utilice el carcter 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 sera interpretado por el comando C5H + E5q_G5q .

Comandos de ejemplo para las notas Nota Los comandos son muy tiles, y como se escribe la msica para JFugue, usted encontrar que sean fciles de entender. Inicialmente, puede parecer un poco intimidante. Estos son algunos ejemplos, que las descripciones que pueden ayudarle a entender mejor. 1. - Juega una nota de A, quinto octava (por defecto), la duracin trimestre (por defecto).
A

2. 3. 4.

- Un descanso de todo el perodo. Cmaj3w - Toque un acorde de Do mayor, octava 3, la duracin entera. [77] h - Juega nota # 77 (equivalente a una F, 6 de octava - recuerda la nota # 60 es Medio-C), la duracin media. 5. [Cowbell] qi - Esta nota es para voz 9, el canal de percusin. Se reproduce un sonido de cencerro durante un cuarto ms duracin octavo. Si jugaste esta nota en una voz que no sea voz 9, se obtendra Nota N 56, ya que el cdigo de un cencerro es 56 (ver la lista de sonidos de percusin para obtener ms informacin). Eso sera A #, 4 octava. 6. D4Q + + F4q A4Q - Reproduce la D notas, F, y junto A, lo que jugara las mismas notas que Dmin4q . 7. C5W + + E5h_G5h Dmaj3w - Reproduce una nota C, duracin quinta octava, todo; al mismo tiempo, desempea un E, quinta octava, duracin media, seguido por una duracin T, quinta octava, media; al mismo tiempo, desempea un D-acorde mayor, tercera octava duracin, entero. Tenga en cuenta que una mejor manera de jugar esta podra 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 .
Rw

Tempo Es necesario indicar el tempo de su cancin - lo rpido o lento que la cancin debera ser jugado. El valor del tempo representa "Pulsos por trimestre", o PPQ, que es el nmero de "pulsos", o ciclos de reloj, para dar una nota negra. Un valor ms pequeo dar lugar a una cancin ms rpido, y un nmero ms grande resultar en una cancin ms lenta. Un buen valor para empezar es de 120, lo que es la opcin por defecto si no specfy un tempo. Usted slo tiene que especificar el tempo una vez en la cadena de msica, incluso si est utilizando mltiples voces. Distintas voces no pueden tener ritmos diferentes. Adems, no importa donde se especifica el tempo en la cadena de msica, aunque se recomienda que lo coloca en el comienzo de una cancin. El comando es un T, seguido de un nmero de 0 a infinito. Por ejemplo: T120 . Voz El comando de voz dice JFugue para reproducir las notas siguientes en la voz dada MIDI (tambin conocido como un canal ). Usted puede pensar en una voz como una pista musical. Las voces le dan la capacidad de reproducir melodas de mltiples al mismo tiempo. Si est programando msica 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 sinfnica, puede dar a cada instrumento su propia pista. El comando es un V, seguido por un nmero de 0 a 15. Por ejemplo: V5 Hay 16 voces, numeradas del 0 al 15. La voz dcimo (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 percusin. Ya que estamos contando desde 0, la voz dcimo voz 9. Durante la reproduccin de notas de voz 9, puede utilizar nombres de percusin para representar a los instrumentos de percusin, vase el comando Nota para obtener ms informacin al respecto. Instrumento de Cambio El comando Cambiar Instrumento dice JFugue a tocar las notas siguientes con el nmero determinado instrumento MIDI o el nombre. El comando es una I, seguido por un nmero de 0 a 127, o el nombre de un instrumento entre corchetes:
I9 I [guitarra]

Cambios de instrumento (tambin conocidos como cambios de patch ) son especficos de la voz en el que se realiza el cambio. En el ejemplo siguiente, las notas A y B se jugarn con el piano, y C y D con la flauta:
V0 I [Piano] A V1 I [Flauta] C V0 V1 B D

Apndice: Nombres de instrumentos contiene preestablecidos nombres de instrumentos. Tambin puede crear sus propios nombres para los aparatos que utilizan el comando Variable . Mensajes del controlador El 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 msica. Estos incluyen pedales, balance de izquierda a derecha, portamento (notas deslizantes entre s), trmulo y mucho ms. 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 = valor X37 = 18 X [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 tpicos 8 bits (un byte) para la mayora de los otros. Hay dos maneras que usted puede especificar ajustes gruesos y finos. La primera forma es bastante aburrida:
X [Foot_Pedal_Coarse] = 10 X [Foot_Pedal_Fine] = 65

Seguramente, JFugue puede ser ms 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. Slo tiene que usar X [Volumen] = 10200 . El valor numrico del volumen de palabra es igual a un nmero 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 nmeros: X [Local_Keyboard] = ON . JFugue tambin ha definido DEFAULT, que se fija a 64 aos. Definiendo constantes Cuando usted est programando msica, su tarea principal es hacer sonidos hermosos - para no ser inundado con nmeros 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 = DEFINICIN

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 ms corto, o tal vez usted tiene un nombre ms 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 percusin, y eventos de controlador.La creacin 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 tambin tiles en casos en los que tienen una configuracin que es posible que desee cambiar algn da. Suponga que quiere jugar un poco de msica con su instrumento favorito, el piano. Usted podra 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 msica es la definicin 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 nmero era de esperar, con la excepcin del valor de octava (pero eso est bien, porque slo se puede especificar la misma nota, con la octava, como un solo nmero), y si usted est utilizando una constante durante un tiempo, usted tiene que utilizar valores decimales duracin (y preceder a la duracin con una barra, / ). Usted debe colocar la palabra constante entre corchetes, pero dependiendo de las circunstancias, el analizador probablemente todava entender la palabra si no utiliza los soportes.

Introduccin a Patrones
Un patrn es una coleccin de notas que comprenden una declaracin musical. Un patrn puede representar toda una cancin, las partes individuales de una cancin, o fragmentos de msica de uso frecuente. Los patrones pueden ser

creados a partir de otros patrones, y la msica en un patrn se puede transformar de una manera interesante y creativa. Patrones como partes de una cancin Los patrones pueden ser usados para representar partes de una cancin. Supongamos que usted est escribiendo una roca estndar o una cancin pop. Usted puede romper su cancin en las siguientes partes:

Introduccin El versculo 1 Coro El versculo 2 Coro Desglose / Interlude El versculo 3 Coro Outro

Muchas de estas piezas comparten similitudes. Por ejemplo, el coro probablemente ser la misma en toda la cancin. Los versos tendrn la misma msica, 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 msica como los patrones:
Patrn de introduccin = new Patrn (" cadena de msica "); Verso Pattern Pattern = nuevo (" cadena de msica "); Coro = Patrn de nuevo (" cadena de msica "); Desglose Pattern Pattern = nuevo (" cadena de msica "); Patrn outro = new Patrn (" cadena de msica ");

A continuacin, puede crear la cancin con esas secciones. Incluso vamos a crear un verseAndChorus patrn, ya que se repite tres veces:
VerseAndChorus = Patrn de nuevo (); verseAndChorus.add (verso); verseAndChorus.add (coro); Cancin Pattern Pattern = new (); song.add (intro); song.add (verseAndChorus, 2) / / Esto agrega verseAndChorus dos veces song.add (descomposicin); song.add (verseAndChorus); song.add (outro);

Puede reproducir la cancin entera diciendo player.play (cancin); . Tambin puede reproducir las secciones fuera de la misma cancin: player.play (descomposicin); . Las fbricas de patrones Si va a crear una cancin que tiene una pista de batera, no sera genial si pudieras hacer una llamada a un mtodo que al instante le pondras a ritmo de rock, o un ritmo 8-Beat, o incluso un ritmo Swing? Con JFugue, usted puede! Una fbrica patrn le da un patrn que usted puede utilizar en sus propias canciones. Tambin puede escribir sus propias fbricas 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 fbrica patrn es el siguiente:
RockPatternFactory rpf = new RockPatternFactory (); Patrn de ritmo = rpf.getPattern (0);

Eso es! RockPatternFactory se suministra con JFugue, y se puede encontrar en el paquete de org.jfugue.demo. Algunas fbricas tambin ofrecen diferentes partes al mismo ritmo. Por ejemplo, RockPatternFactory tiene un patrn de relleno que se puede acceder congetPattern (2); . Se poda or a todos los patrones diferentes a PatternFactory pueden producir al llamar al mtodo patrn de la fbrica getDemo:
Jugadores Jugadores Jugadores = new (); RockPatternFactory rpf = new RockPatternFactory (); Demo del Patrn = rpf.getDemo (); player.play (demo);

La demostracin se reproducirn todos los diferentes modelos que la fbrica puede producir, sumadas en un patrn que se devuelve desde getDemo () . Informacin sobre escribiendo su propio patrn de fbrica se proporciona a continuacin .

Patrn Transformers Una de las mejores cosas acerca de los patrones de la msica es que se puede aplicar una transformacin en ellos, y obtener msica diferente, basado en la misma base musical. Cules son algunas cosas que usted puede hacer para transformar un patrn? Hay muchos, aqu estn algunas ideas:

Ordenar las notas por orden de mayor a menor, o de otra forma reorganizar su orden Aumente el intervalo entre las notas Aadir un eco a las notas Realice notas en un modelo con trmolo

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 patrn pocos. Son todos XxxxPatternTransformer nombre, donde xxxx indica lo que hacen - por ejemplo, los cambios IntervalPatternTransformer los intervalos entre las notas, cambios DurationPatternTransformer la duracin de las notas, y ReversePatternTransformer invierte un patrn. Antes de utilizar un transformador patrn, usted tiene que saber cules son las variables que esperan. Por ejemplo, el IntervalPatternTransformer necesita saber cuntos pasos para cambiar los intervalos entre las notas. Esta informacin se puede encontrar en los comentarios del cdigo transformador patrn, o en la documentacin que acompaa al transformador. Tambin hay un mtodo, getVariables (), que se puede llamar en un transformador. Si imprime esa salida, ya vers lo que se requiere:
IntervalPatternTransformer ipt = new IntervalPatternTransformer (); String salida = ipt.getVariables (); System.out.println (salida);

Si ests escribiendo un programa de edicin de msica y desea utilizar transformadores de patrn, 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 fcil de analizar. Para establecer una variable transformador patrn, utilice el setVariable () mtodo. Este mtodo 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 prcticas de programacin, lo mejor es utilizar las constantes proporcionados por la clase para representar la cadena. Por ejemplo, IntervalPatternTransformer define un intervalo constante esttica, que contiene la cadena "Intervalo". Si mis-escriba el intervalo palabra para referirse a la constante, obtendr un error en tiempo de compilacin 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 (); Patrn patrn patrn = nuevo (" cadena de msica "); IntervalPatternTransformer ipt = new IntervalPatternTransformer (); ipt.setVariable (IntervalPatternTransformer.INTERVAL, 2); Patrn transformedPattern = ipt.transform (patrn); player.play (transformedPattern);

Informacin sobre escribiendo su propio patrn transformador se proporciona a continuacin . Pattern Herramientas Los patrones son una gran manera de manejar las secciones de una declaracin musical. Como usted est usando patrones, usted puede darse cuenta de la necesidad de realizar algn clculo en un patrn. Cunto tiempo toma este patrn de juego? Cul es la ltima voz que se ha utilizado en este patrn? Cuntos billetes hay en este patrn? Herramientas preestablecidas se utiliza para realizar clculos a travs de un patrn. Al igual que los transformadores de patrones, son oyentes del analizador, y funcionan mediante el anlisis del patrn, y el desempeo de sus calcuations cuando el analizador realiza devoluciones de llamada a los mtodos de eventos (por ejemplo, voiceEvent (voz Voice) ). Existe un patrn de herramientas que se incluye con JFugue. DurationPatternTool le permite saber cunto tiempo un patrn juega. Puede utilizar DurationPatternTool como un ejemplo para sus propias herramientas. Para utilizar una herramienta de dibujo, en primer instancia de la herramienta, a continuacin, llamar a su ejecucin mtodo. La ejecucin de mtodo toma un patrn como parmetro y devuelve un objeto con el resultado. Tambin puede obtener el resultado de un clculo herramienta patrn que ya se ha realizado, llamando al getResult () . He aqu un ejemplo:

Patrn patrn patrn = nuevo (" cadena de msica "); DurationPatternTool dpt = new DurationPatternTool (); System.out.println ("Duracin del modelo es" + dpt.execute (pattern));

Informacin sobre escribiendo su propio patrn transformador se proporciona a continuacin . Escribir su propio patrn de fbrica Escribir su propio patrn de fbrica es fcil. Basta con crear una nueva clase que se extiende PatternFactory y rellene el getPattern (int whichPattern) ygetDemo () mtodos. debe devolver un patrn, 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 avera, un retorno 3 una introduccin, y un retorno del 4 un outro. El cdigo podra tener el siguiente aspecto:
getPattern (int) pblico Patrn getPattern (int whichPattern) { Patrn patrn patrn = new (); interruptor (whichPattern) { defecto, case 0: pattern.setMusicString break; Caso 1: pattern.setMusicString alternativo "); break; Caso 2: pattern.setMusicString break; Caso 3: pattern.setMusicString break; Caso 4: pattern.setMusicString break; } volver patrn; }

(" Notas para el ritmo de base "); (" Notas para el ritmo de base (" notas de ruptura "); (" notas de introduccin "); (" notas para outro ");

Tambin hay que profundizar en los getNumberOfPatterns () mtodo. Este mtodo devuelve un entero que indica cmo los patrones de muchos de su fbrica puede producir. Recuerde que debe empezar a contar a 0 - por lo que si su patrn

fbrica produce 5 patrones, deben estar numeradas del 0 al 4 en su getPattern () mtodo. La clase PatternFactory crea automticamente una demo para su fbrica. Este se compone de un nmero de pitidos que indican qu modelo se reproducir (0 patrn consigue ningn pitidos), seguido por el patrn. La demostracin utiliza getNumberOfPatterns () para determinar cmo los patrones de muchos la fbrica puede producir. Utilice el getDemo () mtodo para obtener una demostracin de PatternFactory. Escribir su propio patrn Transformer A PatternTransformer puede hacer algunas cosas poderosas con sus patrones. La posibilidad de modificar los patrones musicales es una caracterstica nica que slo 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 ms fcilmente entendido por el ordenador, enva los eventos a ParserListeners. Su patrn Transformer tambin escuchar los eventos analizados. El transformador puede hacer cosas interesantes con estos eventos. Lo primero que debe hacer es reemplazar los mtodos ParserListener. Hay siete de ellos, pero usted no tiene que anular todos ellos. Cada se implementa en PatternTransformer s; all, el mtodo simplemente aade el evento para el patrn de retorno. Si se extiende PatternTransformer pero no reemplazar cualquiera de los mtodos de evento, recibir un transformador patrn que simplemente devuelve el mismo patrn que se fue adentro Estos son los siete mtodos de evento:
public void voiceEvent (voz Voz) public void tempoEvent (Tempo tempo) instrumentEvent public void (Instrumento) pblico controllerEvent vaco (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, asegrese de que los tres mtodos de notas realizar la transformacin. Para obtener ms informacin sobre la escucha analizador, consulte esta seccin . Agregue todos los cambios en el returnPattern variable. returnPattern se define por PatternTransformer.java, y es el patrn 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 Instrumento si (instrument.getInstrumentNumber () == 73) { instrument.setInstrumentNumber (64); } returnPattern.addElement (instrumento); }

Cuando ests tratando con evento de nota, siempre se encargar tanto de la propia nota y su duracin como valores, no como letras. As que, aunque se puede decir C5q a desempear un C-nota, octava quinta, la duracin trimestre, en sus mtodos noteEvent, se le trata de [60] / 0.25 . Esto hace que sea muy fcil de modificar valores de las notas y duraciones, ya que todo lo que tienes que hacer es un poco de matemticas - usted no tiene que interpretar las letras. He aqu un ejemplo, directamente desde DurationPatternTransformer. Cambia la duracin de las notas sobre la base de un factor que se pasa como una variable.Por razones de brevedad, slo los mtodos de devolucin de llamada de eventos importantes se muestran.
noteEvent public void (note Nota) { doble durationValue note.getTotalDurationNumber = (); durationValue * = ((Doble) GetVariable (FACTOR)) doubleValue ().; 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 }

Adems de los mtodos de evento de devolucin de llamada, usted tiene que anular getDescription () , que debe devolver una cadena que da una breve descripcin de lo que hace este transformador. A continuacin, hay que indicar al usuario qu variables son requeridos por el transformador. Por ejemplo, la IntervalPatternTransformer requiere que el usuario diga del transformador por cuntos intervalos para transformar un patrn. Para ello, ampliar las getVariables contiene la informacin necesaria.
()

mtodo, y devolver una cadena que

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 / descripcin / default

Si usted necesita devolver cadenas mltiples, finalice cada cadena con un n carcter de nueva lnea.

, el

Adems, asegrese de agregar sus cadenas al JavaDoc para los getVariables () mtodo, as que los usuarios pueden aprender lo que el cdigo necesita de su documentacin. He aqu un ejemplo, directamente desde IntervalPatternTransformer:
/ ** * Devuelve una cadena que declarar las variables que IntervalPatternTransformer * Se puede utilizar para llevar a cabo la transformacin. * <p> * IntervalPatternTransformer requiere lo siguiente: MedlinePlus * <i> "Intervalo" </ i> - Entero - Nmero de intervalos de * Que cambiar cada nota, puede ser positivo o negativo. * Predeterminado 1. * </ P> * / getVariables public String () { Cadena ReturnString = "'intervalo' / int / Nmero de intervalos" + "Por la cual cambiar cada nota, puede" + "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 estn usando su transformador y se olvida de establecer las variables se encuentra que sus errores en el programa en tiempo de ejecucin. Cuando usted est declarando su propio constructor, asegrese de llamar al constructor padre en primer lugar mediante super () . He aqu un ejemplo de IntervalPatternTransformer:
IntervalPatternTransformer pblico () { super (); putVariable (INTERVAL, new Integer (1)); }

Ya est! Cuando alguien quiere usar el transformador, que tendrn que establecer las variables que se declaran a ser importante, y entonces pueden llamarYourPatternTransformer.transform ( patrn ) para obtener su patrn transformado! Una rpida revisin de los pasos: 1. 1. Ignorar cualquiera de los mtodos de devolucin de llamada Seven Event 2. 2. Cree un mtodo getDescription que devuelve una cadena 3. 3. Cree un mtodo getVariables que devuelve una cadena que sigue el formato estndar metioned arriba 4. 4. Asegrese de que su constructor inicializa las variables utilizadas por el transformador Escribir su propio patrn Tool Es bastante fcil de hacer su propia herramienta para realizar un clculo en un patrn determinado. Al igual que el modelo Transformer, una herramienta de patrones es una ParserListener, por lo que puede reemplazar cualquiera de los siguientes mtodos:
public void voiceEvent (voz Voz) public void tempoEvent (Tempo tempo)

instrumentEvent public void (Instrumento) pblico controllerEvent vaco (controlador de controlador) noteEvent public void (note Nota) sequentialNoteEvent public void (note Nota) parallelNoteEvent public void (note Nota)

Adems, como el Transformador Patrn, usted tiene que anular getDescription () , que debe devolver una cadena que da una breve descripcin de lo que hace esta herramienta. Debe crear un reset () mtodo. Este mtodo 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:
Patrn Patrn pattern1 = nuevo (" cadena de msica 1 "); Patrn Patrn pattern2 = nuevo (" cadena de msica 2 "); DurationPatternTool dpt = new DurationPatternTool (); System.out.println ("Duracin del patrn 1 es" + dpt.execute (pattern1)); / / Si execute () no llam reset (), entonces la siguiente lnea podra dar una mala / / El resultado, ya que sus variables an tienen clculos de la primera / / Tiempo fue utilizado System.out.println ("Duracin del patrn 2 es" + dpt.execute (pattern2));

Por ltimo, es necesario crear un getResult () mtodo. Este mtodo devuelve la respuesta que la herramienta Patrn est destinado a calcular. Se llama al final de execute () , y tambin se puede llamar tantas veces como desee para obtener el resultado del clculo, sin llegar a perfoming todo el clculo de nuevo:
Patrn patrn patrn = nuevo (" cadena de msica "); DurationPatternTool dpt = new DurationPatternTool (); System.out.println ("Duracin del modelo es" + dpt.execute (pattern)); System.out.println ("Ese nuevo valor es" + dpt.getResult ()); System.out.println ("Una vez ms, sin correr el clculo:" + dpt.getResult ());

Analizar y Representacin
Cuando se enva una cadena de msica a JFugue, los tokens en la cadena se analiza, o intepreted. Estos smbolos interpretados y luego ir al procesador, lo que convierte a los eventos MIDI eventos musicales.

Escuchar el analizador Cuando una seal se analiza, el analizador enva eventos de devolucin 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 aadir a la lista en s del analizador analizador de oyentes con la addActionListener mtodo. El Renderer es un ejemplo de un oyente analizador. En cada ficha se analiza, el Renderer recibe un evento, que se utiliza para aadir evnts MIDI a la secuencia de la msica. Existen siete mtodos de devolucin de llamada:
public void voiceEvent (voz Voz) public void tempoEvent (Tempo tempo) instrumentEvent public void (Instrumento) pblico controllerEvent vaco (controlador de controlador) noteEvent public void (note Nota) sequentialNoteEvent public void (note Nota) parallelNoteEvent public void (note Nota)

Observe que hay tres mtodos diferentes para notas: noteEvent, sequentialNoteEvent y parallelNoteEvent. El mtodo noteEvent se dispara cuando una sola nota viene a travs, por ejemplo A5q . El mtodo sequentialNoteEvent se dispara cuando el carcter de subrayado se utiliza para conectar las notas, como enA5q_C4q . El mtodo parallelNoteEvent se dispara cuando el personaje ms se utiliza para conectar las notas, o cuando se toque un acorde, como en A5q + C5q o Cminq . Idea: una Partituras Renderer La clase Renderer tiene eventos del analizador y los convierte en msica. Del mismo modo, se podra crear una clase SheetmusicRenderer que tomara eventos del analizador y convertirlos en grficos. Adicin de nuevos tokens para la cadena de msica Si usted encuentra la necesidad de aadir nuevas fichas a la cadena de msica, aqu es lo que debe hacer.

En Parser.java, encuentra el bit interruptor comunicado, y agrega una entrada para el nuevo token. Asegrese de que la seal comienza con un carcter que no est en uso. Crear un nuevo mtodo que realmente va a hacer el anlisis. Puedes modelar este mtodo despus de algo como parseInstrumentElement . El resultado final de su mtodo de anlisis debe llamar a una funcin callback de evento nuevo que se sumar a ParserListener.java. Para completar, tambin deber actualizar ParserListenerAdapter.java y PatternTransformer.java, que tanto ParserListener implemento. Si desea ver el programa de anlisis a medida que avanza sobre el anlisis, activar el rastreo: Parser.setTracing (Parser.TRACING_ON) . Tambin puede imprimir una nueva salida con el rastreo huella mtodo.

Cmo trabajar con MIDI


Cuando se reproduce un patrn de la msica a travs de JFugue, todo lo que se especifica en la cadena de msica se analiza y se convirtieron en eventos MIDI.Son estos eventos MIDI que se escucha al reproducir una cancin. Guardando su msica en archivos MIDI Puede guardar los resultados de su programa como un archivo MIDI. Todos los archivos MIDI disponibles en estas pginas fueron creadas con programas JFugue, las salidas de los cuales se guardan en MIDI. Guardar la cancin como un archivo MIDI es muy fcil de hacer: player.save (" nombre de archivo "); . Tienes que lanzar un bloque try / catch en torno al mtodo save, slo en caso de que haya un problema al escribir en el archivo. He aqu un ejemplo ms completo:
Jugadores Jugadores Jugadores = new (); Patrn patrn patrn = nuevo (" cadena de msica "); try { player.save (patrn, " 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. Obtencin de la secuencia MIDI Si alguna vez siente la necesidad de obtener la secuencia MIDI despus JFugue lo ha prestado, puede hacerlo utilizando player.getSequencer (); . El jugador no tiene un mtodo setSequencer () porque siempre se crea un objeto nuevo secuenciador para reproducir msica especificado por patrones.

Programas de ejemplo
Una de las mejores maneras de aprender algo nuevo es verlo en accin. Los ejemplos siguientes son programas completos que muestran cmo utilizar JFugue. Ejemplo 1: A Simple Song En esta cancin simple, usted ser llevado a la cadena de msica, que es la cantidad de datos de msica est representada en JFugue. El modelo se divide en varias lneas, as que es fcil 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 (); Patrn patrn patrn = nuevo ("T160 I [Cello]" + "G3q G3q G3q Eb3q Bb3i G3q Eb3q Bb3i G3H"); player.play (cancin); } }

Ejemplo 2: "Frere Jacques" En este ejemplo, vamos a utilizar los patrones de replicar fcilmente piezas idnticas de la msica. En la partitura abajo, te dars 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, slo podemos aadir que el patrn de la cancin 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" Patrn Patrn pattern1 = nuevo ("C5q D5q E5q C5q"); / / "Dormez-vous?" Patrn Patrn pattern2 = nuevo ("E5q F5q G5h"); / / "Sonnez les matines" Patrn Patrn PATTERN3 = nuevo ("G5i A5i G5i F5i E5q C5q"); / / "Ding ding dong" Patrn Patrn pattern4 = nuevo ("C5q G4q C5H"); / / Poner todo junto Cancin 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 cancin! player.play (cancin); } }

Ejemplo 3: "Frere Jacques" como una ronda El ejemplo anterior muestra cmo utilizar patrones para reproducir piezas similares de la msica. En este ejemplo, vamos a convertir toda la cancin en un patrn, por lo que se puede replicar toda la cancin. Con esta tcnica, podemos crear una ronda.

Note como en este ejemplo, vamos a aadir secciones de canciones juntos en un solo patrn, 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 reproducirn al mismo tiempo. Para ello, aadimos cada patrn con una voz diferente con el V0 , V1y V2 comandos cadena de msica. Todas las voces se reproducen simultneamente. El Rw Rw Cadena Music representa dos enteros nota restos, que se utilizan para escalonar los patrones simultneos para cada uno inicia dos medidas separadas. En este ejemplo se requiere el cdigo del Ejemplo 2. Vuelva a colocar la "Reproducir la cancin!" y "player.play (cancin)" lneas en el Ejemplo 2 con el segmento de programa siguiente. Haga clic aqu para escuchar la cancin de este programa genera: FrereJacques.mid
DoubleMeasureRest = Patrn de nuevo ("Rw Rw"); / / Crear la primera voz Patrn Patrn RONDA1 = nuevo ("V0"); round1.add (cancin); / / Crear la segunda voz Patrn Patrn Round2 = nuevo ("V1"); round2.add (doubleMeasureRest); round2.add (cancin); / / Crear la tercera voz Patrn Patrn round3 = nuevo ("V2"); round3.add (doubleMeasureRest); round3.add (doubleMeasureRest); round3.add (cancin); / / Poner las Patrn Patrn roundSong.add roundSong.add roundSong.add voces juntas roundSong = new (); (RONDA1); (Round2); (round3);

/ / Escuchar la cancin! player.play (roundSong);

Apndice
Qu hay de nuevo en 2,0 JFugue

JFugue 1,0 present al mundo JFugue, y dio los programadores de msica una manera fcil de crear msica usando cadenas musicales y patrones, y guardar archivos como MIDI. JFugue 2.0 mejora sobre la primera versin, e introduce las siguientes novedades:

Apoyo a eventos de controlador MIDI en la cadena de msica Ataque y la velocidad de desintegracin de notas, para indicar cmo 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 Msica de nombres que son especialmente memorable para usted Introduccin de Pattern Herramientas para realizar clculos en un patrn JFugue paquete es ahora org.jfugue, no com.innix.jfugue Modificaciones internas para el analizador, que permite modificar el analizador ms claro Ms completas comentarios JavaDoc

La actualizacin a 2.0 JFugue Si 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 importacin org.jfugue *;. lugar de importacin
com.innix.jfugue *.;

Eventos favoritos, que nunca fueron implementadas completamente, se han eliminado. Controlador de eventos se han aadido. Si ha creado las clases ParserListener o PatternTransformer, retire el bookmarkEvent (Agregar a favoritos) mtodo, y aadir el controllerEvent (controlador de controlador) mtodo.

Nombres de instrumentos Las siguientes palabras vienen predefinidos en el programa de anlisis JFugue. Puede utilizar cualquiera de estos valores para especificar un instrumento. Por ejemplo, para reproducir msica con el clavicordio, se puede decir que [Clavinet]

PIANO 0 ACOUSTIC_GRAND 0

SYNTHSTRINGS_1 50 SYNTHSTRINGS_2 51

PAD_POLYSYNTH 90 Polysynth 90

BRIGHT_ACOUSTIC 1 ELECTRIC_GRAND 2 HONKEY_TONK 3 ELECTRIC_PIANO 4 ELECTRIC_PIANO_1 4 ELECTRIC_PIANO_2 5 HARPISCHORD 6 Clavinet 7 CELESTA 8 GLOCKENSPIEL 9 MUSIC_BOX 10 VIBRAPHONE 11 MARIMBA 12 XYLOPHONE 13 TUBULAR_BELLS 14 DULCIMER 15 DRAWBAR_ORGAN 16 PERCUSSIVE_ORGAN 17 ROCK_ORGAN 18 CHURCH_ORGAN 19 REED_ORGAN 20 ACCORIDAN 21 ARMNICA 22 TANGO_ACCORDIAN 23 GUITARRA 24 NYLON_STRING_GUITAR 24 STEEL_STRING_GUITAR 25 ELECTRIC_JAZZ_GUITAR 26 ELECTRIC_CLEAN_GUITAR 27 ELECTRIC_MUTED_GUITAR 28 OVERDRIVEN_GUITAR 29 DISTORTION_GUITAR 30 GUITAR_HARMONICS 31 ACOUSTIC_BASS 32 ELECTRIC_BASS_FINGER 33 ELECTRIC_BASS_PICK 34 FRETLESS_BASS 35 SLAP_BASS_1 36 SLAP_BASS_2 37 SYNTH_BASS_1 38 SYNTH_BASS_2 39 VIOLIN 40 VIOLA 41 CELLO 42 CONTRABAJO 43 TREMOLO_STRINGS 44 PIZZICATO_STRINGS 45 ORCHESTRAL_STRINGS 46 TIMPANI 47 STRING_ENSEMBLE_1 48 STRING_ENSEMBLE_2 49

CHOIR_AAHS 52 VOICE_OOHS 53 SYNTH_VOICE 54 ORCHESTRA_HIT 55 TROMPETA 56 TROMBON 57 TUBA 58 MUTED_TRUMPET 59 FRENCH_HORN 60 BRASS_SECTION 61 SYNTHBRASS_1 62 SYNTHBRASS_2 63 SOPRANO_SAX 64 ALTO_SAX 65 TENOR_SAX 66 BARITONE_SAX 67 OBOE 68 ENGLISH_HORN 69 BASSOON 70 CLARINET 71 PICCOLO 72 FLAUTA 73 REGISTRADOR 74 PAN_FLUTE 75 BLOWN_BOTTLE 76 SKAKUHACHI 77 WHISTLE 78 OCARINA 79 LEAD_SQUARE 80 Cuadrado 80 LEAD_SAWTOOTH 81 DIENTE DE SIERRA 81 LEAD_CALLIOPE 82 CALLIOPE 82 LEAD_CHIFF 83 Chiff 83 LEAD_CHARANG 84 Charang 84 LEAD_VOICE 85 VOZ 85 LEAD_FIFTHS 86 QUINTAS PARTES 86 LEAD_BASSLEAD 87 BASSLEAD 87 PAD_NEW_AGE 88 NEW_AGE 88 PAD_WARM 89 CALENTAMIENTO 89

PAD_CHOIR 91 CORO 91 PAD_BOWED 92 Se inclin 92 PAD_METALLIC 93 METALLIC 93 PAD_HALO 94 HALO 94 PAD_SWEEP 95 SWEEP 95 FX_RAIN 96 LLUVIA 96 FX_SOUNDTRACK 97 SOUNDTRACK 97 FX_CRYSTAL 98 CRYSTAL 98 FX_ATMOSPHERE 99 AMBIENTE 99 FX_BRIGHTNESS 100 BRILLO 100 FX_GOBLINS 101 DUENDES 101 FX_ECHOES 102 ECOS 102 FX_SCI-FI 103 SCI-FI 103 SITAR 104 BANJO 105 SHAMISEN 106 KOTO 107 KALIMBA 108 GAITA 109 VIOLN 110 Shanai 111 TINKLE_BELL 112 AGOGO 113 STEEL_DRUMS 114 WOODBLOCK 115 TAIKO_DRUM 116 MELODIC_TOM 117 SYNTH_DRUM 118 REVERSE_CYMBAL 119 GUITAR_FRET_NOISE 120 BREATH_NOISE 121 COSTA 122 BIRD_TWEET 123 TELEPHONE_RING 124 HELICPTERO 125 Aplausos 126 GUNSHOT 127

Nombres de percusin Voz 9 es un canal especial que reproduce sonidos de percusin en lugar de notas musicales. Puede utilizar estos nombres de sonidos de percusin en lugar de un valor de nota al reproducir msica en voz 9. Por ejemplo: V9 [Bass_Drum] q jugara un bombo con una duracin trimestre. Usted puede jugar ms de un sonido de percusin al mismo tiempo mediante la adicin de ellos juntos, como si estuvieras tocando varias notas a la vez. En este 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 35 BASS_DRUM 36 SIDE_STICK 37 ACOUSTIC_SNARE 38 HAND_CLAP 39 ELECTRIC_SNARE 40 LOW_FLOOR_TOM 41 CLOSED_HI_HAT 42 HIGH_FLOOR_TOM 43 PEDAL_HI_HAT 44 LOW_TOM 45 OPEN_HI_HAT 46 LOW_MID_TOM 47 HI_MID_TOM 48 CRASH_CYMBAL_1 49

HIGH_TOM 50 RIDE_CYMBAL_1 51 CHINESE_CYMBAL 52 RIDE_BELL 53 PANDERETA 54 SPLASH_CYMBAL 55 CENCERRO 56 CRASH_CYMBAL_2 57 Vibraslap 58 RIDE_CYMBAL_2 59 HI_BONGO 60 LOW_BONGO 61 MUTE_HI_CONGA 62 OPEN_HI_CONGA 63 LOW_CONGA 64 HIGH_TIMBALE 65 LOW_TIMBALE 66 HIGH_AGOGO 67 LOW_AGOGO 68 CABASA 69

MARACAS 70 SHORT_WHISTLE 71 LONG_WHISTLE 72 SHORT_GUIRO 73 LONG_GUIRO 74 75 CLAVES HI_WOOD_BLOCK 76 LOW_WOOD_BLOCK 77 MUTE_CUICA 78 OPEN_CUICA 79 MUTE_TRIANGLE 80 OPEN_TRIANGLE 81

Nombres de los controladores El protocolo MIDI define un nmero de controladores que modifican cmo suena la msica. 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_COARSE MOD_WHEEL_COARSE 1 2 BREATH_COARSE 4 FOOT_PEDAL_COARSE PORTAMENTO_TIME_COARSE 5 DATA_ENTRY_COARSE 6 7 VOLUME_COARSE BALANCE_COARSE 8 PAN_POSITION_COARSE 10 EXPRESIN 11 12 EFFECT_CONTROL_1_COARSE EFFECT_CONTROL_2_COARSE 13 SLIDER_1 SLIDER_2 SLIDER_3 SLIDER_4 16 17 18 19

SOUND_VARIATION 70 VARIACIN 70 SOUND_TIMBRE 71 TIMBRE 71 SOUND_RELEASE_TIME 72 RELEASE_TIME 72 SOUND_ATTACK_TIME 73 ATTACK_TIME 73 SOUND_BRIGHTNESS 74 BRILLO 74 SOUND_CONTROL_6 75 CONTROL_6 75 SOUND_CONTROL_7 76 CONTROL_7 76 SOUND_CONTROL_8 77 CONTROL_8 77 SOUND_CONTROL_9 78 CONTROL_9 78 SOUND_CONTROL_10 79 CONTROL_10 79 GENERAL_PURPOSE_BUTTON_1 80 GENERAL_BUTTON_1 80 BUTTON_1 80 GENERAL_PURPOSE_BUTTON_2 81 GENERAL_BUTTON_2 81 BUTTON_2 81 GENERAL_PURPOSE_BUTTON_3 82 GENERAL_BUTTON_3 82 BUTTON_3 82 GENERAL_PURPOSE_BUTTON_4 83 GENERAL_BUTTON_4 83 BUTTON_4 83 EFFECTS_LEVEL 91 EFECTOS 91 TREMULO_LEVEL 92 Trmulo 92 CHORUS_LEVEL 93 CORO 93 CELESTE_LEVEL 94 CELESTE 94 PHASER_LEVEL 95 PHASER 95

DATA_BUTTON_INCREMENT 96 DATA_BUTTON_INC 96 BUTTON_INC 96 DATA_BUTTON_DECREMENT 97 DATA_BUTTON_DEC 97 BUTTON_DEC 97 NON_REGISTERED_COARSE 98 NON_REGISTERED_FINE 99 REGISTERED_COARSE 100 REGISTERED_FINE 101 ALL_SOUND_OFF 120 ALL_CONTROLLERS_OFF 121 LOCAL_KEYBOARD 122 ALL_NOTES_OFF 123 OMNI_MODE_OFF 124 OMNI_OFF 124 OMNI_MODE_ON 125 OMNI_ON 125 MONO_OPERATION 126 MONO 126 POLY_OPERATION 127 POLY 127

BANK_SELECT_FINE 32 MOD_WHEEL_FINE 33 BREATH_FINE 34 FOOT_PEDAL_FINE 36 PORTAMENTO_TIME_FINE 37 DATA_ENTRY_FINE 38 VOLUME_FINE 39 BALANCE_FINE 40 PAN_POSITION_FINE 42 EXPRESIN 43 EFFECT_CONTROL_1_FINE 44 EFFECT_CONTROL_2_FINE 45 HOLD_PEDAL 64 Para 64 PORTAMENTO 65 SUSTENUTO_PEDAL 66 SUSTENUTO 66 SOFT_PEDAL 67 SUAVE 67 LEGATO_PEDAL 68 LEGATO 68 HOLD_2_PEDAL 69 HOLD_2 69

Eventos en la especificacin MIDI tomar bytes como un valor, pero algunos controladores puede tener una gama ms 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 debera tener que descomponer el volumen que desea establecer en un byte alto y un byte bajo, a continuacin, 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 darn 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 ests interactuando directamente con el analizador).

BANK_SELECT 16383 MOD_WHEEL 161 ALIENTO 290 FOOT_PEDAL 548 PORTAMENTO_TIME 677 DATA_ENTRY 806 VOLUMEN 935 BALANCE 1064 PAN_POSITION 1322 EXPRESIN 1451 EFFECT_CONTROL_1 1580 EFFECT_CONTROL_2 1709 NON_REGISTERED 12770 REGISTRADO 13028

Otras constantes predefinidas JFugue define las siguientes constantes para su conveniencia. Usted las puede utilizar como valores de configuracin para los controladores, como en X [Hold_Pedal] = ON .

EN 127 OFF 0 DEFAULT 64

Potrebbero piacerti anche