Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]

1 - Le matériel et les pilotes ALSA, FFADO, ...

> Forums de discussion > 1 - Le matériel et les pilotes ALSA, FFADO, ... > [ABANDONNÉ] Interfacer un programme grâce à Jackd
Dernier post
Page : 2/2   -   Aller directement à la page : 1  2 

[ABANDONNÉ] Interfacer un programme grâce à Jackd

aroue utilisateur non connecté
Salut,
Je joue de la vielle à roue et ai eu l'occasion de rencontrer certains des gens d'ici.
Seulement la vielle, même de très bonne qualité, reste un instrument peu stable dans ses réglages, capricieux avec la météo... et très coûteux.
Je tente actuellement de réaliser une vielle virtuelle utilisant deux éléments physiques pas chers :
- un petit clavier 37 touches de Maudio (ce qui fait beaucoup plus que les 2 octaves d'une vielle usuelle) pour la partie mélodique. Le clavier sera relié à un synthétiseur logiciel via Jackd. Cela me paraît simple (on verra).
- un disque opaque entraîné par une manivelle. Le disque est percé de trous espacés régulièrement et un tandem LED - photocapteur transmet des impulsions électriques via un port son (entrée micro de la carte son par exemple).
Le traitement des ralentissements/accélérations effectués sur la manivelle se fera par un petit programme écrit en C.

Seulement il y a là un problème : il faudrait que ce qui sort du programme (par exemple un son codé en MIDI) soit "connectable" via Jackd. Je crois que cela veut dire que le programme serait perçu comme un "port" MIDI.
Mais comment un programme peut-il se déclarer pour être reconnu (et connectable via Jackd) ?

J'ai commencé à piocher le code de pmidi mais si quelqu'un a des infos qui me ferait gagner des heures pénibles d'analyse de code, je serais bien content.

A+ et merci. Aroue

aroue utilisateur non connecté
Citation :
c'etait pour ca que je posait des questions plus haut, le concept d' envoyer le code midi d'un son m'échappe totalement


C'est exactement ce que fait le programme de Mysterious : quand on presse la touche de quelques lettres (W X C...) on entend une note de musique (si l'on a connecté le port MIDI virtuel du programme au synthétiseur logiciel via Jackd).
A titre d'exemple pris dans le programme : si je presse la touche w, le code exécuté sera :
sendNote(seq, 0, 48, 100); //On appelle notre fonction, qui enverra une note dans le canal 0 (le premier), de valeur 48 (C3 je crois) et d'une vélocité de 100
A+
Alain

pianolivier utilisateur non connecté France
Citation :
envoie le code midi d'un son de percussion

biggrin
c'est la formulation qui me laisse reveur..
le message MIDI en question s'appelle Note on, il est décrit ici

aroue utilisateur non connecté
Citation :
c'est la formulation qui me laisse reveur..
le message MIDI en question s'appelle Note on, il est décrit ici


Sur l'exactitude du langage, tu as tout à fait raison.

Pour être moins ambigu, j'aurais pu écrire :
" le programme fait parvenir au synthétiseur logiciel l'information - selon la norme MIDI - qui permet de générer un son de percussion".

Ayant lu le document dont tu donnes l'url (merci), je pense avoir compris que le choix de l'instrument ciblé (un tambour plutôt qu'un piano) est défini dans le premier octet : note on + numéro de canal.
Si cette hypothèse est vraie, le synthétiseur logiciel doit "savoir" que le canal "c" correspond à un son de tambour plutôt qu'à celui du piano.
Est-ce cela ?

pianolivier utilisateur non connecté France
tu te complique la vie :

le message note on comporte son numéro de canal oui, mais la plupart des logiciels audio ont la capacité de choisir le canal de reception. on peut bien sur modifier ce message aussi, ce qui sera si tu comprend mon idée plus haut la plus grosse partie de ton job :
Citation :
utiliser un arpeggiateur ou un sequenceur (seq24 ?) pour créer le rythme voulu, gérer sa vitesse grace à une application à coder qui envoi des signaux de transport MIDI grace à la roue élécronique, puis programmer une autre application (mididings ?) qui transpose le rythme résultant sur les notes jouée sur le clavier, pour envoyer tout ce code MIDI sur le lecteur d'échantillon
c'est pas simple mais ca doit être faisable...

donc en gros tu n'enverra jamais un son de percu MIDI (quoique, il y a bien la norme General MIDI mais c'est encore autre chose), ou un son d'autre chose, juste une note (comme une partition), c'est le logiciel-synthé qui décide quel son utiliser wink

aroue utilisateur non connecté
Citation :
tu te complique la vie :


Merci de l'écrire : il m'est difficile d'avoir un regard critique sur mon travail. Or ce regard est très utile.

Citation :
utiliser un arpeggiateur ou un sequenceur (seq24 ?) pour créer le rythme voulu, .


Là, je crois que nous ne nous comprenons pas : le rythme n'est pas généré par une application genre "boîte à rythme" qui serait synchronisée par le mouvement de la roue : il est fabriqué par la capture des accélérations-ralentissements du mouvement de la manivelle.
D'autre part, les notes jouées au clavier doivent pouvoir être désynchronisées par rapport au rythme généré par la roue. Comme si c'était deux instruments différents. En fait la vielle à roue c'est "de tout un peu" :
- un peu de bourdons,
- un petit clavier
- quelques possibilités rythmiques.
Chacune des possibilités peut être utilisée seule ou associée à l'une et/ou l'autre.

Pour donner une image médiocre, on pourrait imaginer que sur mon clavier MIDI-USB j'ai - EN PLUS - un "touch-pad" sur lequel je peux taper des rythmes en même temps que je joue sur les touches mélodiques normales (il faudrait quelques doigts en plus). Les tapements sur le touch-pad devraient envoyer un code qui ferait un son de percussion.

Citation :
donc en gros tu n'enverra jamais un son de percu MIDI (quoique, il y a bien la norme General MIDI mais c'est encore autre chose), ou un son d'autre chose, juste une note (comme une partition), c'est le logiciel-synthé qui décide quel son utiliser wink

Là je persiste à penser que nous ne nous comprenons pas. J'espère que tu es patient.

pianolivier utilisateur non connecté France
je pensait que :
Citation :
Rappelons le fonctionnement de la vielle à roue. L'archet du violon est remplacé par une roue en bois enduite de colophane et actionnée par une manivelle. Deux cordes (les chanterelles) servent à la mélodie, elles sont "stoppées" en différents points (comme dans un clavicorde lié). D'autres cordes vibrent en continu, ce sont les bourdons.

ce qui veut dire :
quand tu appui sur une touche sans rien faire d'autre, rien ne se passe.
donc je ne vois pas comment :
Citation :
les notes jouées au clavier doivent pouvoir être désynchronisées par rapport au rythme généré par la roue. Comme si c'était deux instruments différents


autre question :
quand tu tourne la manivelle a vitesse constante, y a t il un rythme, ou seulement un son ?

aroue utilisateur non connecté
Citation :
ce qui veut dire : quand tu appui sur une touche sans rien faire d'autre, rien ne se passe.

Oui et non :
- sur une vraie vielle, il ne se passe rien, puisque l'archet ne frotte pas
- sur certaines vielles électriques, du fait de l'amplification, on peut avoir un effet de "tapping"
- sur mon projet de vielle, je peux très bien avoir le son de clavier même si la roue ne tourne pas. Mais je peux aussi décider du contraire et alors le programme sera un peu plus complexe, en rajoutant un test du genre : si la roue ne tourne pas alors bloque les notes du clavier.

Il s'ensuit que le deux peuvent être désynchronisés.
{QUOTE()}
autre question : quand tu tournes la manivelle a vitesse constante, y a t il un rythme, ou seulement un son ?
QUOTE}
- dans le cas de la vielle normale, il n'y a qu'un son : l'archet frotte la ou les cordes. Mais pas de rythme.
- dans le cas de "ma vielle virtuelle", pas de rythme.

mysterious utilisateur non connecté France
Me revoilà biggrin

Déjà, merci d'apprécier mon code, c'est la première fois que mes connaissances en programmation puissent servir à quelqu'un biggrin

Ensuite, tu voudrais que le rythme de la vielle puisse être désynchronisé par rapport au clavier. Je ne vois qu'une solution : Faire le programme qui s'occupe uniquement du rythme et connecter directement le clavier midi au synthétiseur dans jack

Tu voudrais également que ton rythme puisse envoyer des notes qui iront à la percussion, pour cela, il y a le canal 10, qui est spécial percussion (ou alors on reste sur le premier canal mais en faisant un Program Change (un signal Midi))

Au pire, pour le logiciel de rythme, il faudrait apporter une modification à un sequencer comme seq24

aroue utilisateur non connecté
Citation :
Déjà, merci d'apprécier mon code, c'est la première fois que mes connaissances en programmation puissent servir à quelqu'un biggrin

Il a un grand mérite : il existe et il marche.
Citation :
Ensuite, tu voudrais que le rythme de la vielle puisse être désynchronisé par rapport au clavier. Je ne vois qu'une solution : Faire le programme qui s'occupe uniquement du rythme et connecter directement le clavier midi au synthétiseur dans jack

