Bonsjours les gens...
Il est tard...
J'ai les yeux qui me piquent...
... et je n'arrive pas à retrouver un petit patch présent dans la 0.40.3-extended qui permet de produire des sons de Gameboy.
Je sais qu'il y est...
Je l'ai vu...
Je m'en suis servi...
Mais il se cache, le coquin.
Si vous le croisez, pourriez-vous lui dire qu'un monsieur fatigué l'attend dans le hall.
Merci.
Pour info, dans mes recherches je suis tombé sur http://mmonoplayer.com/mspexternals.php qui propose des patchs d'émulation de sons d'anciennes consoles.
Beaucoup de MSP, mais aussi deux patchs ATARI pour PD...
Aux plaisirs...
Hors ligne
C'est peut être tard et ce n'est peut etre pas ce que tu cherches mais y a truc qui ressemble à ce que tu cherches dans l'help de [list-sieve]
Hors ligne
Hors ligne
Hello,
Plein de choses intéressantes dans le lien proposé par mrpropre, en particulier à la fin de ce pdf : http://www.zenpho.co.uk/PhillPhelps-ChiptuneSynth.pdf des infos sur les capacités sonores des différentes puces.
Il se trouve que par ce week-end (pluvieux) je me suis lancé dans une modélisation sonore de l'atari 2600 en me basant sur différents documents qui expliquent son fonctionnement. Ce n'est pas vraiment au point mais ça ressemble Le chip utilisé par le 2600 (TIA) fonctionne en 32000 Hz, et mon programme en 44100, du coup il y a des harmoniques supplémentaires... Enfin, je compte améliorer ça et en faire un instrument jouable. En attendant voila les sons produits et le programme, en chuck!
Le principe : il y a 16 formes d'onde différentes définies par des registres binaires, lus à des vitesses différentes (32 vitesses = 32 notes) et 16 niveaux d'amplitude.
Les infos sur les formes d'ondes et les fréquences produites viennent de http://home.arcor.de/estolberg/texts/freqform.txt
Un exemple sonore : toutes les ondes différentes bout à bout, pour chacune les 32 notes, le volume ne change pas.
// http://home.arcor.de/estolberg/texts/freqform.txt // http://www.biglist.com/lists/stella/archives/199704/msg00007.html // http://www.randomterrain.com/atari-2600-memories-batari-basic-music-sound.html // http://www.whimsey.com/atari_docs/ // http://home.arcor.de/estolberg/tools/index.html Step s=>dac; 1 => s.gain; // Distorsion modes 0-15 data [ // 0 : Distorsion 0 // No sound, used to output 4-bit samples by changing the volume very fast [ [1], // Source Samples data [1], // Modifier data [1] ], // Clock mode (pixelclock = 3 * cpuclock) // Distorsion 1 / Buzzy Tones [ [0,0,1,0,1,0,0,0,0,1,1,1,0,1,1], [1], [1] ], // Distorsion 2 / Carries distorsion 1 downward into a rumble [ [0,0,1,0,1,0,0,0,0,1,1,1,0,1,1], [0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0], [1] ], // Distorsion 3 / Flangy wavering tones, like a UFO [ [0,0,1,0,1,0,0,0,0,1,1,1,0,1,1], [0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1], [1] ], // Distorsion 4 / Pure tone [ [0,1], [1], [1] ], // Distorsion 5 : same as 4 [ [0,1], [1], [1] ], // Distorsion 6 / Between pure tone and buzzy tone [ [1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [1], [1] ], // Distorsion 7 / Reedy tones, much brighter [ [0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1], [1], [1] ], // Distorsion 8 : 511 bits of white noise // White noise / explosions / lightning, jet / spacecraft engine [ [1,1,0,0,0,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,1,0, 0,1,1,0,0,0,1,0,0,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1,1,0,1,1,1,0,1, 1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,0,1,1,0,0,1,0,1,1,1,0,1,1,1, 1,0,1,1,0,0,0,0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,1,1,1,0, 1,1,1,1,1,0,1,1,1,0,1,0,1,0,1,0,0,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,0,1,0,0,1,0,0,1, 1,0,0,0,0,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,1, 0,0,1,0,1,1,0,0,1,0,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,1,0,1,1,0,0,1,0, 1,0,1,0,1,1,1,0,0,0,1,0,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,0,1,1, 1,0,0,0,0,1,0,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1, 1,0,1,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,0,0, 0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,0,1,0,0, 0,0,1,0,0,1,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,0,1,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1, 0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,0,1,0], [1], [1] ], // Distorsion 9 : same as 7 [ [0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1], [1], [1] ], // Distorsion 10 : same as 6 [ [1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [1], [1] ], // Distorsion 11 : same as 0 [ [1], [1], [1] ], // Distorsion 12 / Pure tone, goes much lower in pitch than 4 & 5 [ [1,0], [1], [3] ], // Distorsion 13 : same as 12 [ [1,0], [1], [3] ], // Distorsion 14 / Electronic tones, mostly lows, extends to rumble [ [1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [1], [3] ], // Distorsion 15 / Electronic tones, mostly lows, extends to rumble [ [0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1], [1], [3] ] ] @=> int DMData[][][]; 0 => int pitch; // 0-31 pitch value 0 => int distorsion; // 0-15 distorsion mode (modifies source & modifier) 0 => int volume; // 0-15 6 => int newDistorsion; 1 => int sourceLength; 1 => int modifierLength; 0 => int i; // source index (0 -> source length - 1) 0 => int j; // modifier index (0 -> modifier length - 1) 0 => int timeIndex; float sample; float sampleValue; 0 => float lastSampleValue; float sampleVolume; 1.4134615384::samp => dur tbase; // 44100 / 31200 (TIA PAL samplerate based on pixelclock) //1.4026717557::samp => dur tbase; // 44100 / 31440 (TIA NTSC samplerate based on pixelclock) dur t; tbase => t; // test values 8 => volume; 0 => pitch; while(t => now){ if (newDistorsion != distorsion) { newDistorsion => distorsion; DMData[distorsion][0].size() => sourceLength; DMData[distorsion][1].size() => modifierLength; // switch between cpuclock and pixelclock (pixelclock = 3 * cpuclock) if (DMData[distorsion][2][0] == 3) tbase + tbase + tbase => t; else tbase => t; 0 => i; 0 => j; } (1.0 / 16) * volume => sampleVolume; // TODO : passer en deux voies if (DMData[distorsion][1][j] == 1) { DMData[distorsion][0][i] => sampleValue; sampleValue => lastSampleValue; } else lastSampleValue => sampleValue; sampleValue * sampleVolume => sample; sample => s.next; if (timeIndex % (pitch + 1) == 0) i++; i % sourceLength => i; j++; j % modifierLength => j; // TODO : utiliser une seule base temporelle! timeIndex++; // tests values /* if (timeIndex%625 == 0) { volume++; }*/ if (timeIndex%1000 == 0) { pitch++; <<<pitch, distorsion, t, modifierLength, sampleVolume>>>; } if (timeIndex%32000 == 0) newDistorsion ++; //if (timeIndex%998400 == 0) newDistorsion ++; pitch%32 => pitch; //if (newDistorsion < 0) newDistorsion == 15; newDistorsion%16 => newDistorsion; volume%16 => volume; }
Aussi, quelques liens :
l'audio sur la gameboy advance : http://belogic.com/gba/
une comparaison des sons produits par les différents modèles de gmaeboy(s) : http://www.herbertweixelbaum.com/comparison.htm
le système audio de la gameboy en bref : http://www.nullsleep.com/treasure/lsdj_tutorial/
le système audio de la NES en profondeur, apparemment GB et NES sont assez proches : http://nesdev.parodius.com/NESSOUND.txt
le manuel du chip POKEY, responsable du son sur les ordis Atari 8bit (400XL, 800XL, etc.): http://www.retromicro.com/files/atari/8bit/pokey.pdf
Hors ligne
Merci emoc pour ce document :
http://www.zenpho.co.uk/PhillPhelps-ChiptuneSynth.pdf
J'avais déjà commencé à faire un vsti sur la structure simplifiée d'une SID station.
Et donc, je retrouve une partie de mon développement dans ce document, ce qui me conforte dans ma programmation.
Hors ligne
citation :
C'est peut être tard et ce n'est peut etre pas ce que tu cherches mais y a truc qui ressemble à ce que tu cherches dans l'help de [list-sieve]
C'était cela... merci...
Pour ce qui est des posts suivants... que du bon !!
Hors ligne
Hey!
Je viens de tomber là-dessus, des plugins pour supercollider pour émuler des chips 8-bit, on retrouve la TIA de l'atari 2600, mais aussi POKEY ou SID et d'autres. Le code source C est aussi fourni
http://www.fredrikolofsson.com/pages/code-sc.html
Hors ligne