Hulp nodig bij verwerken van control change data in midi controller

André Pascal

Member of Paradise
Lid sinds
4 juni 2003
Berichten
265
Locatie
Groningen
Van een oude synth heb ik documentatie gevonden over hoe de synth reageert op control changes.

De opbouw is als volgt:

control message B0 44 x0 + parameter message B0 pp #

In het document staat b.v. Resonance (voor Voice A en Voice B):
72-A : Resonance amount 00 + B0 3A #
72-B : Resonance amount 40 + B0 3A #

dan wordt dus de totale midi regel:
B0 44 00 B0 3A xx (waarde die verandert) => resonance voor Voice A
B0 44 40 B0 3A xx (waarde die verandert) => resonance voor Voice B

Hoe moet ik deze waarden formuleren zodat een externe midi controller het snapt.
Ik kan kiezen uit CC, of SysEx, of NRPN RPN

Kan iemand mij vertellen hoe hiermee om te gaan?
 
Wat een rommeltje...

Vertel eerst eens om welke synth het gaat.
Op welk OS werk je ?
(Met welke "externe midi controller"wil je dit verzenden ?)

Sysex is specifiek afhankelijk van synth merk en type.
RPN of NRPN is maar bij een beperkt aantal merken ingeburgerd en in gebruik.

Voor enkelvoudige controller data heb je alleen dit nodig (gebaseerd op jou opgave) :
B0 duidt gewoon op een control change en midi kanaal 1 (0)
44 is het controllernummer (in hexadecimale vorm)
x0 is een variabele : dus dit kan verschillende waarden aannemen, overeenkomstig met verdraaien van de controllerknop.

 
Laatst gewijzigd:
Het gaat om een oud beestje, Siel Dk-80 uit 1985. De midi implementatie is dus nog niet helemaal op orde. De Siel kan met Control changes omgaan en dat werkt ook prima. Maar ik wil net even iets meer controle en dan kom je dus in deze constructies uit.

Ik heb 3 controllers waar ik mee kan spelen een evolution uc16, een PocketControl van doepfer en een novation zero Sl.
 
gerbruik er twee verschillende controller knobs voor ??
 
Die gegevens uit je eerste post vormen een deeltje van een volledige patch-dump van 78 bytes. Geen van je controllers kan dat verzenden, zelfs niet de Novation Remote SL.

Zover ik je intentie begrijp wil je afzonderlijke parameters veranderen. Met de info uit die pdf gaat dat niet lukken... die geeft enkel aan :
Patch Request / 5 bytes
Patch Dump / 78 bytes

Opbouw van een Patch Dump :
F0 Start of Exclusive
21 SIEL Manufacturer ID
02 Command 'Patch dump'
## Patch number 0 to 49 ( 99 with RAM cartridge )
04 Patch format DK80
0X Data : 72 nibbles (only uses 4 lower bits of each midi byte) 00-0F
....
....
....
....
F7 End of Exclusive

... => Patch data / 72 nibbles
 
Van een oude synth heb ik documentatie gevonden over hoe de synth reageert op control changes.

De opbouw is als volgt:

control message B0 44 x0 + parameter message B0 pp #

In het document staat b.v. Resonance (voor Voice A en Voice B):
72-A : Resonance amount 00 + B0 3A #
72-B : Resonance amount 40 + B0 3A #

dan wordt dus de totale midi regel:
B0 44 00 B0 3A xx (waarde die verandert) => resonance voor Voice A
B0 44 40 B0 3A xx (waarde die verandert) => resonance voor Voice B

Hoe moet ik deze waarden formuleren zodat een externe midi controller het snapt.
Ik kan kiezen uit CC, of SysEx, of NRPN RPN

Kan iemand mij vertellen hoe hiermee om te gaan?
hehe, een beetje roestig zeker, jij hebt me al dit soort dingen geleerd :halleluja

wat je wil doen klopt helemaal, dat zijn inderdaad de juiste sysex strings uit het document.
Simpelste is om even in cubase een device map te maken waar je twee knoppen definieert. Die koppel je aan Sysex messages waarin je deze messages opgeeft. De value kun je instellen op je knop.
Daarna koppel je deze device map aan een external instrument die naar je siel verwijst, en vervolgens kun je via de quick parameters met elke midi CC toekenning die knoppen voortaan bedienen en automaten.

Als je het probeert te doen in ableton dan werkt dat niet, die support nog geen sysex. Tenzij je dit via een ingewikkelde proxyserver dit in M4L probeert te doen.

Als je een programmeerbare midi controller hebt dan dien je deze als sysex te programmeren.

Vreemd is wel dat in het document geen checksum berekend hoeft te worden, dat heb je normaal wel, maar ach, dan wordt het alleen maar simpeler van :).

