SlideShare ist ein Scribd-Unternehmen logo
1 von 77
Downloaden Sie, um offline zu lesen
LAS NUEVAS API DE AUDIO EN




      Pablo Garaizar Sagarminaga
Agenda
●   Introducción a HTML5.
●   ¿Cómo ha sido el audio en la Web hasta ahora?
●   Las nuevas API de audio para la Web:
    ●   Audio Data API.
    ●   Web Audio API.
    ●   Otras API multimedia para la Web.
●   Conclusiones
¿HTML5?
Timed
Canvas                       Web
                 media
2D API           playback   Storage


 MIME type
and protocol                Document
  handler
                Microdata
                             editing
 registration




                  Cross-
Browser                      Drag
                document
 history        messaging   & drop
Web
Geolocation    SQL       File API
              Database




WebGL          SVG        CSS3




                The
   Web        Indexed     Web
 Workers      Database   sockets
                API
JS
HTML5   CSS3
               APIs
¿Cómo ha sido el audio en
        la Web?
<EMBED src="file.wav"
autostart="true" loop="false"
volume="100" hidden="true">

<NOEMBED>
  <BGSOUND src="file.wav">
</NOEMBED>




              <EMBED>
<APPLET CODE="Player"
SOUND="file.wav"></APPLET>




                Java
<object classid='clsid:D27CDB6E-AE6D-11cf-
96B8-444553540000' width='300' height='300'
id='player' name='player'>
  <param name='movie' value='player.swf'>
  <param name='flashvars'
   value='file=file.wav'>
</object>




                  Flash
<object style="height: 300px; width: 300px;"
type="application/x-silverlight-2"
data="data:application/x-silverlight-2,">
  <param value="AudioPlayer.xap"
   name="source"/>
  <param value="Path=file.wav"
   name="initParams"/>
  <param value="5.0.61118.0"
   name="minRuntimeVersion"/>
   <p>You need to install Microsoft
Silverlight to view this content.</p>
</object>



                Silverlight
En resumen...
Elementos HTML no
    estándar
Abuso de elementos para
 embeber contenido no
    propio de HTML
Necesidad de plugins no
       estándar
¡Estaría bien que con HTML5
     mejorara la cosa!
<audio>
<audio src="music.mp3"
    autoplay loop="3" controls preload />


<video>
<video width="320" height="240" controls>
  <source src="pr6.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
  <source src="pr6.webm" type='video/webm; codecs="vp8, vorbis"'>
  <source src="pr6.ogv" type='video/ogg; codecs="theora, vorbis"'>
</video>




                 Multimedia en HTML5
<audio>
// funciones
   audio.load();
   audio.play();
   audio.pause();

// propiedades
   audio.currentSrc
   audio.currentTime
   audio.duration

// eventos
   loadedmetadata
   timeupdate
   pause
   play
   ended




                    <audio> en HTML5
Suena bien, ¿verdad?
      (perdón por el chiste fácil)
MP3    WAV       OGG


Internet Explorer 9   a               

Firefox 4.0+                a         a

Google Chrome 6+      a      a         a

Apple Safari 5+       a      a         

Opera 10.6+                 a         a




               El caos de los códecs
<audio controls="controls">
  <source src="song.ogg" type="audio/ogg" />
  <source src="song.mp3" type="audio/mp3" />
  Your browser does not support the audio tag.
</audio>




   ¿Solución? Múltiples sub-elementos source
Pero... HTML5 no se ha
limitado a incluir <video>
para mejorar el aspecto
          visual
Canvas
                    SVG
2D API




            WebGL




 request
Animation           ...
 Frame
¡Qué bueno sería tener una
API estándar en HTML5 para
     manipular audio!
Las nuevas API de audio
      para la Web
    (nuevas → más de una, no hay un solo estándar)
Audio Data API
Propuesta por Mozilla
    (implementada en FF4+)




            Extiende <audio> y <video>



                             API basada en eventos
                             (loadedmetadata, MozAudioAvailable)




                     Audio Data API
Evento estándar
  Definido en HTML5




         +                     mozChannels



Metadatos adicionales         mozSampleRate



                           mozFrameBufferLength




   Audio Data API: evento loadedmetadata
Generado cada vez que un fragmento de audio está disponible
                 (≠ ritmo de reproducción del audio)




                                Array de audio decodificado
                           (floats en crudo, sin información de volumen, etc.)

  Proporciona

                                  Tiempo para esa muestra
                               (desde el inicio del audio y en segundos)




   Audio Data API: evento MozAudioAvailable
var channels,
    rate,
    frameBufferLength,
    samples;
function audioInfo() {
  var audio = document.getElementById('audio');
    // Metadatos propios de la Audio Data API
    channels          = audio.mozChannels;
    rate              = audio.mozSampleRate;
    frameBufferLength = audio.mozFrameBufferLength;
}
function audioAvailable(event) {
  var samples = event.frameBuffer,
      time    = event.time;
    for (var i = 0; i < frameBufferLength; i++) {
      // processSample hará lo que sea necesario con el audio
      processSample(samples[i], channels, rate);
    }
}




Audio Data API: leer audio y procesarlo
// Creamos un elemento <audio>
var audioOutput = new Audio();

// Lo configuramos con dos canales a 44.1 KHz
audioOutput.mozSetup(2, 44100);

// Preparamos un array con las muestras y las escribimos
var samples = [0.242, 0.127, 0.0, -0.058, -0.242, ...];
var numberSamplesWritten = audioOutput.mozWriteAudio(samples);

// Obtenemos la posición actual del flujo de audio
// medida en muestras
var currentSampleOffset = audioOutput.mozCurrentSampleOffset();




        Audio Data API: escribir audio
Demos
MP3 en Firefox (¡sin patentes!)
          http://jsmad.org/
Audio Data API
http://videos.mozilla.org/serv/blizzard/audio-slideshow
Visualizador
http://www.nihilogic.dk/labs/pocket_full_of_html5/#presets/struggle.js
Web Audio API
Propuesta por Google
  (implementada en Chrome10+)




             AudioContext y AudioNode
                      (poco que ver con <audio>)




                                         API a alto nivel
                                   (mucha funcionalidad ya implementada)




                    Web Audio API
AudioSourceNode
                                (AudioBufferSourceNode,
                            MediaElementAudioSourceNode,
                                  JavaScriptAudioNode)



                       AudioDestinationNode

                                  DelayNode
AudioContext                       retardos ajustables


                            AudioGainNode
                                         ganancia


                          AudioPannerNode
    ↓


                                       audio en 3D



         AudioNodes          ConvolverNode
                               efectos de espacio, reverb


                           BiquadFilterNode
                        filtros paso-bajo, paso-alto, paso-banda...


                          WaveShaperNode
                             efectos no-lineales, distorsiones


                      DynamicsCompressorNode
                           efectos de compresión / expansión


                       RealtimeAnalyserNode
                                  análisis en tiempo real
var context = new webkitAudioContext();

var buffer = context.createBuffer(1, BUFFER_SIZE, SAMPLE_RATE);
var bufferData = buffer.getChannelData(0);
var samples = (duration / 1000) * SAMPLE_RATE;

for (i = 0; i < samples; i++) {
  bufferData[i] = Math.sin(pitch * PI_2 * i / SAMPLE_RATE);
}

var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
source.noteOn(0);




        Web Audio API: hacer sonar un tono
AudioContext


        AudioSourceNode          AudioDestinationNode




                          ↓
AudioContext


AudioSourceNode       AudioGainNode       AudioDestinationNode
                  ↓




                                      ↓
var gainNode = context.createGainNode();
source.connect(gainNode);
gainNode.connect(context.destination);
gainNode.gain.value = 0.5;




Web Audio API: conectar un nodo de ganancia
AudioContext

 AudioSourceNode A             AudioSourceNode B            AudioSourceNode C


                                     Waveshaper
   LowPass Filter                                                  Panner
                                       Distortion


  Dry A
              Dry B                             Wet A     Wet B       Dry C
                            Dry C

                                                        Convolution
          Dry Master Gain
                                                          Reverb
                                    Dynamics
                                Compressor

                                                           AudioDestinationNode
Demos
HTML5 Showcase for Web Developers:
       The Wow and the How
http://www.htmlfivewow.com/slide60
HTML5 Showcase for Web Developers:
       The Wow and the How
http://www.htmlfivewow.com/slide64
WebAudio Drum Machine
http://chromium.googlecode.com/svn/trunk/samples/audio/shiny-drum-machine.html
Otras API multimedia
    para la Web
WebRTC API
Objetivo: proporcionar Comunicación en Tiempo Real en la Web


       Sin plugins, sin instalaciones extra, etc.
         Solamente JavaScript y HTML5 (+ API en C++ en el navegador)




       Escenarios: streaming, videoconferencia, etc.
                    (implementación funcional para Google Chrome)




                         WebRTC API
WebRTC API
HTML Streams API
Propuesta de Ian Hickson para la gestión de
         múltiples flujos multimedia en HTML5



                                HTML MediaController API
                            Sincronización de elementos multimedia en HTML


Relacionada con...    Captura y grabación de audio y vídeo local


                      Otras API de gestión de streaming multimedia




                     HTML Streams API
MediaStream Processing API
Objetivo: API común que englobe a todas las
que gestionan contenido multimedia en tiempo real

                   HTML5 <audio> y <video>


  HTML Streams API                   HTML MediaController


  Audio Data API                             Web Audio API


                        WebRTC API


         MediaStream Processing API
Conclusiones
Todas las API tienen mucho
              potencial
      (buen diseño, implementaciones funcionales)
No hay una sola forma de
      hacer lo mismo
    (tampoco la hay en animaciones y nos parece bien)
Mi apuesta: Web Audio
Más eficiente y fácil de usar
     (deja más trabajo “duro” a C++ y menos a JavaScript)
Importante cuota de
mercado en móvil / tablet
    (Webkit → Google Chrome + Safari → Android + iOS)
¿Qué uso ahora mismo en
      producción?
Polyfills
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
Para saber más...
W3C
http://dev.w3.org/html5/spec/Overview.html
WHATWG
http://whatwg.org/html
Muchas gracias ;-)
Referencias
●   Web Audio API, W3C Audio Group Proposal
●   Getting Started with Web Audio API, HTML5 Rocks Tutorials
●   Web Audio Examples
●   Audio Data API, MozillaWiki
●   Mozilla Audio Data API
●   WebRTC
●   WebRTC MediaStream Integration
●   MediaStream Processing API, Draft Proposal
●   HTML5 Audio APIs - How Low can we Go?, Mark Boas
Todas las imágenes son propiedad de sus
    respectivos dueños*, el resto del
contenido está licenciado con la licencia
     Creative Commons by-sa 3.0




       * W3C, WHATWG, Google, Memegenerator.net, Troll.me

Weitere ähnliche Inhalte

Andere mochten auch

1º A fv víctor & llm daniel GIORDANO BRUNO
1º A fv víctor & llm daniel GIORDANO BRUNO1º A fv víctor & llm daniel GIORDANO BRUNO
1º A fv víctor & llm daniel GIORDANO BRUNOpedrobio
 
Lo clásico cerca de aquí
Lo clásico cerca de aquíLo clásico cerca de aquí
Lo clásico cerca de aquíDseiz
 
Arboribus presentacion - webinar-1385052305124
Arboribus   presentacion - webinar-1385052305124Arboribus   presentacion - webinar-1385052305124
Arboribus presentacion - webinar-1385052305124Rankia
 
Presentación planes de pensiones enrique roca
Presentación planes de pensiones   enrique rocaPresentación planes de pensiones   enrique roca
Presentación planes de pensiones enrique rocaRankia
 
Pictet: valencia 16 septiembre
Pictet: valencia 16 septiembrePictet: valencia 16 septiembre
Pictet: valencia 16 septiembreRankia
 
Negociación, mediacion y conciliacion
Negociación, mediacion y conciliacionNegociación, mediacion y conciliacion
Negociación, mediacion y conciliacionMario6carbajal
 
1º c ll arancha auroras polares
1º c ll arancha auroras polares1º c ll arancha auroras polares
1º c ll arancha auroras polarespedrobio
 
Mi estudio de caso carlos moreno
Mi estudio de caso carlos morenoMi estudio de caso carlos moreno
Mi estudio de caso carlos morenocarlosandres1988
 
Estrategias para operar en los mercados intradía (ClickTrade.es)
Estrategias para operar en los mercados intradía (ClickTrade.es)Estrategias para operar en los mercados intradía (ClickTrade.es)
Estrategias para operar en los mercados intradía (ClickTrade.es)Rankia
 

Andere mochten auch (19)

1º A fv víctor & llm daniel GIORDANO BRUNO
1º A fv víctor & llm daniel GIORDANO BRUNO1º A fv víctor & llm daniel GIORDANO BRUNO
1º A fv víctor & llm daniel GIORDANO BRUNO
 
Lo clásico cerca de aquí
Lo clásico cerca de aquíLo clásico cerca de aquí
Lo clásico cerca de aquí
 
Arboribus presentacion - webinar-1385052305124
Arboribus   presentacion - webinar-1385052305124Arboribus   presentacion - webinar-1385052305124
Arboribus presentacion - webinar-1385052305124
 
Proyecto #MoreMedia
Proyecto #MoreMediaProyecto #MoreMedia
Proyecto #MoreMedia
 
Didáctica Crítica Estadistica
Didáctica Crítica EstadisticaDidáctica Crítica Estadistica
Didáctica Crítica Estadistica
 
Grupo 8
Grupo 8Grupo 8
Grupo 8
 
Radiodifusión
RadiodifusiónRadiodifusión
Radiodifusión
 
Nutrición esencial
Nutrición esencialNutrición esencial
Nutrición esencial
 
Politica Monetaria
Politica MonetariaPolitica Monetaria
Politica Monetaria
 
Presentación planes de pensiones enrique roca
Presentación planes de pensiones   enrique rocaPresentación planes de pensiones   enrique roca
Presentación planes de pensiones enrique roca
 
