Conversione audio

Posted on 24 aprile 2018. Filed under: Senza categoria |

Ecco un nuovo articolo pratico dedicato alla programmazione.

Come molti di voi sapranno, il mio lavoro è sì l’informatico ma nel campo della musica. A volte capita qualche problema che voglio poi condividere con tutti voi su come l’ho risolto.

Capita che magari acquistiate da un distributore digitale, ad esempio da iTunes, un file Audio. Lo pagate, lo scaricate e non funziona. Che fare? Mandate una email alla Apple che magari vi risponderà, se vi risponderà, dopo tanti mesi?

Per fortuna la tecnologia viene dalla nostra parte non solo con il problema ma nella risoluzione dello stesso.

Esistono delle librerie che fanno al caso nostro. Io ne ho provate diverse: alcune fanno solo un check, altre ricostruiscono il file Wave da zero partendo dal file Wave danneggiato.

Che tecnologia usiamo? WPF, ovviamente.

Funziona con qualsiasi versione di Visual Studio. Io nell’articolo userò la versione 2015.

Vedremo in dettaglio due librerie. La prima è sviluppata da Microsoft e si chiama Expression Encoder.

Il link per il download è: https://www.microsoft.com/it-it/download/confirmation.aspx?id=27870

Scarichiamo e installiamo l’Encoder.

Una volta completata l’installazione ci troveremo una nuova cartella in C:\Program Files (x86)\Microsoft Expression\Encoder 4\SDK. Qua dobbiamo prelevare i file:

Microsoft.Expression.Encoder.dll, Microsoft.Expression.Encoder.Types.dll, e Microsoft.Expression.Encoder.Utilities.dll che dobbiamo poi aggiungere nei riferimenti del nostro progetto in WPF.

Io ho creato un progetto in VB.NET. Nella Window ho messo due pulsanti.

image

 

Il Codice che viene eseguito alla pressione del tasto in alto è il seguente:

Dim mediaItem As MediaItem
Dim origine = "c:\file.wav"
Try
    mediaItem = New MediaItem(origine)
Catch exp As InvalidMediaFileException
    If exp.Message = "Corrupt file" Then
        MessageBox.Show("Il file audio " & origine & " è difettoso. ")
    End If
    If exp.Message = "File non trovato." Then
        MessageBox.Show("Il file audio " & origine & " non esiste. ")
    End If
End Try
MessageBox.Show("Verifica completata")

 

Origine contiene il nome del file da verificare con il percorso completo.

Bisogna importare il Namespace Microsoft.Expression.Encoder.

Eseguiamo il progetto, clicchiamo sul primo pulsante, andiamo a vedere cosa succede:

 

La seconda libreria che useremo è sviluppata da NAudio.

NAudio è un progetto opensource (ne parleremo in un successivo articolo). Scarichiamo da Github il progetto:

https://github.com/naudio/NAudio

La libreria che ci interessa si chiama NAudio.dll

Nel progetto su Github, la libreria non c’è. Bisogna prima caricare la Solution e quindi compilarla. Saranno ripristinati automaticamente i pacchetti da Nuget e quindi avviene la compilazione. A quel punto nella cartella NAudio-master\NAudioWpfDemo\bin\Debug troviamo il file NAudio.dll. La prendiamo e la copiamo nel nostro progetto.

La referenziamo e questi è il codice behind:

Dim origine = "c:\file.wav"
Dim mediaItem As MediaItem
mediaItem = New MediaItem(origine)
Dim reader = New MediaFoundationReader(origine)
Using reader
    WaveFileWriter.CreateWaveFile(My.Application.Info.DirectoryPath & "\nuovo.wav", reader)
End Using
MessageBox.Show("Crezione nuovo file Wav terminato con successo.")

 

Dove origine è sempre il percorso e il nome del file Audio.

Bisogna importare in NAmespace  NAudio.Wave

Abbiamo visto quindi due librerie che ci aiuteranno a capire se file audio è funzionante o danneggiato (e in tal caso lo ripristiniamo).

Annunci

Make a Comment

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...

Liked it here?
Why not try sites on the blogroll...