The Time Manipulator is a programmable Arduino based Delay/Echo/Reverb guitar pedal. It uses two PT2399 delay integrated circuits to archive up to 600ms delay. Also, with the help of 4 analog switches, the internal configuration of the pedal can change: placing the PT2399 delay chips in series or parallel and adding extra features:

The code for the Arduino chip is programmed in C and it is Open-Source, so users can re-program the functionality or add new effects and share them in the forum. There are 9 effects included by default in the pedal: short delay, delay, echo, reverb, tap echo, chorus, telegraph, accelerator, and psycho. The schematic and bill of materials are public, the circuit was designed using easy-to-find and through-hole components.

Arduino Time Manipulator Features

 Time Manipulator Specifications:

  • True Bypass.
  • Based on Arduino UNO ATMEGA328P-PU (8MHz, 1KB RAM) microcontroller.
  • Analog input/output stages using MCP6002 operational amplifiers.
  • Interface:
    • 1 Mix knob (blends dry and wet signal)
    • 1 Tails Knob (adjust the number of echo repetitions)
    • 1 Tap foot-switch (programmable)
    • 1 3PDT True Bypass foot-switch
    • 1 Encoder knob + Push Button
    • 2 x Dual color LEDs (programmable). 
  • Connectors:
    • Input Guitar Jack, 1/4 inch unbalanced mono, Zin=1MΩ.
    • Output Guitar Jack, 1/4 inch unbalanced mono, Zout=0.1Ω.
    • Power supply: standard 9V Boss connector (center tip positive)

 

Time Manipulator photo

 

Documentation Available:

 

Time Manipulator Review by BlitzCityDIY:

Have a look to the deep Blitz City DIY review on the pedal:

 

 

The Time Manipulator Schematic:

The circuit  can be broken down into 6 simple blocks: Power Supply, Input Buffer, Dual PT2399 Delay Stage, Output Adder, Analogue Switches, and the Arduino Block:

Arduino Time Manipulator schematic parts

The main tasks of the circuit parts are:

  • Power Supply: generates energy (+9V and +5V) and bias voltage (+4.5V) for all the circuit.
  • The Input Buffer is an op-amp with gain=1. It will present a high input impedance (Zin=1) and prepare the signal for the rest of the circuit.
  • Dual PT2399 Delay Stage: The two PT2399 in the classic Delay configuration can create a delay from 30 to 600ms approx.
  • Arduino Controlled Current Sink: The Arduino microcontroller controls the amount of delay with a PWM signal. The op-amp current sink is used to transform the PWM into current thus delay that the PT2399 will have.
  • The Output Adder: it will give a low output impedance to preserve the sound quality on the pedal chain. Its main task is to blend the original guitar signal together with the different delay paths or "taps".

If you want to understand all the circuit details and values, please check the Time Manipulator Circuit Analysis in the forum.

Time Manipulator Block Diagram

A Morphing Circuit:

The Time manipulator uses 4 analog switches (CD4066). They will allow the signal to follow different paths and create different sounds. You will have the possibility to place the PT2399 in series (extending the time and definition of the delay time) or in parallel (creating different sounds like reverb or chorus/delay).

The principal configurations are:

Time Manipulator Relay Configurations

 Briefly going over the most important configurations, we have:

  • Short Delay: The first PT2399 is not used, this mode archive delays from 30ms to 300ms approx. Simple and clean.
  • Delay: This is the basic configuration, the 2 PT2399s are used in series, getting delays from 60ms to 600ms approx. The Tails pot will add more depth to this mode.
  • Echo Mode1 and 2The basic Delay mode could be enriched, adding extra tap paths for the signal.
  • Super Echo: All the relays are on, giving a no-stopping bouncing sound. 
  • Parallel - Chorus: The two delay units are placed in parallel, using subtle different delay times on each one will give a chorus-like sound.
  • Reverb: The idea is to add to the original guitar signal two paralleled delayed copies (mimicking the signal bouncing over 2 walls). The delays need to be short here to have a realistic effect.
  • Telegraph: All the relays are OFF and we the foot tap we can control the dry signal going through the pedal. 

 

Time Manipulator Room

 

Programming the Time Manipulator:

