Traktor Hotcues on the Lemur

An iOS version of Lemur was made available in the App Store in December 2011. The app runs on iPhone/iPad and you can load your own custom interface for any MIDI or Touch OSC compatible software. Lemur editor (a free download from the LIINE website (liine.net/en/support) can be used to create the interface. One of the cool features of Lemur is its integrated script language (similar to the C programming language). By writing some lines of script code, incoming MIDI messages can be processed and used to change the interface dynamically.

I have been working on a Traktor mapping for Lemur on the iPad for some time. Unfortunately this takes more time than expected and the mapping is not yet in a state to publish it in the mappings section on traktorbible.com: Here is a screenshot from the current state of the main interface:

Example of a Lemur template for Traktor

Next to the main interface, the template contains a page to control the Traktor sample decks and another one I use to beatgrid my tracks.

While I am working on the mapping and the template you will find some tutorials here on traktorbible.com that dig deeper into some selected aspects of mapping for the Lemur.

This advanced tutorial shows how to synchronize the colours of the Lemur hotcue pads (the six buttons for each deck in the lower part of the screenshot above) with the colours that Traktor uses for the different hotcue types. To understand this tutorial you should have some basic knowledge about creating Traktor mappings and using the Lemur editor. It is also helpful to understand the structure of the different MIDI messages as explained in chapter 5 of Traktor 2 Bible.

At the end of this tutorial you will have created a Lemur template and a Traktor mapping for the hotcues of deck A and B where the pads on the Lemur use the colours Traktor assigns for the different hotcue types.

The Lemur template fort his tutorial

You can download the complete Traktor mapping and the Lemur template here.

The Steps in this Tutorial:

Step 1: Creating the basic Lemur interface

In the first step we will use the Lemur Editor to create the interface for the mapping.

  1. Start Lemur Editor.
    Lemur Editor shows an empty project.
  2. Click in the Project Panel on Create Interface.
    Enter a name for the interface and click OK.
  3. Drag a container object from the object palette onto the interface.
    The container object will be used to put a border around the pads object. Pads with no hotcue assigned shall be shown in black. Without the border the different pads of the multi pad object would not be clearly visible.
  4. Make sure that the container object is selected. Go to the Properties panel and enter Deck A in the name field and set the colour to white.
  5. Drag a Pad’s object into the container you just created. Go to the Properties panel and enter Hotcues into the name field. Use the fields Columns and Rows to create a Pads object with eight pads, by using Rows=1 and Columns=8 or Rows=2 and Columns=4 for example.
  6. Activate the Numbers checkbox.
    In Lemur editor the individual pads of a multipad object have index values starting with zero for the first pad. Once you activate Numbers you will see the numbers 0 to 7 seven on the pads. We will use the index of a single pad later to change its colour.
  7. Activate the checkbox Multilabel.
    This is necessary as we wish to display the numbers from 1 to 8 on the individual pads. When Multilabel is not active it is not possible to change the individual labels of the pads.
  8. Activate the checkbox Multicolor.
    You need to activate the Multicolor property if you wish to assign different colours to the individual pads of the Pads object. And that’s exactly what we want to do.
    Properties of the Pads object

  9. Select a bright colour for the Color On property. For multipad objects this will be the colour shown while the pad is pressed.
  10. Go to the Mapping panel and select the MIDI target you are using. The MIDI target you select here needs to match the MIDI target configured in the Lemur app. I use MIDI 0.
  11. Open the list Message and select Control Change. Enter a 0 into the field Controller and press the tab key to move the cursor into the field To. Lemur editor automatically enters the number 7. Now each pad has its own controller value in the range from 0 to 7.
    The project in Lemur Editor should now look as shown in the following figure:
    User Interface of Lemur Editor
  12. Repeat steps 3 to 10 and create a Container object with an embedded Pads object for deck B. When setting the controller values for the Pads object use 8 to 15 (instead of 0 to 7 that were used for deck A).

 

Step 2: Creating the Traktor Mapping

Creating the mapping for the eight hotcues of deck A and deck B is pretty straightforward. To select and set the hotcues you use the command Cue Loops | Select/Set + Store Hotcue eight times for each hotcue and each deck.

When your iPad is connected to your computer and when the correct port is selected in Controller Manager you can use the Learn button to learn the incoming MIDI messages. Once the MIDI message is learnt make sure, that the correct hotcue is selected in the list Set to value and that the correct deck is selected in list Assignment.

The mapping for the eight hotcues of deck A can be seen in the following figure:

Hotcue mapping in Traktor

Let’s add the outgoing MIDI messages for the hotuces where Traktor transmits the type of each hotcues. Each of the eight hotcues has its command, Hotcue1 State to Hotcue8 State. You find this in the submenu Add Out/Output.

When you add one of these commands section LED output looks like shown here:

Default settings in section LED Output for hotcue states

The values in the fields Controller Range/Min and Controller Range/Max correspond to the internal numbers Traktor uses for the different hotcue types. Check the first two columns in the following table:

The values in the two MIDI Range fields are the values Traktor sends in the second data byte of a control change message. (The first data byte contains the controller number. Please check pages 100 and 101 for more information about the structure of the control change messages.)

Enter the number 6 into the field Midi Range/Max. With this change one hotcue type corresponds exactly to one MIDI value sent to the Lemur (see third column in the table above). We will evaluate this MIDI value later in a little Lemur script and use it to assign the correct colour to the corresponding pad.

The rest is simple. You need to add all 16 Hotcue X State commands and then use the same MIDI message (i.e. channel and controller number) that you use for the corresponding In commands.

The mapping for all eight out commands for deck A is shown in the following figure:

HotcueX State commands in Controller Manager

 

Step 3: Preparations for the Lemur script code

Now we come to the exciting part. In steps 3 and 4 we will write the Lemur script code to set the colours of the pads to the colours that Traktor uses for the hotcues. Let’s start with the definition of the colour values.

Lemur templates can contain expressions. With Lemur an expression is a single-line piece of code that can be used to define variables or to do some maths. In our case we will use expressions to store the colour values as variables. (This is done because the complete template has its own track preparation page. This page contain buttons to set hotcues and the buttons will use the same colours.)

  1. Go to the Project panel and click on Create Expression. Lemur editor opens a dialog box with the same name.
  2. Enter HotcueNone and click OK. The new expression is shown below the Project node of the Project panel and its name is selected. Below the interface editor you can enter the code for this expression.
  3. Enter RGB(0,0,0) into the text field of the script editor (i.e. after the equal sign). RGB is one of the integrated Lemur functions. It converts the Red, Green and Blue parameter values into an integer that Lemur can use as a colour value. The expression RGB(0,0,0) results in Black.
  4. Repeat steps 1 to 3 for the other colour values from the following table:
    RGB values for the hotcues

  5. Create another expression and name it HotcuesRGB.
  6. Enter the following code into the text field of the script editor:
    {HotcueNone, HotcueCue, HotcueFade, HotcueFade, HotcueLoad, HotcueGrid, HotcueLoop}

The Project panel should look like this now:

="Project

Please make sure to embed the expression into curly brackets. This expression defines an array that stores the colour values of all Traktor hotcue types. You can access this array by using an index. The first index of the array is zero. By using HotcuesRGB[0] we retrieve the colour value for “no hotcue set” as this is the first element of the array. The index matches to the MIDI value Traktor is sending to our Lemur template for “no hotcue set”. By using HotcuesRGB[4] we get the fifth element of the array, i.e. the colour value of HotcueLoad.

Again, the index matches to the MIDI value Traktor is transmitting in the control change message. In order to get an exact match between MIDI values and index the constant HotcueFade was added twice to the array HotcuesRGB, because Traktor distinguishes between Fade In and Fade Out hotcues. However, our Lemur template will use the same colour for both Fade hotcues.

 

Step 4: Writing the script code to set the colour of the hotcue pads

When all actions from steps 1 to 3 are done the only thing we need is a bit of script code that performs the colour change of the pads. Traktor automatically sends a MIDI message for Hotcue X State when ever the type of a hotcue is changed.

On the Lemur side we therefore need a bit of script code that is executed when one of the 16 MIDI messages we defined in step 2 is sent. This is how to add the script code:

  1. Go to the Project panel of Lemur editor and click on Create Script. Lemur editior opens a dialog box with the same name.
  2. Enter ProcessHotcues into the text field and click OK.
    You can tell Lemur when a script shall be run. The default setting is Manual.
  3. Open the list Execution and select On MIDI.
    Execution menu

  4. Once you set Execution to On MIDI Lemur editor shows more fields next to Execution. You can use these fields to configure, which incoming MIDI messages shall be sent to the script code.
    • Open the list Message Type and select Control Change. This is the message type used in the Traktor mapping build in step 1.
    • Open list MIDI Target and select Midi 0. This is the target we set for the pads in the Lemur template.
    • The next two fields depend on the message type. For Note On/Note Off messages (not used here) enter the notes that shall be processed by the script. For Control Change messages (which we use here) enter the controller numbers. As the Traktor mapping from step 1 uses the controller numbers 0 to 15, you need to enter 0 and 14.
    • The last two fields are used to set the number(s) of the MIDI channel(s) the messages are using. As all messages in the Traktor mapping from step 1 are sent on channel 1, enter 1 into both fields.

Parameters for script execuition on MIDI

Here is the script code you need to enter in to the Script editor:

Complete script code

The script code needs to determine three pieces of information to set the correct pad to the correct colour:

  • Is the incoming MIDI message related to the Pads object DeckA or to the object DeckB?
  • Which pad (=which hotcue) in the determined Pads object needs to get colour changed?
  • Which hotcue type has pad now got?

The first two statements of the script code declare two variables: The variable idxPadNo is used to store the index of the pad in the Pads object that colour needs to be changed. Because both Pads objects contain eight pads, and because the first pad of a Pads object has index 0, the value of the variable will be later in the range between 0 und 7.

As the script shall be executed for the hotcues of deck A and deck B we store the Pads object that needs to be changed in the variable objHCPad.

Both variables are assigned in the following if else block:

if (MIDI_ARGS[0] >= 0 && MIDI_ARGS[0] <= 7)
{
      objHCPad = DeckA.Hotcues;
      idxPadNo = MIDI_ARGS[0];
}
else if (MIDI_ARGS[0] >= 8 && MIDI_ARGS[0] <= 15)
{
      objHCPad = DeckB.Hotcues;
      idxPadNo = MIDI_ARGS[0] - 8;
}

We can use the integrated Lemur variable MIDI_ARGS to access the data bytes in the incoming MIDI message. For Control Change messages the first data byte contains the controller number. To access the first data byte we use MIDI_ARGS[0]. The Traktor mapping use the controller numbers 0 to 7 for deck A and 8 to 15 for deck B. If the first data byte (=MIDI_ARGS[0]) contains a value in the range from 0 to 7 then the MIDI messages is related to deck A and we store the object DeckA Hotcues in the variable objHCPad. If the first data byte contains a value in the range from 8 to 15 then the MIDI message is related to deck B and we store DeckB.Hotcues in objHCPad. (Because the Pads objects are embedded inside a container, we need to use the name of the container and the name of the object; both elements are combined by a dot.)

The second action done in the if else block is determines the index number of the pad. As mentioned above the Traktor mapping uses the controller numbers 0 to 7 for deck A. If the value in MIDI_ARGS[0] is related to deck A then this value can be assigned to idxPadNo.

The Traktor mapping uses the controller numbers 8 to 15 for deck B. Because the index of the pad must be in the range between 0 to 7 we simply subtract 8 from the value in MIDI_ARGS[0] to get the correct index.

Example: Controller number 10 equals to hotcue 3 of deck B in the Traktor mapping; 10 minus 8 equals 2; and index 2 is the third pad in the Pads object.

The last four lines in the script code put the colour attribute of all pads in the Pads object and then change the one pad that needs to be changed. The lines in detail:

decl currentColors = getattribute(objHCPad, 'colors');
This statement uses the Lemur function getattribute(). The first parameter for getattribute must be the object, which attribute shall be retrieved. In our case we use the variable objHCPad that has been assigned in the if else block. The second parameter is the name of the attribute. The attribute colours returns for Pads objects an array; each element of the array contains the current colour value of one pad.

decl idxHCType = MIDI_ARGS[1];
In this statement the hotcue type (which we get in the second data byte of the MIDI message = MIDI_ARGS[1]) is assigned to the variable idxHCType. The value in MIDI_ARGS[1] is in the range from 0 to 6; thus in the range we configured as MIDI range in the Traktor mapping for the Hotcue X State commands.

currentColors[idxPadNo] = HotcuesRGB[idxHCType];
This statement changes the colour of one pad in a Pads object. currentColors contains the colour values of all pads in one Pads object. The index idxPadNo was set inside the if else statement. HotcuesRGB is the array that was defined in step 3. With HotcuesRGB[idxHCType] we access the colour value in the array that corresponds to the hotcue type Traktor has sent in the MIDI message. This statement thus changes only one value in the array currentColors. After the execution of this script line all eight values in currentColors correspond to the current hotcue types of that Traktor deck.

setattribute(objHCPad, 'colors', currentColors);
The last statement uses the Lemur function setattribute() to set the colours of all pads of the Pads object. This step is necessary because changing one attribute, that has values stored in an array, requires thee actions: Determining of all the attribute values of the array (in our example the eight colours of each pad); changing a single value and then assigning all attributes back to the object. And exactly this last action is done by the last line of the script code.

 

Step 5: Initializing the Lemur template

In this last step we will create a script that shall be executed when the Lemur app loads our template. This script ensures that the colour of all pads is set to HotcueNone and that the pads of each Pads object are labelled with the hotcue numbers (1 to 8) and not with the index of the pad.

  1. Go to the Project panel in Lemur editor and click on Create Script. Lemur editor opens the dialog box Create Script.
  2. Enter Initialize into the textbox and click OK.
  3. Open the list Execution and select On Load.
  4. Enter the following code into the script editor:
    Initialization script code

The first two lines use the Lemur function setattribute() to set the attribute color to HotcueNone. Please note that the attribute 'color' sets the colour for all pads of a Pads object and that attribute 'colors' can be used to change the colour of one pad (see step 4).

The last two lines use setattribute() as well. Here the attribute 'labels' is used and the text for the eight pads of both Pads objects is set to the numbers 1 to 8.

Go to the Properties panel of the Lemur editor and deactivate the Numbers checkbox. This disables the automatic numbering of the pads and ensures that only the numbers set with setattribute() are visible.

 

Perspectives

The next tutorial covering the creation of Lemur templates for Traktor will show how to output the current FX parameter values, which Traktor shows in Single FX mode below the knobs/sliders on the Lemur. An example can be seen in the screenshot at the beginning of this tutorial. There you can see that the Rate slider of FX unit 1 shows the current delay rate (1/16).

I am looking forward to your questions, suggestions and comments on what we have covered up to now.

Author: Rainer G. Haselier
Published: February 17, 2012

Share

197 Comments

viper9711
wrote on February 10, 2012 at 6:48 PM
Puh- das sieht ziemlich stressig aus. Aber Klasse beschrieben.
 Rainer G. Haselier (admin) says:
Jo, ist schon die etwas härtere Nummer. Aber die Möglichkeiten sind schon genial. Einfache Mappings, die keinen Scriptcode brauchen, kriegt man mit dem Lemur Editor recht schnell hin.
 
Steffen
wrote on February 24, 2012 at 4:21 PM
http://liine.net/en/support/) ändern in http://liine.net/en/support/

ohne ")" ;)
 Rainer G. Haselier (admin) says:
