jeudi 31 mai 2012

Trouver le tempo d'une chanson MP3

Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui je vous présente quelques lignes sur la détection de tempo sous Ubuntu 12.04.


Logiciels sous Linux


Pour détecter le tempo d'un morceau, Il existe le logiciel en ligne de commande soundstretch qui opère sur des fichiers wav. Nous utiliserons l'encodeur lame pour convertir le fichier mp3 en fichier wav.

Pour installer ces deux logiciels, procéder de la façon suivante :
~$ sudo apt-get install soundstretch lame

Une fois ces deux logiciels installés, il ne reste plus qu'à enchaîner les commandes suivantes:
~$ lame --decode infile.mp3
~$ soundstretch infile.wav -bpm
Cependant, même si cette solution a l'avantage d'être native à linux, elle ne garantie pas le résultat (sur les essaies que j'ai pratiqués).

Vous pourrez également regarder du côté du lecteur de musique Banshee et du côté du logiciel pour DJ qui s'appelle Mixxx. Cependant, ces deux logiciels utilisent la même librairie que soundstretch.

Pour plus d'infos sur ce sujet, voici une discussion en anglais sur les logiciels de détection de tempo sous linux (BPM : beat per minute).


logiciel freeware sous windows


Il existe également des softs windows, dont un freeware bpmcounter que j'ai testé et qui tourne sous l'émulateur wine. Ce soft calcule le tempo de tous les fichiers mp3 du répertoire sélectionné et les affichent dans la fenêtre de l'application.

Pour installer l'émulateur wine et l'application windows bpmcounter sous Ubuntu, exécuter les commandes suivantes:
~$ sudo apt-get install wine
~$ wget http://www.abyssmedia.com/downloads/bpmcounter.exe
~$ wine bpmcounter.exe

Conclusion

Aucun logiciel de détection de tempo n'est infaillible surtout lorsque la chanson contient des changements de tempo ... Aussi je vous conseille de vérifier les valeurs par vous-même en utilisant un métronome ...


Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.


lundi 28 mai 2012

Diminuer, voir éliminer les XRUNS de jack sur votre Ubuntu


Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui nous allons regarder comment diminuer, voir éliminer drastiquement les XRUNS (désynchronisation) du serveur Jack. Cet article suppose que vous avez installez le noyau lowlatency sur Ubuntu 12.04.

Les XRUNS sont géneralement le résultat des nombreux appels des process et daemons qui tournent sur Ubuntu et qui font de petits appels récurrents au noyau. Cela peut aussi être le résultat d'un CPU surchargé, ou l'utilisation de ressources disques ...

Voici une page qui tente de définir l'ordinateur idéal pour faire de l'audio. Cette page donnent des pistes sur les problèmes que l'on rencontre quand on fait de l'audio avec son ordinateur (tous systèmes confondus: Linux - OS/X - Windows).

Réglages du serveur Jack

Dans un premier temps, il est conseillé de lire l'article sur l'installation et le paramétrage du serveur de son jack.

Faites plusieurs tests en influant sur la période jusqu'à ce que vous obteniez un résultat sans trop de désynchronisation (XRUNS) (voir les réglages dans l'application qjackctl). Pour les cartes audio qui ne sont pas ASIO (faible latence), il ne faut espérer de miracle. Pour les autres, la latence devrait être inférieure à 10ms en général.

Une fois jack paramétré, vous allez pouvoir améliorer les performances de votre serveur jack en suivant les étapes ci-dessous. 

Lorsque que vous aurez optimisé votre Ubuntu 12.04 pour l'audio, vous pourrez éventuellement revoir la période de votre serveur jack à la baisse et refaire des tests.


Gain de performances CPU


Nous allons faire du ménage dans les processus que vous avez en mémoire afin d'optimiser les performances de votre CPU et du kernel low latency (noyau faible latence).

L'une des optimisations les plus évidentes est de couper le réseau (surtout le WIFI très consommateur). Mais on peut ne pas s'arrêter là: webcam, bluetooth, imprimantes, ... peuvent également être coupés et ainsi ne plus solliciter le noyau.

Je vous propose ici deux scripts qui permettent de faire tout cela et quelques astuces en plus. Ces scripts sont directement adaptés d'une page complète dédiée à ce sujet sur wiki.linuxmusicians.com.

Editer ces fichiers dans le répertoire de votre choix:
~$ gedit optimize_env_for_audio.sh restore_env_after_audio.sh &

Le fichier optimize_env_for_audio.sh :
#!/bin/sh

sudo modprobe -r ppdev # Pas de ports parallèles sur ma machine
sudo modprobe -r lp # Pas besoin d'imprimantes pour faire de la musique
sudo modprobe -r uvcvideo # Pas besoin de webcam non plus
sudo modprobe -r videodev # idem pour V4L2 (Vidéo for linux 2)
sudo modprobe -r wl # Wireless driver (son nom peut varier selon le chipset)
#sudo modprobe -r btusb # Pas besoin de Bluetooth USB non plus (décommentez si nécessaire) 


sudo service bluetooth stop # Stoppe Bluetooth process
sudo service cups stop # Stoppe cups qui gére l'imprimante 
sudo service network-manager stop # Stoppe le réseau
sudo /etc/init.d/ondemand stop # Prevent this script from running so my CPU won't use the ondemand governor
#sudo service hddtemp stop # Pas besoin de la température du CPU (Décommentez si nécessaire)
sudo killall /sbin/wpa_supplicant # Stoppe le service WPA pour le réseau wifi

sudo modprobe snd-hrtimer # Charge le module de haute résolution du temps

echo Changing CPU Frequence to performance.
sudo cpufreq-selector -g performance
Le fichier restore_env_after_audio.sh :
#!/bin/sh

echo Changing CPU Frequence to powersave.
sudo cpufreq-selector -g powersave

