project to clone Ed Sheeran's Chewie II

Started by jovid196168, March 08, 2017, 07:21:00 PM

Previous topic - Next topic

jovid196168

Quote from: JNH1277 on March 14, 2018, 05:00:56 AM
Hi guys,
    I am going to make this project from scratch.  Really looking fwd to making this.  I have started a course on Arduino to get my head around it.  If anyone has a complete guide to how the chewie 2 is made would be most appreciated.  Eg wiring diagram etc.  I let you know how I go :)

I am still making this project, I had a few months where I didn't do anything on the project. Recently started work on it again. I have added a neopixel ring, and started to program it with state changes. I'm not familiar programming with arduino but I have been reading examples online and tutorials. If anyone could possibly help out as I am close to finishing this, that would be great. Thank you!

JNH1277

#81
Hey jovid,
      I am doing a course on Arduino, and will be learning to program as well!!  Anything I learn, I may be able to pass on to you later.  Are you able to post your up to date wiring diagram for the arduino please.  Would help when learning the course.  Also did you find out how to hook up the screen on the left of the pedal board.  Is this a wave form of his loop, and do you know if this can be set up in Mobius as well.  Do you think his new rigg is using mobius?  Any help would be great man :) The Neopixel ring would look awesome!!  Do you have any recent pics of the rigg??  This is my current rigg below. Also got a layout of how it works :)









jovid196168

Hello, sounds great I'd love to do a course and be able to learn but I don't always have much time with work and other things. Wiring hasn't changed much, only thing that has changed is the wiring of the pedals because the original schematic has buttons. I have now changed these for pedals and also added jack adaptors for the pedals. And I have added a bro pixel ring and removed the led. I am currently trying to program the pixel ring with state changes but that is becoming a fair task as I don't have much experience in programming. I haven't added screen yet as I'm not 100% sure how to power them with the arduino (I have a bit of an idea) and secondly I need to look into how to connect a couple of screens together. Yes the left screen is a waveform of whatever track is playing/recording. It can't be setup in mobius because mobius doesn't have the interface within the program. Ed's Chewie II is running another software, because it's a different firmware. I have found the company who designed and created his pedal board. It is pointless asking them any questions about the Chewie II because I remember reading that they signed something to keep their mouths sealed about it. But I can't seem to find it now. My setup ain't anything special it's rough and it's still in the prototyping stages. I'm desperate to finish this project now because this has gone on for over a year now.


Sent from my iPhone using Tapatalk

JNH1277

#83
Man that looks awesome!!! I have been speaking to Ed at Sonnit and he is going to make me his current model on his website.  I just wanted to purchase one off him as he has put alot of hard work into his creation and development of this rigg.  I also told him I'm going to have a crack at making it as well!!  I'm really interested in the technology side of all of this and I'm currently doing three courses including Ableton 10, C++ programming and Arduino course.  So i'm no help at the moment but later on I will be :) It sucks as I know you're really keen to get it done, but assure you I will complete this project and when I do, I will be able to pass on the knowledge or anything I'm learning to you along the way.

Also check out these two websites I came across over the net https://will.townsend.io/2018/loop-pedal and https://github.com/wtsnz/looper/blob/master/docs/masterplan.md
This guy has worked very hard as well to make a replica.  I think he's worked out the screen thing, but you need to know a little about coding so that's why I am learning C++.  I bought the full version of Ableton Suite (very expensive!!).  I'm going to host Mobius in there and with the full version, I think you might be able to customise the interface alot more and develop the waveform.

The instructor from the course said I could do it on there, so I can let you know when I get up to that section. Do you think Ed Sheeran is using mobius this time round??  Also what i'm going to do with my new rigg is set it all up so you can apply effects to your guitar and microphone all in ableton and set up the switches all on the same pedal board.  I spoke to Ed at sonnit about it, he explained how to do it.  Also he said that his wiring is the same as on the instructables site, only he has added leds and another track.  Is your looper all working?  Like Ed's from Sonnit?
If you don't mind do you have a current wiring diagram?  So I can learn from it when I get to that section of the build, would really help alot!! Keep the good work up.  We will get there :) Ps I did notice the "Crash x Teddy M" Strat.  Man that's so cool.  Funny thing I emailed the guys who made it "Crash x Teddy M", they wanted over 10K for it.  Where did you buy a replica??  I want one :)

jovid196168

Quote from: JNH1277 on March 18, 2018, 06:01:21 AM
Man that looks awesome!!! I have been speaking to Ed at Sonnit and he is going to make me his current model on his website.  I just wanted to purchase one off him as he has put alot of hard work into his creation and development of this rigg.  I also told him I'm going to have a crack at making it as well!!  I'm really interested in the technology side of all of this and I'm currently doing three courses including Ableton 10, C++ programming and Arduino course.  So i'm no help at the moment but later on I will be :) It sucks as I know you're really keen to get it done, but assure you I will complete this project and when I do, I will be able to pass on the knowledge or anything I'm learning to you along the way.

Also check out these two websites I came across over the net https://will.townsend.io/2018/loop-pedal and https://github.com/wtsnz/looper/blob/master/docs/masterplan.md
This guy has worked very hard as well to make a replica.  I think he's worked out the screen thing, but you need to know a little about coding so that's why I am learning C++.  I bought the full version of Ableton Suite (very expensive!!).  I'm going to host Mobius in there and with the full version, I think you might be able to customise the interface alot more and develop the waveform.

The instructor from the course said I could do it on there, so I can let you know when I get up to that section. Do you think Ed Sheeran is using mobius this time round??  Also what i'm going to do with my new rigg is set it all up so you can apply effects to your guitar and microphone all in ableton and set up the switches all on the same pedal board.  I spoke to Ed at sonnit about it, he explained how to do it.  Also he said that his wiring is the same as on the instructables site, only he has added leds and another track.  Is your looper all working?  Like Ed's from Sonnit?
If you don't mind do you have a current wiring diagram?  So I can learn from it when I get to that section of the build, would really help alot!! Keep the good work up.  We will get there :) Ps I did notice the "Crash x Teddy M" Strat.  Man that's so cool.  Funny thing I emailed the guys who made it "Crash x Teddy M", they wanted over 10K for it.  Where did you buy a replica??  I want one :)

It will look awesome when I finally get a case made for it, just want to take one step at a time. I was going to originally buy one from him but because I found you could make one yourself I didn't end up buying one. I know he puts a lot of hard work into them. I was talking to him last year sometime about how to get the leds to light they way they should with the pedals. I've come across one of those websites, but I do have multiple sources I can view online. I don't have a clue how to setup the dual screens but I might enquire about it. Possibly buy two displays real soon and try to get them powered through the arduino. Ableton is expensive, I have just updated to 10. Mobius wouldn't work at first but I figured out I just needed to tick a box in the preferences to get ableton to scan in the correct place for the vst. Like I said in my last post I know for a fact Ed Sheeran isn't using mobius I have found the company who helped design and create the Chewie II. They developed the pedal and the firmware all within 3 months. Yeah my looper is working. Just need to test it all again because I changed my layout on breadboard. I have my presets and scripts all setup already in ableton and mobius. Ed sonnit has 2 tutorial videos on YouTube on how to set it all up. Does get a bit confusing with the inputs. My wiring diagram is the same as the one on instructables. The only difference are the jack connectors and I've added a neopixel ring which just goes into + and - and also your data pin. Thank you, you too. I hope we do. John Matos is the artist of the crash x teddy m guitar. He is well known for creating Eric Clapton's iconic guitar. I got all the photos I could of the guitar and set to. I painted it from start to finish, cost quite a bit on paint. It's not perfect there are a few little mess ups. Spray painting it was a nightmare because I just kept messing it up. Because I had to tape some things parts of the guitar off with all the different coloured sections. Then when I peeled the tape off it also peeled the paint off. It took me about a month I think. Took longer because of the mistakes. I still need to change the pick ups inside of it and the neck on it so it is the same as Ed's. Here's my Instagram post showing some more pictures of it. If you'd like to look https://instagram.com/p/BXbKrCggZrc/



Sent from my iPhone using Tapatalk

JNH1277

#85
That's an awesome paint job!!  You should be proud!.  I've noticed you have added another track to your pedal board as well.  Is it hard to work that out how to change the wiring diagram as your original diagram only has 3 tracks?  I think I will need to buy an Arduino Mega?? Do you have any other good resources that would help with my build to other websites :)?

jovid196168

Thank you! It's not hard to add an extra track, just a case of copying one and changing the midi values to match the script of the fourth track. As to wiring it up again it's the same as the other tracks. Just need to give the program the data number pin. You will most probably need the mega as the uni doesn't have as many data pins but there are ways to expand the uno but to be honest it'll be easier just to buy a mega. I bought a Chinese copy, as long as you get a decent one it'll work the same as the official one just got to make sure you install the drivers on your pc/Mac so it works fully as in sending the programming across. What do you mean about recourses and websites?


Sent from my iPhone using Tapatalk

JNH1277

Hey, what I meant about resources is maybe other people creating the same stuff.  It's all cool :).  Think it will get easier once I learn this stuff.  You have done well to learn this stuff from scratch.  I'm really liking the challenge.  Have started my programming and arduino course and loving it!! :)

FacuuGG

hello jovid, good morning I wanted to know if you have photos of the wiring because I want to start with my pedal but I have no idea how it is done, it would be very helpful. Thank you  :)

jovid196168

Quote from: FacuuGG on April 03, 2018, 10:51:34 AM
hello jovid, good morning I wanted to know if you have photos of the wiring because I want to start with my pedal but I have no idea how it is done, it would be very helpful. Thank you  :)

Hello, all wiring is on this post. I uploaded the schematics last year. They aren't mine, but I have made a few changes with mine adding pedal jack inputs, neo pixel ring and 4 LEDs. It isn't hard to create one of these midi controllers. I'm almost at the final stage with mine but I have some programming issues with the state changes and LEDs lighting up correctly.


Sent from my iPhone using Tapatalk

JNH1277

Hi guys, 
      Started to build this project on the Arduino Mega.  Going through the code below and trying to get my head around it.  I know that Ed the from Sonnit new project has added a midi in and midi out.  I'm pretty sure the mid out is used to control the Leds from mobius itself in the script and not the Arduino itself, but unsure.  Also trying to understand the mobius scripts which i'm pretty sure you have already posted Jovid from instructables website.  It is the same one.  When i look for how to implement midi on arudino website its says to use serial.begin and used terms like serial.write (cmd), serial.write (pitch) and serial.write (velocity) whereas in his code he used midi.write and uses software serial instead of hardware serial.  I've seen forums where it says it is slow. Why does he use the software serial pins instead of the dedicated tx and rx pins dedicated to midi. Also why is he using momentory switches.  Shouldn't it be like a hit a switch to record then hit the switch again to overdub, eg on and off?  I can see that he has used an input-pullup resistor to stop a hanging switch.  I really would love anyones help that understand his code.  I understand how he names all the variable eg clearbtn etc.  I'm not sure about all the toggle buttons from 1 to 8.  Where it says pinmode pretty sure this is to set up all his pedals or momentory switches.  Not sure why digitalwrite (led, high) is repeated so many times in the void setup. 

I really would like to understand the script for one example below as it's the same for most of the code eg undo button.

if (digitalRead(undobtn) == LOW && toggle1 == 0){
    toggle1 = 1;
    if(mode == 0){
      midi.write(0x90);
      midi.write(0x41);
      midi.write(0x01);
      // delay(300);
    }

    if(mode == 1){
      midi.write(0x90);
      midi.write(0x36);
      midi.write(0x01);
      // delay(300);
    }
  }

  if (digitalRead(undobtn) == HIGH && toggle1 == 1){
    toggle1=0;
    if(mode == 0){
      midi.write(0x90);
      midi.write(0x41);
      midi.write((byte)0x00); 
      delay(300);
    }

    if(mode == 1){
      midi.write(0x90);
      midi.write(0x36);
      midi.write((byte)0x00); 
      delay(300);
    }

  }

Obviously he's using the mode button function to say whether it's in record or play mode.  But I've been looking all over the internet to help me understand this script.  Can anyone walk me through or can help me to understand his script :)

Thanks Guys

Joey

JNH1277

Hey Guys, how you all going with the build.  I'm just at the last stages of the build before I put it all together.  I'm also at the stage of programming mobius scripts to change the leds.  Just building my midi in circuit on the arduino and should be nearly there.  Has anyone found out how to do this??  This is what I found out on mobius website under scripting.  7.5.8 MidiOut
MidiOut can send any MIDI message to the configured MIDI output device. This function is accessible only from scripts. The MIDI message to send is specified with up to four function arguments. The syntax is:


    MidiOut <status> <channel> <value> <velocity>

    status: noteon noteoff control program stop start continue

    channel: 0-15

    value: 0-127

    velocity: 0-127

For example, to send a Note On event on channel 3, note 64, velocity 127, you would write:


    MidiOut noteon 3 64 127

This function does not change the current loop and has no effect on major or minor modes.

So maybe just need to add that to parts of the scripts then need to do some programming back in the arduino IDE to read these changes and light up the LED.

Let me know if anyone of you have worked this out.

jovid196168

My build has come to a stop because I don't know how the LEDs are controlled. I didn't know if it was through the Arduino programming with state changes or just though the scripts. Been meaning to get in contact with Ed from Sonnit pedals but I don't think he'd share how he got his to function. So if anyone could possibly share on how that works or can get it to work. That would be amazing. Sorry I haven't been on here awhile


Sent from my iPhone using Tapatalk

JNH1277

I've build my midi in circuit and it works.  I'm on to it buddy.  As soon as I work it out i'll let you know :)

jovid196168

Quote from: JNH1277 on April 26, 2018, 07:40:42 AM
I've build my midi in circuit and it works.  I'm on to it buddy.  As soon as I work it out i'll let you know :)
Great glad to hear it, have to let me know how you get on. DM me or email me


Sent from my iPhone using Tapatalk

MarshallArts

Quote from: JNH1277 on April 26, 2018, 07:40:42 AM
I've build my midi in circuit and it works.  I'm on to it buddy.  As soon as I work it out i'll let you know :)
I am also interested in your solution - could you post it here?

jovid196168

I've began having another go at programming the LEDs using case statements. Someone suggested to use arrays but I'm new to all this. At the moment I have managed to write a program to make a led turn red and green then back to off. So at least I have got somewhere with this. But I'm now confused as to how I program the rest of the buttons to knock the LEDs on and off when appropriate. If anyone knows how to do this hit me up.

MarshallArts

Quote from: jovid196168 on May 29, 2018, 10:15:22 AM
I've began having another go at programming the LEDs using case statements. Someone suggested to use arrays but I'm new to all this. At the moment I have managed to write a program to make a led turn red and green then back to off. So at least I have got somewhere with this. But I'm now confused as to how I program the rest of the buttons to knock the LEDs on and off when appropriate. If anyone knows how to do this hit me up.

First of all, I would draw a flowchart to see what should happen to all LED's for all possible events. Currently, I have Mobius running, integrated the scripts available from the sonnit site (and some functions for Clear, Undo, Multiply, Global Reset) and mapped them to a midi keyboard. I will use this, to reverse engineer the processes (e.g. how to reactivate only two of the four tracks after you completely stopped all loops).

To save I/O-Pins, I will try to come up with a schematic for multiple buttons on one I/O pin. I have done that successfully for a TC Helicon Switch 6 Knock-Off, should not be too complicated (especially, as we are not using combinations of buttons). Check this: http://www.instructables.com/id/How-to-Multiple-Buttons-on-1-Analog-Pin-Arduino-Tu/


jovid196168

That's exactly what I was thinking, drawing it out will help me visualise it better cause at the moment the pedal is completely confussing me with the LED outcomes. I've just tested my pedals out with mobius 2 to try and get used to all the functions but for some reason I can't get undo  to work. I've tried re mapping it and also going into parameters and allowing # max undo's. I record on one track and press the undo pedal and it does nothing. I know the midi command is being sent because it shows on the midi indicator on my audio interface. The undo button on mobius 2 kind of works. Works if I press it a couple of times in mobius 2. Anyone have any ideas? I was lazy with all the I/O pedals, I and just bought a Arduino mega.

MarshallArts

#99
I've rewritten the code, using the built-in serial port 1 (UART) of an Arduino Nano rather than the software serial library (SoftwareSerial.h). For further information on this topic check here: https://www.arduino.cc/en/Reference/SoftwareSerial

Furthermore, I reduced the lines of code by introducing a function for the serial communication (it also uses less variables, making it easier to understand). I also commented the code. It does neiter include Midi-Feedback from Moebius nor Pins for LEDs for the tracks. Here is the code: https://drive.google.com/open?id=1x2bRlsrL9TPiF5MLKEPRdP8Nz_l5_N0E

###############################

int clearbtn = 2;
int undobtn = 3;
int x2btn = 4;
int resetbtn = 5;
int recordbtn = 6;
int stopbtn = 7;
int modebtn = 8;
int track1btn = 9;
int track2btn = 10;
int track3btn = 11;
int track4btn = 12;

int led = A0;

//Variables for Mode Toggle
int mode = HIGH;      // the current mode: LOW=Play mode, HIGH=Rec Mode
int reading;           // the current reading from the mode button
int previous = LOW;    // the previous reading from the mode button
long time = 0;         // the last time the output pin was toggled
long debounce = 150;   // the debounce time, increase if the output flickers


int postpressdelay = 300;
int midichannel = 0x90; //Midi Channel 1