Danke, ist korrigiert!

 
Chris
wrote on March 25, 2012 at 4:35 PM
any updates on the mapping.. I just got the iPad app and looking to really test it out but sorely the configs out there are not very DJ friendly..
 
xander
wrote on August 8, 2012 at 10:13 PM
Hey... Thanx for a tut. this one helped me a lot.
Any chances you can explain, how to get loop pads like you have on a pic above?
Thanx in advance.
 
Pooja
wrote on March 25, 2015 at 4:05 AM
This thing looks awsome but I have a qusotien which I think your opinion could weigh well with since you have used the equipment before. would this be useable in a club environment switching from one dj to the next and would the fader be sutible for scratching or should i just buy a seperate audio card and mixer this all in one package seems great but this is specificly asked toward trying to learn scratching.
 
levitra cheap
wrote on March 26, 2015 at 11:18 AM
Now I know who the brainy one is, I'll keep looking for your posts.
 
levitra
wrote on March 26, 2015 at 2:37 PM
I really couldn't ask for more from this article.
 
levitra online
wrote on March 26, 2015 at 10:04 PM
Now I'm like, well duh! Truly thankful for your help.
 
levitra online
wrote on March 26, 2015 at 10:05 PM
Now I'm like, well duh! Truly thankful for your help.
 