Pictet: valencia 16 septiembre
Pictet: valencia 16 septiembrePictet: valencia 16 septiembre
Pictet: valencia 16 septiembre
 
El Arandano
El ArandanoEl Arandano
El Arandano
 
Negociación, mediacion y conciliacion
Negociación, mediacion y conciliacionNegociación, mediacion y conciliacion
Negociación, mediacion y conciliacion
 
1º c ll arancha auroras polares
1º c ll arancha auroras polares1º c ll arancha auroras polares
1º c ll arancha auroras polares
 
Mi estudio de caso carlos moreno
Mi estudio de caso carlos morenoMi estudio de caso carlos moreno
Mi estudio de caso carlos moreno
 
Atractivos
AtractivosAtractivos
Atractivos
 
Xbox one
Xbox oneXbox one
Xbox one
 
Team Frontera
Team FronteraTeam Frontera
Team Frontera
 
Estrategias para operar en los mercados intradía (ClickTrade.es)
Estrategias para operar en los mercados intradía (ClickTrade.es)Estrategias para operar en los mercados intradía (ClickTrade.es)
Estrategias para operar en los mercados intradía (ClickTrade.es)
 

Ähnlich wie Las nuevas API de audio en HTML5

Sonido y video en una pagina web
Sonido y video en una pagina webSonido y video en una pagina web
Sonido y video en una pagina webXstremsX
 
Creando aplicaciones Media con Windows Azure Media Services
Creando aplicaciones Media con Windows Azure Media ServicesCreando aplicaciones Media con Windows Azure Media Services
Creando aplicaciones Media con Windows Azure Media ServicesEzequiel Jadib
 
Fundamentos del vídeo para web
Fundamentos del vídeo para webFundamentos del vídeo para web
Fundamentos del vídeo para webDavid Hurtado
 
Programación web con HTML5
Programación web con HTML5Programación web con HTML5
Programación web con HTML5Jorge del Casar
 
Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)
Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)
Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)Noe Nieto
 
Elementos Multimedia 2010 1
Elementos Multimedia 2010 1Elementos Multimedia 2010 1
Elementos Multimedia 2010 1Andres Narvaez
 
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)Iñaki Baz Castillo
 
Novedades con Adobe AIR 2.0
Novedades con Adobe AIR 2.0Novedades con Adobe AIR 2.0
Novedades con Adobe AIR 2.0eldervaz Vaz
 
Sesion Nº2 Tecnologias Y Herramientas De Desarrollo Web
Sesion Nº2  Tecnologias Y Herramientas De Desarrollo WebSesion Nº2  Tecnologias Y Herramientas De Desarrollo Web
Sesion Nº2 Tecnologias Y Herramientas De Desarrollo WebEdgar A. Cruz Huaman
 
El vídeo en el curso de TICs
El vídeo en el curso de TICsEl vídeo en el curso de TICs
El vídeo en el curso de TICsJavier Borrás
 
App engine
App engineApp engine
App engineThirdWay
 
Presentacion taller kdenlive
Presentacion   taller kdenlivePresentacion   taller kdenlive
Presentacion taller kdenliveQUE TE DEN
 
T6 perez maria tic_ii
T6 perez maria tic_iiT6 perez maria tic_ii
T6 perez maria tic_iiMafer Perez
 
Como hacer sus sitios web más usables con Internet Explorer 9 y 10
Como hacer sus sitios web más usables con Internet Explorer 9 y 10Como hacer sus sitios web más usables con Internet Explorer 9 y 10
Como hacer sus sitios web más usables con Internet Explorer 9 y 10Juan Carlos Ruiz Pacheco
 

Ähnlich wie Las nuevas API de audio en HTML5 (20)

Sonido y video en una pagina web
Sonido y video en una pagina webSonido y video en una pagina web
Sonido y video en una pagina web
 
Creando aplicaciones Media con Windows Azure Media Services
Creando aplicaciones Media con Windows Azure Media ServicesCreando aplicaciones Media con Windows Azure Media Services
Creando aplicaciones Media con Windows Azure Media Services
 
Fundamentos del vídeo para web
Fundamentos del vídeo para webFundamentos del vídeo para web
Fundamentos del vídeo para web
 
Programación web con HTML5
Programación web con HTML5Programación web con HTML5
Programación web con HTML5
 
Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)
Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)
Charla de Introducción a GStreamer en ITP (Puebla, Septiembre 2012)
 
Elementos Multimedia 2010 1
Elementos Multimedia 2010 1Elementos Multimedia 2010 1
Elementos Multimedia 2010 1
 
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
 
Curso html5
Curso html5Curso html5
Curso html5
 
Novedades con Adobe AIR 2.0
Novedades con Adobe AIR 2.0Novedades con Adobe AIR 2.0
Novedades con Adobe AIR 2.0
 