sudo modprobe ppdev # Démarre le module kernel de ports parallèles
sudo modprobe lp # Démarre le module kernel imprimante
sudo modprobe uvcvideo # Démarre le module kernel webcam
sudo modprobe videodev # Démarre le module kernel V4L2
sudo modprobe wl # Démarre le module kernel WIFI (le nom peut varier selon votre chipset)
#sudo modprobe btusb # Démarre le module kernel Bluetooth USB (Décommentez si nécessaire)

sudo service bluetooth start  # Démarre le Bluetooth 
sudo service cups start # Démarre cups, (pour l'imprimante)
sudo service network-manager start # Démarre le réseau
sudo /etc/init.d/ondemand start # Prevent this script from running so my CPU won't use the ondemand governor
#sudo service hddtemp start # Démarre hddtemp pour surveiller la température du CPU (décommentez si nécessaire)
sudo /sbin/wpa_supplicant -B -P /run/sendsigs.omit.d/wpasupplicant.pid -u -s -O /var/run/wpa_supplicant & # Démarre WPA service pour le wifi

N'oubliez pas de donner les droits en exécution sur ces deux fichiers.
~$ chmod 755 optimize_env_for_audio.sh restore_env_after_audio.sh

Vous pouvez maintenant exécuter la commande suivante lorsque vous démarrez une session audio
~$ ./optimize_env_for_audio.sh
et restaurer votre environnement une fois votre session audio terminée:
~$ ./restore_env_after_audio.sh
Vous aurez à entrer votre mot de passe root puisque la commande sudo est utilisé dans les deux scripts.

Pour connaître les services qui tournent sur votre ordinateur et qui ont un PID:
~$ initctl list | sort | grep process
En fonction de la liste que vous obtenez, vous pouvez ajouter des commandes de démarrage ou d'arrêt de certains services dans les scripts ci-dessus. Renseignez-vous sur l'utilité de chaque service que vous voulez démarrer ou arrêter afin de garder le contrôle sur ce que vous faîtes.
Ou alors, vous pouvez également utiliser une application graphique qui vous donnera plus d'infos sur les services activés et leur état. Par exemple, Boot Up Manager (bum) dans le dépôt Universe:
~$ sudo apt-get install bum
~$ sudo bum
Une aide appréciable pour scripter le démarrage et l'arrêt des services Ubuntu.


Optimisation des accès disques


Type de système de fichiers à éviter


Il est conseillé d'éviter les systèmes de fichiers suivants: reiserfs et fuseblk fs qui ne sont pas adaptés aux applications audio.

Système de fichier en RAM et partition spécifique pour l'audio


Nous allons optimiser votre système de fichiers. Si vous avez beaucoup de RAM (ex: 4 Go+), nous allons pouvoir charger en mémoire une partie du système de fichier: notamment /tmp et /var/log. On ne mettra pas /var/tmp en RAM car il est utilisé pour stocker des fichiers pouvant être accédés après un reboot.

L'inconvénient de monter /var/log en mémoire RAM est qu'au redémarrage de la machine, vous perdrez toutes les logs mais comme on a rarement besoin de les consulter dans une utilisation desktop, cela n'est pas pénalisant.

On créera une partition pour y mettre les fichiers projets de vos DAWs favoris sur laquelle on optimisera les accès grâce à trois options:

- noatime : optimise l'écriture en inhibant la modification de la date d'accès des fichiers
- nodiratime : pareil que noatime mais pour les répertoires.
- data=writeback : optimise l'écriture au risque de quelques pertes en cas d'arrêt brutal du système. Mais cela améliore les performances d'écritures de façon significatives ! (source linuxmao.org)

Il n'est pas conseillé d'utiliser des disques durs USB si vous utilisez une carte son USB. Cela pourrait détériorer les performances du système par une sollicitation trop forte des ressources USBs. Préférez donc une partition sur un disque dur interne de votre ordinateur. Si vous achetez un disque dur interne exprès, préférez un 7200 rpm ou mieux un 10 000 rpm.

Avant de modifier votre fichier de configuration, je vous conseille d'en faire une sauvegarde.

Exemple de fichier /etc/fstab modifié:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                

# / was on /dev/sda5 during installation
UUID=b10c82d8-e0f1-470f-b0dd-a2796d762414 /               ext4    errors=remount-ro 0       1

# /home was on /dev/sda7 during installation
UUID=297c3104-d3d5-48be-a511-ef3d0be52824 /home           ext4    defaults        0       2 
 
# /home was on /dev/sda7 during installation
UUID=297c3104-d3d5-48be-a511-dedadada5166 /audio           ext4    defaults,noatime,nodiratime,data=writeback        0       2

# swap was on /dev/sda6 during installation
UUID=8d053da8-827e-47d0-ae8a-0a70b0b77aaf none            swap    sw              0       0


# tmpfs RAM disk
tmpfs /tmp tmpfs defaults,noatime,nodiratime,size=512M 0 0
tmpfs /var/log tmpfs defaults,noatime,nodiratime,size=256M 0 0
Pour éditer le fichier /etc/fstab:
~$ sudo gedit /etc/fstab

Déclenchement du swap


Afin de limiter le swap sur votre machine, on va baisser le seuil de déclenchement de l'utilisation du swap à 10% de mémoire restante inutilisée. Pour cela, on modifiera /etc/sysctl.conf afin que la variable vm.swappiness soit présente et prenne la valeur suivante:
vm.swappiness = 10
Pour vérifier votre paramétrage:
~$ cat /proc/sys/vm/swappiness

Paramètrage des IRQs realtime

~$ sudo apt-get install rtirq-init 

Si la carte son faible latence est une usb alors éditer le fichier /etc/default/rtirq et enlever snd à la variable RTIRQ_NAME_LIST.

RTIRQ_NAME_LIST="rtc usb i8042" 

puis redémarrez:

~$ sudo /etc/init.d/rtirq restart

Package consommateur


On prendra soin de supprimer le package apt-xapian-index utilisé par synaptic.