Je suis arrivé à la même idée. Mais sans avoir la certitude que c'est la seule façon de faire.

Ceci étant je m'interroge sur le fait d'utiliser un synthétiseur logiciel minimaliste, en partant de l'exemple minimaliste alsarawmidiout.c.
En effet : la partie rythmique c'est UNE seule note, éventuellement plus brêve (ou plus traînée), éventuellement plus forte ou moins forte.
Est-il utile alors de charger un gros outil comme Hydrogène ?
Il faudrait pourtant que le "synthé minimal à une note" puisse être posé sur un port MIDI de façon à être "Jackd-able".

Samuel utilisateur connecté Allemagne
appelons le principe de la vielle à roue :
on imagine un violon. Au lieu que le cordes soient frottées avec un archet c'est une roue (qu'on tourne avec une manivelle) qui les frotte par en dessous. La vielle possède des cordes mélodiques qui permettent de jouer la mélodie à partir d'une sorte de clavier, et elle possède aussi des bourdons, cordes qui jouent toujours la/les même note(s) et cela tout le temps qu'on fait tourner la roue.
la particularité en plus est le "chien" : si on fait tourner la roue avec une impulsion, on met en vibration une petite partie qui vient vibrer contre la table et provoque une sorte de vibration (ça "zingue") caractéristique. Si on fait tourner la roue sans impulsion, on obtient le son mélodie+bourdon. Quelle que soit la vitesse de rotation de la roue, les cordes mélodiques sont toujours jouées, ce qui permet de jouer avec les impulsions pour donner un rythme (zing) grace au chien.


Moi, ça me parait bien compliqué ce qui est proposé plus haut...

pourquoi ne pas faire plus simple :
jack + linuxsampler + banque de son d'une vraie vielle (j'y revient...)
clavier midi relié au canal 1 de linuxsampler avec une banque de son de vielle pour faire la mélodie.
tu étalonnes ta roue de manière à ce qu'elle prenne en compte la vélocité (c'est surement la partie programmation là).
tu relies la roue au canal 2 de linuxsampler et tu configures ce dernier de manière à ce qu'une haute vélocité (issue de l'accélération de la roue) joue un échantillon qui contient le chien (le truc qui fait zong sur une vielle) et à ce qu'une basse vélocité joue uniquement le bourdon.

Au niveau banques de son
1) une banque de son "mélodie", facile à enregistrer
2) une banque de son "bourdon + chien", étalonnée de manière à ce que le chien se déclenche à partir d'une certaine vélocité.

La difficulté sera dans l'étalonnage de la vélocité de manière à ce que ça corresponde à ton coup de poignet.

aroue utilisateur non connecté
Citation :
Rappelons le principe de la vielle à roue :
on imagine un violon. Au lieu que le cordes soient frottées avec un archet c'est une roue ...

Visiblement tu as compris le fonctionnement de l'instrument. C'est très clair.

Citation :
pourquoi ne pas faire plus simple :
jack + linuxsampler + banque de son d'une vraie vielle (j'y revient...)
Au niveau banques de son
1) une banque de son "mélodie", facile à enregistrer
2) une banque de son "bourdon + chien", étalonnée de manière à ce que le chien se déclenche à partir d'une certaine vélocité.

La difficulté sera dans l'étalonnage de la vélocité de manière à ce que ça corresponde à ton coup de poignet.

Encore une fois, c'est d'une grande clarté.
Je suis surpris de la réponse : je ne connaissais pas Linux Sampler et n'imaginais pas que c'était possible.
J'ai eu peu de temps pour lire le descriptif ce soir, mais je retiens au moins deux points positifs :
- le fait de partir d'échantillons d'une vraie vielle : le son de ma vielle "en bois" est excellent et pourra fournir une bonne base sonore
- le fait que le logiciel est compact et peu gourmand en ressources qui est favorable au portage sur un petit ordinateur de type Eepc.
Tout ceci est très positif.
Merci Samuel : tu pouvais aider...

aroue utilisateur non connecté
Citation :
jack + linuxsampler + banque de son d'une vraie vielle (j'y revient...)

J'ai regardé plus en détail ce qui était écrit à propos de LinuxSampler.
Le logiciel semble très attrayant.
Mais l'installation ne me paraît pas simple sur Ubuntu Lucid. Ce qui me paraît le moins irréaliste pour moi est d'installer les paquets qui étaient préparés pour Hardy.
As-tu un avis ?
Comment l'as-tu installé ?

