Documentation

Original: http://www.codesounding.org/usageeng.html

SourceForge.net Logo

Le processus de sonification commence par une injection d’un pattern Décorateur en «si», «pour», etc déclarations, dans ce qui est connu comme jeton flux réécriture. Les rappels sont structurées autour du modèle de conception du modèle, si l’algorithme de sondage réel est interchangeable et configurés à l’exécution. La sonification est donc pas sur la structure du code source statique mais sur le comportement dynamique lors de l’exécution.
Code de l’analyse est effectuée par un analyseur ANTLR, tandis que la production du son par les moteurs différents:

la langue ABC (voir les sites de Guido Gonzato et Chris Walshaw’S)

JMusic
JACK
JSyn
Max / MSP
Pure Data

Utilisation de la bibliothèque – Le fichier de configuration
Exigences générales:

codesounding-embedded.jar dans le chemin
JDK 5

Pour être “insonifié”, les fichiers source Java doivent être post-traitées avec la classe codesounding.cl.ApplyTemplate, qui applique une transformation symbolique de ANTLR. Sur ce sujet, voir le tutoriel en ANT ou la documentation de l’interface de ligne de commande. Par exemple, si nous obtenons un fichier Java de source (PingPong.java) et instrument, il (soit en utilisant un Instrumenter ou la tâche de la tâche ANT), on obtient un nouveau fichier source instrumenté (PingPong.java) qui lors de l’exécution appellera un processeur sonore personnalisé .
Après l’instrumentation, de compiler les fichiers sources avec codesounding-embedded.jar dans le chemin. Enfin, gérer vos classes / pots et laissez sonner.

L’algorithme de génération du son est définie par la propriété de PROCESSOR.TYPE; ce peut être réglée par -D de la JVM ou ajouté dans un fichier de configuration nommé, par défaut, codesounding.properties ou ce que vous définissez avec le -DCONFIG_FILE de la propriété.

Valeurs autorisées pour PROCESSOR.TYPE sont les suivants (pour installer JSyn voir sa documentation):

codesounding.UDPProcessor: pour chaque indocations Java envoie un message UDP. Il permet la communication avec Max / MSP ou patches Pure Data pour un traitement ultérieur audio (voir un exemple). L’option -Dtarget=[ip address] définit l’hôte sur lequel le patch est en cours d’exécution.

Statement type UDP port
Variable declaration 7001
{ 7002
} 7003
break 7004
continue 7005
do 7006
for 7007
if 7008
return 7009
throw 7010
while 7011

codesounding.jsyn.GrainScaledSkipperProcessor: Java indocations chaque millième déclenche une oscillation à enveloppe (de 50 ms), chaque instruction ayant une fréquence différente. Ils sont enfin ajoutés et ont résonné. Curseurs permettent de modifier les fréquences des oscillateurs, combien instructions sont ignorés et l’enveloppe des grains. En outre, les instructions s’adaptent sautées l’amplitude de chaque oscillateur.

codesounding.jsyn.GrainSkipperProcessor: une mise en œuvre similaire à GrainScaledSkipperProcessor, avec une grande enveloppe et sans mise à l’échelle.
codesounding.jsyn.OneSampleProcessor: tous les Java files d’instructions à seulement un échantillon. Tous les 200s, ils sont lus par un échantillonneur. Un potentiomètre permet le changement de la fréquence d’échantillonnage.
codesounding.jsyn.filter.OctaveProcessorWithFilter: similaire à GrainScaledSkipperProcessor, voici la sortie est passe-bande filtrée dans une banque à l’écoute de la C60 de MIDI, …, F77 emplacements.
codesounding.jsyn.InstrumentProcessor: ici, je suis en train de plaisanter avec les instruments exportés à partir de fil de SoftSynth; les mêmes effets (c’est, en sautant les instructions et les jouer avec de petites notes tempérament égal) peuvent être obtenus par simple MIDI – voir par exemple la classe de base SynthSyncopate.java JMusic.
codesounding.javoice.JaVoiceProcessor: la trace Java se traduit par une “image”, puis transformé en son. L’algorithme de base est tout à fait le même que hificode.c de, publiés dans JavOICe. L’audio est rendu par JSyn.