levitra online
wrote on March 26, 2015 at 10:05 PM
Now I'm like, well duh! Truly thankful for your help.
 
levitra
wrote on March 26, 2015 at 10:49 PM
First of all, allow my family appreciate a persons command during this matter. Even though this is certainly brand new , nevertheless soon after registering your site, this intellect has exploded extensively. Allow all of us to take hold of ones rss to help keep in touch with at all probable messages Sincere understand but will pass it on to help admirers and my private are living members
 
levitra
wrote on March 27, 2015 at 4:03 AM
If I communicated I could thank you enough for this, I'd be lying.
 
levitra
wrote on March 27, 2015 at 4:03 AM
If I communicated I could thank you enough for this, I'd be lying.
 
levitra
wrote on March 27, 2015 at 4:03 AM
If I communicated I could thank you enough for this, I'd be lying.
 
generic levitra
wrote on March 27, 2015 at 5:08 AM
What liberating knowledge. Give me liberty or give me death.
 
levitra
wrote on March 27, 2015 at 8:17 AM
Whoever wrote this, you know how to make a good article.
 
buy levitra online
wrote on March 27, 2015 at 12:58 PM
The Walkman itself came with a USB cable but no other method for recharging the battery. I bought this set before heading off on a driving trip. The wall adapter lets me recharge without having to connect to my computer and the car charger let me keep the Walkman plugged in while playing continuously for the long drive.
 