To make the programming as easy as possible, we use the standard Arduino IDE. All the effects are programmed on C using the standard Arduino functions. All tools and programs are free-of-charge/Open Source. 

Basic knowledge of C is needed to understand the codes. We have created some content to help you to understand how to program and create codes:

 

The best way to illustrate how to program it's by showing a simple Echo Effect example:

time manipulator sowtware diagram

The real code looks like this:

// Pin Definitions: 
#define DELAY1 10
#define DELAY2 9
#define SWA 3
#define SWB 14
#define SWC 2
#define SWD 4 
#define LED1_G 1 
#define LED1_R 0
#define LED2_G 5
#define LED2_R 6
#define ENC_A 16
#define ENC_B 18
#define ENC_GND 17
#define ENC_PUSH 19
#define BYPASS_DETECT 8
#define TAP_DETECT  15

//VARIABLES
unsigned int ENC_counter = 100; 
int ENC_aState;
int ENC_aLastState;  
int ENC_aState_selection=0;
int ENC_aLastState_selection=0;
void read_encoder(void);
  
// the setup function runs once when you press reset or power the board
void setup() 
{
//set the pins //init the values
pinMode(DELAY1, OUTPUT);    analogWrite(DELAY1, 100);
pinMode(DELAY2, OUTPUT);    analogWrite(DELAY2, 100);
pinMode(SWA, OUTPUT);       digitalWrite(SWA, LOW);
pinMode(SWB, OUTPUT);       digitalWrite(SWB, LOW);
pinMode(SWC, OUTPUT);       digitalWrite(SWC, LOW);
pinMode(SWD, OUTPUT);       digitalWrite(SWD, LOW);
pinMode(LED1_G, OUTPUT);    analogWrite(LED1_G, 0);
pinMode(LED1_R, OUTPUT);    analogWrite(LED1_R, 0);
pinMode(LED2_G, OUTPUT);    analogWrite(LED2_G, 0);
pinMode(LED2_R, OUTPUT);    analogWrite(LED2_R, 0);
pinMode(ENC_A, INPUT_PULLUP);
pinMode(ENC_B, INPUT_PULLUP);
pinMode(ENC_GND, OUTPUT);
pinMode(ENC_PUSH, INPUT_PULLUP);
pinMode(BYPASS_DETECT, INPUT_PULLUP);
pinMode(TAP_DETECT, INPUT_PULLUP);
ENC_aLastState = digitalRead(ENC_A); 
}


void loop() // the loop function runs over and over again forever
{
//detect if the effect is on or off
while((digitalRead(BYPASS_DETECT) == LOW)) 
  {
  digitalWrite(LED1_R,LOW);digitalWrite(LED2_R,LOW);digitalWrite(LED1_G,LOW);digitalWrite(LED2_G,LOW); 
  }  
  
read_encoder();
//update the delay value based on the encoder reading
analogWrite(DELAY1, ENC_counter);
analogWrite(DELAY2, ENC_counter);
//update the LED colors
digitalWrite(LED1_G, HIGH); digitalWrite(LED2_G, HIGH);digitalWrite(LED1_R,LOW);  digitalWrite(LED2_R,LOW);    
//set the audio relay
digitalWrite(SWA, HIGH);digitalWrite(SWB, HIGH);digitalWrite(SWC, HIGH);digitalWrite(SWD, HIGH);
}

void read_encoder(void)
{
 ENC_aState = digitalRead(ENC_A); // Reads the "current" state
   if (ENC_aState != ENC_aLastState)
   {    
     if (digitalRead(ENC_B) != ENC_aState) 
          {if(ENC_counter>50)ENC_counter-=5;}
     else 
          {if(ENC_counter<230)ENC_counter+=5;}   
   } 
ENC_aLastState = ENC_aState; // Updates the prev. state 
}

