Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Codage de durées



  1. #1
    bardamu

    Codage de durées


    ------

    Bonjour à tous,
    Une petite question de programmation :

    comment code-t-on les durées par exemple dans la numérisation de musique ?

    Sur les disques vinyl, les durées dépendaient de la vitesse de rotation du disque, mais comment fait-on avec un codage numérique pour déterminer les temps d'impulsion ?

    Une hypothèse non vérifiée :
    la séquence sonore est découpée en segments correspondant à une durée standard, par exemple des blocs de données codant les fréquences pour 10 msec, ce qui permet à l'interpréteur de caler ses instructions selon la vitesse d'horloge propre à la machine d'exécution.
    La segmentation resterait inaudible du fait des limites de l'oreille humaine.

    Quelqu'un peut confirmer ou infirmer l'hypothèse ?
    Merci.

    -----

  2. Publicité
  3. #2
    cricri

    Re : Codage de durées

    exact on decoupe a la frequende de 44000 hz soit le double de la frequence audible (environ 20000 hz)

    pourquoi le double ? a une regle mathematique qui dit qu il faut le double sinon on ne peut distinguer les frequence proche de 20000 hz

  4. #3
    r0d

    Re : Codage de durées

    En réalité, la méthode de synchronisation dépend de plusieurs choses: le type de fichier (wav, mp3, etc.), le système d'exploitation (en réalité, c'est le middleware) et parfois même les pilotes du périphérique audio.
    Généralement, l'heuristique utilisée ressemble plus ou moins à cela:
    - un buffer cyclique est réservé en RAM et envoyé régulièrement au périphérique audio. La taille de ce buffer (notée bs) est connue, et idéalement un multiple de la fréquence d'échantillonnage (notée sf).
    - ce buffer est rempli par les données lues dans le flux (fichier, réseau, etc.). La durée du segment audio présente dans ce buffer est d = bs/sf.
    - une fois le buffer rempli, on l'envoie au périphérique audio, et on enregistre l'instant (généralement l'unité utilisée est le 'cycle processeur') de cet envoi.
    - on re-rempli le buffer avec la suite du flux.
    - on attend d cycles processeur
    - on envoie les données (avec vérification de la synchro en fonction de d et du delta t).
    - etc...

    C'est la méthode générale (typiquement celle utilisée par le tandem windows/directX), mais on la retrouve déclinée à toutes les sauces.

    J'ai essayé de faire simple - car la problématique ne l'est pas - , j'espère y être parvenu

  5. #4
    bardamu

    Re : Codage de durées

    Citation Envoyé par r0d
    En réalité, la méthode de synchronisation dépend de plusieurs choses: le type de fichier (wav, mp3, etc.), le système d'exploitation (en réalité, c'est le middleware) et parfois même les pilotes du périphérique audio.
    Généralement, l'heuristique utilisée ressemble plus ou moins à cela:
    - un buffer cyclique est réservé en RAM et envoyé régulièrement au périphérique audio. La taille de ce buffer (notée bs) est connue, et idéalement un multiple de la fréquence d'échantillonnage (notée sf).
    - ce buffer est rempli par les données lues dans le flux (fichier, réseau, etc.). La durée du segment audio présente dans ce buffer est d = bs/sf.
    - une fois le buffer rempli, on l'envoie au périphérique audio, et on enregistre l'instant (généralement l'unité utilisée est le 'cycle processeur') de cet envoi.
    - on re-rempli le buffer avec la suite du flux.
    - on attend d cycles processeur
    - on envoie les données (avec vérification de la synchro en fonction de d et du delta t).
    - etc...

    C'est la méthode générale (typiquement celle utilisée par le tandem windows/directX), mais on la retrouve déclinée à toutes les sauces.

    J'ai essayé de faire simple - car la problématique ne l'est pas - , j'espère y être parvenu
    Salut,
    tu dis "on l'envoie au périphérique", et je suppose que c'est ensuite le périphérique qui utilise les données pendant le temps d pour ressortir un signal par groupe de données reprenant sf.

    En fait, j'essaie de faire la synthèse des modes d'inscription des durées que ce soit en biologie (mémorisation de durées par le cerveau), en informatique, en électronique (condensateurs ?) etc.

    Pour l'informatique, on aurait :
    réception continue de son -> digitalisation du signal (charges-décharges condensateurs ?) -> inscription de données par échantillons (codage fréquence et intensité ?), à 44 khz -> lecture des données + synchronisation effectués par OS, driver et périphérique -> modulation de signal, rendu du son

    Au niveau le plus général, on aurait :
    durée -> x paquets d'information inscrit selon un standard externe (format d'échantillonage) -> synchronisation au cycle interne d'un lecteur en fonction du standard -> rendu de la durée

  6. A voir en vidéo sur Futura
  7. #5
    r0d

    Re : Codage de durées

    Citation Envoyé par bardamu
    tu dis "on l'envoie au périphérique", et je suppose que c'est ensuite le périphérique qui utilise les données pendant le temps d pour ressortir un signal par groupe de données reprenant sf.
    Pas tout à fait. En fait, le périphérique (typiquement la carte son) a un algorithme qui permet de lire le buffer interne de façon continue. Je ne connais pas les détails de cet algo, et j'imagine qu'il est différent pour chaque constructeur, mais ce qui est certain, c'est que le filtre N2A (numeric to analogic, c'est la dernière étape du traitement audio avant que le son ne sorte de l'ordinateur) récupère les échantillons (ou valeurs) un par un à intervalle régulier et de façon continue.

    Citation Envoyé par bardamu
    Pour l'informatique, on aurait :
    réception continue de son -> digitalisation du signal (charges-décharges condensateurs ?)
    En fait, ce sont des transistor, et non des condensateurs. Les transistors (plus précisément, c'est un cristal) sont positionnés, grâce à un signal électrique, à droite ou à gauche (0 ou 1).
    Citation Envoyé par bardamu
    -> inscription de données par échantillons (codage fréquence et intensité ?), à 44 khz
    Il existe 2 façons pour représenter un son. Le domaine temporel et le domaine spectral.
    Le premier, le domaine temporel, est le plus "naturel". Le son est découpé en échantillons, avec un delta t entre chacun d'entre eux (delta t = 1/sf). Chaque échantillon représente la position de la membane du hp à un instant t. La courbe qui en résulte (cette courbe peut être visualisée en ouvrant un son avec un éditeur audio (cf. http://www.framasoft.net/article1039.html ) ) représente, en abscisse: le temps, en ordonnée: la position de la membrane.
    Le second, le domaine spectral, est une représentation issue du théorème de la déomposition de Fourrier: "toute fonction continue peut être décomposé en somme de sinusoïdes". C'est un peu plus compliqué et c'est hors-sujet

    Citation Envoyé par bardamu
    -> lecture des données + synchronisation effectués par OS, driver et périphérique -> modulation de signal, rendu du son
    Je ne sais pas ce que tu entends par modulation du signal, mais en substance, je suis d'accord.

    Note: attention à la sémantique du mot "échantillon" (sample en anglais). Ce mot peut représenter 2 choses:
    - une valeur, généralement un flottant, qui correspond (c'est une façon de voir les choses) à la position de la membrane du haut-parleur à un moment t.
    - un ensemble de valeurs (un ensemble d'échantillons - sic - ) qui se suivent et forme un "morceau" de son.
    Pour ne pas être gêné par ces problèmes de définition, j'ai pris l'habitude d'utiliser le mot échantillon dans le premier sens que j'ai donné. Et pour le second sens, j'utilise séquence.

    Je peux t'expliquer comment cela fonctionne en informatique, mais pour le reste, j'avoue que j'y connais rien. Cela dit, ta démarche m'intéresse, et ce sera avec grand plaisir que je lirais ta thèse

  8. #6
    Fred78

    Re : Codage de durées

    Salut,

    J'ai quelques infos complémentaires et quelques questions.
    Avant tout je voudrais rappeler, que tout acquitisition de signal numérique est avant tout régulé par la fréquence d'horloge (dans le cas d'une carte son, ce sera la fréquence du Bus PCI). Ensuite, la carte acquiert le signal et renvoie le flux de données receuillies qui en veut (et généralement comme elle est full duplex, elle renvoie directement le son en sortie en plus de l'envoi au système).
    Autre point qui a son interêt, c'est le temps de latence, c'est à dire le temps d'attente entre l'arrivée du signal en entrée et sa sortie vers une cible (par exemple le temps de la tence vers Cubase de ma carte son oscille aux alentours de 25ms et c'est une déjà une bonne carte). Ici evidemment le temps change en fonction de l'OS, du gestionnaire (DirectX, ASIO, MMC ou autre) comme l'indique rOd

    En fait, j'essaie de faire la synthèse des modes d'inscription des durées que ce soit en biologie (mémorisation de durées par le cerveau), en informatique, en électronique (condensateurs ?) etc.
    Pourrais tu expliquer ce que tu entends par modes d'incription des durées ?? Je trouve le concept interessant mais je ne vois pas où tu le situe ?
    D'autant que si on parle de la notion de temps et de durée en Informatique, alors la question est différente (et surtout la réponse)

    P.S : Pour les puristes, la fréquence d'échantillonage type est de 44,1 kHz

  9. Publicité
  10. #7
    bardamu

    Re : Codage de durées

    Citation Envoyé par Fred78
    (...)
    Pourrais tu expliquer ce que tu entends par modes d'incription des durées ?? Je trouve le concept interessant mais je ne vois pas où tu le situe ?
    D'autant que si on parle de la notion de temps et de durée en Informatique, alors la question est différente (et surtout la réponse)
    Salut,
    en 2 mots :
    En informatique-électronique, on aura un stockage d'un flux continu sous forme de données discrètes (trou|plein = 0|1) qui seront retranscrites par synchronisation du lecteur grace à un standard de lecture.

    En biologie, il y a une forme de "numérisation" du signal par ce qu'on appelle le "potentiel d'action", mais il n'y a pas de standard externe qui soit implanté et il faut que l'organisme auto-organise l'inscription et la traduction des durées. Je ne sais pas encore comment l'aspect temporel des données est enregistré (quantité de protéines se libérant en un temps x ? structure du réseau neuronal provoquant des latences ? oscillations de réactions biochimiques ?).
    Le côté auto-organisation a d'ailleurs peut-être été étudié en intelligence artificielle.

    L'objectif final serait d'avoir les divers modèles qui font passer d'un flux continu en entrée à un flux continu en sortie.
    Lorsqu'il s'agit d'une inscription analogique, du type disque vinyl, il n'y a pas trop de difficulté puisque le continu temporel est transcrit en continu spatial.
    Par contre, lorsqu'il y a un intermédiaire discret, non-continu, cela me semble beaucoup moins évident.

    Il y a aussi un côté fondamental en physique notamment dans le rapport entre échange discrets d'énergie (quanta) et évolutions continues mais là, j'ai pas mal de boulot pour y voir clair, si il est possible d'y voir clair avec les connaissances actuelles...

    Merci à toi et à r0d pour les infos.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/11/2007, 14h00
  2. codage
    Par winlight dans le forum Électronique
    Réponses: 0
    Dernier message: 02/04/2007, 17h18
  3. Codage
    Par Zavata dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 23/10/2005, 23h09
  4. durees de vie des produits electromenagers
    Par yanou dans le forum Environnement, développement durable et écologie
    Réponses: 0
    Dernier message: 22/09/2004, 10h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.