pour avoir un descriptif de ce package:
~$ apt-cache show apt-xapian-index
Pour le supprimer:
~$ sudo apt-get remove apt-xapian-index

Inhiber la mise en veille (pour les portables)

Afin que votre portable ne se mettent pas en veille pendant votre session audio, modifiez les paramètres systèmes de l'icône énergie et indiquez que vous ne voulez pas mettre en veille lorsque le câble d'alimentation est branché.

Par exemple:

 

Inhiber la mise en veille de l'écran

Pour inhiber la mise en veille de l'écran, il faut aller dans paramètres systèmes et cliquer sur l'icône luminosité et verrouillage. Par exemple:



Conclusion


Le résultat est variable selon les configurations mais il est possible d'atteindre huit pistes en écriture (même avec un DD 5400 rpm):
- Processeur : Intel(R) Core(TM) i3 CPU       M 370  @ 2.40GHz
- Disque dur à 5400 rpm (courant sur les ordinateurs portables) pour /home et /audio
- SSD 64 GO pour la partition root (disque système)
- 8 GO de RAM
- buffers : 128
- DAW : ardour5
- MAudio/Mtrack sur 2 pistes (Basse + effets, Chant + effets)
- Audacious pour les 6 autres pistes.

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

Diminuer, voir éliminer les XRUNS de jack sur votre Ubuntu


Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui nous allons regarder comment diminuer, voir éliminer drastiquement les XRUNS (désynchronisation) du serveur Jack. Cet article suppose que vous avez installez le noyau lowlatency sur Ubuntu 12.04.

Les XRUNS sont géneralement le résultat des nombreux appels des process et daemons qui tournent sur Ubuntu et qui font de petits appels récurrents au noyau. Cela peut aussi être le résultat d'un CPU surchargé, ou l'utilisation de ressources disques ...

Voici une page qui tente de définir l'ordinateur idéal pour faire de l'audio. Cette page donnent des pistes sur les problèmes que l'on rencontre quand on fait de l'audio avec son ordinateur (tous systèmes confondus: Linux - OS/X - Windows).

Réglages du serveur Jack

Dans un premier temps, il est conseillé de lire l'article sur l'installation et le paramétrage du serveur de son jack.

Faites plusieurs tests en influant sur la période jusqu'à ce que vous obteniez un résultat sans trop de désynchronisation (XRUNS) (voir les réglages dans l'application qjackctl). Pour les cartes audio qui ne sont pas ASIO (faible latence), il ne faut espérer de miracle. Pour les autres, la latence devrait être inférieure à 10ms en général.

Une fois jack paramétré, vous allez pouvoir améliorer les performances de votre serveur jack en suivant les étapes ci-dessous. 

Lorsque que vous aurez optimisé votre Ubuntu 12.04 pour l'audio, vous pourrez éventuellement revoir la période de votre serveur jack à la baisse et refaire des tests.


Gain de performances CPU


Nous allons faire du ménage dans les processus que vous avez en mémoire afin d'optimiser les performances de votre CPU et du kernel low latency (noyau faible latence).

L'une des optimisations les plus évidentes est de couper le réseau (surtout le WIFI très consommateur). Mais on peut ne pas s'arrêter là: webcam, bluetooth, imprimantes, ... peuvent également être coupés et ainsi ne plus solliciter le noyau.

Je vous propose ici deux scripts qui permettent de faire tout cela et quelques astuces en plus. Ces scripts sont directement adaptés d'une page complète dédiée à ce sujet sur wiki.linuxmusicians.com.

Editer ces fichiers dans le répertoire de votre choix:
~$ gedit optimize_env_for_audio.sh restore_env_after_audio.sh &

Le fichier optimize_env_for_audio.sh :
#!/bin/sh

sudo modprobe -r ppdev # Pas de ports parallèles sur ma machine
sudo modprobe -r lp # Pas besoin d'imprimantes pour faire de la musique
sudo modprobe -r uvcvideo # Pas besoin de webcam non plus
sudo modprobe -r videodev # idem pour V4L2 (Vidéo for linux 2)
sudo modprobe -r wl # Wireless driver (son nom peut varier selon le chipset)
#sudo modprobe -r btusb # Pas besoin de Bluetooth USB non plus (décommentez si nécessaire) 


sudo service bluetooth stop # Stoppe Bluetooth process
sudo service cups stop # Stoppe cups qui gére l'imprimante 
sudo service network-manager stop # Stoppe le réseau
sudo /etc/init.d/ondemand stop # Prevent this script from running so my CPU won't use the ondemand governor
#sudo service hddtemp stop # Pas besoin de la température du CPU (Décommentez si nécessaire)
sudo killall /sbin/wpa_supplicant # Stoppe le service WPA pour le réseau wifi

sudo modprobe snd-hrtimer # Charge le module de haute résolution du temps

echo Changing CPU Frequence to performance.
sudo cpufreq-selector -g performance
Le fichier restore_env_after_audio.sh :
#!/bin/sh

echo Changing CPU Frequence to powersave.
sudo cpufreq-selector -g powersave

sudo modprobe ppdev # Démarre le module kernel de ports parallèles
sudo modprobe lp # Démarre le module kernel imprimante
sudo modprobe uvcvideo # Démarre le module kernel webcam
sudo modprobe videodev # Démarre le module kernel V4L2
sudo modprobe wl # Démarre le module kernel WIFI (le nom peut varier selon votre chipset)
#sudo modprobe btusb # Démarre le module kernel Bluetooth USB (Décommentez si nécessaire)

sudo service bluetooth start  # Démarre le Bluetooth 
sudo service cups start # Démarre cups, (pour l'imprimante)
sudo service network-manager start # Démarre le réseau
sudo /etc/init.d/ondemand start # Prevent this script from running so my CPU won't use the ondemand governor
#sudo service hddtemp start # Démarre hddtemp pour surveiller la température du CPU (décommentez si nécessaire)
sudo /sbin/wpa_supplicant -B -P /run/sendsigs.omit.d/wpasupplicant.pid -u -s -O /var/run/wpa_supplicant & # Démarre WPA service pour le wifi