Maar gezien je cubase ervaring zou ik even voor de device map gaan, dan heb je het zo klaar.
Wat je trouwens kan doen is twee quick controls mappen aan dezelfde midi CC, dan kun je beide knoppen tegelijk automaten / bedienen. Wel zo handig voor beide voices tegelijk.
 
hehe, een beetje roestig zeker, jij hebt me al dit soort dingen geleerd :halleluja

wat je wil doen klopt helemaal, dat zijn inderdaad de juiste sysex strings uit het document.
Een sysex string begint altijd met F0 en eindigt altijd met F7. Als je een ander opzet gaat gebruiken (bvb.: B0 44 00 B0 3A xx) zou je wel eens ongewenste, mogelijk zelfs destruktieve commando's kunnen versturen.

Het enige dat je hier kunt proberen is zoals Stephen ook al aangaf, opsplitsen naar die twee CC's
B0 44 nn (nn => de benodigde variabele waarde)
B0 3A nn
 
Altijd groot respect voor mensen die dit soort strings kunnen uitrekenen/inkloppen, ik vind dat echt onbegrijpelijke shizzle.

Ik heb zelf wel eens de sysex waarden in een controller (BCR) 'geladen' met behulp van een software editor.
Als ik het goed herinner zette ik de BCR in learn mode en stuurde er vervolgens via een software editor sysex waarden er naar toe door aan een slider (of wat het ook is in die editor) te schuiven. Die waarden gaan dus normaal gesproken naar de synth, maar nu dus naar de BCR die dat automatisch herkent.
 
Een sysex string begint altijd met F0 en eindigt altijd met F7. Als je een ander opzet gaat gebruiken (bvb.: B0 44 00 B0 3A xx) zou je wel eens ongewenste, mogelijk zelfs destruktieve commando's kunnen versturen.

klopt,
maar ik ken het kennis niveau van andre pascal, dus ik hoef niet alles hier uit te leggen hoe het werkt, dat weet die allemaal wel.

Maar goed,
om iedereen even op het goede pad te zetten: het document laat de volledige implementatie van een sound zien. Of te wel, je kunt naar de siel met sysex alleen een volledige patch data sysex versturen waarin alle parameters gezet zijn.

dus het sysex commando voor preset lokatie 00 wordt dan:
F0 21 02 00 04 als header
dan 72 regels met de sound
dus:
00 B0 35 00 (voor square 16 level)
00 B0 36 00 (voor square 8 level)
etc...
tot je de 72 regels vol hebt
en dan sluit je af met:
F7 (dus checksum berekenen is niet nodig)

Nu kun je dat op twee manieren doen, 1 je programmeert de structuur van je patch als een volledige sysex patch in je editor (bijvoorbeeld door 49 knoppen te gebruiken met je patches die je eerst even inleest als sysex dump en dan daarheen kopieert. In dat geval kun je gewoon de twee device knoppen tekenen en in realtime die waarden veranderen.

Of je doet het zoals we het vroeger bij de sound canvas deden (andre) en je leest eerst de sysex codes in en je veranderd deze resonance strings even naar de gewenste waarde in de list editor bij de sysex string die je via dit document dus terug vindt. Bij het starten van je song wordt dan de sound precies zo naar je siel gestuurd als dat je hem geprogrammeerd hebt.

De tweede methode is het simpelst, de eerste biedt meer mogelijkheden.

Andere optie is om in visual C# een editor te schrijven die dit in realtime kan, maar dat is best even wat werk, daar moet je maar net zin in hebben.

Duidelijker kan ik het niet maken lijkt me :)
 
Laatst gewijzigd:
...Bij die DK 70 is er ook iets van MIDI cc messages

http://www.tinyloops.com/doc/siel_dk70/midi-cc.html


En ja, bij de Sh-201 en andere, is de cutoff twee controller parameters ipv 74,,
Stephen onderaan jou link staat er nog een naar de Expander DK80 (het broertje van de DK80 volgens die site) :
http://www.emismusic.co.uk/museum/Siel/EX80/SielExpander80.htm
De CC's daarvan heb ik in het bijgevoegde bestandje gezet voor de Midi Connect Check tool :
http://www.vdvb.be/audiocollage/Data/MIDI%20Connect%20Check.zip

Wie wil testen zet dit bestand in de map Voice list en start de tool.
 

Attachments

  • Siel DK80 Expander.txt
    1,2 KB · Bekeken: 179