buy levitra
wrote on March 28, 2015 at 10:02 AM
I found myself nodding my noggin all the way through.
 
cheap levitra no prescription
wrote on March 28, 2015 at 2:42 PM
Good job making it appear easy.
 
cheap levitra no prescription
wrote on March 28, 2015 at 2:42 PM
Good job making it appear easy.
 
generic levitra
wrote on March 28, 2015 at 10:47 PM
I really needed to find this info, thank God!
 
levitra online
wrote on March 29, 2015 at 6:05 PM
Thanks for the strategies presented. One thing I should also believe is credit cards providing a 0% monthly interest often entice consumers along with zero monthly interest, instant authorization and easy internet balance transfers, nonetheless beware of the main factor that will certainly void your current 0% easy neighborhood annual percentage rate plus throw one out into the poor house rapidly.
 
levetra
wrote on March 30, 2015 at 2:22 AM
It's a relief to find someone who can explain things so well
 
levitra online
wrote on March 30, 2015 at 4:41 PM
More posts of this quality. Not the usual c***, please
 
generic levitra
wrote on March 31, 2015 at 4:29 AM
BION I'm impressed! Cool post!
 
levitra
wrote on March 31, 2015 at 12:01 PM
I think you've just captured the answer perfectly
 
levitra
wrote on March 31, 2015 at 12:01 PM
I think you've just captured the answer perfectly
 
levitra
wrote on March 31, 2015 at 12:01 PM
I think you've just captured the answer perfectly
 
buy abilify
wrote on March 31, 2015 at 11:41 PM
If you're looking to buy these articles make it way easier.
 
buy abilify
wrote on March 31, 2015 at 11:43 PM
If you're looking to buy these articles make it way easier.
 
buy abilify
wrote on March 31, 2015 at 11:43 PM
If you're looking to buy these articles make it way easier.
 
buy abilify
wrote on April 1, 2015 at 5:12 AM
Of the panoply of website I've pored over this has the most veracity.
 
propecia price
wrote on April 1, 2015 at 6:20 AM
Your answer shows real intelligence.
 
doxycycline
wrote on April 1, 2015 at 7:19 AM
That's a clever answer to a tricky question
 
levitra
wrote on April 3, 2015 at 2:14 AM
Dag nabbit good stuff you whippersnappers!
 
levitra online
wrote on April 3, 2015 at 9:09 PM
I was totally digging this article right up to the point where you mentioned Joe Rogan as being a good comedian. Joe Rogan sucks worse than Dean Cook. His "routine" is so bad, I saw a little of it once and it gave me cancer it was so bad.You were doing really good, but you really lost me there with the fat sack of crap Rogan.
 
