La libreria per leggere i tag id3 degli MP3 è passata su github, poichè l'autore originale è morto, il nuovo programmatore che mantiene la libreria è Paul McClernan, potete scaricare la libreria da: https://github.com/PaulMcClernan/id3lib
Visualizzazione post con etichetta audio. Mostra tutti i post
Visualizzazione post con etichetta audio. Mostra tutti i post
venerdì 7 ottobre 2016
mercoledì 16 marzo 2016
Analizzare un file audio WAV
Se volessimo analizzare un file audio, dovremmo prima di tutto sapere come è fatto. Uno dei formati più semplici è il wav, che non è compresso e i dati partono dopo il byte 44.
Il formato WAV, stereo, dopo il byte 44, pone due byte per il canale sinistro, due byte per il canale destro, e poi ricomincia. Per questo motivo possiamo fare un grafico leggendo questi byte.
Facciamo uno stack con:
Premendo il pulsante otterremo questo:
Ovviamente questo è solo un esempio molto semplice, ma da qui potete proseguire voi a fare od aggiungere effetti.
Il formato WAV, stereo, dopo il byte 44, pone due byte per il canale sinistro, due byte per il canale destro, e poi ricomincia. Per questo motivo possiamo fare un grafico leggendo questi byte.
Facciamo uno stack con:
- un bottone
- un campo di testo
- un grafico di tipo linea
on mouseUp put URL "binfile:C:\Users\MAX\Documents\fanhit.wav" into MioAudio #percorso dell'audio da analizzare put 0 into cont #contatore byte put 0 into cont2 #contatore canale sinistro put 0 into cont3 #contatore punti del grafico repeat for each byte theByte in mioAudio add 1 to cont if cont > 44 then #dopo il byte 44 possiamo analizzare l'audio add 1 to cont2 #contiamo i byte dei canali, 1 e 2 sinistro, 3 e 4 destro switch cont2 case 1 #primo byte canale sinistro put byteTonum(theByte) into temp break case 2 #secondo byte canale sinistro put temp + (256 * byteTonum(theByte)) into temp add 1 to cont3 #spostiamo lungo x sull'asse del grafico put cont3,byteTonum(theByte) & return after punti #aggiungiamo una riga di coordinate x,y per il grafico break case 4 put 0 into cont2 #resettiamo il contatore dei canali end switch end if end repeat put punti into field 1 #vediamo l'elenco dei punti set the points of graphic "line" to punti #facciamo il grafico del canale sinistroend mouseUp
Premendo il pulsante otterremo questo:
Ovviamente questo è solo un esempio molto semplice, ma da qui potete proseguire voi a fare od aggiungere effetti.
giovedì 30 aprile 2015
Mappa d'Europa interattiva
Il programmatore Viktoras Didziulis ha scritto questo semplice programma per dimostrare come creare una cartina interattiva.
Cliccando su una regione, una voce ci dice le informazioni di un paese. Il programma è scaricabile da qui: iMap.livecode.
Oppure in alternativa potete lanciare il seguente comando:
go url "http://ekoinf.net/revolution/ParentScripts.rev"
Il programma utilizza la libreria revSpeak, per creare la voce narrante, che è sempre inclusa in livecode. In questo modo non ci sono pesanti registrazioni da allegare, ma basta scrivere il testo e il computer lo legge.
Il programma inoltre usa i poligoni che cambiamo trasparenza per evidenziare i vari paesi dove passa sopra il mouse.
Cliccando su una regione, una voce ci dice le informazioni di un paese. Il programma è scaricabile da qui: iMap.livecode.
Oppure in alternativa potete lanciare il seguente comando:
go url "http://ekoinf.net/revolution/ParentScripts.rev"
Il programma utilizza la libreria revSpeak, per creare la voce narrante, che è sempre inclusa in livecode. In questo modo non ci sono pesanti registrazioni da allegare, ma basta scrivere il testo e il computer lo legge.
Il programma inoltre usa i poligoni che cambiamo trasparenza per evidenziare i vari paesi dove passa sopra il mouse.
lunedì 20 aprile 2015
Registrare l'audio
Livecode si appoggia a QuickTime su Windows e Mac per gli elementi multimediali. Una delle funzionalità di quicktime che possiamo utilizzare grazie a livecode è quella di registrare l'audio.
Possiamo impostare ogni dettaglio della registrazione se vogliamo, oppure lasciare le impostazioni de default. Ad esempio prima di registrare l'audio possiamo impostare il formato di file che vogliamo ottenere.
La funzione recordCompressionTypes() ci dà dei codec disponibili, ad esempio su windowsXp ottengo:
Possiamo impostare il tipo di file, utilizzando la proprietà recordformat, tra:
Possiamo impostare la fonte da cui registrare l'audio, impostando la proprietà recordInput tra le seguenti:
Una volta scelto se e cosa impostare i comandi da utilizzare sono:
mentre per mettere in pausa e riprendere la registrazione abbiamo:
Infine per chiudere la registrazione abbiamo:
In questo modo potete fare programmi di registrazione molto complessi.
Per gli utenti linux, che non hanno quicktime a disposizione, c'è il programma sox oppure arecord che possimo utilizzare dentro il nostro livecode, ad esempio:
Possiamo impostare ogni dettaglio della registrazione se vogliamo, oppure lasciare le impostazioni de default. Ad esempio prima di registrare l'audio possiamo impostare il formato di file che vogliamo ottenere.
La funzione recordCompressionTypes() ci dà dei codec disponibili, ad esempio su windowsXp ottengo:
- No compression,raw
- MACE 3:1,MAC3
- MACE 6:1,MAC6
- QDesign Music 2,QDM2
- Qualcomm PureVoice,Qclp
- Apple Lossless,alac
- ALaw 2:1,alaw
- 32-bit Floating Point,fl32
- 64-bit Floating Point,fl64
- IMA 4:1,ima4
- 24-bit Integer,in24
- 32-bit Integer,in32
- AAC a bassa complessità MPEG 4,mp4a
- 16-bit Little Endian,sowt
- 16-bit Big Endian,twos
- µLaw 2:1,ulaw
Possiamo impostare il tipo di file, utilizzando la proprietà recordformat, tra:
- aiffrecords per il formato AIF
- waverecords per il formato WA
- ulawrecords per il formato AU
- movierecords per il formato video QuickTime
Possiamo impostare la fonte da cui registrare l'audio, impostando la proprietà recordInput tra le seguenti:
- imic - microfono interno
- emic -il jack audio esterno
- cd - il lettore CD
- irca - il jack RCA
- tvfm - da una radio FM
- idav - da un input analgicoDAV
- mbay - dispositivo media-bay
- modm - da un modem
- zvpc - da un zoom video input
- none - non registra
Una volta scelto se e cosa impostare i comandi da utilizzare sono:
record sound file "registrazione.aiff"mentre per mettere in pausa e riprendere la registrazione abbiamo:
record pauserecord resumeInfine per chiudere la registrazione abbiamo:
stop recordingIn questo modo potete fare programmi di registrazione molto complessi.
Per gli utenti linux, che non hanno quicktime a disposizione, c'è il programma sox oppure arecord che possimo utilizzare dentro il nostro livecode, ad esempio:
shell("sox -t alsa default output.wav")martedì 17 marzo 2015
revSpeak
Dentro livecode è presente una libreria per poter far parlare i nostri programmi: revSpeak. Questa libreria funziona con Windows e Mac.
L'uso è semplicissimo:
In pratica il computer legge ciò che vogliamo. Su windows si appoggiano alle Micorsoft Speech API, che hanno installato di solito solo una lingua di default: Microsoft Sam. Questa voce ha l'inflessione inglese, per l'italiano non è il massimo.
Per vedere le voci disponibili sul vostro computer basta usare la funzione revspeechVoices(), vi restituirà tutte le voci disponibili. Altre voci sono scaricabili gratuitamente o a pagamento.
A partire da Windows 8 esistono anche le seguenti voci, che però hanno dei nomi abbastanza anonimi:
Oltre la lingua, si può impostare il volume con il comando revSetSpeechVolume, utilizzando un numero tra zero e cento.
Per caricare la libreria utilizzate il comando revLoadSpeech, mentre per non utilizzarla più e risparmiare la memoria revUnloadSpeech.
Potete anche cambiare il tremolio della voce col comando revSetSpeechPitch, utilizzando un numero tra 30 e 127.
L'uso è semplicissimo:
revspeak "Hello, I'm talking!"In pratica il computer legge ciò che vogliamo. Su windows si appoggiano alle Micorsoft Speech API, che hanno installato di solito solo una lingua di default: Microsoft Sam. Questa voce ha l'inflessione inglese, per l'italiano non è il massimo.
Per vedere le voci disponibili sul vostro computer basta usare la funzione revspeechVoices(), vi restituirà tutte le voci disponibili. Altre voci sono scaricabili gratuitamente o a pagamento.
A partire da Windows 8 esistono anche le seguenti voci, che però hanno dei nomi abbastanza anonimi:
- Microsoft David (USA male)
- Hazel (UK female)
- Zira (USA female)
- Microsoft Helena (Spagnolo)
- Microsoft Sabina (Spagnolo)
- Microsoft Hortense (Francese)
- Microsoft Hedda (Tedesco)
- Microsoft Haruka (Giapponese)
- Microsoft Heami (Koreano)
- Microsoft Hanhan (Cinese)
- Microsoft Elsa (Italiano)
- ...
revSetSpeechVoice "Microsoft Elsa"Oltre la lingua, si può impostare il volume con il comando revSetSpeechVolume, utilizzando un numero tra zero e cento.
Per caricare la libreria utilizzate il comando revLoadSpeech, mentre per non utilizzarla più e risparmiare la memoria revUnloadSpeech.
Potete anche cambiare il tremolio della voce col comando revSetSpeechPitch, utilizzando un numero tra 30 e 127.
mercoledì 20 agosto 2014
Insegnante di canto per canarini
Oggi vi mostro un esempio di creare un software molto particolare per le nostre esigenze con Livecode.
Prima di tutto una premessa, i canarini imparano a cantare bene solo sentendo altri maschi. Per questo motivo il canarino della signora Jacqueline Landman-Gay, solo in tutta la casa, aveva bisogno di creare un programma che facesse sentire al suo canarino i vari cinguettii di altri canarini maschi.
Per prima cosa la signora ha scaricato degli MP3 contenenti i versi dei canarini, poi ha creato il programma con un elenco selezionabile contenente la lista degli MP3, il player e un pulsante:
Il codice del pulsante è il seguente:
Il resto del codice è tutto qui:
Il messaggio preOpenCard serve a caricare tutte le musiche all'avvio.
Il messaggio playSong serve ad avviare la musica scelta e mandarne un'altra a caso ogni intervallo stabilito.
Il messaggio stopSongs ferma l'esecuzione della musica.
Migliorando la grafica, il programma finale è il seguente:
Il programma può essere scaricato da qui: http://newsletters.livecode.com/july/issue29/Canary_Stack.zip
Tempo per ottenere il programma completo: 20 minuti! Con quale altro linguaggio di programmazione potevate ottenere lo stesso risultato con così poco tempo?
Prima di tutto una premessa, i canarini imparano a cantare bene solo sentendo altri maschi. Per questo motivo il canarino della signora Jacqueline Landman-Gay, solo in tutta la casa, aveva bisogno di creare un programma che facesse sentire al suo canarino i vari cinguettii di altri canarini maschi.
Per prima cosa la signora ha scaricato degli MP3 contenenti i versi dei canarini, poi ha creato il programma con un elenco selezionabile contenente la lista degli MP3, il player e un pulsante:
Il codice del pulsante è il seguente:
on mouseUp if the label of me = "start" then set the label of me to "Stop" playSong else set the label of me to "Start" stopSongs end ifend mouseUp
Il resto del codice è tutto qui:
on preOpenCard put "" into fld "next play" set the hilitedlines of fld "playlist" to 0 get songPath() set the directory to it put the files into tSongs filter tSongs with "*.mp3" if tSongs = "" then put "No songs found." into tSongs put tSongs into fld "playlist"end preOpenCard
on closeCard stopSongsend closeCard
on playSong -- randomly choose an mp3, play it at a random time put any line of fld "playlist" into tSongName put songPath() & tSongName into tSong lock messages set the filename of player "canary" to tSong unlock messages set the hilitedlines of fld "playlist" to lineoffset(tSongName,fld "playlist") set the currentTime of player "canary" to 1 start player "canary"end playSong
on stopSongs -- stop playback lock messages -- prevent "playstopped" from being sent stop player "canary" put "" into fld "next play" set the hilitedlines of fld "playlist" to 0 repeat for each line tLine in the pendingmessages if tLine contains "playSong" then cancel (item 1 of tLine) end repeat unlock messagesend stopSongs
on playStopped pPlayer set the hilitedlines of fld "playlist" to 0 if the label of btn "start" = "start" then pass playStopped -- not in auto mode put random(word 1 of the label of btn "Lag") into tSecs displayTime tSecs if "playSong" is not in the pendingmessages then send "playSong" to me in tSecs secondsend playStopped
function songPath put the filename of this stack into tPath set the itemdel to slash put "songs" into last item of tPath return tPath & slashend songPath
on displayTime pSecs get the long time convert it to seconds add pSecs to it convert it to long time put "Next song at:" && it into fld "next play"end displayTime
Il messaggio preOpenCard serve a caricare tutte le musiche all'avvio.
Il messaggio playSong serve ad avviare la musica scelta e mandarne un'altra a caso ogni intervallo stabilito.
Il messaggio stopSongs ferma l'esecuzione della musica.
Migliorando la grafica, il programma finale è il seguente:
Il programma può essere scaricato da qui: http://newsletters.livecode.com/july/issue29/Canary_Stack.zip
Tempo per ottenere il programma completo: 20 minuti! Con quale altro linguaggio di programmazione potevate ottenere lo stesso risultato con così poco tempo?
martedì 20 maggio 2014
Applicazioni multimediali
Con Livecode è possibile inserire all'interno del proprio programma lettori audio o video. Ma la cosa più interessane è che si può attivare messaggi al raggiungimento di un determinato fotogramma o minuto di esecuzione.
Una volta inserito il nostro lettore e selezionato il file da eseguire, potete leggere di quanti secondi (o frames o altra unità di misura) è composto. Nel nostro caso 19'797:
Se andate alla voce "callbacks" delle proprietà, potete impostare quando attivare alcuni eventi.
In questo modo potete creare film sottotitolati, audiolibri interattivi, karaoke, ecc.
Una volta inserito il nostro lettore e selezionato il file da eseguire, potete leggere di quanti secondi (o frames o altra unità di misura) è composto. Nel nostro caso 19'797:
Se andate alla voce "callbacks" delle proprietà, potete impostare quando attivare alcuni eventi.
In questo modo potete creare film sottotitolati, audiolibri interattivi, karaoke, ecc.
Iscriviti a:
Commenti (Atom)








