reMID est une implémentation MIDI de la puce MOS8580 6581 SID utilisant la bibliothèque reSID. Ceci inclut l'utilisation d'instruments scriptés qui permettent un contrôle sonore complexe de la puce. C'est donc un synthétiseur qui émule le comportement sonore d'une puce électronique.
reMID est programmé par Spencer Jackson.
Vous pouvez utiliser reMID en tant qu'application autonome sans interface graphique. Pour cela, il vous faudra le lancer depuis un terminal avec un argument pour choisir un préréglage de la sonorité.
Vous pouvez également l'utiliser en greffon LV2 à l'aide d'un hôte de greffon de ce format et là, vous aurez une interface graphique minimaliste vous permettant de un préréglage de la sonorité. À noter que tous les préréglages n'ont pas l'air de fonctionner.
reMID possède des capacités de scriptage pour que vous puissiez créer des instruments et des fichiers contenant des banques d'instruments. En fait, vous ne pouvez pas obtenir de son sortant de reMID sans un fichier-instrument (donc naturellement, un fichier-instrument par défaut est fourni et installé, et plusieurs autres peuvent être trouvés dans /usr/lib/lv2/remid.lv2/
). Consultez le fichier /usr/lib/lv2/remid.lv2/instruments.conf
pour des exemples et plusse d'informations sur les paramètres d'instrument.
Veuillez noter que la conception originelle était pensée pour permettre à un séquenceur de contrôler une seule instance de reMIDI et de jouer une pièce chiptune entière grâce à l'utilisation des canaux MIDI et des program changes. Cette capacité demeure, mais l'utilisation plus moderne de chaque instance ayant un son est également disponible.
Une documentation complète pour la programmation de l'instrument est disponible à cette adresse : http://gp2x.org/remid/inst_config.php . Une feuille de caractéristiques techniques complètes 2) du SID est plutôt utile également si vous n'êtes pas familier avec, consulter http://archive.6502.org/datasheets/mos_6581_sid.pdf .
Voici les bases pour paramétrer les registres. Travailler en hexadécimal est habituellement plus facile, ceci dit vous pouvez utiliser des nombres décimaux si vous le voulez vraiment. Notez que le * pour les paramètres de voix est compris entre 1 et 3 (exemple : v2_control).
v*_control
0x80 | bruit |
0x40 | pulsation (carrée/rectangle) |
0x20 | dent de scie |
0x10 | triangle |
0x04 | modulation en boucle avec voix(N-1) (où 1-1 == 3) |
x02 | sync avec voix(N-1) (où 1-1 == 3) |
v*_detune [-1000,1000] désaccordage de voix en centièmes/10.
v*_pulse [0x000,0xfff]==[0,4095] largeur de pulsation lorsque la forme d'onde pulsée sélectionnée dans le registre de contrôle 0x800 est une onde carrée. 0 est DC 0, 0xfff est DC 1.
v*_ad [0x00,0xff] 0xXY - X est l'attaque, Y le déclin. Ils ne sont pas linéaires, mais plus c'est large plus c'est long. Le lien au-dessus a des tables.
v*_sr [0x00,0xff] 0xXY - même idée que les registres ad mais pour le soutien et la relâche.
fltr_cutoff [0x000,0x7ff]==[0,2047] fréquence de coupure qui s'étale linéairement d'environ 30Hz à 12kHz (f=N*11970/2048+30).
fltr_res_vic [0x00,0xf7] 0xXY - X paramètre la résonance du filtre, Y paramètre les connexions d'entrée de la voix du filtre
0xX7 | filtre les 3 voix |
0xX4 | filtre uniquement la voice3 |
0xX2 | filtre uniquement la voice2 |
0xX1 | filtre uniquement la voice1 |
0xX0 | court-circuite le filtre |
fltr_mode
0x4 | passe-haut |
0x2 | passe-bande |
0x1 | passe-bas |
Il y a d'autres options, mais celles-ci sont les plus communes.
Pour le scriptage, il vous est recommandé de regarder des exemples. Les fichiers dans le répertoire /usr/lib/lv2/remid.lv2/
fournissent plusieurs exemples que vous pouvez regarder. Chaque ligne démarre avec un point '.' suivi d'un numéro de ligne, puis une des commandes suivantes :
OPCODE | Argument | Description |
---|---|---|
nop | - | pas d'opération |
wait | cycles | ne fait rien pendant N cycles |
goto | ligne, sauts | saute à la ligne N du script, si un second argument est fourni, il sautera seulement M fois |
stop | - | fin de script |
v*_freq | hertz | paramètre la fréquence de la voix directement en hz |
v*_freq_pct | pourcentage | change la fréquence de la voix de N pourcent |
v*_freq_hs | demi-pas | change la fréquence de la voix de N demi-tons |
v*_detune | .1 centièmes | change la fréquence de la voix de N/10 centièmes (demi-ton/1000) |
v*_pulse | registre | paramètre le registre de largeur de pulsation |
v*_control | registre | paramètre le registre de contrôle |
v*_ad | registre | paramètre le registre d'attaque et de déclin |
v*_sr | registre | paramètre le registre de soutien et de relâche |
v*_pulsemod | registre/cycle | ajoute N au registre de largeur de pulsation à chaque cycle |
v*_gate | état de la porte | démarre (1) ou arrête (0) l'émission sonore de la voix |
fltr_cutoff | registre | paramètre le registre de coupure de filtre |
fltr_cut_pct | pourcent | change le registre de coupure de filtre de N pourcent |
fltr_cutmod | .1 pourcent | chaque cycle change la coupure de filtre de N/10 pourcent |
fltr_res_vic | registre | paramètre le registre de résonance du filtre et de connections d'entrée de voix |
fltr_mode | registre | paramètre le mode de filtre (noter que ceci est décalé vers le haut dans la partie du dessus) |
env3_2fltr | - | module la coupure de filtre avec la sortie de l'enveloppe de la v3, appelle ceci une fois et démarre la modulation |
pour arrêter la modulation, appeler fltr_cutmod 0 | ||
osc3_2fltr | - | module la coupure de filtre avec la sortie de l'oscillateur de la v3 (utilisé pour le LFO) |