IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[2.0] Lire un fichier wav à l'envers.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut [2.0] reversing a wave file
    Bonjour,

    Bon ça peut paraitre bizarre mais j'aimerai bien pouvoir lire mes fichiers wave à l'envers.
    Le format wave est un peu particulier mais je sais que c'est faisable.
    A l'endroit pas de soucis.

    J'ai parcouru pas mal de sites mais impossible de trouver ne serait-ce qu'un début d'algo ou une explication sur la façon de faire.

    Quelqu'un aurait déjà vu des liens, des bouts de codes ou aurait une idée sur comment lire un fichier wave à l'envers?

    Je vous remercie par avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    quelque part, lire un fichier Audio à l'envers consisterait-il à lire les données
    dans l'ordre inverse ?

    Je veux dire, que si tu as ton buffer de son

    Int bufferSound[100];

    tu le copie dans un bufferSound[100] avec 100-i en indexation

    Peut-etre je dis une connerie mais ca me semblerait logique...

    Par contre, cela oblige forcement à disposer du buffer de donnée et à l'inverser
    avant de jouer le son

    A toi de voir ce qui est le plus adapté...

    Avec DirectSound, tu auras accès à ton buffer.. donc, ca devrait etre "facile"
    à faire non ?

    The Monz, Toulouse

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Par défaut
    Mais dans le code que j'utilise si je retire les lignes inutiles c'est ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private SecondaryBuffer Buffer = null;
    		Buffer = new SecondaryBuffer(son, device);
    		Buffer.Play(0, BufferPlayFlags.Default);
    }
    Je n'utilise pas

    Comment adapter ça?

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    une solution serait peut-etre de charger le buffer de son en entier (meme si cela est volumineux).. faire le traitement (dernier devient premier, etc...) et voir
    ce que cela donne

    Une chose est sure, il te faut lire la totalité du fichier wav pour pouvoir l'inverser

    The Monz, Toulouse

  5. #5
    Membre confirmé Avatar de jerome.fortias
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 164
    Par défaut
    En fait c'est la meilleure solution ...et finalement la seule non. Soit le buffer soit générer un nouveu fichier wav avec des données inversées.

    (POur tes motivations de "a l'envers", tu as enregistré la voix d'un possédé et tu veux entendre le diable ??)

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Genre un truc comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    BinaryReader br = new BinaryReader(File.Open(@"d:\audio\chimes.wav", FileMode.Open));
                FileInfo info = new FileInfo(@"d:\audio\chimes.wav");
                // read the header
                byte[] header = new byte[44];
                header = br.ReadBytes(44);
     
                // now we read the data
                byte[] buffer = new byte[info.Length - 44];
                buffer = br.ReadBytes(buffer.Length);
                br.Close();
     
                // On inverse maintenant le fichier....
                BinaryWriter wr = new BinaryWriter(File.Open(@"d:\audio\nico.wav", FileMode.Create));
                wr.Write(header);
                byte[] inverseBuffer = new byte[info.Length - 44];
     
                int maxPos = buffer.Length - 1;
                for (int i = 0; i < buffer.Length / 2; i+=2)
                {
                    inverseBuffer[i] = buffer[maxPos - (i+1)];
                    inverseBuffer[i + 1] = buffer[maxPos - i];
                }
     
                wr.Write(inverseBuffer);
                wr.Close();
    J'ai fait cela à l'arrage rapidos mais bon...
    Tu remarques que pour inverser, il faut prendre 2 octets donc ne pas
    se tromper dans l'ordre

    Dans l'exemple que j'utilise, j'ignore le contenu du header (je me contente de
    le recopier ... et je ne regarde pas non plus si on est en 8 bits / 16 bits
    (hypothese fait sur 16 bits)... (apres, la frequence, on s'en cogne dans ce cas la

    Si ca peut aider

    The Monz, Toulouse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème pour lire un fichier wav
    Par r0d dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/05/2007, 19h56
  2. [debutant] Lire un fichier .wav
    Par r0d dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2006, 09h42
  3. Lire un fichier wav
    Par fabnet dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 14/09/2005, 20h23
  4. Lire un fichier WAV
    Par benib8 dans le forum Langage
    Réponses: 1
    Dernier message: 31/08/2005, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo