Se connecter
Se connecter

ou
Créer un compte

ou
Agrandir
Ajouter ce produit à
  • Mon ancien matos
  • Mon matos actuel
  • Mon futur matos
Plogue Bidule
Photos
1/1
Plogue Bidule

Invocation des Grands Puissants de Bidule : question "algorithmique"

  • 8 réponses
  • 3 participants
  • 861 vues
  • 0 follower
Sujet de la discussion Invocation des Grands Puissants de Bidule : question "algorithmique"
Salut à tous, et en particulier, à ceux qui "touchent".

Je bute sur un problème d'implémentation. Il s'agit d'un générateur MIDI basique, dont la sortie envoie des notes à un VSTi.

Voici une tentative de formalisation de l'algo, dans une version ultra basique, pour mieux identifier mon problème (ou ma nullité, c'est selon) :

On dispose d'une liste de durées en ms (122, 3455, 34, 67, 340, etc.), appelons la "LD", pour "liste des durées possibles".
On possède également une variable représentant une hauteur de note MIDI (appelons la "HB", pour "hauteur de base" ) .
Une durée est sélectionnée au hasard dans LD.
Une note MIDI de hauteur HB est alors générée.
Dès qu'elle est finie, une autre durée est sélectionné au pif dans LD, et rebelotte, on regénère une note.
Jusqu'ici, c'est un bête scheduler qui colle bout à bout des notes de hauteur déterminée et de durée variable.

Mais déjà ça, je suis incapable de l'écrire avec Bidule (en Lisp, je le fais en 15 secondes).

Bon, ensuite.
A chaque génération de note, il y a une probabilité paramétrable qu'une autre hauteur soit générée pour la note suivante (à la place de HB).
Si plusieurs hauteurs de suite ne sont pas HB, et que deux d'entre elles au moins sont égales, alors HB prend la valeur de cette hauteur.

Je galère, je vous dis pas comment !

Je note que je n'espère pas avoir de réponse à ce post, toutefois, si un expert Bidule passe par-là (je sais qu'il y en a...), qu'il soit assuré de recevoir moult bières s'il me trouve la solution.

Par avance, grand merci !

And we're going to have this transitory cow fling thing right here in Cicely?

2
Pour la première partie, je pense que ça, ça le fait (à copier dans un .bgrp, en remettant d'équerre l'en-tête XML que le Forum d'AF n'aime pas trop).

Citation :
<?xml version="1.0" encoding="ISO-8859-1"?>
<BoardLayout xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation='Bidule.xsd'>
<BiduleGroup id="UID_1239045402" displayName="Plop" zoom="1" type="com.plogue.groups.Plop" processingMode="process" author="john" version="1.0">
<Geometry x="22.2222" y="27.7778" w="0" h="0"/>
<Channel index="0" name="MIDI Output Port 1" direction="output" type="midi"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="650" y="92" w="454" h="501"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Bidule id="UID_1239045236" type="com.plogue.IndexedValueList" displayName="LD" processingMode="process">
<Geometry x="-114.778" y="129.667" w="0" h="0"/>
<ChannelConfig numSampleIn="1" numSampleOut="2" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="447" y="220" w="385" h="332"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="0" lockedForRandom="true" mutationFactor="0">1000;2000;3000</Parameter>
</Bidule>
<Bidule id="UID_1239045300" type="com.plogue.IndexedValueList" displayName="HB" processingMode="process">
<Geometry x="247.111" y="119.556" w="0" h="0"/>
<ChannelConfig numSampleIn="1" numSampleOut="2" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="447" y="220" w="385" h="332"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="0" lockedForRandom="true" mutationFactor="0">440;880</Parameter>
</Bidule>
<Bidule id="UID_1239045304" type="com.plogue.Trigger" displayName="Trigger" processingMode="process">
<Geometry x="-2" y="294.778" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="44" y="106" w="454" h="190"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
</Bidule>
<Bidule id="UID_1239045331" type="com.plogue.DelayLine" displayName="Delay Line" processingMode="process">
<Geometry x="172.444" y="-24.8889" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="-1" y="-1" w="-1" h="-1"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="5" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
</Bidule>
<Bidule id="UID_1239045332" type="com.plogue.MIDINoteCreator2" displayName="Note Creator 2" processingMode="process">
<Geometry x="55.5556" y="-136" w="0" h="0"/>
<ChannelConfig numSampleIn="4" numSampleOut="0" numMidiIn="0" numMidiOut="1" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="-1" y="-1" w="-1" h="-1"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Bidule id="UID_1239045333" type="com.plogue.Constant" displayName="1.0" processingMode="process">
<Geometry x="117.333" y="-44.3333" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="291" w="410" h="189"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="16" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="1" userMin="-1e+008" userMax="1e+008" lockedForRandom="false" mutationFactor="0.1">1.0</Parameter>
</Bidule>
<Bidule id="UID_1239045350" type="com.plogue.BinaryLogicOperator" displayName="Or" processingMode="process">
<Geometry x="114.444" y="218.889" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="304" w="410" h="163"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="11" lockedForRandom="false" mutationFactor="0.1">7.0</Parameter>
</Bidule>
<Bidule id="UID_1239045351" type="com.plogue.DelayLine" displayName="Delay Line" processingMode="process">
<Geometry x="316.889" y="-123.778" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="-1" y="-1" w="-1" h="-1"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="5" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
</Bidule>
<Bidule id="UID_1239045353" type="com.plogue.Constant" displayName="1.0" processingMode="process">
<Geometry x="481.778" y="91.2222" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="291" w="410" h="189"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="16" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="1" userMin="-1e+008" userMax="1e+008" lockedForRandom="false" mutationFactor="0.1">1.0</Parameter>
</Bidule>
<Bidule id="UID_1239045357" type="com.plogue.UnitConverter" displayName="Unit Converter" processingMode="process">
<Geometry x="-40.0001" y="52.2223" w="0" h="0"/>
<ChannelConfig numSampleIn="1" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="304" w="410" h="163"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="15" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
</Bidule>
<BiduleGroup id="UID_1239045363" displayName="Random Generator" zoom="1" processingMode="process" author="john" version="1.0">
<Geometry x="-26.2222" y="132" w="0" h="0"/>
<Channel index="0" name="trigger" direction="input" type="samples"/>
<Channel index="1" name="max" direction="input" type="samples"/>
<Channel index="0" name="Sample Output Channel 1" direction="output" type="samples"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="0" y="0" w="0" h="0"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Bidule id="UID_1239045366" type="com.plogue.Random" displayName="Random" processingMode="process">
<Geometry x="101" y="103" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="308" w="410" h="155"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Bidule id="UID_1239045368" type="com.plogue.Constant" displayName="1.0" processingMode="process">
<Geometry x="167" y="169" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="291" w="410" h="189"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="16" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="1" userMin="-1e+008" userMax="1e+008" lockedForRandom="false" mutationFactor="0.1">1.0</Parameter>
</Bidule>
<Bidule id="UID_1239045370" type="com.plogue.BinaryOperator" displayName="*" processingMode="process">
<Geometry x="27" y="12" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="295" w="410" h="181"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="9" lockedForRandom="false" mutationFactor="0.1">2.0</Parameter>
<Parameter id="1" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Bidule id="UID_1239045372" type="com.plogue.Constant" displayName="Sample Rate" processingMode="process">
<Geometry x="134" y="238" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="291" w="410" h="189"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="16" lockedForRandom="false" mutationFactor="0.1">1.0</Parameter>
<Parameter id="1" userMin="-1e+008" userMax="1e+008" lockedForRandom="false" mutationFactor="0.1">44100.0</Parameter>
</Bidule>
<Bidule id="UID_1239045374" type="com.plogue.SampleAndHold" displayName="Sample and Hold" processingMode="process">
<Geometry x="-72" y="-151" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="304" w="410" h="163"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
</Bidule>
<Bidule id="UID_1239045382" type="com.plogue.UnaryOperator" displayName="Abs" processingMode="process">
<Geometry x="135" y="48" w="0" h="0"/>
<ChannelConfig numSampleIn="1" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="295" w="410" h="181"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="22" lockedForRandom="false" mutationFactor="0.1">2.0</Parameter>
<Parameter id="1" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Link producerId="UID_1239045368" producerChannel="0" listenerId="UID_1239045366" listenerChannel="1"/>
<Link producerId="UID_1239045363" producerChannel="1" listenerId="UID_1239045370" listenerChannel="0"/>
<Link producerId="UID_1239045372" producerChannel="0" listenerId="UID_1239045366" listenerChannel="0"/>
<Link producerId="UID_1239045374" producerChannel="0" listenerId="UID_1239045363" listenerChannel="0"/>
<Link producerId="UID_1239045366" producerChannel="0" listenerId="UID_1239045382" listenerChannel="0"/>
<Link producerId="UID_1239045382" producerChannel="0" listenerId="UID_1239045370" listenerChannel="1"/>
<Link producerId="UID_1239045370" producerChannel="0" listenerId="UID_1239045374" listenerChannel="0"/>
<Link producerId="UID_1239045363" producerChannel="0" listenerId="UID_1239045374" listenerChannel="1"/>
</BiduleGroup>
<BiduleGroup id="UID_1239045387" displayName="Random Generator" zoom="1" processingMode="process" author="john" version="1.0">
<Geometry x="308.222" y="118.667" w="0" h="0"/>
<Channel index="0" name="trigger" direction="input" type="samples"/>
<Channel index="1" name="max" direction="input" type="samples"/>
<Channel index="0" name="Sample Output Channel 1" direction="output" type="samples"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="0" y="0" w="0" h="0"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Bidule id="UID_1239045390" type="com.plogue.Random" displayName="Random" processingMode="process">
<Geometry x="101" y="103" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="308" w="410" h="155"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Bidule id="UID_1239045392" type="com.plogue.Constant" displayName="1.0" processingMode="process">
<Geometry x="167" y="169" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="291" w="410" h="189"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="16" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="1" userMin="-1e+008" userMax="1e+008" lockedForRandom="false" mutationFactor="0.1">1.0</Parameter>
</Bidule>
<Bidule id="UID_1239045394" type="com.plogue.BinaryOperator" displayName="*" processingMode="process">
<Geometry x="27" y="12" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="295" w="410" h="181"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="9" lockedForRandom="false" mutationFactor="0.1">2.0</Parameter>
<Parameter id="1" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Bidule id="UID_1239045396" type="com.plogue.Constant" displayName="Sample Rate" processingMode="process">
<Geometry x="134" y="238" w="0" h="0"/>
<ChannelConfig numSampleIn="0" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="291" w="410" h="189"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="16" lockedForRandom="false" mutationFactor="0.1">1.0</Parameter>
<Parameter id="1" userMin="-1e+008" userMax="1e+008" lockedForRandom="false" mutationFactor="0.1">44100.0</Parameter>
</Bidule>
<Bidule id="UID_1239045398" type="com.plogue.SampleAndHold" displayName="Sample and Hold" processingMode="process">
<Geometry x="-72" y="-151" w="0" h="0"/>
<ChannelConfig numSampleIn="2" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="304" w="410" h="163"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
</Bidule>
<Bidule id="UID_1239045400" type="com.plogue.UnaryOperator" displayName="Abs" processingMode="process">
<Geometry x="135" y="48" w="0" h="0"/>
<ChannelConfig numSampleIn="1" numSampleOut="1" numMidiIn="0" numMidiOut="0" numFreqIn="0" numFreqOut="0" numMagIn="0" numMagOut="0"/>
<Gui state="normal" hidden="true" generic="true">
<Geometry x="435" y="295" w="410" h="181"/>
</Gui>
<Parameter id="-7" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">1</Parameter>
<Parameter id="-5" userMin="0" userMax="0" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="-2" userMin="0" userMax="2" lockedForRandom="false" mutationFactor="0.1">0.0</Parameter>
<Parameter id="0" userMin="0" userMax="22" lockedForRandom="false" mutationFactor="0.1">2.0</Parameter>
<Parameter id="1" userMin="0" userMax="1" lockedForRandom="false" mutationFactor="0.1">0</Parameter>
</Bidule>
<Link producerId="UID_1239045392" producerChannel="0" listenerId="UID_1239045390" listenerChannel="1"/>
<Link producerId="UID_1239045387" producerChannel="1" listenerId="UID_1239045394" listenerChannel="0"/>
<Link producerId="UID_1239045396" producerChannel="0" listenerId="UID_1239045390" listenerChannel="0"/>
<Link producerId="UID_1239045398" producerChannel="0" listenerId="UID_1239045387" listenerChannel="0"/>
<Link producerId="UID_1239045390" producerChannel="0" listenerId="UID_1239045400" listenerChannel="0"/>
<Link producerId="UID_1239045400" producerChannel="0" listenerId="UID_1239045394" listenerChannel="1"/>
<Link producerId="UID_1239045394" producerChannel="0" listenerId="UID_1239045398" listenerChannel="0"/>
<Link producerId="UID_1239045387" producerChannel="0" listenerId="UID_1239045398" listenerChannel="1"/>
</BiduleGroup>
<Link producerId="UID_1239045300" producerChannel="0" listenerId="UID_1239045332" listenerChannel="0"/>
<Link producerId="UID_1239045363" producerChannel="0" listenerId="UID_1239045236" listenerChannel="0"/>
<Link producerId="UID_1239045236" producerChannel="1" listenerId="UID_1239045363" listenerChannel="1"/>
<Link producerId="UID_1239045350" producerChannel="0" listenerId="UID_1239045363" listenerChannel="0"/>
<Link producerId="UID_1239045304" producerChannel="0" listenerId="UID_1239045350" listenerChannel="0"/>
<Link producerId="UID_1239045300" producerChannel="1" listenerId="UID_1239045387" listenerChannel="1"/>
<Link producerId="UID_1239045333" producerChannel="0" listenerId="UID_1239045332" listenerChannel="1"/>
<Link producerId="UID_1239045331" producerChannel="0" listenerId="UID_1239045332" listenerChannel="3"/>
<Link producerId="UID_1239045350" producerChannel="0" listenerId="UID_1239045331" listenerChannel="0"/>
<Link producerId="UID_1239045387" producerChannel="0" listenerId="UID_1239045300" listenerChannel="0"/>
<Link producerId="UID_1239045351" producerChannel="0" listenerId="UID_1239045350" listenerChannel="1"/>
<Link producerId="UID_1239045353" producerChannel="0" listenerId="UID_1239045351" listenerChannel="1"/>
<Link producerId="UID_1239045357" producerChannel="0" listenerId="UID_1239045331" listenerChannel="1"/>
<Link producerId="UID_1239045236" producerChannel="0" listenerId="UID_1239045357" listenerChannel="0"/>
<Link producerId="UID_1239045350" producerChannel="0" listenerId="UID_1239045387" listenerChannel="0"/>
<Link producerId="UID_1239045331" producerChannel="0" listenerId="UID_1239045351" listenerChannel="0"/>
<Link producerId="UID_1239045350" producerChannel="0" listenerId="UID_1239045332" listenerChannel="2"/>
<Link producerId="UID_1239045332" producerChannel="0" listenerId="UID_1239045402" listenerChannel="0"/>
<VirtualParameter id="0" source="UID_1239045236" param="0" displayName="LD Values"/>
<VirtualParameter id="1" source="UID_1239045300" param="0" displayName="HB Values"/>
<VirtualParameter id="2" source="UID_1239045304" param="1" displayName="Send Trigger"/>
</BiduleGroup>
<Automation id="Automation"/>
</BoardLayout>



Hors sujet :

Citation : Mais déjà ça, je suis incapable de l'écrire avec Bidule (en Lisp, je le fais en 15 secondes).

Ouais, mais tu peux le faire avec Plogue avec moins de parenthèses. Désolé, j'aime pas le Lisp ... :non:
Quand je vois un bout de code Lisp, j'ai l'impression de lire que des parenthèses. :oo:
Python RuleZ ! :aime: J'ai d'ailleurs un proto de wrapper Python pour le SDK Plogue si jamais ça t'intéresse ...



Citation : Bon, ensuite.
A chaque génération de note, il y a une probabilité paramétrable qu'une autre hauteur soit générée pour la note suivante (à la place de HB).
Si plusieurs hauteurs de suite ne sont pas HB, et que deux d'entre elles au moins sont égales, alors HB prend la valeur de cette hauteur.

Et là, j'ai décroché ...
:??:

Citation : si un expert Bidule passe par-là, qu'il soit assuré de recevoir moult bières s'il me trouve la solution

Chronopost ?
:clin:
My name is john, '_' john.
3
Plop !!!!

C'est fantastique. Je te remercie mille fois, impressionnant la rapidité avec laquelle tu as répondu, et l'élégance de ton patch. Hier soir, j'ai à peu près réussi à bidouiller un truc pour avoir ça, mais c'est moche et vraiment peu élégant. Comme quoi, il y a bien un "style" de programmation...

