Pagina 1 van 1

Volume instelling opslaan

BerichtGeplaatst: 05 dec 2022 16:06
door RMun
Ik heb soms bij een bepaalde registratie de behoefte het geluid wat zachter in te stellen dan bij andere registraties.
Dat doe ik nu met een draaiknop of met de dB instelling en het zou handig zijn als ik een van beide opties zou kunnen opslaan in de betreffende "Master General combination" of setter. Ik kan daar niets over vinden. Is dat mogelijk?

Re: Volume instelling opslaan

BerichtGeplaatst: 05 dec 2022 19:52
door Evert-Jan
Volume niveau / instelling opslaan bij een registratie is niet mogelijk in HW.

Wel zou je de trim dB schuif aan een zwelpedaal van je orgel kunnen koppelen als je die over hebt.
Het heeft wel 1 nadeel: als je opneemt in HW varieert dat opgenomen volume ook. Als je "buiten" HW het volume wijzigt, in bijv. een versterker, heb je dat niet.

Re: Volume instelling opslaan

BerichtGeplaatst: 28 dec 2022 13:05
door RMun
Ik heb dan maar even wat geknutseld om een digitale potmeter te maken met een Arduino Nano, waarmee ik in 6 stappen het volume op 100-90-80-70-60 en 0% kan zetten.
Voor de hobbyist die het ook wil maken: De +5V en GND voor de voeding komt als max/min van de potmeter uit de Gino Midi board en een van de PWM analoge uitgangen van de Arduino gaat via een RC filter (100ohm 100uF) als "loper" van de potmeter naar de Midi controller terug.

2022-12-28 11.48.37 resized.jpg

2022-12-28 11.48.49 resized.jpg


Hierbij de code.

/*
Volumeschakelaar met analoge output als simulatie van potmeter in Midi controller orgel
Voeding vanuit +5V en GND van Gino BIG midi controller.
*/
//===============================================================
// Global Variables & Constants
//===============================================================

// LEDs zijn HIGH als UIT pull-down met anode aan +, idem up-dn button.

const byte ledPin[] = {2,3,4,5,7};
const int Buttonup = 8; // Active Low, held high by 4.7K
const int Buttondn = 9; // Active Low, held high by 4.7K
const int VolumePin = 6; // Volume van 0-5V

//Logische waarde van de inputs:

int Buttonupstate;
int Buttondnstate;

int upstateold;
int dnstateold;

int Ledindex = 0;

//===============================================================
// SETUP
//===============================================================

void setup () {
//all LED pins as outputs
for (int x=0; x<=4; x++) {pinMode(ledPin[x], OUTPUT);}

pinMode(Buttonup, INPUT);
pinMode(Buttondn, INPUT);
pinMode(VolumePin, OUTPUT);

// Startsituatie ledPinzero 100% aan en output op 5V.
digitalWrite(ledPin[0], LOW);
for (int x=1; x<=4; x++) {digitalWrite(ledPin[x], HIGH);}
analogWrite(VolumePin, 255);

}

//===============================================================
// Main Loop
//===============================================================
void loop() {

//Beginnen met de button states in te lezen
Buttonupstate = digitalRead(Buttonup);
Buttondnstate = digitalRead(Buttondn);

//eerst kijken of beide knoppen tegelijk worden ingedrukt, dan moeten alle LED's uit en output op 0V, als referentie

if (Buttondnstate == LOW && Buttonupstate == LOW)
{

for (int x=0; x<=4; x++){digitalWrite(ledPin[x], HIGH);
Ledindex = 5;}
}


else {

if (Buttondnstate != dnstateold && Buttondnstate == LOW && Ledindex<4)
{
Ledindex = Ledindex+1;
for (int x=0; x<=3; x++) {digitalWrite(ledPin[x], HIGH);}
digitalWrite(ledPin[Ledindex], LOW);
}

if (Buttonupstate != upstateold && Buttonupstate == LOW && Ledindex>0)
{
Ledindex = Ledindex-1;
for (int x=0; x<=4; x++){digitalWrite(ledPin[x], HIGH);}

digitalWrite(ledPin[Ledindex], LOW);
}}
switch (Ledindex)
{
case 0:
analogWrite(VolumePin, 245);
break;
case 1:
analogWrite(VolumePin, 220);
break;
case 2:
analogWrite(VolumePin, 197);
break;
case 3:
analogWrite(VolumePin, 172);
break;
case 4:
analogWrite(VolumePin, 147);
break;
case 5:
analogWrite(VolumePin, 0);
}

upstateold = Buttonupstate;
dnstateold = Buttondnstate;

delay(100);

}