:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Librairies et Utilitaires

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 01/01/2006, 23h28   #26
nagame
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Châtellerault
Messages: 111
Par défaut

Ben..., j'ai remplacé ma version C de la VBL par cette appel et ca marche niquel

Mais il y a un truc qui je capte pas.
Selon ma doc (cowbite hardware spécifications), la fonction pour le "Halt CPU" c'est 0x02 et non pas 0x20000. Et effectivement 0x02 bloque la gba...
Par contre 0x20000 n'est pas référencé !! .
__________________
http://www.nagame.net
nagame est déconnecté   Réponse avec citation

Publicité

Vieux 01/01/2006, 23h40   #27
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

Citation:
Envoyé par nagame
Ben..., j'ai remplacé ma version C de la VBL par cette appel et ca marche niquel

Mais il y a un truc qui je capte pas.
Selon ma doc (cowbite hardware spécifications), la fonction pour le "Halt CPU" c'est 0x02 et non pas 0x20000. Et effectivement 0x02 bloque la gba...
Par contre 0x20000 n'est pas référencé !! .
moi aussi ca marchai nikel pendant 3 jours, puis je sais pas par quel miracle ca n'a plus marché (je deteste les trucs instables comme ca).

pourtant j'ai fait differants essais (lancer des timmers en meme temp, un hbl ...) et j'arrive pas a determiner d'ou vien le probleme, des fois ca marche et des fois ca marche pas, alors dans le doute je prefere ne plus y toucher. peut etre un probleme d'emulateur (je sais que vba a parfois des problemes avec des appels bios) mais j'en doute quand meme.
Citation:
ça accélère également l'émulation de ton jeu.
oh ca m'interesse ca ! , explique moi ca en detail sil te plait mon brunni

edit: au fait nagamé ca y est ta trouvé d'ou vien ton bug qui fait planter ta rom depuis + de 1 ans

Dernière modification par Nesgba ; 02/01/2006 à 00h04.
Nesgba est déconnecté   Réponse avec citation
Vieux 02/01/2006, 00h15   #28
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

