Archive

Archive for the ‘Music’ Category

Open source DJ mixxx’ing

January 6th, 2008 Wesley 3 comments

Sinds vorige week ben ik begonnen met mee te helpen aan de ontwikkeling van het open source DJ programma mixxx. Mixxx is een stabiel programma waarmee men live muziek kan mixen. Het heeft een aantal zeer interessante features, zoals bijvoorbeeld automatische ritmedetectie en ondersteuning voor een heleboel hardware.

Mixxx 1.6.0 with Collusion/WS/Green skin

Waar staan we vandaag? 1.6.0

Ik werk mee aan de nieuwe versie waarvan twee weken geleden een eerste bètaversie werd gelanceerd. Voor de nieuwe 1.6.0 versie zijn een heleboel nieuwe features gepland. Ik som even de belangrijkste veranderingen op:

  • Scratchen via timecoded vinyl-platen [ link naar flash video 1, video 2 ]
  • Kleurenschema’s voor skins
  • Nieuwe muziekbibliotheek (muziekbrowser)
  • Verbeterde ritmedetectie
  • Verbeterde ondersteuning voor MIDI-controllers (hardware)
  • HQ-equalizer toegevoegd
  • Audio core herschreven/vernieuwd
  • Ondersteuning voor LADSPA geluidseffecten
  • Live broadcasten over internet (Icecast, Shoutcast)
  • Rechtstreeks opnemen naar MP3, Ogg Vorbis, Wav, Flac

Ik werk momenteel aan de laatste twee punten. Het is niet zeker of het helemaal af zal raken voor de Hardy freeze in februari (het moment waarop programma’s naar Ubuntu 8.04 Hardy Heron geupload worden en niet meer aangepast mogen worden) maar Ogg Vorbis Icecast/Shoutcast-ondersteuning is zo goed als af, dus dat zal er waarschijnlijk zeker inzitten.

Zelf kijk ik uit naar de ondersteuning voor LADSPA geluidseffecten, maar ik vermoed dat dat niet af zal raken voor de 1.6.0-versie. Dan maar wat langer wachten…

Evolutie van de broadcasting code

Mixxx Live Broadcasting Preferences

Zoals eerder gezegd ben ik momenteel bezig met het implementeren van Icecast/Shoutcast ondersteuning zodat we een mix rechtstreeks over internet kunnen broadcasten. Aanvankelijk dachten we dat het simpel zou zijn om dit systeem te implementeren (gewoon libshout gebruiken) maar al snel bleek dat we eerst nog een encoder moesten schrijven. Ik ben de laatste dagen dus vooral bezig geweest met het schrijven van een Ogg Vorbis-encoder met behulp van libvorbis, libogg en libvorbisenc.

Afgezien van het feit dat er voor libvorbis geen technische API-documentatie beschikbaar is, is het ons uiteindelijk toch gelukt om de encoder werkend te krijgen. Alles ging goed, maar de audio latency was nu wel verhoogd omdat de ‘audio callback thread’ voor een korte periode geblokkeerd werd wanneer de encoder zijn werk deed. Toen we ook nog beseften dat we om metadata te updaten een nieuwe stream moesten initialiseren was het onvermijdelijk om een nieuw systeem te ontwerpen om de encoder parallel in een aparte thread te laten draaien (multithreaded) met een eigen buffer.

Albert ging hiermee aan de slag en na twee of drie dagen knoeien presenteerde hij een nieuwe ‘engine’ (de SideChain-engine) aan ons die de audio buffert voor andere engines (zoals de broadcast engine) en deze engines in een aparte thread draait. Het resultaat is lage audio latency en geen enkel performanceprobleem meer. Ook werd het totale CPU-verbruik verlaagd omdat de encoder nu iets minder vaak aangeroepen wordt.

Om het schematisch voor te stellen:

voor: [ afbeelding: Oorspronkelijke Broadcast Implementatie ]
na:
[ afbeelding: Threaded Broadcast Implementatie ]

Wat moet er nog gedaan worden? De SideChain-engine moet nog een klein beetje aangepast worden, er moet nog een MP3-encoder worden geschreven, het instellingenvenster moet afgemaakt worden, en tenslotte moet de code wat opgeschoond worden, en moet alles grondig getest worden!

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)

Jack up that volume

November 12th, 2006 Wesley 2 comments

Jack Audio Connection Kit (JACK) is een plezant ding op linux. Hiermee kan je geluidsinvoer/uitvoer van verschillende programma’s naar elkaar routen en op deze manier zijn er erg leuke dingen mogelijk.

Je kan bijvoorbeeld je stem laten vervormen in realtime door door je microfoon (capture) te linken aan een effecten processor zoals het programma Jack-Rack :) Daarnaast kan je dan je gitaar op Line in aansluiten en de line in linken aan een realtime digitale gitaarversterker zoals Creox. Dan gaan we nog een drumcomputer zoals Hydrogen gebruiken voor de drums… En daarna alles aan elkaar koppelen in een Ardour sessie waarmee je alles uiteindelijk kan opnemen en verwerken.

Geniaal? Zeker wel :)

Tip: met realtime patches in de kernel is superlage latency mogelijk, perfect voor professionele geluidsverwerking…

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Linux, Multimedia, Music

Audio rippen van eender welk videobestand

September 5th, 2006 Wesley No comments

als je een speciale film of een audiobestand hebt dat je niet kan rippen met je gewone software, maar je kan het wel afspelen met mplayer (aangezien die vrijwel alles kan afspelen…)

dan kan je dit zo doen:

mkfifo sndpipe; oggenc -b 128 sndpipe -o sound_rip.ogg & mplayer -vo null -vc dummy -quiet -ao pcm:file=sndpipe video_of_audio.avi; rm sndpipe

verklaring: mkfifo sndpipe maakt een named pipe aan. oggenc zet zich op de achtergrond klaar om inkomende audio te converten naar 128kbps ogg vorbis, input = rechtstreekse pipeline, output = sound_rip.ogg / Mplayer begint de video/audio af te spelen zonder video output en met dummy video codec. Geen console output (quiet) en audio output wordt via pcm audio output naar de named pipe geschreven. Achteraf de pipe verwijderen en klaar :)

In plaats van oggenc kan je natuurlijk ook lame gebruiken, dan wordt het meteen geconverteerd naar MP3. Maar iedereen weet dat Ogg Vorbis beter is qua kwaliteit/bitrate dan MP3 :)

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Linux, Multimedia, Music