Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Stratégie pour décaler des bits [ Divers / Aide et documentation ] (Francky23012301)

mercredi 7 mai 2008 à 11:48:44 | Stratégie pour décaler des bits

Francky23012301

Membre Club
Salut la compagnie ,

Je travaille sur les fichiers midi : les évènements midi utilisent un paramètre qui est un DeltaTime et qui peut (et doit ) codé sur 32 bits et doit être non signé. Un petit LongWord colle nikel . Sauf qu'il y a un sauf  (ben oui sinon c'est pas drole).

Z'explique le truc :

Prenons un longword bidon :

10000001   10110001   10110001   1010001

Selon la norme Midi il faut sucré pour chaque Bytes le premier bit (ou le dernier si on va de la gauche vers la droite)

On obtient donc ceci

(1)0000001   (1)0110001   (1)0110001   (1)010001

On rafistole le tout (Encore un truc à la Mac Gyver ) :

On obtient  0000001 0110001  0110001 010001

On remplace les bits "perdus" par des zéros

On obtient : 0000 0000001 0110001  0110001 010001

Même si je connais les opérateurs binaires, je n'ai aucune idée de comment faire la chose.

Merci à vous

mercredi 7 mai 2008 à 12:48:37 | Re : Stratégie pour décaler des bits
mercredi 7 mai 2008 à 13:13:16 | Re : Stratégie pour décaler des bits

Francky23012301

Membre Club
Salut Cirec : j'ai vu cette source mais elle ne fait pas avancer rmon schmilblic .

mercredi 7 mai 2008 à 13:13:37 | Re : Stratégie pour décaler des bits

Tavounet

J'ai été voir le lien sur ta réponse cirec et là, il me semble que le problème est bien plus complexe, il ne s'agit pas d'une vulgaire opération. ^^

Francky, est-ce que tu peux récupérer tes bits un par un?
Si oui, j'ai peut-être une idée.

Tu pars d'un longword 00000000 00000000 00000000 00000000.

Tu récupères le premier bit puis tu décales ton longword à droite en insérant le bit récupéré.

Idem pour le deuxième, troisième...

Tu as juste à "sauter" les 1 que tu veux virer.

Une fois tes 28 bits récupérés, tu fais un décalage à droite avec insertion de 0 quatre fois, et tu obtiendras ta valeur normalement.

Je ne sais pas si ça fonctionne, mais à tester ^^

Bon courage

mercredi 7 mai 2008 à 14:04:38 | Re : Stratégie pour décaler des bits

Francky23012301

Membre Club
Salut

En fait je ne récupère pas les messages midi : c'est pour faire un fichier midi.
Un lien pour les explications .

Si l'utilisateur veut ajouter une note : la procédure suivante est lancée :
procedure TMidiWriter.Add_NoteOn_Event(Const DeltaTime : LongWord; Const Channel, KeyNumber, Velocity: byte);
Et là il faut transformer le Delta Time en virant les premiers bits.

Pour être honnète j'ai trouvé ceci :

void WriteVarLen (register long value)
{
register long buffer;
buffer = value & 0x7f;
while ((value >>= 7) > 0)
{
buffer <<= 8;
buffer |= 0x80;
buffer += (value & 0x7f);
}
while (TRUE)
{
putc(buffer & 0xFF,outfile);
if (buffer & 0x80)
buffer >>= 8;
else
break;
}
}

doubleword ReadVarLen ()
{
register doubleword value;
register byte c;
if ((value = getc(infile)) & 0x80)
{
value &= 0x7f;
do
{
value = (value <<7) + ((c = getc(infile)) & 0x7f);
} while (c & 0x80);
}
return (value);
}

Manque de bol c'est du C donc j'y comprend que dalle et cette saloperie d'opérateur <<= je l'ai trouvé nul part donc je sais pas ce que c'est.

Merci A++
.



mercredi 7 mai 2008 à 14:06:23 | Re : Stratégie pour décaler des bits
mercredi 7 mai 2008 à 14:18:55 | Re : Stratégie pour décaler des bits
mercredi 7 mai 2008 à 14:50:17 | Re : Stratégie pour décaler des bits

Francky23012301

Membre Club
Salut Cari : la fonction de f0xi AllToBinStr(const Buffer; const bSize : integer; var OutBinStr : string); pourrait éventuellement me dépanner. Mais je trouve ca lourd tout ca pour déplacer 4 octets . Ca fait pas propre à mon gout (Je sais je suis chiant mais apres c'est qui qui va se faire gronder quand il va poster le source???? C'est francky ).

Je vais voir du coté de l'Assembleur (En même temps mon pc est plus sous garantis donc j'hésite : l'asm peut etre dangereux  sous les mains de Francky )

mercredi 7 mai 2008 à 14:51:16 | Re : Stratégie pour décaler des bits

Francky23012301

Membre Club
Pardon 4 bits (une fonction éditer serait la bienvenue )

mercredi 7 mai 2008 à 16:05:45 | Re : Stratégie pour décaler des bits

Kenavo

Elle est où la contrepèterie dans le titre ??

procedure Virons4Bits (var v: longword);
begin
  v := v and $7F7F7F7F;
  v := (v+ v and $7F) div 2;      // 2^7 - 1
  v := (v + v and $3FFF) div 2;   // 2^14 - 1
  v := (v + v and $1FFFFF) div 2; // 2^21 - 1
end;

C'est pour décaler les sons ??

Ken@vo

Code, Code, Codec !



1 2 3

Cette discussion est classé dans : midi, bits, stratégie, obtient, décaler


Répondre à ce message

Sujets en rapport avec ce message

Piano midi [ par sebrs1 ] Comment faire pour jouer des ons de piano en midi?@+Sebrs1PS (qui ne signifie pas playstation :-)) : visitez mon site qui fait ses début svphttp://pro Couleurs 24 Bits [ par MAsterC ] J'ai une question ....Est-ce que Delphi prend en charge dans les bouton les image (bmp) 24bits couleurs... parce que moi l'image dans mon bouton me se Décaler une PaintBox de n pixels vers la gauche [ par greg505 ] Bonjour a tous,Je cherche a décaler le contenu d'un PaintBox d n pixels vers la gauche. Merdi d m aidé sur une Exemple ARCHI SIMPLE car ceux que g tro extraire les composantes R, G, B d'un bitmap 16 bits [ par ericamiens ] bonjour, j'aimerais donc extraire ces composantes mais les fonctions GetRValue, GetGValue et GetBValue attendent un RGB (32 bits) en entrée. ça foncti MIDI files [ par magic123 ] Salut tout le monde, J'aurais besoin d'informations pour savoir comment faire pour lire et décoder un midi file, ceci afin d'effectuer quelques modifi Insérer un fichier Midi sous Delphi [ par frutygirls ] Bonjour ! Nous avons un TP à faire en cours et nous souhaitons y ajouter un fond musical, mais nous galèrons ! Nous avons commencé à insérer un objet Vitesse de la carte reseau [ par manu00 ] Bonjour,Une petite question...savez vous comment faire en delphi pour connaitre la vitesse (et pkoi pas les references) d'une carte reseau en local... Cryptage 128 bits [ par Artegon ] Salut a tous, j' aimerais savoir comment crypteune chaine de caractere en 128 bits...J' ai bien vus l' algorithme crypter/decrypter 128/256 bits, mais Modification de la Luminosité [ par gastou ] Bonjour,J'ai une application qui fait modifier la luminosité. Problème, sur une carte RADEON X300 Series, elle ne fonctionne que sur le mode 256 coule cle de 128 bits et cryptage [ par MoveX ] une cle de 128 bits en cryptage ca correspond a quoi? je veux dire, ca n est pas une cle de 128 caracteres?


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,357 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.