Allereerst allemaal bedankt voor het meedenken. En Quifster heeft helemaal gelijk, de kennis is redelijk verroest. De suggestie om in cbase een mixer map aan te maken is een goeie. Mijn doel was alleen zonder tussenstap direct met een controller te werken, zodat ik ook zonder b.v cubase de Siel zou kunnen bedienen.
Ik ken inderdaad ook het Control change overzicht. Die zijn ook heel goed geïmplementeerd behalve voor de cutoff en resonantie. Omdat je dan altijd eerst moet kiezen of je met voice a of met voice b wilt werken. Ik wilde graag voice a en b tegelijkertijd bedienen. Vandaar dus even geprobeerd het via Sysex te bereiken,

Ik heb weer even genoeg input om aan de slag te gaan. Maar weer eens aan de puzzel....
 
De suggestie om in cbase een mixer map aan te maken is een goeie. Mijn doel was alleen zonder tussenstap direct met een controller te werken, zodat ik ook zonder b.v cubase de Siel zou kunnen bedienen.
Ik ken inderdaad ook het Control change overzicht. Die zijn ook heel goed geïmplementeerd behalve voor de cutoff en resonantie. Omdat je dan altijd eerst moet kiezen of je met voice a of met voice b wilt werken. Ik wilde graag voice a en b tegelijkertijd bedienen. Vandaar dus even geprobeerd het via Sysex te bereiken,
probleem van deze sysex oplossing is denk ik wel dat als je sysex in realtime wil aanpassen dat je siel steeds stil valt bij het ontvangen van de sysex, aangezien deze de volledige patch bevat. Dus voor het snel testen en programmeren van je patch zou zo'n device map wel helpen, maar voor volledige realtime controle kun je in deze situatie niets anders dan terugvallen op CC

Is het zo dat de CC een ander nummer is voor voice A dan voor voice B?
rechtstreeks dit soort dingen doen in de hardware midi controllers die jij gebruikt lijkt me niet mogelijk, dus je zit dan aan cubase vast voor wat truukwerk.
Als deze verschillend zijn, dan kun je het wel simpel tegelijk bedienen via 1 midi controller door deze unieke CC te routen naar twee verschillende CC's in cubase. Dus dan zet je bijvoorbeeld je eerste knop van de UC16 op CC 90, deze zet je dan in cubase in de quick controls naar quick Control 1 en quick control 2
De quick control 1 en 2 map je dan naar de unieke CC's die je wilt bedienen (Bijvoorbeeld 71 en 72), als je nu aan de eerste knop van de UC16 draait stuur je de CC71 en 72 tegelijk aan (in plaats van cc90).

Maar ik vrees als ik je verhaal zo lees dat je handmatig op de siel die selectie moet doen van voice a of voice b, en in dat geval gaat het niet werken om beide voices via dezelfde CC aan te passen.

En wat je natuurlijk altijd kan doen is alle standaard CC's mappen, en dan de filters niet gebruiken, maar de sound door een externe filter heen te gooien die wel goed mappable is. Dan heb je een siel met een software matige filter mod gemaakt :D
Ik doe niet anders hier, bijvoorbeeld een jp-8080 door een moog filter app op de iPad of door een antares filter insert effect maakt er een compleet andere synthsound van. Kwestie van simpel routen in cubase en je CC's eenmalig goed instellen. Nadeel is wel dat je niet het unieke filter geluid van de siel meer hebt natuurlijk, maar in een productie hoeft dat niet echt een probleem te zijn.
 
Laatst gewijzigd:
En wat je natuurlijk altijd kan doen is alle standaard CC's mappen, en dan de filters niet gebruiken, maar de sound door een externe filter heen te gooien die wel goed mappable is. Dan heb je een siel met een software matige filter mod gemaakt :D

Kijk dat zijn tips! Misschien dat de Siel dan ineens nog lekker gaat klinken ook :)

Het lijkt erop dat ik mijn doel inderdaad niet kan bereiken.
Ik kan de voice A of B kiezen met een control change, maar zal nooit tegelijk beide voices de resonance en cutoff kunnen bedienen. Zoals je al aangeeft, ik zal altijd eerst moeten switchen. Jammer, want alle andere settings, zoals de enveloppe's, zijn allemaal per voice te regelen zonder switch.
 
Kijk dat zijn tips! Misschien dat de Siel dan ineens nog lekker gaat klinken ook :)
haha, inderdaad, gooi die siel maar eens door een Eventide H9max reverb heen, je weet niet wat je hoort dan :D

Het lijkt erop dat ik mijn doel inderdaad niet kan bereiken.
Ik kan de voice A of B kiezen met een control change, maar zal nooit tegelijk beide voices de resonance en cutoff kunnen bedienen. Zoals je al aangeeft, ik zal altijd eerst moeten switchen. Jammer, want alle andere settings, zoals de enveloppe's, zijn allemaal per voice te regelen zonder switch.
nee vrees het ook, beetje jammer dat het die structuur heeft, maar goed de rest is wel goed mappable, dus je komt echt een heel eind op die manier met een externe filter erop.
 
Back
Top