codesounding.jjack.SamplerSumProcessor: sur OS Linux, crée une onde sonore dans un format JACK. Vous devez avoir la bibliothèque de jjack et un serveur JACK fonctionnement. Autres propriétés obligatoires sont jjack.ports, jjack.input.ports (mis à 0), java.library.path pour la bibliothèque .so natif (voir le manuel de jjack), et ns, qui fixe les nanosecondes pour l’intervalle d’échantillonnage.

Vous devez également inclure jjack.jar dans le chemin de classe.
Voici un exemple:
java -Djjack.ports = 2 -dns = 500 -Djjack.input.ports = 0 -DPROCESSOR.TYPE = codesounding.jjack.SamplerSumProcessor -Djava.library.path = “/ usr / lib” -cp “/ usr / share / java / jjack.jar: ./ java2demo.jar: ../../ dist / codesounding-embedded.jar “java2d.Java2Demo

codesounding.jmusic.LogaRythm: génère la musique en fonction de la quantité et de la variabilité des types d’instruction au cours du temps, en utilisant une fonction logarithmique
codesounding.abc.MidiBasicPlayer: génère et joue des fichiers MIDI temporaires; il nécessite le binaire abc2midi
codesounding.abc.MidiGenerator: génère des fichiers MIDI sans les jouer; il nécessite le binaire abc2midi
codesounding.abc.BufferedProcessor: crée un fichier au format ABC; vous devez specity son chemin en utilisant la propriété OUTPUT_FILE. A partir de ce fichier, vous pouvez créer manuellement le MIDIs:

abc2midi music.abc -o my_midi.mid
Vous pouvez également exporter la partition dans un fichier PS avec abcm2ps, puis exporter que sous forme de fichier PDF.

  • codesounding.jmusic.CrazyPianist
  • codesounding.jmusic.DamnBirds
  • codesounding.jmusic.DiehardPeople
  • codesounding.jmusic.IrritatingPianists

Le fichier de configuration
Actuellement avec le fichier de configuration que vous pouvez détailler le comportement de codesounding.abc. * Et les classes codesounding.jmusic.LogaRythm.

Le fichier de configuration est un fichier de propriétés standard de Java; chaque ligne contient une paire clé-valeur:
PROPERTY_NAME = VALEUR
Il existe quatre groupes de propriété, avec les prefixs suivantes:

  1. de base (processeurs pour codesounding.abc. *)
  2. filtrer (pour codesounding.abc. * processeurs)
  3. midi (pour les processeurs codesounding.abc.Midi *)
  4. basic.instr (pour processeur codesounding.jmusic.LogaRythm)

Aucune propriété est obligatoire: sera utilisé par défaut qu’ils valeurs / comportements. En cas de difficulté, n’oubliez pas que sur CodeSounding les valeurs du fichier de configuration ombre de ceux de la ligne de commande, et que le fichier de configuration dans le répertoire courant l’emporte sur le chemin de classe.

1. propriétés de base
Ce sont les propriétés de configuration ABC. Je ne suis pas un expert ABC, je vous renvoie aux travaux de la grande Guido Gonzato, en langue anglaise et italienne, ou sur le site de Chris Walshaw.
Pour nos objectifs, il suffit de savoir qu’un fichier ABC est un fichier texte, faire d’une tête et un corps.

basic.header: définit l’en-tête de fichier ABC; par défaut est vide:
X: 1
K: C
basic.var_declaration: attribue une note à une déclaration de déclaration des variables. La valeur par défaut est A (= La).
basic.break: attribue une note à l’instruction break. La valeur par défaut est “”, qui est l’espace (l’espace entre les notes).
basic.continue: attribue une note à l’instruction continue. La valeur par défaut est ‘, qui est le caractère apostrophe (augmente la note précédente d’une octave).
basic.do: attribue une note à la déclaration faire. La valeur par défaut est F (= Fa).
basic.for: attribue une note à l’instruction for. La valeur par défaut est E (= Mi).
basic.while: attribue une note à l’instruction while. La valeur par défaut est G (= Sol).
basic.start_block: attribue une note à l’accolade ouvrante {. La valeur par défaut est B (= Si).
basic.end_block: attribue une note à l’accolade fermée}. La valeur par défaut est C (= Do).
basic.if: attribue une note à l’instruction if. La valeur par défaut est D (= Re).
basic.return: attribue une note de la déclaration de retour. La valeur par défaut est z (une pause musicale).
basic.throw: attribue une note à l’instruction throw. La valeur par défaut est (c’est la virgule; abaisse la note précédente d’une octave, une apostrophe inversée).

2. propriétés du filtre
Quand la musique ABC, avec un filtre, vous pouvez associer une logique d’exécution de post-traitement. Avant d’être enregistré sur un fichier, les notes sont mises en mémoire tampon dans un tampon temporaire. Un filtre peut décider écrire une note dans la mémoire tampon, ou modifier son contenu. À l’heure actuelle, il existe quatre filtres:

codesounding.abc.filter.BasicFilter: écrire toutes les notes dans la mémoire tampon.
codesounding.abc.filter.OneThousandthFilter: écrire un billet sur ​​mille, les autres sont éliminés.
codesounding.abc.filter.DurationFilter: de façon aléatoire une séquence transforme de la même note (sur le tampon) dans la même note de plus longue durée, par exemple, la séquence AAA (3 La) est converti en A3, une de la triple durée.
codesounding.abc.filter.SheetMusicFilter: formats convenablement le tampon ABC, en particulier, il crée plus de lignes, plus de voix, attribue instruments.

Les deux premiers filtres fonctionnent sur ​​le tampon, alors que les deux derniers processus de son contenu. Il est possibile de combiner plusieurs filtres, de manière séquentielle, en utilisant la propriété # filtre, par exemple.:

filter.1 = codesounding.abc.filter.OneThousandthFilter
filter.2 = codesounding.abc.filter.DurationFilter
filter.3 = codesounding.abc.filter.SheetMusicFilter

définir l’ordre de traitement: OneThousandthFilter est la première, est ensuite appliqué la DurationFilter, enfin la SheetMusicFilter.
Si aucun n’est utilisé, par défaut, est chargé uniquement de la codesounding.abc.filter.BasicFilter. Si vous souhaitez utiliser plusieurs filtres, n’oubliez pas d’utiliser au moins un qui écrit sur ​​la mémoire tampon.
Avec un peu d’imagination, vous pouvez écrire des filtres plus complexes.

3. propriétés midi
Ces propriétés permettent de créer une musique polyphonique ABC et d’associer un instrument à une voix. En quelques mots, ils permettent d’avoir plusieurs instruments de sondage simultanément.
Pour utiliser les deux premières propriétés (totvox et voxnum), vous devez appliquer le filtre de codesounding.abc.filter.SheetMusicFilter.

midi.totvox: permet de créer une musique polyphonique, fixant le nombre des instruments qui nous sonnons ensemble. La valeur par défaut est une seule voix.
midi.instrument.voxnum# :. permettre d’associer un instrument donné à la # voix. Par exemple, midi.instrument.voxnum.2 = 47 attribue timbales à la deuxième voix. Pour une liste des codes et des instruments MIDI, voir ici (n’oubliez pas de soustraire l’un de ces codes, parce plage d’index est de 0 à 127).
Si aucun n’est défini, l’instrument par défaut est 1, qui est le piano.

Notez: vous pouvez définir les instruments que si il ya au moins deux voix.

midi.conversion.abc_min_kbytes: définir la dimension minimum des fichiers temporaires ABC (en kilo-octets), afin qu’ils puissent être convertis en fichiers MIDI. La valeur par défaut est 2.
midi.conversion.wait_seconds: la fréquence (en secondes) de ABC fichier temporaire conversion. Défaut est de 4 secondes.

4. propriétés basic.instr
Lorsque vous utilisez la classe codesounding.jmusic.LogaRythm vous pouvez affecter un instrument pour chaque catégorie d’emploi. Utilisez les noms de mnémoniques comme definited sur l’interface de jm.constants.ProgramChanges, par exemple:
basic.instr.continue = EL_GUITAR
Comme par défaut seront utilisées instruments à partir de jm.constants.ProgramChanges.PIANO.

basic.instr.var_declaration
basic.instr.break
basic.instr.continue
basic.instr.do
basic.instr.for
basic.instr.while
basic.instr.start_block
basic.instr.end_block
basic.instr.if
basic.instr.return
basic.instr.throw

Enfin, si vous souhaitez enregistrer dans le répertoire courant le son généré par le processeur codesounding.jmusic.LogaRythm, vous pouvez définir la propriété jmusic.writemidi de vrai.

Comments are closed.