nagame> swi 0x2 c'est en mode THUMB (16 bits). En mode ARM (32 bits), il faut décaler de 16 bits pour tous les appels au BIOS. C'est donc normal de devoir faire swi 0x2000 et pas swi 0x2 (plante la GBA, comme toutes les autres valeurs inférieures à 0x1000 d'ailleurs).

Nesgba> Tout simplement, si tu fais un HALT, VBA arrête d'émuler et lance directement la prochaine interruption, et tu économises comme ça beaucoup de temps. Sinon lorsqu'on attend la VBLANK, on fait un truc du style:
while(REG_VCNT < 160);
Ben là il va émuler chaque itération de la boucle (qui va se faire des dizaines de milliers de fois) et donc ralentir. Si tu fais un HALT, il passera directement à la VBLANK (ou à une autre interruption entre deux). Par contre il me semble qu'il ne faut pas juste faire un swi 0x2 et penser que la VBL arrivera forcément après, car - sauf erreur - HALT attend la prochaine IRQ, et c'est pas forcément la VBL. Enfin je dis ça, mais j'ai jamais utilisé l'appel swi 0x2, donc je ne suis même pas sûr de ce qu'il fait. Perso j'utilise ceci:
#define REG_STOPCNT *(volatile unsigned char*) 0x4000301
REG_STOPCNT=0<<7;
Ca met la GBA en power down (par exemple mon Sonic passe de 400% à 600% de vitesse d'émulation en mode turbo avec VBA si je mets cela en boucle pour attendre la VBLANK).
Brunni est déconnecté   Réponse avec citation
Vieux 02/01/2006, 00h32   #29
nagame
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Châtellerault
Messages: 111
Par défaut

Gniiii

Ma page de registre dit :
#define REG_PAUSE *(u16*) 0x4000300 //Pause

Et elle (la page) se finit sur celui-ci...

Mais surtout, comment peut tu faire une boucle puisque ton CPU est down

Edit : nes, ouais, j'ai reussi à corrigé le(s) bug(s). Il n'y avait pas un sule probleme, bien sur, ca aurait été trop facile. Je n'explique pas tout dans le détail mais je connais l'origine problèmes.

J'aurais une autre question à Brunni. Pourquoi l'utilisation des DMAs posent problème dans le code (je pense au 3) ?? Si on met des DMA, c'est pour s'en servir, non ?
__________________
http://www.nagame.net

Dernière modification par nagame ; 02/01/2006 à 11h07.
nagame est déconnecté   Réponse avec citation
Vieux 02/01/2006, 01h43   #30
nagame
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Châtellerault
Messages: 111
Par défaut

Hahaha ,

On fait dans le non-officiel
Je cite "cowbite hardware spécifications" concernant le 0x4000301 (qui est la valeur High du 300) :
"however, as the register isn't officially documented..."

Par contre, 2 lignes plus bas :
"For best forwards compatibility, it'd generally be more recommended to use the BIOS Functions SWI 2 (Halt) or SWI 3 (Stop) rather than writing to this register directly".

Nrx : dans le cas de la version PCM, il n'aurait pas été judicieux d'utiliser les fonctions du bios 0x1A. Tous a été prevu : les structures, loop, frequence, etc.
__________________
http://www.nagame.net

Dernière modification par nagame ; 02/01/2006 à 02h05.
nagame est déconnecté   Réponse avec citation
Vieux 02/01/2006, 06h24   #31
Nrx
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 277
Par défaut

Et bien, je ne pensais pas qu'evoquer ce fameux "swi 0x2000" ferait tant de bruit ! J'aurais peut-etre du donner quelques explications supplementaires... heureusement que Brunni a pris le relais ! D'ailleurs je suis d'accord avec tout ce qu'il a dit :
- mettre le CPU en pause permet d'economiser la batterie et rend l'emulation plus rapide,
- d'autre part il faut mettre "0x2" ou "0x2000" en fonction du mode CPU utilise.

Je precise au passage que j'utilise cet appel bios non seulement dans BJ, mais aussi dans mes dernieres versions de GOD, et que tout marche tres bien ! (pourtant je joue pas mal avec les interruptions dans GOD - cf. le cercle qui se referme lorsqu'on quitte le labyrinthe, ou encore les menus qui apparaissent pendant le jeu) Pour info j'utilise maintenant ce "swi 0x2000" dans le code d'exemple de mon lecteur ADPCM, mais je n'ai pas mis cette version en ligne - sorry!

Nes, je pense qu'il doit y avoir une explication a tes problemes ! Scenario typique : t'as une fonction qui desactive les interruptions pendant un pouilleme de seconde pour faire quelque chose (par exemple pour modifier une interruption), mais tu continues a utiliser le "swi 0x2" pour attendre le VBL => pas d'interruption possible a ce moment precis = plantage.

Citation:
Envoyé par Brunni
[...] Par contre il me semble qu'il ne faut pas juste faire un swi 0x2 et penser que la VBL arrivera forcément après, car - sauf erreur - HALT attend la prochaine IRQ, et c'est pas forcément la VBL.
C'est tout a fait exact ! Dans God je fais ca :
Code:
inline void CommonVwait(void)
{
   unsigned short vblCurrent;

   vblCurrent=vblCounter;
   while(vblCurrent==vblCounter)
      asm("swi 0x20000"); // Halt le CPU
}
Note : pour info, la variable "vblCounter" est mise a jour par l'interruption sur le VBL, elle est declaree comme "volatile unsigned short vblCounter".
(note pour moi-meme : un "do ... while" serait plus propre qu'un simple "while")

Citation:
Envoyé par Brunni
(par exemple mon Sonic passe de 400% à 600% de vitesse d'émulation en mode turbo avec VBA si je mets cela en boucle pour attendre la VBLANK).
Pareil chez moi : j'ai de bien meilleures performances avec VBA depuis que j'utilise cet appel bios !!

Citation:
Envoyé par nagame
Nrx : dans le cas de la version PCM, il n'aurait pas été judicieux d'utiliser les fonctions du bios 0x1A. Tous a été prevu : les structures, loop, frequence, etc.
Ah? kezako le "0x1A" ? [edit] Ah oui, je m'en souviens... Ben en fait j'ai trouve le truc beaucoup trop complique pour ce que je voulais faire - en plus il n'est pas trop difficile de faire les settings manuellement, et on a un meilleur controle de ce qu'on fait ! Mais si tu essais, tiens nous au courant !

Bon, les gars, il va falloir que je vous laisse......... pour un certain temps : j'emballe mon PC ce soir, les demanageurs viennent demain matin pour tout mettre dans un container et envoyer le bazard en France. Moi je prend l'avion vendredi, mais il va encore falloir que je me trouve un logement sur Paris - si tout va bien je serai de retour sur PA dans 1 mois / 1 mois et demi .

Dernière modification par Nrx ; 02/01/2006 à 06h48.
Nrx est déconnecté   Réponse avec citation
Vieux 02/01/2006, 11h10   #32
nagame
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Châtellerault
Messages: 111
Par défaut

he bien, bon retour dans ton pays du fromage qui pue

Concernant ma question sur les DMA, je me suis documenté et ca va, je comprends un peu mieux.

Pour repondre au recommandation de Nes (qui été fondé) : le DM3 reste libre pour l'utilisation dans le code. Il est vrai que ca reste à utiliser que quand ca vaut vraiment le coup !
__________________
http://www.nagame.net

Dernière modification par nagame ; 02/01/2006 à 12h08.
nagame est déconnecté   Réponse avec citation
Vieux 02/01/2006, 14h49   #33
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

Bon retour en France!
Japi est déconnecté   Réponse avec citation
Vieux 07/01/2006, 00h33   #34
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

Je post pour remercier tout le monde pour les conseils. Merci Merci!
J'ai finnalement terminé d'implementer les interruptions et j'ai donc remplacer pour la gestion du son ma fonction d'attente de la VBlank par un systeme d'interruption intervenant à la VBlank.
Resultat comme attendu, ça marche impec et je n'ai plus le petit "clip" que j'avais lorsque je faisais une copie DMA pendant que la musique tournait du au fait que ça faisait une micro pause le temps de la copie.
Japi est déconnecté   Réponse avec citation
Vieux 07/01/2006, 00h51   #35
nagame
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Châtellerault
Messages: 111
Par défaut

Citation:
Envoyé par Nrx
Bon, les gars, il va falloir que je vous laisse......... pour un certain temps : j'emballe mon PC ce soir, les demanageurs viennent demain matin pour tout mettre dans un container et envoyer le bazard en France. Moi je prend l'avion vendredi, mais il va encore falloir que je me trouve un logement sur Paris - si tout va bien je serai de retour sur PA dans 1 mois / 1 mois et demi .
Nrx ! Nrx ! Nrx ! Nrx ! Nrx !
__________________
http://www.nagame.net
nagame est déconnecté   Réponse avec citation
Vieux 08/01/2006, 11h43   #36
nagame
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Châtellerault
Messages: 111
Par défaut

Citation:
Envoyé par Nesgba
tres dangereux cet appel bios, je vien de passer 2heures a essayer de debbuger mon programme car il plantai lamentablement 1 fois sur 6 a l'intro alors que hier ca passai tranquille. j'utiliserai plus jamais le bios ca m'apprendra

Nes, j'ai eu le même coup ce matin
Comme cité ci-dessus par nrx, vérifie bien que tes interruptions sont programmés convenablement avant le 1er appel au bios.

si je désactive mon gestionnaire d'interruption, ca ne marche plus non plus ...
__________________
http://www.nagame.net

Dernière modification par nagame ; 08/01/2006 à 11h48.
nagame est déconnecté   Réponse avec citation
Vieux 15/01/2006, 21h51   #37
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

Nrx, je sais pas si ton demenagement se passe bien, j'espere mais j'avais une question.

Est-ce que on peut monter le nombre de voie à 4 sur ton lecteur ?
Ca m'arrangerait vraiment mais j'ai peur de faire des betises en farfouillant dans le code.
Japi est déconnecté   Réponse avec citation
Vieux 15/01/2006, 22h06   #38
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

sauf erreur, il me semble que la gba n'a que deux canaux (A et , donc j'ai peur que ca passe pas, faudrait pouvoir mixer en temps réel...
Mollusk est déconnecté   Réponse avec citation
Vieux 15/01/2006, 22h16   #39
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

ah ouais? comment j'suis degouté!!!

Mon idée tombe à l'eau à moins comme tu le dis, de galérer à coder un truc qui melange les infos de plusieurs fichiers musicaux.
Japi est déconnecté   Réponse avec citation
Vieux 15/01/2006, 22h16   #40
Nesgba
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 830
Par défaut

Citation:
Envoyé par Mollusk
sauf erreur, il me semble que la gba n'a que deux canaux (A et , donc j'ai peur que ca passe pas, faudrait pouvoir mixer en temps réel...
en fait il veut rajouter de voies en soft sona+sonb+sonc sur un meme canal je pense
Nesgba est déconnecté   Réponse avec citation
Vieux 15/01/2006, 22h39   #41
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

ouais, tu penses bien puisque j'ai pas trop le choix, sniff.

Si une valeur à un temps donné dans le fichier son en C représente la valeur du son, il suffit surement de faire une moyenne pondérée du volume de toutes les voies je suppose. enfin, j'espere.
Japi est déconnecté   Réponse avec citation
Vieux 15/01/2006, 22h51   #42
Nrx
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 277
Par défaut

On en a parle il n'y a pas longtemps (avec MIKEGBA) : il suffit de faire la somme des echantillons, et le tour est joue . La seule contrainte est d'avoir la meme frequence d'echantillonnage pour tous les morceux que tu mixes (s'ils n'ont pas la meme frequence ca devient beaucoup, beaucoup plus complique...).
Nrx est déconnecté   Réponse avec citation
Vieux 15/01/2006, 23h06   #43
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

Ok, impec, c'est ce que je pensais.
Pour la frequence, pas un soucis, comme je fais tous les sons et les musiques, je sample tout à la même frequence.
Tu peux m'indiquer rapidement quelle fonction je dois regarder un peu pour m'en sortir, parce que j'ai commencer à lire ton code, humm, je suis un peu paumé.

Merci.

En parlant de ça, on pourrait facilement faire une fonction de fade in / fade out et même une table de volume pour chaque piste puisque c'est juste une somme (la ponderation dont je parlais au dessus).
Japi est déconnecté   Réponse avec citation
Vieux 15/01/2006, 23h56   #44
Mollusk
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 1 037
Par défaut

bon bah j'ai rien dit alors
Mollusk est déconnecté   Réponse avec citation
Vieux 16/01/2006, 00h01   #45
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

Ben si, c'est bon, t'as raison, je croyais que en hard, il y en avait plus, mais j'essayerais de m'arranger en soft.
Japi est déconnecté   Réponse avec citation
Vieux 16/01/2006, 21h40   #46
Nrx
Membre confirmé
 
Date d'inscription: 10/11/2005
Messages: 277
Par défaut

Ben il faut modifier la fonction "AdpcmDecodeVbl"... Mais le changement n'est pas aussi trivial qu'il n'y parait :

Actuellement, les sons sont soit de pur PCM (= sons non compresses), soit en ADPCM (compression 8 bits => 4 bits).
  • Les sons non compresses sont directement lus de la ROM, sans aucune conversion ou transfert memoire prealable ;
  • Les sons compresses sont d'abord decompresses dans un buffer en RAM, puis ensuite envoyes au circuit sonor de la GBA par DMA. Evidemment ce buffer n'est pas aussi grand que la musique elle-meme : il suffit juste de reserver suffisamment de memoire pour pouvoir stocker les echantillons necessaire pendant un cycle (= 1 VBL). En gros on decompresse un paquet d'echantillons a chaque VBL, echantillons qui seront utilises par le circuit sonor jusqu'au prochain VBL.

Pour le moment il n'y a pas de reglage du volume, ni mixage des sons sur le meme canal. Pour implementer ces "features", il suffit de modifier le buffer qui contient les echantillons... ce qui signifie qu'il FAUT un buffer. En clair il est assez simple de modifier la version ADPCM, mais pour la version PCM, il faut d'abord modifier le code et implementer une copie des echantillons de la ROM vers un buffer en RAM a chaque cycle.

Pour ce qui est des modifs :
  • Pour le volume : il faut faire une mise a l'echelle de chaque echantillon du buffer ; par exemple au lieu de faire
    Code:
    *outputData++=sample>>8;
    on peut faire
    Code:
    *outputData++=(sample*volume)>>(8+6);
    en reglant le volume de 0 a 255 (0 = pas de son / 255 = 4 fois plus fort).
  • Pour le mixage de plusieurs musiques sur le meme canal, il faut faire la somme des echantillons de chacune des musiques.

Voila ! "Y a plus qu'a"

Dernière modification par Nrx ; 16/01/2006 à 21h43.
Nrx est déconnecté   Réponse avec citation
Vieux 17/01/2006, 10h41   #47
MIKEGBA
Membre confirmé
 
Date d'inscription: 22/11/2005
Localisation: DIJON
Messages: 221
Par défaut

sinon quelques infos supplémentaires:

1) pour le mixage soft, ne pas oublier de clipper le son après addition des échantillon, sinon gros cafoulli sonore assuré !!!


-en effet, la gba au final veut du 8 bit signé, soit une valeur comprise entre -128 et + 127, si je prends l'exemle suivant avec 3 échantillons A, B et C qui ont respectivement comme valeur 35, 80 et 75, le résultat de l'addition est donc 190.

si on store 190, la gba va l'interpreter comme étant un nombre négatif, car on est sur 8 bits signés, le bit 7 est le signe et le bit 0 à 6 la valeur !!!!

donc on clippe notre échantillon, et on garde comme valeur 127.

il faut faire de meme pour un résultat négatif inférieur à -128, si on a -250, on garde -128 comme valeur à mettre dans notre buffer


2) pour des sources sonnores qui n'ont pas le meme échantillonage , par exemple des sons à 10 khertz et la musique à 13 khertz, il suffit de faire un ré echantillonage à la volée.

-supposons par exemple que le moteur de son est réglé sur 13 khertz, on laise la piste sonore intacte et on rééchantillone toutes les pistes "bruitage" pour les passer à 13 . Au final, on aura pas de gain de qualité evidemment, mais les pistes bruitage seront jouées à la bonne vitesse.


c'est en gros ce que je fais dans crazy racer, ou j'ai une piste musique en adpcm à 13 khertz, et 3 pistes bruitage pcm à 10 khertz, tout ça mixé sur le canal A.


pour ça , il faut comme l'a dit NRX, mettre en place un buffer qui contient la longueur pour une vbl, ou seront stoqué le résultat du mixage et du resampling.


dés que j'ai 5 minutes je revient sur l'explication du resampling.

d'ici là, bon codage à tous !
MIKEGBA est déconnecté   Réponse avec citation
Vieux 17/01/2006, 11h53   #48
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

ouais, merci pour les infos, c'est l'idée que j'en avais.
-> Par contre, je comptais pas clipper mais décaler pour eviter de perdre en faisant des ecrettages massifs. je regle les volumes pour que le total soit quasi proche de 128 quand on additionne les 3 puis j'ecrete pour pas sortir de la valeur.
Le clippage s'avere necessaire dans une moindre mesure dans tous les cas.
-> En plus, je comptais pondéré sur le volume soit les valeurs S de 3 sons à un instant t et V le volume correspondant à chaque piste soft en % du volume total admissible.
-> Pour eviter de faire le décalage dont je parle au dessus ou bien couper les cretes pour pas depasser les 128, j'avais une autre idée, c'etait un reglage du volume des pistes proportionnel à leur nombre. Exemple si j'ai 3 pistes, je regle le volume max de chaque piste à 1/3 de la valeur max que peut recevoir la piste comme ça, aucun depassement possible.

-> Ce qui pourrait donner si on combine tout :
Sonfinal = V1*S1/3 + V2*S2/3 + V3*S3/3
Si V1 V2 et V3 sont au max soit 1 (100%), on a S1/3 + S2/3 + S3/3 on devrait pas depasser la valeur max de 128 normalement, apres tous les reglages peuvent etre fait, ça ne pose pas de probleme.

-> Je veux bosser avec tous les echantillons à la même frequence et en 8bits sans utiliser la compression ADPCM mais direct en PCM.
J'ai aps le temps cette semaine, je presente un gros projet de conception mais la semaine prochaine, j'ai bien envi de dev sur le sujet.
Japi est déconnecté   Réponse avec citation
Vieux 17/01/2006, 12h10   #49
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

Citation:
Par contre, je comptais pas clipper mais décaler pour eviter de perdre en faisant des ecrettages massifs. je regle les volumes pour que le total soit quasi proche de 128 quand on additionne les 3 puis j'ecrete pour pas sortir de la valeur.
Le clippage s'avere necessaire dans une moindre mesure dans tous les cas.
En fait, ce n'est pas un problème si tu clippes après le calcul du volume. Tu n'as qu'à faire en sorte que tes échantillons aient tous le même volume et après avec des tests, tu verras rapidement quel volume est idéal.
Par contre pour avoir la meilleure précision possible il faudrait faire en sorte que le volume initial (sans multiplication) soit le volume maximal, car si on multiplie le son par 3 par exemple, on perd énormément de précision (les valeurs seront forcément multiples de 3, et sur 256 possibilités, ça fait qu'il n'en reste plus beaucoup).
Citation:
Pour eviter de faire le décalage dont je parle au dessus ou bien couper les cretes pour pas depasser les 128, j'avais une autre idée, c'etait un reglage du volume des pistes proportionnel à leur nombre. Exemple si j'ai 3 pistes, je regle le volume max de chaque piste à 1/3 de la valeur max que peut recevoir la piste comme ça, aucun depassement possible.
A mon avis, c'est une mauvaise idée. Si tu as 8 pistes par exemple, le son sera joué très doucement, et à cause de la division par 8, il ne reste plus que 32 possibilités de valeurs sur les 256 -> la précision du son sera vraiment pourrie.
Perso pour mes pistes je les réduis de 3 dB. Au cas où 10 sons joueraient en même temps, c'est clair que ça saturerait, mais en fait ce n'est pas censé arriver, donc on s'en fout
Et même, pas dans tous les cas; si je prends un exemple de 10 sons desquels je n'ai pas baissé le volume:
-120 18 47 21 -60 55 -42 -81 60 7
Le résultat est -95 -> même pas d'écrétage. C'est pour ça que tu n'as pas vraiment de souci à te faire de ce point de vue là, et pas besoin de beaucoup réduire les sons.
Citation:
Ce qui pourrait donner si on combine tout :
Sonfinal = V1*S1/3 + V2*S2/3 + V3*S3/3
Juste comme ça - peut-être que tu le sais déjà, mais sur GBA il faut éviter les divisions à tout prix car c'est ultra lent. Si tu veux diviser, tu peux plutôt multiplier puis décaler. Exemple: (17*son)>>6 correspond à son*17/64, mais c'est beaucoup plus rapide (cf le bout de code de Nrx).
Citation:
Je veux bosser avec tous les echantillons à la même frequence et en 8bits sans utiliser la compression ADPCM mais direct en PCM.
Houlà... bonjour la taille de ta ROM

Dernière modification par Brunni ; 17/01/2006 à 12h17.
Brunni est déconnecté   Réponse avec citation
Vieux 17/01/2006, 12h20   #50
Japi
Membre confirmé
 
Date d'inscription: 14/12/2005
Messages: 558
Par défaut

l'idée avec ce systeme de piste c'est de creer un systeme de sequenceur pour reduire la taille des fichiers sons et je ne veux pas saccrifier la qualité donc pas de soucis.
PCM = gros mais rattraper par ce systeme que je veux mettre en place.

Pour les autres points, oui, c'est bien possible, j'ai jeté des idées sur le topic, faudra y refelchir plus en details. Merci en tout cas pour les explications.
Japi est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h55.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince