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#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 30
    Points
    30
    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
    Points : 5 195
    Points
    5 195
    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
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 30
    Points
    30
    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
    Points : 5 195
    Points
    5 195
    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
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 164
    Points : 133
    Points
    133
    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 ??)
    Jerome Fortias
    Head of the Business Lab Sopra Steria Brussels

  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
    Points : 5 195
    Points
    5 195
    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
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    votre idée marcherait à condition qu'il n'y ait pas d'informations header en tête de fichier

    par exemple:
    Fichier toto wav:
    Header
    - rate 192
    - artiste Lorie
    Son
    - le son


    Je dis ca au pif, sans connaitre le format WAV mais en gros, je voulais juste rappeler que parfois il y a un entête de fichier et il y en a surement un dans le Wav. donc il faudrait lire le header, le reecrire dans un fichier puis écrire à l'envers les octets de la partie Son
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    (POur tes motivations de "a l'envers", tu as enregistré la voix d'un possédé et tu veux entendre le diable ??)
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    Mr Morand, c'est pour cela que dans mon bout de code je lis les 44 octest de header et que je les remets à l'identique...

    Il existe des classes pour lire les Header Wave sur le net...

    J'ai plus la classe sous la main, mais il en existe une qui te permet suivant
    le type de fichier wav (8/16/24/32bits) de manipuler et le header et les données

    Faudrait que je la retrouve , sinon google is your friend

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  10. #10
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Mr Morand
    monsieur? ^^ tu veux pas me vouvoyer aussi? :p

    c'est pour cela que dans mon bout de code je lis les 44 octest de header et que je les remets à l'identique
    je n'avais pas lu ton code, désolé, c'était une remarque générale à l'intention du posteur du thread
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    Mr Morand, c'est pour cela que dans mon bout de code je lis les 44 octest de header et que je les remets à l'identique...

    Il existe des classes pour lire les Header Wave sur le net...

    J'ai plus la classe sous la main, mais il en existe une qui te permet suivant
    le type de fichier wav (8/16/24/32bits) de manipuler et le header et les données

    Faudrait que je la retrouve , sinon google is your friend

    The Monz, Toulouse

    Ha la je suis super intéressés.
    Je vais commencé à chercher mais si t'as je suis preneur à 200%

    Je suis entrain de tester le bout de code de theMonz31

  12. #12
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    Alors comme j'avais rien à faire cette apres-midi (cause intercontrat)
    je vous ai codé rapidemment (en m'inspirant d'un code C++) la classe
    WaveFile

    On peut lire le CONTENU d'un fichier Audio (wav avec)

    J'ai ajouté une fonction d'inversion de données

    J'ai testé sur quelques fichiers, ca a l'air de fonctionner

    On peut sauvegarder des fichiers Wav

    J'ai par contre par trop testé la partie Création d'un wav from Scratch...

    J'espère que vous apprécierez

    The Monz, Toulouse

    PS : Faites en ce que vous voulez, c'est Gratos
    Fichiers attachés Fichiers attachés
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    On pourrais le rajouter dans les contributions ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  14. #14
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    oui bien sur

    Au chapitre des "améliorations" possibles et facile à faire :

    Une fonction qui fournit les données d'un channel (un canal)
    Une approche plug-in pour modifier les données
    Intégré un player

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    Alors comme j'avais rien à faire cette apres-midi (cause intercontrat)
    je vous ai codé rapidemment (en m'inspirant d'un code C++) la classe
    WaveFile

    On peut lire le CONTENU d'un fichier Audio (wav avec)

    J'ai ajouté une fonction d'inversion de données

    J'ai testé sur quelques fichiers, ca a l'air de fonctionner

    On peut sauvegarder des fichiers Wav

    J'ai par contre par trop testé la partie Création d'un wav from Scratch...

    J'espère que vous apprécierez

    The Monz, Toulouse

    PS : Faites en ce que vous voulez, c'est Gratos

    'tain le mec!
    Trop fort.

    Par contre quand j'ouvre le fichier projet il me pond une erreur comme quoi c'est pas un projet valide, impossible de tester.

    edit:
    Avec vs2005 c'est bon enfaite je teste ça de suite.
    Tu t'en sers comment?

  16. #16
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    comme quoi c'est pas un projet valide, impossible de tester.
    pas la meme version de Visual studio probablement.
    prend les fichiers sources et recrée ton propre projet
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  17. #17
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    Ca a été codé sous Visual Studio 2005 Team System

    Mais effectivement, tu peux te contenter de reprendre le fichier classe qui va bien... (attention au namespace en recréant ta librairie)...

    Et pis, c'était pas si compliqué que cela dans la mesure ou j'ai juste "porté"
    une classe C++ (enfin, c'était meme du C)

    et que j'ai juste rajouter une fonction d'inversion qui tient compte du nbre
    de canaux et du nombre d'octets par echantillon pour faire le boulot...

    Ya vraiment rien de "complexe"...

    Enfin

    The Monz, Toulouse

    PS : si vous avez un job pour un expert .Net sur Toulouse... I'm aware
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  18. #18
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Faut venir sur paris il y a plein de demande
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  19. #19
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    oui ced600 bien sur paname..

    Figures toi que j'ai vécu 25 ans au Chesnay (pour ceux qui connaissent)
    Etudes au lycée Hoche à Versailles + Ecole d'ingenieur à Orsay (FIUPSO / IFIPS)

    Si y en a qui connaissent, je passe le bonjour

    Mais bon, j'suis "trop" bien à toulouse pour avoir envie de refouler la densitée
    de population, de voitures et de grèves de la région parisienne..

    (meme si j'y serais pendant la semaine de noel

    The Monz, Toulouse

    PS : p'tain, j'raconte ma vie moi encore
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  20. #20
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    lol

    Je te comprends, j'ai été souvent vacance dans le gers du coté de l'ile jourdain, l'ile en dodon (mieux souvient plus de l'ortographe).

    C'est calme et agréable.
    C'est sympas pour des vacances, mais je crois qu'au bout d'un moment la densité parisienne me manquerais, et puis il y fait trop chaud

    PS : Moi aussi j'aime bien raconter ma vie, va falloir que je me fasse une autobiographie.

    PS2: j'ai fait des études de bio à Orsay et après je suis entrée dans une école d'ingénieur en info qui a démanagé la deuxième année sur Orsay (2 ans d'études d'info pour 4 ans de bio )
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

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