Update mechanisme / trigger mechanisme Max patch

zaphod

Stamgast
Lid sinds
5 september 2001
Berichten
241
Locatie
Delft
Hoi,

ik ben een Max-noob en wilde een patch maken waarmee ik een midi controller event dat wordt gegenereerd door een device wil omzetten naar een ander controller event waarbij het controller nummer wordt aangepast maar de value gelijk blijft. Ik ontvang b.v. controller 20 value 25 en wil er controller 19 value 25 van maken. Misschien bestaat die mogelijkheid al in Ableton, maar die heb ik niet kunnen vinden. En misschien is er al een Max patch die dat kan, maar het is niet gemakkelijk zo'n ding te vinden in de massa's patches die er bestaan. Verder wilde ik eens met Max spelen, dus ....

Ik heb een simpele patch gemaakt in Max, en zoals dat vaak is bij het eerste gebruik van een nieuwe programmeertaal zal ik wel niet de meest handige manier hebben gekozen. Vandaar de vraag om enige hulp.

Wat ik gebruik is een midiparse object, daar pluk ik van de controller uitgang de waarden, splits die met een unpack in 2 elementen en neem dan alleen de 2e waarde mee, dat is de controllervalue ( ik negeer dus het controller nummer, 20 in het voorbeeld ). Dan doe ik een pack voor 2 waarden waarbij ik als eerste waarde 19 substitueer en plak er de 2e waarde uit de unpack tegenaan ( de controller value, 25 in dit voorbeeld). Tenslotte doe ik een midiformat om het geheel weer tot een midi message om te zetten.

N.b. als je de patch bekijkt, zie je dat ik ook nog het midikanaal probeer te setten.

Wat mij opvalt zij een paar dingen:

1: als ik de value van de ingaande controller 19 varieer, dan zie ik dat die ge-unpackt wordt en dat de beide waarden continue varieeren als ik de controller bedien op het externe device. Dat zie ik in de message boxen die aan de unpack hangen. De output van de midiformat lijkt niet ge-update te worden. Die wordt eigenlijk alleen ge-update als ik de 'Output Controller' waarde in de patch varieer, dus bijvoorbeeld van 20 op 19 zet.
2: Als ik de 'Output Channel' waarde varieer, zie ik dat niet terug in de message box die hangt aan de midiparse die ik aan de midiformat heb gehangen. Die wordt dus niet continue aangepast.
Ik zie het kanaalnummer wel veranderen zodra ik de 'Output Controller' waarde varieer. De waarden in de patch komen overeen met de toestand na het varieeren van de 'Output Controller' waarde.

De hamvraag is dus: hoe geeft Max de waarden door die ergens in een patch worden gevarieerd en wat triggert het doorgeven van een waarde?
Ik krijg de indruk dat ik in de patch iets van een gate of triggering mis.


Screenshot 2020-06-13 at 09.49.07.png
 
Ik heb inmiddels de oplossing voor het probleem gevonden. Het pack-object packt alleen data als er een nieuwe waarde aangeboden wordt op de linker ingang. Als het controller nummer dus eenmaal gekozen is, zal daarna bij verandering van de controller waarde, ofwel het 2e deel van de te packen getallenreeks, deze niet meer worden doorgegeven. De oplossing is een trigger van het pack-object te forceren. Dat kan met een trigger object, dat geeft een trigger, in Max4Live termen heet dat een 'bang' en de waarde die het triggerde. De 'bang' moet naar de eerste ingang van het pack-object worden gestuurd, de waarde naar de tweede ingang. In onderstaande screenshot is dat met het 't b f' object uitgevoerd. Verder zie je hier dat alle uitgangen van het midiparse object die geen controller waarde bevatten zijn doorgeleid naar het midiformat object, ofwel de patch laat alle midi data zonder meer door tenzij het controller waarden betreft.
Omdat de meeste sequencers zelf al in staat zijn midi data die ze ontvangen naar een ander midi kanaal te redirecten, heb ik het deel uit de originele patch waarmee ik het midi kanaal kon kiezen laten vervallen.


Screenshot 2020-06-21 at 22.01.57.png
 
Back
Top