Et j'apprends que tu as un wrapper Python... tu es mon nouveau gourou Bidule. Tu as ça à disposition qqpart ? Tu en as déjà fait la promo sur le forum officiel de Plogue ? Je suis sûr que pas mal de monde pourrait être intéressé...

Je vais continuer à plancher sur la partie 2 de mon algo, car c'est celle-ci qui fait verrou...

Bon, pour Chronopost, ça va trop mousser, mais si tu passes dans le 18e un jour... :boire:

And we're going to have this transitory cow fling thing right here in Cicely?

4
Bonjour à John et Amleth,
j'ai une question d'ordre général à vous poser concernant le langage informatique utilisé pour écrire des patches et autres dans Bidule.
Vous avez suivi quelles formations pour le faire ? Y'a-t-il un moyen de se former en autodidacte ?
5
Ce ne sont que des boîtes avec des entrées et des sorties. Il faut surtout être astucieux, lire la doc qui dit à quoi correspondent ces E/S et regarder des patchs tous faits (par exemple, celui exposé supra).

Bidule est le soft le moins bien documenté au monde. Aucun tuto, aucune formation.

Des forums, des questions :)

And we're going to have this transitory cow fling thing right here in Cicely?

6
Merci Amleth pour ta réponse,

Citation : Ce ne sont que des boîtes avec des entrées et des sorties. Il faut surtout être astucieux, lire la doc qui dit à quoi correspondent ces E/S et regarder des patchs tous faits