Presentación proyecto fin de carrera
Presentación proyecto fin de carreraPresentación proyecto fin de carrera
Presentación proyecto fin de carrera
 
Sesion Nº2 Tecnologias Y Herramientas De Desarrollo Web
Sesion Nº2  Tecnologias Y Herramientas De Desarrollo WebSesion Nº2  Tecnologias Y Herramientas De Desarrollo Web
Sesion Nº2 Tecnologias Y Herramientas De Desarrollo Web
 
El vídeo en el curso de TICs
El vídeo en el curso de TICsEl vídeo en el curso de TICs
El vídeo en el curso de TICs
 
App engine
App engineApp engine
App engine
 
Multimedia ¡Libre!
Multimedia ¡Libre!Multimedia ¡Libre!
Multimedia ¡Libre!
 
Jmf
JmfJmf
Jmf
 
Presentacion taller kdenlive
Presentacion   taller kdenlivePresentacion   taller kdenlive
Presentacion taller kdenlive
 
T6 perez maria tic_ii
T6 perez maria tic_iiT6 perez maria tic_ii
T6 perez maria tic_ii
 
Como hacer sus sitios web más usables con Internet Explorer 9 y 10
Como hacer sus sitios web más usables con Internet Explorer 9 y 10Como hacer sus sitios web más usables con Internet Explorer 9 y 10
Como hacer sus sitios web más usables con Internet Explorer 9 y 10
 
Romina izquierdo 2 b2
Romina izquierdo 2 b2Romina izquierdo 2 b2
Romina izquierdo 2 b2
 
Juegos html5
Juegos html5Juegos html5
Juegos html5
 

Mehr von Pablo Garaizar

De la robótica educativa al pensamiento computacional
De la robótica educativa al pensamiento computacionalDe la robótica educativa al pensamiento computacional
De la robótica educativa al pensamiento computacionalPablo Garaizar
 
¿Cómo se crea una experiencia lúdica?
¿Cómo se crea una experiencia lúdica?¿Cómo se crea una experiencia lúdica?
¿Cómo se crea una experiencia lúdica?Pablo Garaizar
 
Luces y sombras en el uso de la tecnología en clase
Luces y sombras en el uso de la tecnología en claseLuces y sombras en el uso de la tecnología en clase
Luces y sombras en el uso de la tecnología en clasePablo Garaizar
 
Aspectos psicológicos en el diseño de juegos de mesa
Aspectos psicológicos en el diseño de juegos de mesaAspectos psicológicos en el diseño de juegos de mesa
Aspectos psicológicos en el diseño de juegos de mesaPablo Garaizar
 
Educación basada en evidencias
Educación basada en evidenciasEducación basada en evidencias
Educación basada en evidenciasPablo Garaizar
 
Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...
Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...
Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...Pablo Garaizar
 
Neurobollocks: el nuevo aceite de serpiente
Neurobollocks: el nuevo aceite de serpienteNeurobollocks: el nuevo aceite de serpiente
Neurobollocks: el nuevo aceite de serpientePablo Garaizar
 
Algunas cuestiones psicológicas que nos pueden ayudar a diseñar mejor
Algunas cuestiones psicológicas que nos pueden ayudar a diseñar mejorAlgunas cuestiones psicológicas que nos pueden ayudar a diseñar mejor
Algunas cuestiones psicológicas que nos pueden ayudar a diseñar mejorPablo Garaizar
 
Identidad digital y feminismo
Identidad digital y feminismoIdentidad digital y feminismo
Identidad digital y feminismoPablo Garaizar
 
Errores comunes en la visualización de datos y algunas soluciones
Errores comunes en la visualización de datos y algunas solucionesErrores comunes en la visualización de datos y algunas soluciones
Errores comunes en la visualización de datos y algunas solucionesPablo Garaizar
 
Decisiones tecnológicas, consecuencias ideológicas
Decisiones tecnológicas, consecuencias ideológicasDecisiones tecnológicas, consecuencias ideológicas
Decisiones tecnológicas, consecuencias ideológicasPablo Garaizar
 
Etica investigaciontecnologica2013
Etica investigaciontecnologica2013Etica investigaciontecnologica2013
Etica investigaciontecnologica2013Pablo Garaizar
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesPablo Garaizar
 
Video-games 101: Unleashing the potential of students and teachers to create ...
Video-games 101: Unleashing the potential of students and teachers to create ...Video-games 101: Unleashing the potential of students and teachers to create ...
Video-games 101: Unleashing the potential of students and teachers to create ...Pablo Garaizar
 
Scratch Eguna: From Scratch Day to Scratch every day
Scratch Eguna: From Scratch Day to Scratch every dayScratch Eguna: From Scratch Day to Scratch every day
Scratch Eguna: From Scratch Day to Scratch every dayPablo Garaizar
 