levitra
wrote on April 5, 2015 at 8:26 AM
Good point. I hadn't thought about it quite that way. :)
 
generic levitra
wrote on April 6, 2015 at 10:03 AM
Articles like this just make me want to visit your website even more.
 
generic levitra
wrote on April 6, 2015 at 4:09 PM
C’est vrai que l’on abuse souvent du terme de visiteur du soir pour qualifier le rôle d’Alain Minc auprès de Sarko et vous avez bien eu raison de mettre des guillemets . Les média emploient le terme avec une connotation de confidencialité, de proximité, de complicité en oubliant toute l’ambiguité de la poésie de Prévert et Carné. La belle Carla a du oublier ce film dans le programme de rattrapage culturel de son mari car alors il se méfierait : dans le film, les visiteurs du soir étaient envoyés par Satan pour semer la discorde sur la Terre !!!A moins que le Satan moderne soit représenté par les tables fréquentées lors « des diners en ville » du plagiaire condamné !!!
 
vardenafil cheap
wrote on April 6, 2015 at 5:34 PM
I was wondering if you ever thought of changing the layout of your website? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having 1 or 2 pictures. Maybe you could space it out better?
 
levitra
wrote on April 7, 2015 at 11:39 PM
Slam dunkin like Shaquille O'Neal, if he wrote informative articles.
 
levitra
wrote on April 7, 2015 at 11:39 PM
Slam dunkin like Shaquille O'Neal, if he wrote informative articles.
 
levitra
wrote on April 7, 2015 at 11:39 PM
Slam dunkin like Shaquille O'Neal, if he wrote informative articles.
 
levitra
wrote on April 14, 2015 at 1:51 PM
I cannot tell a lie, that really helped.
 
levitra
wrote on April 14, 2015 at 1:51 PM
I cannot tell a lie, that really helped.
 
buy levitra
wrote on April 17, 2015 at 2:38 PM
You've managed a first class post
 
buy levitra
wrote on April 17, 2015 at 2:38 PM
You've managed a first class post
 
buy levitra
wrote on April 17, 2015 at 2:38 PM
You've managed a first class post
 
generic levitra
wrote on April 17, 2015 at 2:42 PM
That's really thinking at a high level
 
generic levitra
wrote on April 17, 2015 at 2:42 PM
That's really thinking at a high level
 
generic levitra
wrote on April 17, 2015 at 2:42 PM
That's really thinking at a high level
 
levitra
wrote on April 17, 2015 at 4:01 PM
Wow! That's a really neat answer!
 
levitra cheap
wrote on April 18, 2015 at 2:28 AM
For the love of God, keep writing these articles.
 
levitra cheap
wrote on April 18, 2015 at 2:28 AM
For the love of God, keep writing these articles.
 
generic levitra
wrote on April 18, 2015 at 5:39 AM
This is a most useful contribution to the debate
 
generic levitra
wrote on April 18, 2015 at 5:39 AM
This is a most useful contribution to the debate
 
generic levitra
wrote on April 18, 2015 at 7:25 AM
Articles like these put the consumer in the driver seat-very important.
 
generic levitra
wrote on April 18, 2015 at 7:25 AM
Articles like these put the consumer in the driver seat-very important.
 
generic levitra
wrote on April 18, 2015 at 7:25 AM
Articles like these put the consumer in the driver seat-very important.
 
generic levitra
wrote on April 18, 2015 at 8:37 AM
It's about time someone wrote about this.
 
generic levitra
wrote on April 18, 2015 at 8:37 AM
It's about time someone wrote about this.
 
levitra generic
wrote on April 18, 2015 at 2:36 PM
A perfect reply! Thanks for taking the trouble.
 
levitra generic
wrote on April 18, 2015 at 2:36 PM
A perfect reply! Thanks for taking the trouble.
 
levitra
wrote on April 18, 2015 at 8:13 PM
Never seen a better post! ICOCBW
 
levitra
wrote on April 18, 2015 at 8:13 PM
Never seen a better post! ICOCBW
 
levitra order
wrote on April 19, 2015 at 10:34 PM
I went to tons of links before this, what was I thinking?
 
levitra order
wrote on April 19, 2015 at 10:35 PM
I went to tons of links before this, what was I thinking?
 
generic levitra online
wrote on April 20, 2015 at 4:13 AM
That saves me. Thanks for being so sensible!
 
levitra
wrote on April 20, 2015 at 5:16 PM
Keep these articles coming as they've opened many new doors for me.
 
levitra
wrote on April 20, 2015 at 5:16 PM
Keep these articles coming as they've opened many new doors for me.
 
online degree programs
wrote on April 20, 2015 at 6:28 PM
Learning a ton from these neat articles.
 
online degree programs
wrote on April 20, 2015 at 6:29 PM
Learning a ton from these neat articles.
 
online degree programs
wrote on April 20, 2015 at 6:29 PM
Learning a ton from these neat articles.
 
masters degree online
wrote on April 20, 2015 at 7:20 PM
All of these articles have saved me a lot of headaches.
 
masters degree online
wrote on April 20, 2015 at 7:20 PM
All of these articles have saved me a lot of headaches.
 
