Chargement...
 
Skip to main content

4 - Toutes les autres applications, les émulateurs...


Logiciel : orgue à roues phoniques Hammond

Articles: 73 France
Hello !
Ceci est un synthésiseur d'orgue Hammond que j'avais réalisé en 2016.
https://bitbucket.org/jpcima/hammond-organ/

C'est un logiciel que je ne développe plus depuis un moment, et que je n'avais jamais publié auparavant. Ayant retrouvé son code source, j'ai retravaillé un peu l'expérience utilisateur et j'ai publié le résultat en licence Boost.

C'est une émulation d'orgue inspirée de Hammond à la sonorité quelque peu agressive. Il y a la base et quelques éléments plus ou moins aboutis : percussion, vibrato, leslie...

Le paramétrage par défaut est basé sur l'orgue Hammond : 96 roues phoniques en forme d'onde sinusoïdale, à l'exceptions des basses qui ont une forme particulière.
On peut choisir de remplacer le sinus par un signal carré, dents de scie ou triangle.

Une particularité : la synthèse additive est faite en calcul entier. C'était un gain d'efficacité, en vue d'embarquer ce projet sur une Raspberry en ARM.

Avis aux contributeurs qui sont intéressés pour continuer le logiciel, ou aux musiciens qui pourraient lui trouver une utilité tel quel.

A+ -JPC
Articles: 5048 France
Je viens de créer la page hammond-organ avec un lien pointant vers ici.
Articles: 19483 France
J'ai tenté une compilation sur LibraZiK-2.

Il m'a fallu ajouter pkg-config et libasound2-dev pour pouvoir construire (et cmake évidemment) par rapport à ce qui est écrit dans le README.

La compilation plante à 95% avec :
Copy to clipboard
[ 95%] Linking CXX executable organ.jack libfxcore.a(synth.cc.o): In function `coredsp::FIR<64u, float __vector(4)>::impl_simd() const': ././thirdparty/coredsp/sources/coredsp/filter/fir.tcc:73: undefined reference to `float __vector(4) coreutil::simd_loadu<float __vector(4)>(float __vector(4) const*)' collect2: error: ld returned 1 exit status CMakeFiles/fxjack.dir/build.make:106: recipe for target 'organ.jack' failed


Pour info :
Copy to clipboard
$ gcc --version gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516

Articles: 73 France
J'ajouterai ces paquets au README, ainsi que build-essential. Merci

Ça demande les jeux d'instructions accélérés en SSE ou +.
En 32 bits et avec GCC, ce n'est pas automatique et ça s'active avec un fanion.

Copy to clipboard
cmake -DCMAKE_CXX_FLAGS="-msse"



J'ai testé sur LibraZiK-2 en 64 bits et le problème ne se manifestait pas.
Articles: 19483 France
Super, grâce à ton conseil, j'ai mis une condition dans les règles de construction du paquet, et ça construit correctement. Merci.

J'ai lancé les 2 exécutables (organ.jack et organ.rt) et ça fonctionne, y'a du son, et les contrôles modifient bien le son. J'ai donc un paquet en test pour LZK-2.

Tu peux en dire un peu plus à propos de ces 2 exécutables ? le "organ.rt" fonctionne avec ALSA et le organ.jack avec JACKD si j'ai bien compris. Il y a d'autres différences ?
Articles: 73 France
olinuxx écrit:
Tu peux en dire un peu plus à propos de ces 2 exécutables ? le "organ.rt" fonctionne avec ALSA et le organ.jack avec JACKD si j'ai bien compris. Il y a d'autres différences ?


"rt" est fait avec RtAudio, c'est multi-plateformes et ça peut fonctionner avec ou sans Jack.

Ces librairies portables comme RtAudio ont une variété d'inconvénients pratiques sous Linux, aussi je fais également des versions en Jack natives.

olinuxx écrit:
J'ai donc un paquet en test pour LZK-2.


Ouaip.. faudrait que je nettoye ce logiciel pour qu'il soit à peu près présentable. Il lui faut un nom, aussi.
Articles: 19483 France
Merci pour la réponse.

Comment fait-on pour lancer organ.rt sur jack ?
Si je le lance à partir d'un terminal, ça me dit ça :
Copy to clipboard
organ.rt [Main] I: Program starting [Audio] I: Setting up audio output [Audio] I: Using audio system 1 [Audio] I: Desired latency 0.010000 [Audio] I: Desired buffer size 480 RtApiAlsa::getDeviceInfo: snd_pcm_open error for device (hw:1,0), Device or resource busy. RtApiAlsa::getDeviceInfo: snd_pcm_open error for device (hw:1,0), Device or resource busy. [Audio] I: The sample rate is 48000 [Audio] I: The buffer size is 480

... zip ...

Du coup, j'en conclu qu'il le lance sur ALSA.

Il y a peut être une option en CLI ?
Articles: 73 France
olinuxx: Très juste remarque, j'ai mis le correctif qui contruit les API Jack et Pulse dans RtAudio.

olinuxx écrit:
Il y a peut être une option en CLI ?


Hélas non, c'est assez peu pratique à réaliser avec cette librairie.
J'ai envoyé un PR pour faciliter ça, qui n'a jamais reçu de réponse. https://github.com/thestk/rtaudio/pull/136
Articles: 19483 France
J'ai fait une reconstruction du git du jour (git-f210356) et du coup, organ.rt démarre bien sur jack, merci !
Du coup, y'a t'il un intérêt à utiliser organ.rt sous linux (librazik) ou bien, c'est la même chose que j'utilise organ.rt ou organ.jack ?

Chouette, y'a eu de la réaction du côté de rtaudio !
Articles: 73 France
Il y a 2 différences notables entre les deux.

- la RT peut prendre son entrée sur ALSA MIDI (par défaut), et si le choix est codé dans l'appli (chose à faire), on peut gérer JACK-MIDI aussi au sein du même programme.

- dans la version Jack, le traitement du MIDI et du signal audio sont unifiés dans le même fil d'exécution.
en RtMidi tu as les deux en traitement séparé, et le MIDI n'est pas couvert par l'ordonnanceur temps réel. (ce qui n'est pas terriblement critique je pense, mais c'est bon à savoir)
Articles: 19483 France
Merci pour l'explication.