Samuel utilisateur connecté Allemagne
pour installer linux sampler, j'ai tout compilé à la main en fait.
il faut d'abord compiler ligig puis gigedit (pour faire tes banques de son) puis linuxsampler. En interface graphique, j'utilise fantasia 0.9 qui est un logiciel en java (mais très joli) mais qsampler marche très bien aussi.
Je vais demander à tango-studio s'ils peuvent envisager de le mettre dans leurs dépots, ça serait le plus simple au niveau de l'installation.

Le logiciel fonctionne bien chez moi, c'est la taille de la banque de son qui va déterminer les performances en général.

Une alternative à linuxsampler est fluidsynth et son interface graphique qsynth. Et pour créer les banques de son, on utilise swami dans ce cas. fluidsynth fonctionne avec des banques en .sf2 alors que linuxsampler utilise des .gig. Disons que linuxsampler est plus dédié aux grosses banques instrumentales là où fluidsynth est bien pour un seul instrument.
Il faut essayer pour se faire une idée, et ça tu peux le faire directement avec ton clavier.

aroue utilisateur non connecté
Citation :
Une alternative à linuxsampler est fluidsynth et son interface graphique qsynth. Et pour créer les banques de son, on utilise swami dans ce cas. fluidsynth fonctionne avec des banques en .sf2 alors que linuxsampler utilise des .gig. Disons que linuxsampler est plus dédié aux grosses banques instrumentales là où fluidsynth est bien pour un seul instrument.
Il faut essayer pour se faire une idée, et ça tu peux le faire directement avec ton clavier.


J'utilise régulièrement fluidsynth, effectivement avec mon clavier.
C'est facile à utiliser. Par contre, quand on l'attaque avec le clavier, on est par défaut en piano et je ne sais pas encore comment choisir la police depuis fluidsynth.
Par contre Swami je ne connais pas. En fait il me faudrait ne garder que deux polices :
- une de son "normal pour les chanterelles et bourdons permanents
- une pour les quelques sons de chien. J'écris quelques au lieu de un prceque, bien que le chien soit sur un bourdon, on utilise un capodastre pour adapter le bourdon à la tonalité.

Samuel utilisateur connecté Allemagne
en fait, pas besoin de plusieurs fontes si j'ai bien compris :

swami permet de créer ses propres fontes, il suffit de mettre ton son normal sur le canal 1 et le son avec chien sur le canal deux dans la même fonte.
Une fois dans qsynth, tu vas dans le menu setup, puis dans l'onglet soundfont, puis tu cliques sur open afin d'aller chercher ta fonte avant de quitter cette fenêtre. De retour à l'interface de qsynth, tu vas dans channels puis tu double cliques sur la première ligne et tu sélectionnes le canal qui correspond (dans ton cas, son normal), puis tu double cliques sur la deuxième ligne afin de sélectionner le son avec chien. Tu sauvegardes ces paramètres de canaux, et tu devrais pouvoir jouer ton son normal avec le clavier en canal un et la roue en canal deux.
Cela fonctionne afin d'envoyer des signaux depuis un seul controleur. Si tu as deux controleurs (ton cas en fait, je réalise), il suffit de créer un autre moteur dans qsynth grace à la croix verte en bas à gauche, mais la manip est la même.

Page : 2/2
1  2 
Afficher les articles :
Aller au forum :

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]


Mégaphone [Afficher / Cacher]

sub26nico, 22:33, jeu. 17 Oct 2019: Salut et bienvenue à Beru :-)
olinuxx, 22:29, mer. 16 Oct 2019: Bonjour et bienvenue à Gm4Off cool
sub26nico, 22:39, lun. 14 Oct 2019: Salut et bienvenue à samaudio :-)
sub26nico, 11:04, dim. 13 Oct 2019: Salut et bienvenue à benoitf :-)
sub26nico, 17:56, ven. 11 Oct 2019: Des greffons proprios portés sous GNU/Linux : [Lien]
sri_raoul, 16:50, ven. 11 Oct 2019: The sonaremin: un projet synthé modulaire porté pour arm [Lien]
sub26nico, 22:37, jeu. 10 Oct 2019: Salut et bienvenue à nickythomas :-)
sub26nico, 10:34, jeu. 10 Oct 2019: Salut et bienvenue à Kiara, shadows, flofloy100 et Do_done :-)
r1, 17:24, mer. 09 Oct 2019: Moi aussi j'ai revu olinuxx avec grand plaisir !
allany, 08:37, mer. 09 Oct 2019: Merci, bluedid29, pour toute l'équipe de l'édito !
sub26nico, 08:46, mar. 08 Oct 2019: Bonjour et bienvenue à Notabene78, MOA, Gaz Korbier, setkaabwoy, gegeours et Siryu :-)
bluedid29, 16:08, lun. 07 Oct 2019: Et j'ai revu avec grand plaisir Olinuxx ! :-)