masters degree online
wrote on April 20, 2015 at 7:20 PM
All of these articles have saved me a lot of headaches.
 
college online
wrote on April 20, 2015 at 7:38 PM
My hat is off to your astute command over this topic-bravo!
 
college online
wrote on April 20, 2015 at 7:38 PM
My hat is off to your astute command over this topic-bravo!
 
online colleges
wrote on April 20, 2015 at 7:40 PM
Hahahaha. I'm not too bright today. Great post!
 
online colleges
wrote on April 20, 2015 at 7:40 PM
Hahahaha. I'm not too bright today. Great post!
 
online colleges
wrote on April 20, 2015 at 7:40 PM
Hahahaha. I'm not too bright today. Great post!
 
degree programs online
wrote on April 20, 2015 at 7:48 PM
I'm really into it, thanks for this great stuff!
 
degree programs online
wrote on April 20, 2015 at 7:48 PM
I'm really into it, thanks for this great stuff!
 
degree programs online
wrote on April 20, 2015 at 7:48 PM
I'm really into it, thanks for this great stuff!
 
degree programs
wrote on April 20, 2015 at 8:00 PM
Yup, that'll do it. You have my appreciation.
 
degree programs
wrote on April 20, 2015 at 8:00 PM
Yup, that'll do it. You have my appreciation.
 
degree programs
wrote on April 20, 2015 at 8:01 PM
Yup, that'll do it. You have my appreciation.
 
accredited online colleges
wrote on April 20, 2015 at 8:18 PM
That's a skillful answer to a difficult question
 
accredited online colleges
wrote on April 20, 2015 at 8:18 PM
That's a skillful answer to a difficult question
 
accredited online colleges
wrote on April 20, 2015 at 8:18 PM
That's a skillful answer to a difficult question
 
college degree online
wrote on April 20, 2015 at 8:26 PM
Mighty useful. Make no mistake, I appreciate it.
 
college degree online
wrote on April 20, 2015 at 8:26 PM
Mighty useful. Make no mistake, I appreciate it.
 
online college
wrote on April 20, 2015 at 8:59 PM
Your answer shows real intelligence.
 
online colleges
wrote on April 20, 2015 at 9:36 PM
Until I found this I thought I'd have to spend the day inside.
 
online colleges
wrote on April 20, 2015 at 9:36 PM
Until I found this I thought I'd have to spend the day inside.
 
online colleges
wrote on April 20, 2015 at 9:37 PM
Until I found this I thought I'd have to spend the day inside.
 
college online
wrote on April 20, 2015 at 9:38 PM
Hey, that's powerful. Thanks for the news.
 
college online
wrote on April 20, 2015 at 9:39 PM
Hey, that's powerful. Thanks for the news.
 
college online
wrote on April 20, 2015 at 9:39 PM
Hey, that's powerful. Thanks for the news.
 
online classes
wrote on April 20, 2015 at 9:49 PM
Articles like this just make me want to visit your website even more.
 
online classes
wrote on April 20, 2015 at 9:49 PM
Articles like this just make me want to visit your website even more.
 
online college
wrote on April 20, 2015 at 10:02 PM
Wowza, problem solved like it never happened.
 
online college
wrote on April 20, 2015 at 10:02 PM
Wowza, problem solved like it never happened.
 
online college
wrote on April 20, 2015 at 10:02 PM
Wowza, problem solved like it never happened.
 
online college
wrote on April 20, 2015 at 10:40 PM
AKAIK you've got the answer in one!
 
online college
wrote on April 20, 2015 at 10:40 PM
AKAIK you've got the answer in one!
 
online college
wrote on April 20, 2015 at 10:41 PM
AKAIK you've got the answer in one!
 
online colleges
wrote on April 20, 2015 at 10:44 PM
AKAIK you've got the answer in one!
 
online colleges
wrote on April 20, 2015 at 10:44 PM
AKAIK you've got the answer in one!
 
online degree programs
wrote on April 20, 2015 at 10:59 PM
Deep thinking - adds a new dimension to it all.
 
online degree programs
wrote on April 20, 2015 at 11:00 PM
Deep thinking - adds a new dimension to it all.
 
online colleges
wrote on April 20, 2015 at 11:39 PM
Hallelujah! I needed this-you're my savior.
 
distance learning
wrote on April 21, 2015 at 12:40 AM
BS low - rationality high! Really good answer!
 
online accredited colleges
wrote on April 21, 2015 at 1:19 AM
I feel so much happier now I understand all this. Thanks!
 
online schools
wrote on April 21, 2015 at 2:43 AM
Your articles are for when it absolutely, positively, needs to be understood overnight.
 
online accredited colleges
wrote on April 21, 2015 at 2:52 AM
This article went ahead and made my day.
 
online accredited colleges
wrote on April 21, 2015 at 2:52 AM
This article went ahead and made my day.
 
online accredited colleges
wrote on April 21, 2015 at 2:52 AM
This article went ahead and made my day.
 
college online
wrote on April 21, 2015 at 3:34 AM
Impressive brain power at work! Great answer!
 
college online
wrote on April 21, 2015 at 3:34 AM
Impressive brain power at work! Great answer!
 
courses distance learning
wrote on April 21, 2015 at 4:09 AM
This is crystal clear. Thanks for taking the time!
 
