electro-music.com   Dedicated to experimental electro-acoustic
and electronic music
 
    Front Page  |  Articles  |  Radio
 |  Media  |  Forum  |  Wiki  |  Links  |  Store
Forum with support of Syndicator RSS
 FAQFAQ   CalendarCalendar   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   LinksLinks
 RegisterRegister   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in  Chat RoomChat Room 
Live streaming at radio.electro-music.com

  host / artist show at your time
  Faux Pas Quartet and friends Music From Last Thursday
Please visit the chat
 Forum index » DIY Hardware and Software » Arduino
G Lab Looper + Arduino based Footswitch problem ...
Post new topic   Reply to topic
Page 1 of 1 [8 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
Author Message
himijendrix



Joined: Apr 16, 2012
Posts: 15
Location: Germany

PostPosted: Tue Jul 09, 2013 1:42 pm    Post subject: G Lab Looper + Arduino based Footswitch problem ... Reply with quote  Mark this post and the followings unread

Hello,

I am working on an Arduino based MIDI footswitch for controlling a G Lab 4xLooper (M4L). As you can see in the manual (http://glab.com.pl/img/um_m4l_14062011.pdf) the G Lab can be controlled by Control Change messages.

I breadboarded a simple test circuit with a button to switch on and off the Loop 1 of the Glab via Midi, here's the code:

Quote:

/*
Midi Footswitch, based on the Arduino example sketch ButtonStateChange 
 http://arduino.cc/en/Tutorial/ButtonStateChange
 07.2013, JE
 */

#include <MIDI>.h

// setting the pins
const int button_1 = 7; // the pin that the pushbutton is attached to
const int led_1 = 13; // the pin that the LED is attached to

// switching variables
int buttonState_1 = 0; // current state of the button, all buttons off in the beginning
int lastButtonState_1 = 0; // previous state of the button
int channel = 1; //set Midi Channel

void setup() {
  pinMode(button_1, INPUT); // initialize the button pin as a input:
  pinMode(led_1, OUTPUT); // initialize the LED as an output:
  MIDI.begin(channel);
  MIDI.sendControlChange(80,0,channel); //switch off Loop 1 after start up
}

void loop() {
  buttonState_1 = digitalRead(button_1); // read the pushbutton input pin:
  if (buttonState_1 == HIGH) { //detects wheather the switch was pushed

    if (buttonState_1 != lastButtonState_1) { // compare the buttonState to its previous state, if it is Low, the switch went from OFF to ON
      MIDI.sendControlChange(80,127,channel); //switch Loop 1 ON
      digitalWrite(led_1, HIGH);
      lastButtonState_1 = HIGH; //save the current state as the last state, for next time through the loop
      delay (500); //debounce
    }

    else { // if the current state is HIGH then the button went from ON to OFF
      MIDI.sendControlChange(80,0,channel); //switch Loop 1 OFF
      digitalWrite(led_1, LOW);
      lastButtonState_1 = LOW;
      delay (500);
    }

  }
}




When I send the Midi from the Arduino to my PC I can see the correct Control Change message in MidiOx. Also my Synthesizer is working with it.

But the GLab won't! the channel is set correctly, and when I send the exactly same Midi message with MidiOx from my PC to the GLab it also works.

So where could the problem be? Any Ideas?
The Midi Out of the Arduino is connected like this:

Posted Image, might have been reduced in size. Click Image to view fullscreen.
Back to top
View user's profile Send private message
Blue Hell
Site Admin


Joined: Apr 03, 2004
Posts: 20626
Location: The Netherlands, Enschede
Audio files: 150
G2 patch files: 318

PostPosted: Tue Jul 09, 2013 2:06 pm    Post subject: Reply with quote  Mark this post and the followings unread

Could it be that your baud rate is off a bit?

When its off at the receiving end too, and into the other direction such a thing may cause what you are seeing.

I'm not seeing an electrical problem in the circuit, and the software should be fine too.

_________________
Jan
Back to top
View user's profile Send private message Visit poster's website
MusicMan11712



Joined: Aug 08, 2009
Posts: 734
Location: Upstate New York USA
Audio files: 148

PostPosted: Wed Jul 10, 2013 3:41 am    Post subject: Reply with quote  Mark this post and the followings unread

Are you using an arduino midi library? If so, which version? I haven't done anything with it in a year, but your project might get me back into it.
Steve
Back to top
View user's profile Send private message
himijendrix



Joined: Apr 16, 2012
Posts: 15
Location: Germany

PostPosted: Thu Jul 11, 2013 3:28 am    Post subject: Reply with quote  Mark this post and the followings unread

@Blue Hell
I think for the MIDI protocol the baud rate is not ciritcal, you just send one command at any time and the receiver recognizes it. No Sync or anything ...

@MusicMan11712
I use this libary: http://playground.arduino.cc/Main/MIDILibrary and apart from the GLab Looper it seems to work pretty well
Back to top
View user's profile Send private message
MusicMan11712



Joined: Aug 08, 2009
Posts: 734
Location: Upstate New York USA
Audio files: 148

PostPosted: Thu Jul 11, 2013 4:18 am    Post subject: Reply with quote  Mark this post and the followings unread

Hi. So far as I know, baud rate is indeed critical (as are other serial communication settings). From everything I know, most midi gear (if not all) communicates at 31.25kbps. (Blue_Hell and others can correct me if I am wrong). Serial communication necessarily needs to match settings (including baud rate) on both sending and receiving ends. Serial communication is done as a series of bits, so both sender and receiver must be in sync, that is how they know the where and when of serial "words." (Apologies if you know all this or if I am wrong.)

By the way, with my arduino tests with the hairless serial bridge for usb/midi communication between the arduino and my PC, I have had midi going at 256000 bps to my PC. However, in order for the hairless usb/midi bridge to recognize the data, I had to set the arduino's serial port to match the rate I had in the software:

Code:
void setup() {
  //  Set MIDI baud rate:
  Serial.begin(256000);
}


Since midi gear always (or almost always) uses 31250 kpbs, to communicate with gear, I use that rate. I am not sure if the midi library sets the rate.

As for the midi library, I am pretty sure that's the same one I used; I will have to double check. But when I first looked at your code it struck me that something didn't look right--at least not the way I tested the library.

I will try to get back into my midi/arduino coding project. If you want to see what I did last year, its in the Arduino sub forum. I don't use the midi library there, but it might be helpful to you.

When I last left my project, I was testing the use of interrupts. (I recommend looking into them if you haven't done so already.) Specifically I use using the Timer1 library to see what I could do with a timer based interrupt and midi clock. When I got around to using buttons, I was planning to teach myself how to do hardware interrupts.

Anyhow, I am glad you raised the issue as it prompts me to pull out my project and see what else I can add to it.

Steve
Back to top
View user's profile Send private message
Blue Hell
Site Admin


Joined: Apr 03, 2004
Posts: 20626
Location: The Netherlands, Enschede
Audio files: 150
G2 patch files: 318

PostPosted: Thu Jul 11, 2013 5:25 am    Post subject: Reply with quote  Mark this post and the followings unread

JE wrote:
I think for the MIDI protocol the baud rate is not ciritcal, you just send one command at any time and the receiver recognizes it. No Sync or anything ...


You are confusing bit rate with byte rate - bit timing is critical to about 5% for most UARTS, but for some UARTS needs be tighter than that.

_________________
Jan
Back to top
View user's profile Send private message Visit poster's website
himijendrix



Joined: Apr 16, 2012
Posts: 15
Location: Germany

PostPosted: Thu Jul 11, 2013 10:31 am    Post subject: Reply with quote  Mark this post and the followings unread

These posts where really helpful, didn't know anything about that baud rate.
I looked it up in the MIDI Library reference, and it says, that the MIDI.begin("input channel") sets the baud rate to 31250 by default.

But I think the G Lab should also use this baud rate, because otherwise it wouldn't react to MIDI messages sent from my PC, right?

I hope next week i will have some time to check everything again.
@MusicMan11712 I will try to have a look at your projects this weekend
Back to top
View user's profile Send private message
jksuperstar



Joined: Aug 20, 2004
Posts: 2489
Location: Denver
Audio files: 1
G2 patch files: 18

PostPosted: Fri Jul 12, 2013 9:21 am    Post subject: Reply with quote  Mark this post and the followings unread

Is this just one of those things where one device lists MIDI channels as 0-15, while the other lists them as 1-16? Make sure you map between the two:
0-15 : 1-16
0 : 1
1 : 2
...
15:16

The 16-step knob on the M4L looks like it says 1-16. Your code says "Channel=1". Try setting the M4L to channel 2. (or recompile your code with channel=0).

If you see MidiOX reporting channel = 1, then this is probably the issue.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic
Page 1 of 1 [8 Posts]
View unread posts
View new posts in the last week
Mark the topic unread :: View previous topic :: View next topic
 Forum index » DIY Hardware and Software » Arduino
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
e-m mkii

Please support our site. If you click through and buy from
our affiliate partners, we earn a small commission.


Forum with support of Syndicator RSS
Powered by phpBB © 2001, 2005 phpBB Group
Copyright © 2003 through 2009 by electro-music.com - Conditions Of Use