Programando para o Jack daemon

639 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
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
639
On SlideShare
0
From Embeds
0
Number of Embeds
102
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×