courses distance learning
wrote on April 21, 2015 at 4:09 AM
This is crystal clear. Thanks for taking the time!
 
college online
wrote on April 21, 2015 at 4:12 AM
You've captured this perfectly. Thanks for taking the time!
 
college online
wrote on April 21, 2015 at 4:12 AM
You've captured this perfectly. Thanks for taking the time!
 
college online
wrote on April 21, 2015 at 4:13 AM
You've captured this perfectly. Thanks for taking the time!
 
college online
wrote on April 21, 2015 at 4:34 AM
Ce matin petit passage en para et grâce à tout ce que j’ai pu lire ;Aqua précis gel défatiguant yeux, Uriage et l’eau de beauté caudalie, c’est moi ou l’odeur au départ est un peu beurk ?!Et un duo soin des lèvres et crème gourmande pour les mains de chez Caudalie
 
college online
wrote on April 21, 2015 at 4:34 AM
Ce matin petit passage en para et grâce à tout ce que j’ai pu lire ;Aqua précis gel défatiguant yeux, Uriage et l’eau de beauté caudalie, c’est moi ou l’odeur au départ est un peu beurk ?!Et un duo soin des lèvres et crème gourmande pour les mains de chez Caudalie
 
college online
wrote on April 21, 2015 at 4:34 AM
Ce matin petit passage en para et grâce à tout ce que j’ai pu lire ;Aqua précis gel défatiguant yeux, Uriage et l’eau de beauté caudalie, c’est moi ou l’odeur au départ est un peu beurk ?!Et un duo soin des lèvres et crème gourmande pour les mains de chez Caudalie
 
degrees online
wrote on April 21, 2015 at 4:34 AM
Your honesty is like a beacon
 
degrees online
wrote on April 21, 2015 at 4:34 AM
Your honesty is like a beacon
 
degrees online
wrote on April 21, 2015 at 4:34 AM
Your honesty is like a beacon
 
college degree online
wrote on April 21, 2015 at 5:37 AM
You make things so clear. Thanks for taking the time!
 
college degree online
wrote on April 21, 2015 at 5:37 AM
You make things so clear. Thanks for taking the time!
 
online college courses
wrote on April 21, 2015 at 6:59 AM
I just hope whoever writes these keeps writing more!
 
online schools
wrote on April 21, 2015 at 7:09 AM
Gee whiz, and I thought this would be hard to find out.
 
online schools
wrote on April 21, 2015 at 7:10 AM
Gee whiz, and I thought this would be hard to find out.
 
online degree programs
wrote on April 21, 2015 at 7:51 AM
Umm, are you really just giving this info out for nothing?
 
online degree programs
wrote on April 21, 2015 at 7:51 AM
Umm, are you really just giving this info out for nothing?
 
college online
wrote on April 21, 2015 at 8:26 AM
I feel satisfied after reading that one.
 
college online
wrote on April 21, 2015 at 10:12 AM
Thanks for taking the time to post. It's lifted the level of debate
 
college online
wrote on April 21, 2015 at 10:12 AM
Thanks for taking the time to post. It's lifted the level of debate
 
online colleges
wrote on April 21, 2015 at 10:15 AM
Always refreshing to hear a rational answer.
 
online colleges
wrote on April 21, 2015 at 10:15 AM
Always refreshing to hear a rational answer.
 
online colleges
wrote on April 21, 2015 at 10:15 AM
Always refreshing to hear a rational answer.
 
masters degree online
wrote on April 21, 2015 at 10:34 AM
That's an intelligent answer to a difficult question xxx
 
masters degree online
wrote on April 21, 2015 at 10:34 AM
That's an intelligent answer to a difficult question xxx
 
online college degree
wrote on April 21, 2015 at 10:42 AM
I'm not quite sure how to say this; you made it extremely easy for me!
 
online colleges
wrote on April 21, 2015 at 11:02 AM
Reading posts like this make surfing such a pleasure
 
online colleges
wrote on April 21, 2015 at 11:02 AM
Reading posts like this make surfing such a pleasure
 
online colleges
wrote on April 21, 2015 at 11:02 AM
Reading posts like this make surfing such a pleasure
 
online college
wrote on April 21, 2015 at 11:13 AM
Thank God! Someone with brains speaks!
 
online college
wrote on April 21, 2015 at 11:14 AM
Thank God! Someone with brains speaks!
 
online degree programs
wrote on April 21, 2015 at 11:27 AM
Four score and seven minutes ago, I read a sweet article. Lol thanks
 
online degree programs
wrote on April 21, 2015 at 11:27 AM
Four score and seven minutes ago, I read a sweet article. Lol thanks
 
buy levitra
wrote on April 21, 2015 at 11:54 PM
It's a pleasure to find someone who can think so clearly
 
buy levitra
wrote on April 21, 2015 at 11:54 PM
It's a pleasure to find someone who can think so clearly
 
cheapest generic levitra
wrote on April 22, 2015 at 12:21 AM
Good points all around. Truly appreciated.
 
cheapest generic levitra
wrote on April 22, 2015 at 12:21 AM
Good points all around. Truly appreciated.
 
lavetra
wrote on April 22, 2015 at 3:36 AM
What a neat article. I had no inkling.
 
