Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programando para o Jack daemon

691 views

Published on

Palestra de 25/06/2009 para o FISL10 "programando para o jack daemon", com exemplos de programacão (código disponível em http://eduardo.macan.eng.br )

Published in: Education, Lifestyle, Technology
  • Be the first to comment

  • Be the first to like this

Programando para o Jack daemon

  1. 1. Programando para o jack daemon http://eduardo.macan.eng.br Eduardo M. Maçan @eduardomacan
  2. 2. Conteúdo <ul><li>Áudio, Computadores, UNIX </li></ul><ul><li>Arquitetura JACK </li></ul><ul><li>Tendências </li></ul><ul><li>Requisitos de aplicação </li></ul><ul><li>Bibliotecas e exemplos práticos </li></ul>
  3. 3. Audio & Computers <ul><li>1947 : Debugging através de sons </li></ul><ul><li>1958 : Computador usado em música </li></ul><ul><li>1968 : Gravação de performance </li></ul><ul><li>1978 : Computadores + Synths </li></ul><ul><li>1981 : Protocolo MIDI </li></ul>http://arts.ucsc.edu/ems/Music/equipment/computers/history/history.html
  4. 4. Audio & Unix <ul><li>UNIX : Dispositivos são “arquivos” </li></ul><ul><li>cat /dev/audio > arquivo.au </li></ul><ul><li>cat arquivo.au > /dev/audio </li></ul><ul><li>Linux : OSS, Sound Blaster & GUS </li></ul><ul><li>ioctl(2) read(2) & write(2)‏ </li></ul>
  5. 5. Open Sound System <ul><li>Design obsoleto </li></ul><ul><li>Pouco modularizado </li></ul><ul><li>Suporte sofrível a MIDI </li></ul><ul><li>Alta latência </li></ul><ul><li>Livre, proprietário , livre </li></ul>
  6. 6. Advanced Linux Sound Architecture <ul><li>Design moderno </li></ul><ul><li>Altamente modularizado </li></ul><ul><li>Suporte profissional a MIDI </li></ul><ul><li>Baixa latência </li></ul><ul><li>Livre, livre, livre </li></ul>
  7. 7. JACK Audio Connection Kit
  8. 8. Tendências <ul><li>Jackdmp -> jack 2.0 </li></ul><ul><li>Suporte a rede </li></ul><ul><li>Vídeo </li></ul><ul><li>MIDI </li></ul><ul><li>Suporte a outras plataformas </li></ul>
  9. 9. Características <ul><li>Multithreaded programming </li></ul><ul><li>IPC ( I nter P roccess C ommunication) </li></ul><ul><li>RT (Real Time Capabilities) </li></ul>
  10. 10. Jack client estrutura mínima <ul><li>#include <jack/jack.h> </li></ul><ul><li>callback_defs(); </li></ul><ul><li>jack_client_new(); </li></ul><ul><li>jack_set_process_callback(); </li></ul><ul><li>jack_port_register(); </li></ul><ul><li>jack_activate(); </li></ul><ul><li>jack_client_close(); </li></ul>
  11. 11. Int process (jack_nframes_t nframes, void *arg) { jack_default_audio_sample_t *out; jack_default_audio_sample_t *in; out = ( jack_default_audio_sample_t *) jack_port_get_buffer (output_port, nframes); in =( jack_default_audio_sample_t *) jack_port_get_buffer (input_port, nframes); /* Faz coisas */ return 0; } Jack client callback
  12. 12. Obrigado! <ul><li>http://www.jackaudio.org </li></ul><ul><li>http://eduardo.macan.eng.br </li></ul><ul><li>@eduardomacan </li></ul>

×