Short Description of the code:

  • Lines 1 to 17: Define the pin names, so it is easier to refer to the pins during the code. Have a look at the ATMEGA328P-PU pinout if you have any question.
  • Lines 19 to 25: Define variables used in the program, in this case, all of them are used for reading encoder
  • Setup (lines 28 to 48): set the microcontroller pins as inputs or outputs and assign a default value (high or low)
  • Loop (lines 51 to 80): The main loop is executed running, again and again, it has 5 main tasks:
    • Check the True Bypass Footswitch and activate or deactivate the effect.
    • Read the encoder: the read_encoder function is explained on the Arduino website.
    • Update the amount of delay depending on the encoder value using analogWrite. The recommended values are between 50 (min delay) delay and 230 (max delay).
    • Update the LED colors (both green in this example) and the audio relays configuration (all are ON in this example)

Time Manipulator Pedal axo

Buy Time Manipulator Online:

There are 2 options in the shop:

  • Order only the PCB. It uses easy to find through-hole components and you can build the kit yourself using the public Bill of Materials.
  • Order the Full Kit: This kit includes the PCB, Cover and all the components to build the Time Manipulator at home.

 

Time Manipulator Components List:

If you have any question, contact us.

Time Manipulator - Bill of Materials 
Reference Description Manufacturer/Mouser PN Manufacturer
Units Resistors
1 R2 5KΩ Res 1%, 1/4W MFR-25FRF52-4K99 Yaego
1 R1 1MΩ Res 1%, 1/4W MFR-25FRF52-1M Yaego
26 R3, R4, R5, R6, R7, R8, R9, R10, R11, R12,
R13, R14, R15, R16, R17, R18, R19, R20,
R21, R22, R23, R25, R28, R29, R30, R31
4.7KΩ Res 1%, 1/4W MFR-25FRF52-4K7 Yaego
2 R26, R27 470Ω Res 1%, 1/4W MFR-25FRF52-470R Yaego
2 RV1, RV2 10K linear pot 16mm RV16AF-41-15R1-B10K-3 Yaego
Capacitors
18 C2, C3, C4, C5, C6, C8, C9, C12, C17, C21,
C22, C24, C27, C36, C37, C38, C39, C41
47uF REA470M1CBK-0511P Lelon
4 C7, C15, C23, C29 6.8nF SR211C682MARTR1 AVX
15 C1, C10, C13, C16, C18, C19, C20, C25,
C30, C31, C32, C33, C34, C35, C40
100nF SR211C104KARTR1 AVX
4 C11, C14, C26, C28 3.3nF SR215C332MARTR1 AVX
Diodes
1 D1 1N5817 511-1N5817  STMicroE
2 D2, D3 TLUV5300 TLUV5300 Vishay
Semiconductors
2 Q1, Q2 2n5089 610-2N5089 Central
2 U1, U5 MCP6002 MCP6002 Microchip
2 U3, U6 PT2399 eBay-Amazon-Tayda-etc Princetown
1 U2 LM7805 926-LM7805CT/NOPB Ti
1 U4 CD4066 595-CD4066BE Ti
1 U7 ATMEGA328P-PU 556-ATMEGA328P-PU Atmel
Dip Sockets x 6
Other
1 ENC1 (Encoder) Encoder with Switch RE111F-41B3-25F-15P (Rapid) Alpha
2 J2, J7 1/4 Stereo Jack NMJ6HCD2 Neutrik
X J2, J4, J5, J6, J7, J9, J10, J8, J40 DNF Connectors  22AWG solid wire
1 J12 SPDT Toggle Switch SF12011F-0202-20R-M-027 (Rapid) Alpha
1 SW5 3PDT Footswitch 107-SF17020F-32-21RL Alpha
1 J1 2.1mm power Jack 163-4302-E Various
1 Enclosure Hammond 1590BBSLG Any color from 1590BBS series Hammond
1 Board to board connector FSN-21A-10  22AWG solid wire also possible TE
1 Interconnection wire 25cm 22 AWG solid core wire Various
3 Knobs Davies 1510 model 1510AH Davies
2 Led Holders 5mm LED Metal Holders 485-2176 Adafruit
1 Time Manipulator PCB Printed Circuit Board Time Manipulator ElectroSmash
1 Sticker Labels Time Manipulator Sticker ElectroSmash

Thanks for reading, all feedback is appreciated: This email address is being protected from spambots. You need JavaScript enabled to view it.

   

 Some Rights Reserved, you are free to copy, share, remix and use all material.
Trademarks, brand names and logos are the property of their respective owners.


Joomla SEF URLs by Artio