buy levitra 25mg online
wrote on April 22, 2015 at 10:20 AM
A simple and intelligent point, well made. Thanks!
 
buy levitra 25mg online
wrote on April 22, 2015 at 10:20 AM
A simple and intelligent point, well made. Thanks!
 
buy levitra 25mg online
wrote on April 22, 2015 at 10:20 AM
A simple and intelligent point, well made. Thanks!
 
levitra
wrote on April 22, 2015 at 3:56 PM
Hey hey hey, take a gander at what' you've done
 
levitra for sale
wrote on April 22, 2015 at 4:45 PM
I guess finding useful, reliable information on the internet isn't hopeless after all.
 
levitra for sale
wrote on April 22, 2015 at 4:46 PM
I guess finding useful, reliable information on the internet isn't hopeless after all.
 
levitra for sale
wrote on April 22, 2015 at 4:46 PM
I guess finding useful, reliable information on the internet isn't hopeless after all.
 
purchase priligy
wrote on April 22, 2015 at 10:43 PM
Wow! Talk about a posting knocking my socks off!
 
purchase priligy
wrote on April 22, 2015 at 10:44 PM
Wow! Talk about a posting knocking my socks off!
 
cheap levitra
wrote on April 23, 2015 at 12:15 AM
No complaints on this end, simply a good piece.
 
cheap levitra
wrote on April 23, 2015 at 12:15 AM
No complaints on this end, simply a good piece.
 
cheap levitra
wrote on April 23, 2015 at 12:15 AM
No complaints on this end, simply a good piece.
 
levitra cheap
wrote on April 23, 2015 at 10:09 AM
Thanks for your thoughts. It's helped me a lot.
 
levitra sales
wrote on April 23, 2015 at 10:36 AM
Thanks for writing such an easy-to-understand article on this topic.
 
levitra sales
wrote on April 24, 2015 at 6:10 AM
I'm not quite sure how to say this; you made it extremely easy for me!
 
levitra sales
wrote on April 24, 2015 at 6:10 AM
I'm not quite sure how to say this; you made it extremely easy for me!
 
buy levitra
wrote on April 24, 2015 at 8:20 AM
Glad I've finally found something I agree with!
 
accredited online colleges
wrote on April 24, 2015 at 11:06 AM
I don't even know what to say, this made things so much easier!
 
levitra
wrote on April 24, 2015 at 11:12 AM
Hey, you're the goto expert. Thanks for hanging out here.
 
buy levitra online
wrote on April 24, 2015 at 11:14 AM
And to think I was going to talk to someone in person about this.
 
cheap levitra
wrote on April 24, 2015 at 1:02 PM
That's really shrewd! Good to see the logic set out so well.
 
cheap levitra
wrote on April 24, 2015 at 1:02 PM
That's really shrewd! Good to see the logic set out so well.
 
cheap levitra
wrote on April 24, 2015 at 1:02 PM
That's really shrewd! Good to see the logic set out so well.
 
emphysema
wrote on April 24, 2015 at 3:13 PM
That insight's just what I've been looking for. Thanks!
 
levitra sales
wrote on April 25, 2015 at 12:47 PM
Big help, big help. And superlative news of course.
 
levitra sales
wrote on April 25, 2015 at 12:47 PM
Big help, big help. And superlative news of course.
 
levitra sales
wrote on April 25, 2015 at 12:47 PM
Big help, big help. And superlative news of course.
 
fsouaq
wrote on April 26, 2015 at 5:53 PM
fsouaq
 
levitra
wrote on April 26, 2015 at 9:05 PM
C’est mon premier commentaire sur ton blog même si je le lis très souvent !Et je suis bien contente de poster pour un si bel article !C’est très bien écrit et super à lire !J’espère que tu nous fera partager TA robe en piquant la photo paternelle Mais tu ne peux qu’être superbe dedans
 
generic levitra
wrote on April 27, 2015 at 12:39 PM
Considerably, this publish is really the sweetest on this notable theme. I harmonise together with your conclusions and will thirstily search forward to your incoming updates. Declaring thanks will not just be sufficient, for your phenomenal clarity with your writing. I will right grab your rss feed to stay informed of any updates. Admirable function and significantly success with your company dealings!  Please excuse my poor English as it truly is not my 1st tongue.
 
propecia online
wrote on April 27, 2015 at 5:00 PM
An intelligent answer - no BS - which makes a pleasant change
 
essay writing
wrote on April 27, 2015 at 5:19 PM
Wham bam thank you, ma'am, my questions are answered!
 
essay writing
wrote on April 27, 2015 at 5:19 PM
Wham bam thank you, ma'am, my questions are answered!
 
essay writing
wrote on April 27, 2015 at 5:19 PM
Wham bam thank you, ma'am, my questions are answered!
 
essay help
wrote on April 27, 2015 at 5:55 PM
That's the best answer by far! Thanks for contributing.
 
college degree online
wrote on April 27, 2015 at 8:50 PM
Thanks for contributing. It's helped me understand the issues.
 
essay writing
wrote on April 27, 2015 at 11:00 PM
A simple and intelligent point, well made. Thanks!
 
write my essay
wrote on April 28, 2015 at 4:34 AM
God, I feel like I should be takin notes! Great work
 

 

Leave a comment

  Name

  E-Mail (will not be published)

  Website

Cancel