N'oubliez pas de donner les droits en exécution sur ces deux fichiers.
~$ chmod 755 optimize_env_for_audio.sh restore_env_after_audio.sh

Vous pouvez maintenant exécuter la commande suivante lorsque vous démarrez une session audio
~$ ./optimize_env_for_audio.sh
et restaurer votre environnement une fois votre session audio terminée:
~$ ./restore_env_after_audio.sh
Vous aurez à entrer votre mot de passe root puisque la commande sudo est utilisé dans les deux scripts.

Pour connaître les services qui tournent sur votre ordinateur et qui ont un PID:
~$ initctl list | sort | grep process
En fonction de la liste que vous obtenez, vous pouvez ajouter des commandes de démarrage ou d'arrêt de certains services dans les scripts ci-dessus. Renseignez-vous sur l'utilité de chaque service que vous voulez démarrer ou arrêter afin de garder le contrôle sur ce que vous faîtes.
Ou alors, vous pouvez également utiliser une application graphique qui vous donnera plus d'infos sur les services activés et leur état. Par exemple, Boot Up Manager (bum) dans le dépôt Universe:
~$ sudo apt-get install bum
~$ sudo bum
Une aide appréciable pour scripter le démarrage et l'arrêt des services Ubuntu.


Optimisation des accès disques


Type de système de fichiers à éviter


Il est conseillé d'éviter les systèmes de fichiers suivants: reiserfs et fuseblk fs qui ne sont pas adaptés aux applications audio.

Système de fichier en RAM et partition spécifique pour l'audio


Nous allons optimiser votre système de fichiers. Si vous avez beaucoup de RAM (ex: 4 Go+), nous allons pouvoir charger en mémoire une partie du système de fichier: notamment /tmp et /var/log. On ne mettra pas /var/tmp en RAM car il est utilisé pour stocker des fichiers pouvant être accédés après un reboot.

L'inconvénient de monter /var/log en mémoire RAM est qu'au redémarrage de la machine, vous perdrez toutes les logs mais comme on a rarement besoin de les consulter dans une utilisation desktop, cela n'est pas pénalisant.

On créera une partition pour y mettre les fichiers projets de vos DAWs favoris sur laquelle on optimisera les accès grâce à trois options:

- noatime : optimise l'écriture en inhibant la modification de la date d'accès des fichiers
- nodiratime : pareil que noatime mais pour les répertoires.
- data=writeback : optimise l'écriture au risque de quelques pertes en cas d'arrêt brutal du système. Mais cela améliore les performances d'écritures de façon significatives ! (source linuxmao.org)

Il n'est pas conseillé d'utiliser des disques durs USB si vous utilisez une carte son USB. Cela pourrait détériorer les performances du système par une sollicitation trop forte des ressources USBs. Préférez donc une partition sur un disque dur interne de votre ordinateur. Si vous achetez un disque dur interne exprès, préférez un 7200 rpm ou mieux un 10 000 rpm.

Avant de modifier votre fichier de configuration, je vous conseille d'en faire une sauvegarde.

Exemple de fichier /etc/fstab modifié:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                

# / was on /dev/sda5 during installation
UUID=b10c82d8-e0f1-470f-b0dd-a2796d762414 /               ext4    errors=remount-ro 0       1

# /home was on /dev/sda7 during installation
UUID=297c3104-d3d5-48be-a511-ef3d0be52824 /home           ext4    defaults        0       2 
 
# /home was on /dev/sda7 during installation
UUID=297c3104-d3d5-48be-a511-dedadada5166 /audio           ext4    defaults,noatime,nodiratime,data=writeback        0       2

# swap was on /dev/sda6 during installation
UUID=8d053da8-827e-47d0-ae8a-0a70b0b77aaf none            swap    sw              0       0


# tmpfs RAM disk
tmpfs /tmp tmpfs defaults,noatime,nodiratime,size=512M 0 0
tmpfs /var/log tmpfs defaults,noatime,nodiratime,size=256M 0 0
Pour éditer le fichier /etc/fstab:
~$ sudo gedit /etc/fstab

Déclenchement du swap


Afin de limiter le swap sur votre machine, on va baisser le seuil de déclenchement de l'utilisation du swap à 10% de mémoire restante inutilisée. Pour cela, on modifiera /etc/sysctl.conf afin que la variable vm.swappiness soit présente et prenne la valeur suivante:
vm.swappiness = 10
Pour vérifier votre paramétrage:
~$ cat /proc/sys/vm/swappiness

Paramètrage des IRQs realtime

~$ sudo apt-get install rtirq-init 

Package consommateur


On prendra soin de supprimer le package apt-xapian-index utilisé par synaptic.

pour avoir un descriptif de ce package:
~$ apt-cache show apt-xapian-index
Pour le supprimer:
~$ sudo apt-get remove apt-xapian-index

Inhiber la mise en veille (pour les portables)

Afin que votre portable ne se mettent pas en veille pendant votre session audio, modifiez les paramètres systèmes de l'icône énergie et indiquez que vous ne voulez pas mettre en veille lorsque le câble d'alimentation est branché.

Par exemple:

 

Inhiber la mise en veille de l'écran

Pour inhiber la mise en veille de l'écran, il faut aller dans paramètres systèmes et cliquer sur l'icône luminosité et verrouillage. Par exemple:



Conclusion


Le résultat est variable selon les configurations mais il est possible d'atteindre huit pistes en écriture
- Processeur : Intel(R) Core(TM) i3 CPU       M 370  @ 2.40GHz
- Disque dur à 5400 rpm (courant sur les ordinateurs portables) pour /home et /audio
- SSD 64 GO pour la partition root (disque système)
- 8 GO de RAM
- Buffers : 128
- DAW : ardour5.3
- Maudio / Mtrack sur 2 pistes (Basse + effets, Chant + effets)
- Un lecteur Audacious pour les 6 autres pistes.

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