void setup()
{
  pinMode (clearbtn, INPUT_PULLUP);
  pinMode (recordbtn, INPUT_PULLUP);
  pinMode (stopbtn, INPUT_PULLUP);
  pinMode (modebtn, INPUT_PULLUP);
  pinMode (undobtn, INPUT_PULLUP);
  pinMode (resetbtn, INPUT_PULLUP);
  pinMode (x2btn, INPUT_PULLUP);
  pinMode (track1btn, INPUT_PULLUP);
  pinMode (track2btn, INPUT_PULLUP);
  pinMode (track3btn, INPUT_PULLUP);
  pinMode (track4btn, INPUT_PULLUP);

  pinMode (led, OUTPUT);

  Serial.begin(31250); //MIDI:31250 // SERIAL MONITOR:9600
}

void loop()
{
  // ################### DETERMINE MODE AND SEND MODE CHANGES ########################
  reading = digitalRead(modebtn);
  if (reading == LOW && previous == HIGH && millis() - time > debounce)
  {
    if (mode == LOW)
    {
      mode = HIGH;
      Serial.write(midichannel);
      Serial.write(0x24);             //NOTE: C1 triggers script: PLAY MODE MODE
      Serial.write(0x45);             //medium velocity = Note ON
    }
    else
    {
      mode = LOW;
      Serial.write(midichannel);
      Serial.write(0x2B);             //NOTE: G1 triggers script: RECORD MODE MODE
      Serial.write(0x45);             //medium velocity = Note ON
    }
    time = millis();
  }
  previous = reading;
  digitalWrite(led, mode);           //LED is lit in record mode

  // ######################### COMMANDS IN ANY MODE ANY MODE #########################
  if (digitalRead(clearbtn) == LOW) sendNote(0x1E);         //NOTE: F#0 triggers function: CLEAR
  if (digitalRead(resetbtn) == LOW) sendNote(0x1F);         //NOTE: G0 triggers function: GLOBAL RESET
  if (digitalRead(x2btn) == LOW) sendNote(0x20);            //NOTE: G#0 triggers function: MULTIPLY
  if (digitalRead(undobtn) == LOW) sendNote(0x21);          //NOTE: A0 triggers function: UNDO

  // ######################### COMMANDS IN REC MODE #########################
  if (mode == HIGH)
  {
    if (digitalRead(recordbtn) == LOW) sendNote(0x22);         //NOTE: A#0 triggers script: RECORD MODE REC-PLAY
    if (digitalRead(stopbtn) == LOW) sendNote(0x23);           //NOTE: B0 triggers script: RECORD MODE STOP
    if (digitalRead(track1btn) == LOW) sendNote(0x25);         //NOTE: C#1 triggers script: RECORD MODE TRACK1
    if (digitalRead(track2btn) == LOW) sendNote(0x26);         //NOTE: D1 triggers script: RECORD MODE TRACK2
    if (digitalRead(track3btn) == LOW) sendNote(0x27);         //NOTE: D#1 triggers script: RECORD MODE TRACK3
    if (digitalRead(track4btn) == LOW) sendNote(0x28);         //NOTE: E1 triggers script: RECORD MODE TRACK4
  }

  // ######################### COMMANDS IN PLAY MODE #########################
  if (mode == LOW)
  {
    if (digitalRead(recordbtn) == LOW) sendNote(0x29);         //NOTE: F1 triggers script: PLAY MODE REC-PLAY
    if (digitalRead(stopbtn) == LOW) sendNote(0x2A);           //NOTE: F#1 triggers script: PLAY MODE STOP
    if (digitalRead(track1btn) == LOW) sendNote(0x2C);         //NOTE: G#1 triggers script: PLAY MODE TRACK1
    if (digitalRead(track2btn) == LOW) sendNote(0x2D);         //NOTE: A1 triggers script: PLAY MODE TRACK2
    if (digitalRead(track3btn) == LOW) sendNote(0x2E);         //NOTE: A#1 triggers script: PLAY MODE TRACK3
    if (digitalRead(track4btn) == LOW) sendNote(0x2F);         //NOTE: B1 triggers script: PLAY MODE TRACK4
  }
}

void sendNote(int pitch)
{
  Serial.write(midichannel);
  Serial.write(pitch);
  Serial.write(0x45);                //medium velocity = Note ON

  delay(postpressdelay);
}


##########################




Although the mapping is mentioned in the code as well, here is a screenshot of the mapping in moebius:



Here is a schematic of my breadboard setup - as said above, it only uses one b-colour-common-cathode LED for the selected mode, that only uses one arduino GPIO-Pin to toggle the colour (it will always be on, so it's a power indicator as well).