Archive for the ‘computers’ Category

I love it when…

August 9, 2016

You sit down to write some code and find that you did it a couple of weeks ago. That change log in my code finally came in useful!


The Beat Buddy Tempo Buddy…

May 11, 2016

Based on an idea someone posted in the Beat Buddy forums. A two button switch to step the tempo up and down (in steps of 5 BPM).

Basically, pressing the foot switches increases or decreases the tempo on the Beat Buddy up or down by five beats per minute. You could do a lot more with it but I am already controlling the tempo from my Jamman so this was just a interesting exercise.

Wiring diagram:



*                                                                                                *
*  Beat Buddy Tempo Buddy.                                                                       *
*                                                                                                *
*    Copyright David E Ellis (aka The Big E and ltlfrari) 5/11/2016                              *
*                                                                                                *
*    License:                                                                                    *
*    You are free to use or modify this code as you wish.                                        *
*    Acknowledgement is appreciated but nor required for any derivative works.                   *
*    In using this code in any manner, you hold the author harmless from any damages arising     *
*    from the use of this code or any code derived from it either directly or indirectly.        *
*                                                                                                *
* Change log                                                                                     *
*                                                                                                *
* V1  05/11/2016 Initial version                                                                 *
*                                                                                                *
*                                                                                                *
#include <Bounce2.h>           // switch debounce code

#define SWITCH1 4              // left switch 
#define SWITCH2 5              // right switch
#define LED 10                 // green led

Bounce s1 = Bounce();            // setup debounce for switch 1  
Bounce s2 = Bounce();            // setup debounce for switch 2