Installer un noyau à faible latence (ou temps réel) pour faire de l'audio sous Jack (kernel lowlatency / kernel RT realtime)

Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

Afin d'améliorer les performances Audio de votre linux Ubuntu, nous allons installer le noyau à faible latence ou temps réel (low latency kernel, RT kernel ou realtime kernel ).

Pour ceux qui font beaucoup de MIDI, les noyaux standard (generic sous Ubuntu) sont cadencés à 250Hz tandis que les noyaux temps réels (low latency sous Ubuntu) sont généralement cadencés à 1000Hz. Cela permet d'avoir un rendu MIDI plus fidèle.

La procédure est assez simple. Cependant, si vous avez des drivers propriétaires installés et activés, il vous faudra les réinstaller pour ce nouveau noyau.

En premier lieu, un choix s'impose à nous, soit on installe un noyau 32 bits classique, un noyau PAE ou un noyau 64bits.

Pour vous aider à faire votre choix, vous pouvez lire cette documentation comparant les systèmes 32 bits et 64 bits. Le noyau PAE permet de faire sauter la limite de mémoire (4 Go) des systèmes 32 bits pures. Si vous ne savez pas quoi choisir tapez la commande suivante
~$ uname -r
Le nom de votre noyau devrait s'afficher, si il se termine par "pae", vous disposez d'un noyau PAE (donc 32 bits).

Dans le cas où ce n'est pas un noyau PAE, tapez la commande suivante:
~$ uname -m
Si le résultat est x86_64 c'est que vous avez un noyau 64 bits (Intel ou AMD) sinon c'est un 32 bits (ex: i386 / i686 ...).

