gewi basic DIY controller

More
1 month 1 day ago - 1 month 1 day ago #134 by gewi


Shows the MPX5010 gauge pressure sensor with tube to mouthpiece.
The sensor output goes to an analog input on an Arduino.
Arduino nano or Teensy could be used on board or (as in this case) an Uno in a separate interface.
The pressure signal is simply mutiplied by an appropriate factor to result in a range of 0 to 127.
That value is passed together with the fingered note midi value to a small state machine function:

{
if (sendPressure > 126) {sendPressure = 127;}
if (sendPressure >= onThreshold) {breathState = 1;}
if (sendPressure < offThreshold) {breathState = 0;sendPressure = 0;}
if ((note != lastNote)) {noteChangedState = 1;} else {noteChangedState = 0;}


if (breathState == 1 && noteChangedState == 1) {MIDI.sendNoteOff(lastNote,0,1);MIDI.sendNoteOn(note,127,1);MIDI.sendControlChange(2,sendPressure,1);noteState = 1;}
if (breathState == 1 && noteChangedState == 0) {MIDI.sendControlChange(2,sendPressure,1);}
if (breathState == 1 && noteState == 0) {MIDI.sendNoteOn(note,127,1);MIDI.sendControlChange(2,sendPressure,1);noteState = 1;}
if (breathState == 0 && noteState == 1) {MIDI.sendControlChange(2,sendPressure ,1);MIDI.sendNoteOff(lastNote,0,1);noteState = 0;}

lastNote = note;
note = note - octaveShift;
octaveShift = 0;
}

I'll post more about gewi next time, Cheers Reg
Attachments:
Last edit: 1 month 1 day ago by gewi.
The following user(s) said Thank You: puremusic, Frank

Please Log in or Create an account to join the conversation.

More
1 month 1 day ago #136 by gewi
Replied by gewi on topic gewi basic DIY controller
Gewi has a short bypass tube which can be crimped at the exit to suit player.
This tube allows condensation in the mouthpiece to be blown out.
The mouthpiece is small and relatively warm, so there isn't much.
Even so, condensation remains a minor issue.
Breath may be released by opening the lips to the side of the blowing tube.





B - blowing tube
S - silicon tube sleeve
V - vent
P - to pressure sensor
Attachments:

Please Log in or Create an account to join the conversation.

More
1 month 1 day ago #137 by gewi
Replied by gewi on topic gewi basic DIY controller


gewi 6 pads = 2^6 = 64 possible fingerings.

2 aux pads = 2^2 = 4 auxiliary controls ( no continuous modulations ).
Attachments:

Please Log in or Create an account to join the conversation.

More
1 month 1 day ago #138 by gewi
Replied by gewi on topic gewi basic DIY controller
These are the possible fingerings:



The 2 msb are not used here.

gewi uses 12 bits, 6 for the note fingering, 3 for the octave selection, leaving 3 for auxilliary functions (not used at present).
Attachments:

Please Log in or Create an account to join the conversation.

More
1 month 1 day ago #140 by puremusic
Replied by puremusic on topic gewi basic DIY controller
Absolutely fascinating device. Really inspiring to see something like this!
The following user(s) said Thank You: gewi

Please Log in or Create an account to join the conversation.

More
1 month 1 day ago - 1 month 1 day ago #141 by gewi
Replied by gewi on topic gewi basic DIY controller
Midi note numbers are arbitrarily matched to the decimal value of the fingering 'bit pattern'. For example 111 000 binary is 56 decimal. 56 might be paired with midi note number 67, which is G4. Binary 000 000 is 0 decimal and might be paired with midi note number 73, and so on:

fingerPadsTouchedDecimalValueList[] = {00,04,16,17,18,20,24,25,26 . . . }

midiNoteNumberList[] = {73,74,72,70,71,74,70,68,69 . . . }

The touch sensor bit pattern is read and the matching decimal value is found in the fingerPadsTouchedDecimalValueList array. For example: 010 000 is fingered, 010 000 = 16 which is the 3rd value in the array. The third value in the midiNoteNumberList is 72, which is C5.

Three touches for the left hand thumb are used to give a 5 octave range:


Attachments:
Last edit: 1 month 1 day ago by gewi.

Please Log in or Create an account to join the conversation.

Time to create page: 0.153 seconds