Redes sociales en Internet: guía para madres y padres
Redes sociales en Internet: guía para madres y padresRedes sociales en Internet: guía para madres y padres
Redes sociales en Internet: guía para madres y padresPablo Garaizar
 
El problema de parada y los castores laboriosos
El problema de parada y los castores laboriososEl problema de parada y los castores laboriosos
El problema de parada y los castores laboriososPablo Garaizar
 
Introducción a las vulnerabilidades web
Introducción a las vulnerabilidades webIntroducción a las vulnerabilidades web
Introducción a las vulnerabilidades webPablo Garaizar
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webPablo Garaizar
 
El acceso a las TIC y la justicia social
El acceso a las TIC y la justicia socialEl acceso a las TIC y la justicia social
El acceso a las TIC y la justicia socialPablo Garaizar
 

Mehr von Pablo Garaizar (20)

De la robótica educativa al pensamiento computacional
De la robótica educativa al pensamiento computacionalDe la robótica educativa al pensamiento computacional
De la robótica educativa al pensamiento computacional
 
¿Cómo se crea una experiencia lúdica?
¿Cómo se crea una experiencia lúdica?¿Cómo se crea una experiencia lúdica?
¿Cómo se crea una experiencia lúdica?
 
Luces y sombras en el uso de la tecnología en clase
Luces y sombras en el uso de la tecnología en claseLuces y sombras en el uso de la tecnología en clase
Luces y sombras en el uso de la tecnología en clase
 
Aspectos psicológicos en el diseño de juegos de mesa
Aspectos psicológicos en el diseño de juegos de mesaAspectos psicológicos en el diseño de juegos de mesa
Aspectos psicológicos en el diseño de juegos de mesa
 
Educación basada en evidencias
Educación basada en evidenciasEducación basada en evidencias
Educación basada en evidencias
 
Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...
Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...
Neuromandangas: descubre cómo NO programarás mejor gracias a los últimos avan...
 
Neurobollocks: el nuevo aceite de serpiente
Neurobollocks: el nuevo aceite de serpienteNeurobollocks: el nuevo aceite de serpiente
Neurobollocks: el nuevo aceite de serpiente
 
Algunas cuestiones psicológicas que nos pueden ayudar a diseñar mejor
Algunas cuestiones psicológicas que nos pueden ayudar a diseñar mejorAlgunas cuestiones psicológicas que nos pueden ayudar a diseñar mejor
Algunas cuestiones psicológicas que nos pueden ayudar a diseñar mejor
 
Identidad digital y feminismo
Identidad digital y feminismoIdentidad digital y feminismo
Identidad digital y feminismo
 
Errores comunes en la visualización de datos y algunas soluciones
Errores comunes en la visualización de datos y algunas solucionesErrores comunes en la visualización de datos y algunas soluciones
Errores comunes en la visualización de datos y algunas soluciones
 
Decisiones tecnológicas, consecuencias ideológicas
Decisiones tecnológicas, consecuencias ideológicasDecisiones tecnológicas, consecuencias ideológicas
Decisiones tecnológicas, consecuencias ideológicas
 
Etica investigaciontecnologica2013
Etica investigaciontecnologica2013Etica investigaciontecnologica2013
Etica investigaciontecnologica2013
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
 
Video-games 101: Unleashing the potential of students and teachers to create ...
Video-games 101: Unleashing the potential of students and teachers to create ...Video-games 101: Unleashing the potential of students and teachers to create ...
Video-games 101: Unleashing the potential of students and teachers to create ...
 
Scratch Eguna: From Scratch Day to Scratch every day
Scratch Eguna: From Scratch Day to Scratch every dayScratch Eguna: From Scratch Day to Scratch every day
Scratch Eguna: From Scratch Day to Scratch every day
 
Redes sociales en Internet: guía para madres y padres
Redes sociales en Internet: guía para madres y padresRedes sociales en Internet: guía para madres y padres
Redes sociales en Internet: guía para madres y padres
 
El problema de parada y los castores laboriosos
El problema de parada y los castores laboriososEl problema de parada y los castores laboriosos
El problema de parada y los castores laboriosos
 
Introducción a las vulnerabilidades web
Introducción a las vulnerabilidades webIntroducción a las vulnerabilidades web
Introducción a las vulnerabilidades web
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
 
El acceso a las TIC y la justicia social
El acceso a las TIC y la justicia socialEl acceso a las TIC y la justicia social
El acceso a las TIC y la justicia social
 