void setup() {  
  pinMode(SWITCH1,INPUT_PULLUP);            // Open switch is normally pulled high
  pinMode(SWITCH2,INPUT_PULLUP);            // Open switch is normally pulled high
  Serial.begin(31250);                      // Set MIDI baud rate
  s1.attach(SWITCH1);                       // connect to switch 1
  s1.interval(10);                          // 10ms debounce time
  s2.attach(SWITCH2);                       // connect to switch 2
  s2.interval(10);                          // 10ms debounce time  
digitalWrite(LED,HIGH);                     // led on, ready  

void loop() {

  s1.update();                 // check switch
  if (s1.fell()) {             // if switch pressed (hi to low transition)

  s2.update();                 // check switch
  if (s2.fell()) {             // if switch pressed (hi to low transition)

void tempoUp() {
  for (int i = 0; i < 5; i++) {
    Serial.write(0xB0);                    // CC, channel 1
    Serial.write(96);                      // 96 - inc tempo
    Serial.write(1);                       // inc by 5

void tempoDown() {
  for (int i = 0; i < 5; i++) {
    Serial.write(0xB0);                    // CC, channel 1
    Serial.write(97);                      // 97 - decrement tempo
    Serial.write(1);                       // dec by 5





iPhone fun (or not)…

April 24, 2016

I took a rather large video the other day, 40 mins or so, around 1.3 Gig and wanted to transfer to to my Windows desktop. Should be easy, plug in the iPhone, drag and drop!

Well, not so much!

The first problem was that the video would not show up in Windows. I have NO idea why but since I could not see it in Windows, I could not do anything with it (obviously).

So! How to get it off my iPhone and onto my Windows box?

First off I thought of using Dropbox. I resurrected an old Dropbox account, installed the app on the phone and set it off transferring the file. THREE hours later it have moved about 10% of the file. This was not going to work. Cancelled the transfer.

So, search for an app or windows software to do it. First off I tried iFunBox. No problem with it as such except that it requires iTunes and there’s no way I am installing that piece of crap on my Windows box. I’ve never understood the iTunes interface and I never know what it will do to the stuff on my apple devices (iPods in the past) so I just don’t want to go anywhere near it.

Then I found Photo Sync.


It’s a paid app but at $2.99 it’s worth it. As well as the app itself there’s a Windows component that you have to install. After that the app finds my  my PC itself (using the Apple Bonjour service I think). It took maybe 10 minutes to transfer the file over my wireless network at home from the phone to my pc.

Should you need to, you can also go the other way and transfer pictures and video from the pc to the phone just by dragging the file onto the ‘drop’ area that’s tied to the system tray on the Windows desktop.

The app worked great.

However it’s really annoying and not a little frustrating that it took me most of the day to figure out how to transfer this one large file between two devices and I’m pretty technically savvy. Heaven help your ‘average’ user. I thought technology was supposed to make your life simpler. Sometimes it fails to do that big time!


Mounting Arduino Uno, part 2…

April 6, 2016

Holes cut in box end, Arduino mounted inside the box:




Mounting Arduino Uno

April 5, 2016

For my various projects I am currently using an Arduino Uno. In order to mount this inside the Hammond 1590BB look alike project boxes that I use I use the following ‘el cheapo’ method (hey, it works!):

I cut two piece of 1/8 hardboard to just a bit bigger than the Arduino Uno circuit board. They do not need all the fancy cutouts that the circuit board has, they can just be regular rectangles.

Then I use an old Arduino Uno as a template to drill three 1/8 inch holes in ONE of the boards. I don’t use the mounting hole nearest to the USB connector because it’s too close to the terminal block to get a screw in there.

I then lay that board over the other one, line them up and drill the same holes in the other board.

I then take the second board and re-drill the holes with a 1/4 inch drill. These holes will take the nuts that the screws go into.

I use #4-40 3/8 inch screws and nuts. The nuts are ‘just’ too big to go into the 1/4 inch holes in the board but a gentle whack with a hammer lodges them in there. One nut in each hole.

I then use some 5 minute epoxy to glue the two boards together and put screws through the holes and into the nuts just to keep them aligned.


Top of the board:


Bottom with nuts ‘inserted’ (ignore the hole in the middle, that was just me testing the nut fit):


What it looks like when done (no screws yet):


I then cut suitable holes (lots of measuring, drilling and and filing) in the side of the project box using the mounted Arduino as a template. Once I am happy with the fit in the box, I epoxy the mounting board into the project box with the old Arduino fastened in place so that I know everything lines up and it’s where I want it to be.

One thing I did find is that the power socket on this old Arduino Uno that I use as template is set slightly further back than the power sockets on the latest ones I have (different manufacturer probably). So I have to ensure that the hole for the power socket in the project box is large enough and the correct shape to take the socket. Other than that’s it’s all pretty simple.




A look inside…

December 14, 2013

A USB stick…



A Disk Drive…








Stomp box – one last change…

October 15, 2013

One thing that had bothered me was that I had no way to indicate to the user (that would be me!) which volume mode the box was in (normal volume or solo level). I had thought about flashing the LEDs but the code would get real messy and I thought it would be confusing visually anyway. So in the end I bit the bullet, accepted there’s only so much you can do with two LEDs and added a third one. A simple code change and it was good to go. I just need to drill a hole for the new LED and glue it in place now and I really am all done this time.

Stomp box update…

October 14, 2013

Having ‘completed’ my Arduino ‘stomp box’ project I immediately realized that I needed it to do more (of course!). Originally my intention was to have one switch control the wet/dry mix on my effects unit and the other to control the selected patch, flip flopping between them, all pretty simple stuff. But then I thought about ‘soloing’.  My MIDI keyboard controller (a keytar) does not send MIDI volume information, nor can I program it to do so, so I needed some way to be able to easily switch from normal playing mode (medium volume) to solo playing mode (boosted volume). Guitar players usually have a pedal they just stomp on to boost the signal to a pre set level for solos so I figured it’d be useful to be able to do that  using my stomp box.

The two switches gives me four conditions, although because you cannot really use the normal (I.E. not pressed) state that leaves three conditions. Left button pressed, right button pressed or both pressed. Since I was using the first two conditions already that left the ‘both buttons pressed’ condition to use to switch between normal and solo mode.

Well that turned out to be a lot more complex that you’d think. I could not simply look at the switches and wait for them both to be pressed because the chances of my foot hitting them both at the exact same time is pretty much nil so the code would always detect one or the other on it’s own initially and I was using that state to switch the mix or patch. Waiting to see if the other switch was pressed was not really an option because how long do you wait?

What is interesting though is that a binary switch has more than just an on or off state.  It also has the ‘changed state’ condition. I.E. It was open but is now closed and it was closed but is now open, often referred to as leading and trailing edge (of a square wave which is what you’d see on an oscilloscope if you tracked the voltage on the switch contacts).

So what I did was to switch the mix and patch selects to work on the trailing edge signal, that is when you release the switch and I made the volume switch occur on the leading edge, that is when both switches closed. That way I could distinguish between the events quite easily.

But wait, there’s more!

Originally I hard coded the normal volume level but than I thought, well what if I want to change it for a particular setup (I figured leaving the ‘solo’ setting at max all the time was fine), I’ve only got two switches and I’ve used them all and how do I indicate what is going on to the user, I’ve only got two LEDs?

Well it turns out a switch can have yet another state and that is how long it has been pressed. Since the mix setting now triggers on the switch release, I can now time how long a single switch has been pressed and if it exceeds a certain time (I figured five seconds was a good value, not too long, not too short) then I put the unit into ‘program’ mode. To indicate this to the user I made the LED next to the switch flash.

Once in ‘program’ mode I can listen for the other switch being pressed and each time it is pressed, increase the ‘volume’ setting. Rather than have the user step through 127 values I figured having ten steps would be enough that I convert into MIDI signal levels by multiplying by 12 which gives me ten settings of 12 through 120.

To indicate the current volume ‘setting’ I make the second LED flash using a slow setting for the lowest volume and increasing the speed for each click up to ten at which point it cycles around back to the lowest setting.

Pressing the first switch again takes it out of program mode and saves any new volume setting.

But wait, there’s even more!

The chip on the Arduino has 1024 bytes of EEPROM that can be used to save data even when the device is turned off. So after setting a new volume I now save the setting in the EEPROM so that when the device is switched on I can restore the volume setting from the save value in the EEPROM. I also flash the second LED one to ten times (depending on the save volume level) at switch on to indicate to the user (me!) the current ‘normal’ volume level in use.


I have been very impressed with the quality of the Arduino IDE and the programming libraries available for it. In the past I have done micro processor (PIC) programming but used assembler. That’s fine but you have to do EVERYTHING yourself and testing can be ‘interesting’ to say the least. Writing in C and using existing libraries made development and testing very easy and speedy, especially when used in conjunction with the Arduino IDE’s ‘serial monitor’ and loads of debugging messages in the code (wrapped in #if defined statements so I can easily remove them for the ‘live’ code).

If I have on criticism of the Arduino IDE (or rather the doc) it is that as well as the extensive Arduino specific libraries you can also use code from the AVR project, which I wanted to do for the EEPROM support since it has more function (block read/write) than the Arduino library. However even though the AVR library is included in the Arduino IDE, it is not very well documented in the Arduino doc. It was only by chance (thank you Google) that I even came across the AVR library and I then spent quite a long time trying to figure out how to add it to the Arduino IDE before I found that it was already there.

Arduino Stomp Box…

September 15, 2013

My Arduino based stomp box is complete. I changed the output circuit to a simpler design because the original one was not working although I suspect the real cause was that I had the wiring to pins 4 and 5 on the MIDI socket the wrong way around! This is the new circuit:


The hardest part of the whole process has probably been planning the physical layout of the connectors on the prototyping board and the placement of everything in the metal box I am using for a case. It’s all pretty tight in there. This is what the inside of the box looks like:


And this is the outside:


The left button controls the bypass setting on the effects unit and the right button switches between two patches. The LEDs just indicate the currently selected setting for each switch. There’s also a power switch on the other side of the box away from the camera but other than that, that is all there is to it.

I just need a cool decal now to fill all that blank space on the box and I am in business!

Arduino ‘Stomp Box’ Circuit…

August 22, 2013

This is the circuit I am going to build for the Arduino Stomp box, all pretty simple stuff.


Arduino Code…

August 21, 2013

This is the finished code for the Arduino project. I switched the code to use exclusive ORs to flip the settings and added a second switch detection block of code for the second switch. All in all, pretty easy.

I’m still waiting for some parts to arrive before I can construct the finished project but I don’t anticipate any problems other than it not physically fitting in the project box I have ordered!

#include <Bounce.h>

Arduino Uno based stomp box Midi controller for T.C. Electronics M300
Copyright David E. Ellis 2013

Switch one toggle patches 2 and 3
Switch 2 toggles dry and mixed signal


#define PATCH_SWITCH 4            // Pin 4 - Controls patch switch
#define BYPASS_SWITCH 5           // Pin 5 - Controls bypass (wet/dry)
#define PATCH_LED 12              // On=initial patch, off=alternate patch
#define BYPASS_LED 11             // on=bypass on (dry), off=bypass off (wet)
#define ALT_PATCH 3
#define WET 0                     // Hear effect (wet signal) when bypass is off
#define DRY 127                     // dry signal when bypass on

// patch control
byte cur_patch = INITIAL_PATCH;
byte old_patch = ALT_PATCH;
byte cur_patch_led = HIGH;                            // high = led on
byte old_patch_led = LOW;

// bypass control
byte cur_bypass = DRY;                                // initial state for bypass signal is on (dry signal)
byte old_bypass = WET; 
byte cur_bypass_led = HIGH;
byte old_bypass_led = LOW;

Bounce bouncer1 = Bounce(PATCH_SWITCH,5);            // setup 5 ms debounce on switch 1
Bounce bouncer2 = Bounce(BYPASS_SWITCH,5);            // ditto on on switch 2

// the setup routine runs once when you press reset:
void setup() {   
  Serial.begin(31250);                              // Set MIDI baud rate:
  selectPatch(INITIAL_PATCH);                       // Set inital patch number
  setBypass(DRY);                                   // Set bypass to on initially (dry signal)
  pinMode(PATCH_SWITCH,INPUT_PULLUP);                // Open switch is normally pulled high
  pinMode(BYPASS_SWITCH,INPUT_PULLUP);                // Open switch is normally pulled high
  pinMode(PATCH_LED, OUTPUT);                         // initialize the led pin as an output.
  digitalWrite(PATCH_LED, cur_patch_led);              // set to current state 
  pinMode(BYPASS_LED, OUTPUT);                         // initialize the led pin as an output.
  digitalWrite(BYPASS_LED, cur_bypass_led);         // set to current state

// the loop routine runs over and over again forever:
void loop() {

  // Switch 1 controls the patch
  if (bouncer1.update()) {                           // returns true if switch state changed (on or off)
    if (! {                          // if switch is pressed (input low)
      cur_patch=cur_patch^old_patch;                 // swap patch
      selectPatch(cur_patch);                        // send it
      cur_patch_led=cur_patch_led^old_patch_led;    // swap led status
      digitalWrite(PATCH_LED,cur_patch_led);        // send it

  // Switch 2 controls bypass (wet/dry mix)
  if (bouncer2.update()) {                           // returns true if switch state changed (on or off)
    if (! {                          // if switch is pressed (input low)
      cur_bypass=cur_bypass^old_bypass;              // swap bypass state
      setBypass(cur_bypass);                           // and set new state
      cur_bypass_led=cur_bypass_led^old_bypass_led;     // swap led status
      digitalWrite(BYPASS_LED, cur_bypass_led);         // and send it

void selectPatch(byte patchNum) {
  Serial.write(0xC0);                    // change patch command
  Serial.write(patchNum-1);              // patch '1' is really zero etc

void setBypass(byte mix) {
  Serial.write(0xB0);                    // CC
  Serial.write(0x51);                    // 81 - Bypass
  Serial.write(mix);                     // by on (127/dry) or off (0/wet)   

Arduino project – Part 1 Complete…

August 13, 2013

I’ve gotten the Arduino to respond to a switch press and flip flop the patches in my effects unit via the Midi cable when the switch is pressed. Pretty neat and very easy to do. This is the circuit:

ArduinoMidiSwitchCircuitAnd this is the code:

#include <Bounce.h>

Midi controller for M300
Switch one toggle patches 2 and 3
Switch 2 will toggle dry and mixed signal

#define SWITCH1 4           // header P4, pin 3 - Controls patch switch
#define LED 13              // on board led on pin 13
#define ALT_PATCH 3

  int patch = INITIAL_PATCH;

Bounce bouncer1 = Bounce(SWITCH1,5);    // setup 5 ms debounce on switch 1

// the setup routine runs once when you press reset:
void setup() {   
  Serial.begin(31250);                  //  Set MIDI baud rate:
  selectPatch(INITIAL_PATCH);           // Set inital patch number
  pinMode(SWITCH1,INPUT_PULLUP);        // Open switch is normally pulled high
  pinMode(LED, OUTPUT);                 // initialize the led pin as an output.
  digitalWrite(LED, HIGH);              // led on = initial patch  

// the loop routine runs over and over again forever:
void loop() {

  if (bouncer1.update()) {               // returns true if switch1 state changed (on or off)
    if (! {              // if switch is pressed (input low)
      if (patch == INITIAL_PATCH) {      // if current patch = initial patch
        selectPatch(ALT_PATCH);          // swap to alt patch
        patch=ALT_PATCH;                 // remember it
        digitalWrite(LED, LOW);          // led off = alt patch
      else {                             // current patch = alt patch
        selectPatch(INITIAL_PATCH);      // swap to inital patch
        patch=INITIAL_PATCH;             // remember it
        digitalWrite(LED, HIGH);         // led on = inital patch


void selectPatch(int patchNum) {
  Serial.write(0xC0);                    // change patch command
  Serial.write(patchNum-1);              // patch '1' is really zero etc

I can probably do away with a lot of the if, then , else stuff and remembering the previous patch by using exclusive OR’s to flip flop the patch numbers and led status which I may look into later. For now this works very well.

I just need to figure out the midi command to switch the effects unit input from dry to mixed, hook up the other switch and the prototype should be done.

Well, that was easy…

August 11, 2013

1st Arduino program up and running! OK, so it’s only the sample blink program that blinks one of the leds on the board on and off but it only took me about ten minutes total to get it up and running on the board and that includes downloading the compiler software and installing the drivers.


This is the compiler software running on the PC to upload the program to the Arduino, and me holding the board in the foreground by the USB cable being used to program and power the board for now.

OK, so it’s not very exciting to look at but trust me, one of those leds is blinking!

Projects, projects, projects…

August 11, 2013

Some time ago I built a rack synth system. Basically a power supply, a synth module and an effects unit in a case. I can control the effects unit using a midi foot pedal but the problem I have is that my foot pedal is a) big and b) mains powered. While it works well I want something that is specific to what I want to do, a lot smaller and battery powered. Since I am quite capable of programming micro controllers and no slouch with a soldering iron I decided to build my own. Off to eBay and a week or so later and I have these from China:


An Arduino Micro controller and a Midi interface board. Time to start messin’!

The ‘joy’ of being the ‘geek’ in the house…

June 5, 2013

I’m sure my wife and son conspire to drive me nuts at times. The kid bought my wife a DVD of games for her laptop for her birthday because she likes to play this particular type of game. Great, except that her laptop does not have a DVD drive. No problem, just pop it in my desktop, share the drive and we’re good to go. Except…

When I put it in my PC, the whole PC locked up pretty much. Not sure if it was the antivirus software or what but it was pretty dead. So that’s not going to work.

No prob, try another PC. Dig out a VERY old laptop with a DVD drive in it.

First problem, Bios had lost the date. No prob, reset, reboot.

Because it’s an old laptop it does not have a built in network interface so I plugged in the old wifi card. Great except that the PC locks up connecting to the network! Eventually it crashes so I reboot. Then Windows want to check the drive so I wait while it does that. This time I use a wired network card and all is well so I install the DVD, share the drive and run the installer from the wife’s laptop. Then it says it cannot find so and so file.

So I map the share to a drive letter and run the installer that way.

Finally success!


The laptops side by side while I go through this mess (old on the left, wife’s on the right).

Ninety minutes to do a fifteen minute job! Isn’t technology wonderful!


Creative Labs FPS 2000 Volume Control ‘fix’…

December 27, 2012

I have had a Creative Labs FPS 2000 sound system attached to my computer since who knows when, at least 12 years because I had it before I moved here to NC. This is the beastie:

Creative-FPS2000It’s actually a really good system even though I don’t use the surround sound capabilities, it just sits under my desk. Anyway, the volume has been all over the place for quite a while, quiet one second, LOUD the next. Yesterday I had finally had enough of it and decided to take a look at it.

The system has an external control that is a combined on/off switch, front/rear balance and volume control and it seems that the combination switch/potentiometer inside the unit failing is a common problem. and it seems the unit does not work at all without the volume control attached.

I guess I ‘could’ have called Creative to see if they had it as a spare part but this is me after all so instead I took an alternative approach (of course).

Basically I desoldered the switch/pot unit from the little circuit board then replaced the switch part of the circuit with a jump lead so it is always on (I guess I could have soldered a switch in there if I had one but I did not). Then I replaced each potentiometer with a small bridge made from two 100k resistors (I have a draw full of this stuff from past projects) so that the center point went into the wiper part of the circuit board for each potentiometer.

The result is that the system is now always on and at about half volume, which is fine, so I just use the PC’s software volume control to adjust the volume now. Job done and no more crazy volume shifts.

This is the circuit diagram for the original switch:

FPS2000VolumeControlCircuitI replaced each potentiometer in the circuit with the following:


This is what the finished unit looked like:




Gaming on TV

April 25, 2012

The kid realized his new PC had an HDMI output and that he could plug int into the TV and play games (online) if he had a long enough network cable. So I dug a long Ethernet cable out of the ‘magic box’ and he’s off and running…

It’s a tough life…

Technology marches on into the sunset…

March 20, 2012

Leaving me behind…!

So after last night’s death of my video card it was off to the shops to find a new one since the one I intended to nick from the Kid’s old computer was the wrong sort.

Now all I needed was something:

  • Basic
  • Cheap
  • PCI or AGP (x4 I think!) so let’s call it PCI just to be safe since it is an older but perfectly functional motherboard in the PC.

First stop (nearby). Nothing but PCI Express (whatever that is) so it’s off across town (at rush hour) to Compusa to see what they have. All I can say is, what happened to PCI video cards? Loads of PCI Express cards. In the end I found ONE PCI card on the shelf. Actually I found two but while I wanted basic and cheap, the other one was just TOO basic. So $54 bucks later (there was one video card there for $599 so I figured $54 was pretty good!) I was on my way.

Got it home, removed the old card, installed the new one, reinstalled the new one because I had the VGA connector the wrong way around and the cable would not clear the computer case, choked to death (still coughing) on the dust inside the computer case, fired it up, messed around and we’re back!

There was a time I was right up there with technology, keeping up to date, knew what the latest standards were, always building new computers. These days, if you stop for five seconds, you’ve lost the game, and I stopped being bothered by all that stuff far longer than five seconds ago. It’s sad though, sometimes something perfectly good breaks so you end up having to replace everything around it as well because you just cannot get that old part anymore. Then five minutes later you get to repeat the whole exercise.  It seems like the whole point of technology is not to give us better lives but to simply create the requirement for more technology.

Mind you, when this stuff can fix itself, THEN I’ll be worried!



Bloody Technology…

March 20, 2012

A video card in your PC is the hardware drives your screen displays. When it starts to die and your computer crashes/reboots every couple of minutes it makes it REALLY REALLY hard to figure what’s going on because you cannot see the screen long enough to use the dang thing, and even when you can, the display is all screwed up.

Yes, my home PC video card started to crap out last night. After half an hour of this I figured out that setting windows to VGA would at least let me see the screen but oh man, have looked at a screen in VGA lately. We used to think that was the bees knees when PCs first came out, now it looks just plain terrible but, beggars can’t be choosers!

So after another half hour of updating the drivers it was still as bad, if not worse. It’s hard to click on dialogs and buttons when you cannot actually ‘see’ them because the video card is not painting them correctly!

So tonight, it’s time to steal the video card from the kid’s old PC and install that in mine. Hopefully that will fix things and it’s not actually something worse.

At times I hate technology!

All is not always as it seems….

December 21, 2011

I received an email the other day with a PDF file attached. I thought I recognized the sender (It was someone I had emailed ONCE about a million years ago) so foolishly I opened the PDF file. Acrobat reader said the file was corrupt and it was trying to rebuild it, or something along those lines. Anyway I cancelled what it was doing. Then I thought ‘hang on, maybe all is not as it seems’ so I found an online file scanning service here, uploaded the file and it came back reporting that it contained a virus called exploit.PDFka or something like that.

So then I opened the PDF file using a text editor and it contained a whole bunch of real strange javascript. Whatever the script was doing was not normal. So I researched the PDFka virus and it seems it tries to download other programs (trojans I guess) from somewhere or other and install them on your PC. However it seems it only works with earlier versions of the PDF reader.

I ran several virus scans with Spybot S&D and Malwarebytes and it all came back OK so I am pretty confident nothing got installed on my PC.

None the less, a pretty frightening experience. The last time I had a virus I ended up having to wipe the computer and reinstall everything to get rid of it.

The moral of the story. Keep your software up to date and run some sort of anti virus toolkit. I use Spybot S&D and Microsoft’s Security Essentials.