oui, ça je sais mais vous parliez tout de même John et toi, de Lisp et de Python...
ça vous sert ou pas ?
7
Alors, quelques clarifications.

J'ai évoqué le LISP car je suis utilisateur d'un autre logiciel de composition qui s'appelle Common Music, et qui est écrit dans le vieux langage qu'est le LISP. Ayant enseigné ce langage, il m'est naturel.

Bidule est doté d'un SDK, qui permet de créer tes propres boîtes. Les développeurs de Bidule ont fourni une base en C++ (langage bas niveau pas facile d'accès pour le néophyte). John nous a appris qu'il avait un wrapper Python (langage à la syntaxe trés élégante et agréable) permettant de coder des bidules. Mais tu ne te poseras ces questions que quand tu auras fait le tour des bidules blocks existants, et que tu auras identifié un manque.

Avec les bidules, tu écris des patchs.
Avec le SDK, tu écris des bidules, quand ceux qui existent ne te suffisent pas.

Donc commence par te pencher exclusivement sur la doc et la librairie de bidules existants.

Pour mon problème, par exemple, j'aurais pu tout de suite développer un bidule. Mais développer en C++ m'enquiquine, et j'ai le sentiment qu'une bonne partie de ce que je veux faire peut être réalisé avec les blocks existants... quoique, pour la partie 2, j'ai des doutes.

Voilà, en espérant que la situation est plus claire pour toi.

And we're going to have this transitory cow fling thing right here in Cicely?

8
Amleth,
merci beaucoup, ceux sont les précisions que j'attendais.
donc, je vais m'atteler au Ctrl+double clic.
C'est vraiment l'outil essentiel pour comprendre les patches.
9

Citation : John nous a appris qu'il avait un wrapper Python (langage à la syntaxe trés élégante et agréable) permettant de coder des bidules.



Pour faire simple, j'ai deux protos, qui correspondent à deux implémentations différentes. Pour chacun, il y a une partie "serveur" qui est un plugin Bidule (en utilisant boost::python) qui scanne les .py dans le répertoire de plugins de Plogue Bidule, les fait apparaître dans le menu et les charge. Les implémentations diffèrent pour la partie cliente.
Pour la première implémentation, j'utilise un module python binaire (en utilisant pyplusplus) pour qui reprends pour l'environnement python les définitions du SDK de Plogue. Dans la seconde, j'utilise ctypes pour faire cela.
Chaque implémentation a son soucis: la première n'est pas très stable (je dois rater un truc dans l'emballage des buffers avec numpy), la seconde est trop lente pour faire du traitement audio (même avec psyco, j'attends après l'intégration du JIT dans Python), mais passe pour du MIDI.

Citation : Tu en as déjà fait la promo sur le forum officiel de Plogue ? Je suis sûr que pas mal de monde pourrait être intéressé...


Seb de chez Plogue est au courant, je lui est envoyé les sources de la première version quand je l'ai codée (il y a 2 ans maintenant).
https://www.plogue.com/phpBB2/viewtopic.php?t=1804&highlight=python&start=9
L'idée c'est d'attendre que le SDK de Plogue soit stable pour fournir une version. Maintenant, comme je vois que tu a l'air de coder un peu (même si c'est en Lisp) et que tu as peut-être une licence de Bidule (et donc accès au SDK), je me dis qu'une "béta" peut t'intéresser.
PM moi si c'est le cas. :bravo:
My name is john, '_' john.