Une fois ce choix effectué, vous pouvez lancer l'installation du noyau à faible latence qui se trouve dans le dépôt ubuntu universe:
~$ sudo apt-get install linux-lowlatency-pae
ou
~$ sudo apt-get install linux-lowlatency
Le noyau lowlatency se trouve maintenant soit dans le menu "previous linux versions" soit dans le menu principal (si c'est la toute dernière version du noyau) au boot de la machine (menu grub).

Quand vous serez satisfait de votre installation du noyau à faible latence, vous pourrez le définir en noyau par défaut.

D'abord, il faut modifier le fichier /etc/default/grub en exécutant :
~$ sudo gedit /etc/defaut/grub
pour que la variable soit déclarée comme ce qui suit:

GRUB_DEFAULT=saved
 
Ensuite, il faut trouver le nom du menu grub à mettre par défaut (c-à-d: "submenu>menuentry"). Cependant si votre noyau ne se trouve dans aucun sous menu dans ce cas là indiquez "menuentry" à la commande grub-set-default.

~$ cat /boot/grub/grub.cfg | grep menu | grep low
menuentry 'Ubuntu, avec Linux 3.2.0-23-lowlatency-pae' --class ubuntu --class gnu-linux --class gnu --class os {
 
menuentry 'Ubuntu, avec Linux 3.2.0-23-lowlatency-pae (mode de dépannage)' --class ubuntu --class gnu-linux --class gnu --class os {

~$ cat /boot/grub/grub.cfg | grep submenu
submenu "Previous Linux versions" {


Enfin, on fixe le nouveau noyau par défaut:
~$ sudo grub-set-default "Previous Linux versions>Ubuntu, avec Linux 3.2.0-23-lowlatency-pae"
~$ sudo update-grub

Maintenant, le noyau lowlatency est démarré par défaut.

Grâce à ce noyau à faible latence, vous pourrez mieux tirer partie de votre serveur audio Jack (voir installation de Jack) et de toutes ses applications Audio et MIDI avec notamment Ardour2, rosegarden tuxguitar, impro-visor ...

De plus, vous voudrez peut-être tuner/optimiser le reste de votre système pour vos sessions audio afin d' éliminer les XRUNS.

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

samedi 26 mai 2012

Ports MIDI virtuels (pour impro-visor, tuxguitar ...)

Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui je vous parle d'une astuce de configuration qui permet à un programme java d'être connecté en MIDI à un synthétiseur logiciel autre que java ! Cette astuce a été testé sur Ubuntu 12.04.

Jusqu'à il y a peu, les programmes Java nécessitaient un plugin pour communiquer avec un logiciel MIDI autre que java ...

Ceci a été résolu par un module kernel "snd-virmidi". snd-virmidi est un driver qui propose des ports virtuels MIDI utilisables par n'importe quelle application au même titre que des ports physiques MIDI.

Pour configurer ce driver et l'avoir au démarrage du système, il vous suffit d'éditer le fichier /etc/modules en éxécutant sudo gedit /etc/modules et d'y ajouter à la ligne:
snd-virmidi enable=1
Après un redémarrage du système, vous devriez voir apparaître le nouveau périphérique virtuel en exécutant: cat /proc/asound/cards
entres autres lignes, vous devriez voir apparaître quelque chose du style:
 0 [VirMIDI        ]: VirMIDI - VirMIDI
                       Virtual MIDI Card 1
Une fois que vous avez ce nouveau périphérique virtuel, utilisez les ports de celui-ci dans la configuration MIDI de votre logiciel java (par exemple: impro-visor, tuxguitar ...) et connecter ce port MIDI au port de votre synthétiseur ou application MIDI (en utilisant l'outil graphique qjackctl par exemple ou en ligne de commande aconnect).

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

Améliorer le rendu MIDI grâce à Fluidsynth

Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui je vais vous parler du synthétiseur logiciel MIDI soundfont 2 fluidsynth, une alternative à timidity. La version de fluidsynth utilisée ici est la 1.1.5 disponible sur Ubuntu 12.04.


Préambule

Pour installer fluidsynth:
sudo apt-get install fluidsynth

Vous pouvez également utiliser une interface graphique plus agréable mais non développée dans cet article:
sudo apt-get install qsynth


Discussion

Pour améliorer le rendu MIDI sous Ubuntu 12.04, il faut télécharger une soundfont. Si vous utilisez Java, vous pouvez également utiliser fluidsynth moyennant une petite configuration (voir l'article à ce sujet).

Je vous conseille de télécharger la soundfont Crisis GM 3.01 qui est une perle instrumentale. Elle donne un très bon rendu par contre elle est volumineuse et prend donc beaucoup de RAM ( c-à-d 1.8Go ). Sur un système avec 4Go de RAM, ça tourne très bien.

Cependant, si vous êtes à cours de mémoire, il y a toujours la possibilité d'utiliser une soundfont disponible dans les dépôts Ubuntu Universe (à activer dans le gestionnaire de mises à jour). Pour l'installer, exécutez la commande suivante:
sudo apt-get install fluid-soundfont-gm
Après cette opération, la soundfont installé se trouve dans /usr/share/sounds/sf2/FluidR3_GM.sf2.

Astuce: Lorsque la mémoire peut être vérouillé (grâce à la configuration du serveur jack), fluidsynth peut téléverser la soundfont complète dans la RAM. On peut alors jouer des fichiers MIDI sans crainte qu'il y ait d'accès disque pour charger les instruments.

Nous avons plusieurs options pour démarrer fluidsynth. On peut le démarrer avec pulseaudio ou jack.
Voici les lignes de commandes que j'utilise:
~$ fluidsynth -a jack -m alsa_seq -g 10 -j /usr/share/sounds/sf2/crisis3gm.sf2
~$ fluidsynth -a pulseaudio -m alsa_seq -g 10 /usr/share/sounds/sf2/crisis3gm.sf2
-g 10 : permet d'augmenter le gain (donc le volume) de la sortie audio.
-j : permet de connecter automatiquement la sortie fluidsynth à la sortie système jack.
-a jack : permet d'activer le module de sortie jack.
-a pulseaudio : permet d'activer le module de sortie pulseaudio.
-m alsa_seq : permet de sélectionner le driver MIDI ALSA.
/usr/share/sounds/sf2/crisis3gm.sf2 le chemin d'accès à la soundfont évidemment ;).

Vous trouverez d'autres astuces pour l'audio sur Ubuntu par ici.

Installer Jack, le faire cohabiter avec pulseaudio et éliminer le message "cannot lock down" (vidéo GRATUITE)





Aujourd'hui, un peu d'informatique ... Ubuntu !

Pour commencer, faire de l'audio sur linux est possible. De nombreuses applications existent soit en ligne de commande soit par interface graphique.

Mais le problème sous linux c'est de trouver une carte audio compatible. De nombreux modèles sont disponibles cependant je vous invite à vérifier le niveau de support de votre carte audio (USB, firewire ou PCI). Pour cela, une liste de toutes les cartes supportées par les drivers ALSA est disponible. Un site référençant les cartes audio pro est également disponible si vous avez besoin d'une faible latence (souhaitable pour le serveur de son jack).  On estime que 10 ms de latence est une limite à ne pas franchir lorsqu'on s'enregistre live (avec un monitoring direct - c-à-d un retour mixé avec les effets).

Le DAW, ardour qui fonctionne principalement sous Linux et OS/X, ne recommande qu'un petit nombre de cartes audio faibles latences selon le nombre d'entrées que vous désirez et donne une idée de la configuration minimale nécessaire pour faire tourner ce logiciel sous Linux (Ardour requirements).

Le serveur de son Jack permet de connecter les flux audio d'une application vers une autre. Jack est un serveur de son dont le but est de fournir de l'audio temps réel.  Son architecture permet de transformer votre ordinateur en véritable table de mixage virtuelle. Avec des logiciels de qualité comme Ardour (DAW - Digital Audio Workstation) et Rosegarden (Séquenceur MIDI), vous pourrez réaliser vos prouesses musicales avec de l'open source !

Vous trouverez à la fin de cet article, une petite playlist de vidéos introduisant à jack et qjackctl.

Jack est un serveur de son utilisé sur Linux, Mac et Windows, voici quelques astuces de configuration pour Ubuntu.

NB: Si vous utilisez une distribution de type Linux Audio Pro (prévu pour la production musicale), jack sera installé et configuré par défaut. Vous n'aurez donc pas à pratiquer les différentes étapes de configuration de jack de cet article. Vous pourrez vous concentrer sur l'apprentissage de l'utilisation de qjackctl détaillé dans cet article et dans les vidéos, ou de cadence.

Configurer ALSA


Avant toutes choses, si vous n'avez pas de son avec ou sans jack, cela peut être un problème lié aux drivers ALSA (carte muette, configuration de la carte audio, problème de compatibilité, ...) . Afin de résoudre ce problème, vous pourrez vous rendre sur ce billet consacré aux problèmes de sons sous Ubuntu. Ce billet vous donne une méthode pour analyser le problème et surtout pour le résoudre !

Si vous avez plusieurs cartes audio, vous pouvez connaître l'index de la carte à initialiser en lançant la ligne de commande suivante qui affiche l'index et le nom de tous les périphériques ALSA (cartes sons) disponibles.:
~$ cat /proc/asound/cards

La ligne de commande suivante affiche pour chaque index de périphérique son le nom du driver utilisé.
~$ cat /proc/asound/modules
Une fois l'index trouvé, le nom du périphérique (donc de l'interface audio) se déduit facilement: hw:0  pour l'index 0, hw:1 pour l'index 1 ... C'est ce périphérique que vous utiliserez dans le paramétrage de qjackctl.

Si une de vos cartes son branchée est manquante ou que vous avez tout d'un coup un soucis avec une carte son en cours d'utilisation sans que vous puissiez le résoudre autrement, essayez la commande suivante:
sudo alsa force-reload
ou moins violent
sudo alsa reload

Installer et configurer Jack

Je considère ici que vous avez déjà installer un noyau à faible latence (type de noyau temps réel nécessaire à l'utilisation optimale de Jack). Si ce n'est pas le cas, je vous conseille de lire cet article.

Installer les paquets Jack

Pour installer jack, procéder de cette façon :
~$ sudo apt-get install jackd qjackctl

Régler les paramètres limites pour le groupe "audio"

Lorsque vous installez Jack, un fichier de configuration audio est créé: /etc/security/limits.d/audio.conf

Si ce fichier n'existe pas sur votre système Ubuntu, vous pouvez soit le créer manuellement en exécutant sudo gedit /etc/security/limits.d/audio.conf et en y écrivant ceci:
@audio - rtprio 95 
@audio - memlock unlimited
soit automatiquement, en exécutant la ligne de commande suivante:
~$ sudo dpkg-reconfigure -p high jackd
petite explication: @audio - memlock unlimited permet au programmes démarrés par des utilisateurs du groupe audio de vérouiller de la mémoire (c-à-d empêcher qu'elle ne soit mise dans le swap disque ceci afin d'optimiser les performances).

Configuration grâce à QJackCtl

Le programme qjackctl est une interface graphique permettant de paramétrer, démarrer, stopper et surveiller le serveur de son jack.



Pour paramétrer le serveur jack cliquer sur le bouton réglages, une fenêtre d'options apparaît.


L'essentiel dans un premier temps est de sélectionner la bonne interface audio (la flèche à côté du champ "interface" vous permet de visualiser toutes les interfaces disponibles), le bon driver (en général ALSA sauf si c'est une carte firewire), Cochez la case temps réels et sélectionnez une période. Le logiciel calcule et affiche automatiquement la latence déduite. Faite plusieurs test en influant sur la période jusqu'à ce que vous obteniez un résultat sans trop de désynchronisation (XRUNS). Pour les cartes audio qui ne sont pas ASIO (faible latence), il ne faut espérer de miracles. Pour les autres, la latence devrait être inférieure à 10ms en général.

Enfin, lorsque vous aurez démarré le serveur jack 
en utilisant l'interface graphique qjackctl (bouton démarrer),  vous pourrez tester le serveur jack en démarrant un lecteur audio comme Audacious ou Clementine (qui se paramétre tout deux facilement vers la sortie audio jack). Il est conseillé d'arrêter vos lecteurs audio lorsque vous voulez arrêter le serveur jack.


Votre compte utilisateur dans le groupe audio

A ce stade, il est probable que vous obteniez le message suivant:
cannot lock down 82241434 byte memory area (Ne peut allouer de la mémoire) 
ou
Cannot lock down memory area (Cannot allocate memory)
Il vous faudra alors ajouter votre nom d'utilisateur au groupe audio :
~$ sudo adduser mon_login audio
après un redémarrage du système, le warning ne devrait plus apparaître.

Réglage ou configuration du RTC (real time clock)/ HPET (High Precision Event Timer) pour le MIDI

Nous allons paramétrer le real time clock et le High Precision Event Timer pour les faire passer en haute résolution (nécessaire pour le MIDI).
Editer /etc/rc.local (exécuter à chaque démarrage):
~$ sudo gedit /etc/rc.local
Pour que le contenu du fichier contiennent ce qui suit:
#!/bin/sh -e
# ...

# Increase the rtc timer granularity
echo 2048 > /sys/class/rtc/rtc0/max_user_freq
# Increase the hpet timer granularity
echo 2048 > /proc/sys/dev/hpet/max-user-freq

exit 0

Afin que les applications MIDI du groupe audio puissent utiliser le rtc (real time clock) et/ou le hpet (high precision event timer), nous allons créer une règle sur les périphériques UDEV. Créez un fichier dans /etc/udev/rules.d/40-timer-permissions.rules à l'aide de la commande:
~$ sudo gedit /etc/udev/rules.d/40-timer-permissions.rules
dans lequel vous metterez les lignes suivantes:
KERNEL=="rtc0", GROUP="audio"
KERNEL=="hpet", GROUP="audio"
Après un redémarrage du système, les paramètres devraient être appliqués:
~$ ls -l /dev/rtc0 /dev/hpet
crw-rw---- 1 root audio  10, 228 mai   28 01:06 /dev/hpet
crw-rw---- 1 root audio 254,   0 mai   28 01:06 /dev/rtc0

 

Faire cohabiter jack avec pulseaudio

Vous pouvez rediriger les entrées et sorties de pulseaudio vers le serveur jack. Sachez qu'il est fort probable que pulseaudio ajoute de la latence à votre serveur jack (plus de XRUNS donc ...).

Pour cela, il faut installer le module jack de pulseaudio :
~$ sudo apt-get install pulseaudio-module-jack
Normalement, des connexions audio Pulseaudio devraient apparaître comme ci-dessous:


Si ce n'est pas le cas, tapez les commandes suivantes pour les initialiser:
~$ pacmd load-module module-jack-source channels=2; pacmd load-module module-jack-sink channels=2
Il vous faudra également sélectionner la sortie Jack Sink Pulseaudio dans les réglages sons de pulseaudio pour que les sons de pulseaudio passe à travers le serveur jack:


Alternative à QJackCtl : Cadence de KXStudio

Alternativement, vous pouvez utiliser le logiciel cadence + catia à la place de qjackctl qui intègre mieux les différents aspects de la station de travail audio numérique dirigé par le serveur de son Jack (gestion des performances CPU, configuration Jack, Pulseaudio bridge, ...).



Pour cela, activer le dépôt KXStudio (voir l'article sur le sujet)
Puis installer le logiciel et ses dépendances:
$ sudo apt-get install indicator-cpufreq cadence catia

Enfin ...

Votre configuration jack devrait être opérationnelle avec plus ou moins de XRUNS (désynchronisation c-à-d retard ponctuel du système à délivrer l'audio dans le temps impartie), Vous pourriez envisager d'abord l'installation d'un noyau à faible latence si ce n'est pas déjà fait et ensuite l'optimisation du système pour éliminer les XRUNS.

Vous pouvez consulter ces vidéos (en anglais) qui présente jack & qjackctl sous Linux:



Vous serez peut-être intéressé(e) par un logiciel libre du nom d'ardour qui est une station de travail numérique (DAW) reconnue et disponible sur Linux et Mac OS/X et utilisée par certains professionnel de l'audio aujourd'hui.

D'autre part, un article sur la compilation du driver générique wineasio est disponible sur ce blog. Il vous permettra d'utiliser des applications audio pro  windows avec jack sous Ubuntu (par exemple: Reaper).

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

dimanche 20 mai 2012

Schémas d'intervalles à la basse

Pour accéder à la Liste des articles de ce blog c'est par ici


Bonjour,

aujourd'hui je vais vous présenter des schémas d'intervalles pour la guitare basse qui vous permettront facilement de construire vos arpèges et vos gammes.


Sur la guitare basse, les cordes (de la corde la plus grave vers la plus aigu) sont toujours séparées d'une quarte juste. Le résultat de cette règle est que les intervalles (ainsi que leurs positions de doigts associées) sont toujours les mêmes.

On peut donc en déduire des schémas selon la position de la fondamentale sur la corde.

Schémas d'intervalles sur la basse :


Fondamentale sur la corde SI (B) (pour basse 5 cordes)*:

G:|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|--1----|
D:|--7M---|--1----|--2m---|--2M---|--
3m---|--3M---|--4j---|-4a/5d-|--5j---|
A:|
-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|--1----|--2m---|--2M---|
E:|--2m---|--2M---|--
3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|
B:|
-5a/6m-|-6M/7d-|--7m---|--7M---|--F(1)-|--2m---|--2M---|--3m---|--3M---|

 

Fondamentale sur la corde MI (E)*:

G:|--7M---|--1----|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|--5j---|
D:|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|--1----|--2m---|--2M---|
A:|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|
E:|-5a/6m-|-6M/7d-|--7m---|--7M---|--F(1)-
|--2m---|--2M---|--3m---|--3M---|
B:|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|

 

Fondamentale sur la corde LA (A)*:

G:|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|--1----|--2m---|--2M---|
D:|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|
A:|-5a/6m-|-6M/7d-|--7m---|--7M---|
--F(1)-|--2m---|--2M---|--3m---|--3M---|
E:|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|
B:|--7m---|--7M---|--1----|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|

 

Fondamentale sur la corde RE (D)*:

G:|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|
D:|-5a/6m-|-6M/7d-|--7m---|--7M---|
--F(1)-|--2m---|--2M---|--3m---|--3M---|
A:|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|
E:|--7m---|--7M---|--1----|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|
B:|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|--1----|--2m---|

 

Fondamentale sur la corde SOL (G)*:

G:|-5a/6m-|-6M/7d-|--7m---|--7M---|--F(1)-|--2m---|--2M---|--3m---|--3M---|
D:|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|
A:|--7m---|--7M---|--1----|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|
E:|--4j---|-4a/5d-|--5j---|-5a/6m-|-6M/7d-|--7m---|--7M---|--1----|--2m---|
B:|--1----|--2m---|--2M---|--3m---|--3M---|--4j---|-4a/5d-|--5j---|-5a/6m-|


*
1 : octave ou unisson, F(1) position de la fondamentale
2m : seconde mineure
2M : seconde majeure
3m : tierce mineure
3M : tierce majeure
4j : quarte juste
4a : quarte augmentée
5d : quinte diminuée
5j : quinte juste
5a : quinte augmentée
6m : sixte mineure
6M : sixte majeure
7d : septième diminuée
7m : septième mineure
7M : septième majeure

Les intervalles enharmoniques sont indiqués par un / 
par exemple: 6M/7d veut dire que sixte majeure est enharmonique avec la septième diminué (même hauteur mais nom différent).

Construction des arpèges et des gammes

En observant les schémas, vous vous rendrez compte que les différents intervalles peuvent être retrouvés sur différentes cordes et cases. Il vous faudra donc expérimenter pour trouver vos positions de doigts préférées.

N'oubliez pas que vous pouvez attaquez la fondamentale avec l'index; le majeur ou l'auriculaire. Le premier doigt conditionne l'utilisation des autres doigts.

Exemple dans la gamme de LA majeur (tablature 4 cordes):
-----------------
-----------4-6-7-
-----4-5-7-------
-5-7-------------
 m u i m u i a u
ou
---------------2-
---------2-4-6---
---2-4-5---------
-5---------------
 u m i u m i u m
ou
-----------------
-------------6-7-
-------5-7-9-----
-5-7-9-----------
 i m a i m a m i

m : majeur, i : index, a : annulaire, u : auriculaire.
    
Conseil:
- Pour mieux visualiser  les possibilités qui s'offrent lorsque l'on veut atteindre certains intervalles, on pourra mettre en relief les schémas en mettant en couleur les intervalles désirés. On pourra également utiliser le logiciel opensource TuxGuitar qui permet de visualiser les gammes (arpèges, modes ...) sur un manche virtuel ou l'application internet studybass qui permet la même chose. Le manche virtuel peut-être réglé pour afficher une guitare (6,7 cordes) ou une basse (4,5,6 cordes).
- dans votre travail de gammes ou d'arpèges n'oubliez pas les cordes à vides !
- un jeu sur internet permet de travailler la reconnaissance des intervalles à la guitare basse. Cela peut être d'une grande aide pour les mémoriser.

L'article suivant présente les modes majeurs (gammes verticales) en prenant en compte les différents éléments de cet article: Les modes majeurs (3 possibilités par mode).

Si vous en voulez plus visitez ce blog: La basse tout ce qu'il faut pour progresser (basse 4, 5 et 6 cordes), une mine d'or pour les bassistes ;-).

De plus, des trucs et astuces pour l'audio et la musique sous Ubuntu sont disponibles également sur ce blog.