Kürzlich hochgeladen

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Kürzlich hochgeladen (15)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Las nuevas API de audio en HTML5

  • 1. LAS NUEVAS API DE AUDIO EN Pablo Garaizar Sagarminaga
  • 2. Agenda ● Introducción a HTML5. ● ¿Cómo ha sido el audio en la Web hasta ahora? ● Las nuevas API de audio para la Web: ● Audio Data API. ● Web Audio API. ● Otras API multimedia para la Web. ● Conclusiones
  • 4. Timed Canvas Web media 2D API playback Storage MIME type and protocol Document handler Microdata editing registration Cross- Browser Drag document history messaging & drop
  • 5. Web Geolocation SQL File API Database WebGL SVG CSS3 The Web Indexed Web Workers Database sockets API
  • 6. JS HTML5 CSS3 APIs
  • 7. ¿Cómo ha sido el audio en la Web?
  • 8. <EMBED src="file.wav" autostart="true" loop="false" volume="100" hidden="true"> <NOEMBED> <BGSOUND src="file.wav"> </NOEMBED> <EMBED>
  • 10. <object classid='clsid:D27CDB6E-AE6D-11cf- 96B8-444553540000' width='300' height='300' id='player' name='player'> <param name='movie' value='player.swf'> <param name='flashvars' value='file=file.wav'> </object> Flash
  • 11. <object style="height: 300px; width: 300px;" type="application/x-silverlight-2" data="data:application/x-silverlight-2,"> <param value="AudioPlayer.xap" name="source"/> <param value="Path=file.wav" name="initParams"/> <param value="5.0.61118.0" name="minRuntimeVersion"/> <p>You need to install Microsoft Silverlight to view this content.</p> </object> Silverlight
  • 13. Elementos HTML no estándar
  • 14. Abuso de elementos para embeber contenido no propio de HTML
  • 15. Necesidad de plugins no estándar
  • 16.
  • 17. ¡Estaría bien que con HTML5 mejorara la cosa!
  • 18. <audio> <audio src="music.mp3" autoplay loop="3" controls preload /> <video> <video width="320" height="240" controls> <source src="pr6.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> <source src="pr6.webm" type='video/webm; codecs="vp8, vorbis"'> <source src="pr6.ogv" type='video/ogg; codecs="theora, vorbis"'> </video> Multimedia en HTML5
  • 19. <audio> // funciones audio.load(); audio.play(); audio.pause(); // propiedades audio.currentSrc audio.currentTime audio.duration // eventos loadedmetadata timeupdate pause play ended <audio> en HTML5
  • 20. Suena bien, ¿verdad? (perdón por el chiste fácil)
  • 21.
  • 22. MP3 WAV OGG Internet Explorer 9 a   Firefox 4.0+  a a Google Chrome 6+ a a a Apple Safari 5+ a a  Opera 10.6+  a a El caos de los códecs
  • 23. <audio controls="controls"> <source src="song.ogg" type="audio/ogg" /> <source src="song.mp3" type="audio/mp3" /> Your browser does not support the audio tag. </audio> ¿Solución? Múltiples sub-elementos source
  • 24. Pero... HTML5 no se ha limitado a incluir <video> para mejorar el aspecto visual
  • 25. Canvas SVG 2D API WebGL request Animation ... Frame
  • 26. ¡Qué bueno sería tener una API estándar en HTML5 para manipular audio!
  • 27. Las nuevas API de audio para la Web (nuevas → más de una, no hay un solo estándar)
  • 28.
  • 30. Propuesta por Mozilla (implementada en FF4+) Extiende <audio> y <video> API basada en eventos (loadedmetadata, MozAudioAvailable) Audio Data API
  • 31. Evento estándar Definido en HTML5 + mozChannels Metadatos adicionales mozSampleRate mozFrameBufferLength Audio Data API: evento loadedmetadata
  • 32. Generado cada vez que un fragmento de audio está disponible (≠ ritmo de reproducción del audio) Array de audio decodificado (floats en crudo, sin información de volumen, etc.) Proporciona Tiempo para esa muestra (desde el inicio del audio y en segundos) Audio Data API: evento MozAudioAvailable
  • 33. var channels, rate, frameBufferLength, samples; function audioInfo() { var audio = document.getElementById('audio'); // Metadatos propios de la Audio Data API channels = audio.mozChannels; rate = audio.mozSampleRate; frameBufferLength = audio.mozFrameBufferLength; } function audioAvailable(event) { var samples = event.frameBuffer, time = event.time; for (var i = 0; i < frameBufferLength; i++) { // processSample hará lo que sea necesario con el audio processSample(samples[i], channels, rate); } } Audio Data API: leer audio y procesarlo
  • 34. // Creamos un elemento <audio> var audioOutput = new Audio(); // Lo configuramos con dos canales a 44.1 KHz audioOutput.mozSetup(2, 44100); // Preparamos un array con las muestras y las escribimos var samples = [0.242, 0.127, 0.0, -0.058, -0.242, ...]; var numberSamplesWritten = audioOutput.mozWriteAudio(samples); // Obtenemos la posición actual del flujo de audio // medida en muestras var currentSampleOffset = audioOutput.mozCurrentSampleOffset(); Audio Data API: escribir audio
  • 35. Demos
  • 36. MP3 en Firefox (¡sin patentes!) http://jsmad.org/
  • 40. Propuesta por Google (implementada en Chrome10+) AudioContext y AudioNode (poco que ver con <audio>) API a alto nivel (mucha funcionalidad ya implementada) Web Audio API
  • 41. AudioSourceNode (AudioBufferSourceNode, MediaElementAudioSourceNode, JavaScriptAudioNode) AudioDestinationNode DelayNode AudioContext retardos ajustables AudioGainNode ganancia AudioPannerNode ↓ audio en 3D AudioNodes ConvolverNode efectos de espacio, reverb BiquadFilterNode filtros paso-bajo, paso-alto, paso-banda... WaveShaperNode efectos no-lineales, distorsiones DynamicsCompressorNode efectos de compresión / expansión RealtimeAnalyserNode análisis en tiempo real
  • 42. var context = new webkitAudioContext(); var buffer = context.createBuffer(1, BUFFER_SIZE, SAMPLE_RATE); var bufferData = buffer.getChannelData(0); var samples = (duration / 1000) * SAMPLE_RATE; for (i = 0; i < samples; i++) { bufferData[i] = Math.sin(pitch * PI_2 * i / SAMPLE_RATE); } var source = context.createBufferSource(); source.buffer = buffer; source.connect(context.destination); source.noteOn(0); Web Audio API: hacer sonar un tono
  • 43. AudioContext AudioSourceNode AudioDestinationNode ↓ AudioContext AudioSourceNode AudioGainNode AudioDestinationNode ↓ ↓
  • 44. var gainNode = context.createGainNode(); source.connect(gainNode); gainNode.connect(context.destination); gainNode.gain.value = 0.5; Web Audio API: conectar un nodo de ganancia
  • 45. AudioContext AudioSourceNode A AudioSourceNode B AudioSourceNode C Waveshaper LowPass Filter Panner Distortion Dry A Dry B Wet A Wet B Dry C Dry C Convolution Dry Master Gain Reverb Dynamics Compressor AudioDestinationNode
  • 46. Demos
  • 47. HTML5 Showcase for Web Developers: The Wow and the How http://www.htmlfivewow.com/slide60
  • 48. HTML5 Showcase for Web Developers: The Wow and the How http://www.htmlfivewow.com/slide64
  • 50.
  • 51. Otras API multimedia para la Web
  • 53. Objetivo: proporcionar Comunicación en Tiempo Real en la Web Sin plugins, sin instalaciones extra, etc. Solamente JavaScript y HTML5 (+ API en C++ en el navegador) Escenarios: streaming, videoconferencia, etc. (implementación funcional para Google Chrome) WebRTC API
  • 56. Propuesta de Ian Hickson para la gestión de múltiples flujos multimedia en HTML5 HTML MediaController API Sincronización de elementos multimedia en HTML Relacionada con... Captura y grabación de audio y vídeo local Otras API de gestión de streaming multimedia HTML Streams API
  • 58. Objetivo: API común que englobe a todas las que gestionan contenido multimedia en tiempo real HTML5 <audio> y <video> HTML Streams API HTML MediaController Audio Data API Web Audio API WebRTC API MediaStream Processing API
  • 60. Todas las API tienen mucho potencial (buen diseño, implementaciones funcionales)
  • 61. No hay una sola forma de hacer lo mismo (tampoco la hay en animaciones y nos parece bien)
  • 62.
  • 64. Más eficiente y fácil de usar (deja más trabajo “duro” a C++ y menos a JavaScript)
  • 65. Importante cuota de mercado en móvil / tablet (Webkit → Google Chrome + Safari → Android + iOS)
  • 66.
  • 67. ¿Qué uso ahora mismo en producción?
  • 68.
  • 69.
  • 70.
  • 76. Referencias ● Web Audio API, W3C Audio Group Proposal ● Getting Started with Web Audio API, HTML5 Rocks Tutorials ● Web Audio Examples ● Audio Data API, MozillaWiki ● Mozilla Audio Data API ● WebRTC ● WebRTC MediaStream Integration ● MediaStream Processing API, Draft Proposal ● HTML5 Audio APIs - How Low can we Go?, Mark Boas
  • 77. Todas las imágenes son propiedad de sus respectivos dueños*, el resto del contenido está licenciado con la licencia Creative Commons by-sa 3.0 * W3C, WHATWG, Google, Memegenerator.net, Troll.me