Page 1
Standard

My Computer Build

Updated: Thought I would update this post with the 32″ monitor and mixer/surround sound headset/soundcard additions.

32 inch monitor

More recent pic of keyboards and mouse:
Razor Orbweaver Stealth, Das Keyboard with coloured keycaps, G9X mouse

I use my computer a lot, for work (software development), gaming and music production. I wanted to build a high-end computer setup, as I’ve always lagged behind with upgrades before. So I gradually have been accumulating and swapping bits around to make the setup above.

Case – Thermaltake Level 10 GT Full Tower
[Link to Amazon]

This was an expensive case, but I wanted to spend some money to get a quality case that I could use for future builds. It has many fans, most of which I don’t need, but they are very quiet and they make the CPU temperate a very cool 30-40 degrees, under regular load, even in the current heatwave we’re having. The case has 5 hotswappable hard drive caddies which is very nice and allows me to easily install and remove hard drives without having to take apart the computer. It also has a lock, USB3 ports and enough clearance for graphic cards and space for lots of upgrades.

Motherboard – Gigabyte Z77X-D3H 1155
[Link to Amazon]

This was bought because it was a cheapish seat for the Ivy Bridge processor and the 16GB RAM. It has some niceish features, such as the fancy 3D BIOS which you can navigate with a mouse, and the onboard graphics which is enough to get into the BIOS when your graphics card isn’t working. The onboard sound is best avoided.

CPU – Intel Core i7 (3770) 3.4GHz Quad Core
[Link to Amazon]

This was the processor that was the top of the mainstream mid-high end CPUs when I was purchasing. It differs from the 3770k as you can’t overclock it, but it has decent support for hardware virtualisation, which I wanted and is not available in the 3770k. I figured I wouldn’t miss the chance to overclock this for a good while, as CPUs of this type already are vastly overpowered for the applications that I use. CPU utilisation for typical use (not including games) rarely rises above 10%.

CPU Cooler – Arctic Cooling Freezer 13 Pro
[Link to Amazon]

This is a bit overspecced since I am not planning to overclock, but I don’t like stock heatsinks and so bought this. It is a huge heatsink and probably wouldn’t fit in many other types of cases, but as I have a full tower it’s fine.

Memory – 16GB DDR3 RAM Ballistix DDR3 PC3-17000
[Link to Crucial]

This is fast RAM for gaming. 16GB is a bit overspecced for my current needs, but it’s the maximum my board will take, and means I won’t have to upgrade for a long while.

Monitor – BenQ BL3200PT IPS 1440p 32″ Widescreen
[Link to Amazon]

This is a high-end 1440p 32″ monitor. It has made such a big difference to using the PC, more screen space, more pixels and better clarity. I was considering a 4K monitor, but don’t think the technology is quite cheap enough yet, and the software and games support is severely lacking.

Gaming Mouse – Logitech G9X
[Link to Amazon]

I upgraded from my G500 mouse to this, smaller, G9X. I have started to adopt the claw grip for gaming and generally using my mouse. This makes the larger G500 difficult to use, as the larger size means that the mouse buttons don’t click properly when you have your fingers higher up on the mouse. So far, I am very happy with the G9X, the higher DPI scanning, and the easier to grip ‘precicse grip’ material means that it is better for other reasons for me.

I use the Corsair Vengeance mouse matt, it is made of metal unlike my previous Razor Golliathus cloth one, which I didn’t like because the edge of the matt would get stuck in the mouse when you moved it too far.

Hard Drives –
Crucial CT256M4SSD2BAA 256GB SSD
120GB SSD
Seagate 3TB 3.5 inch 7200RPM 64MB Cache SATA3 Hard Drive

The 256GB SSD is my system drive, the older 120GB SSD is for games, and the 3TB HD is for storage: my music collection, video files collection, backup images and virtual machines. Being SSDs, the 256GB and 120GB drives are totally silent, making the 3TB HD sound really loud when it spins up. However, the 3TB drive has enough space to store full Blu-Ray ripped files.. not that I would do that, of course :)

Graphics Card – GeForce GTX 660 Ti 2GB DDR5
[Link to Amazon]

This is a nice, affordable, graphics card that was mid-high range at the time of purchase and still plays everything that I can throw at it, at max settings. As this is the heart of any gaming machine, it is the prime candidate for upgrade when the time comes to upgrade any of my components.

Wireless Card – TP-LINK TL-WDN4800 N900 Wireless Dual Band PCI Express Adapter
[Link to Amazon]

This wireless card is good because it has dual-band, meaning faster, interference free 5GHz spectrum access to my dual-band wireless router, and because it has three external ariels which you can replace. I have got a large indoor antenna replacement which allows me to double my wireless range, meaning I can pick up local wifi hotspots if needed.

Optical Drive – Pioneer BDR-207DBK 12x Internal BD-RW Burner
[Link to Amazon]

I didn’t really need a Blu-Ray burner, but it’s useful for backups and I thought I could write some discs to be played in my PS3. It has a very fast read speed for reading Blu-Rays and burning DVDs. To be honest I could have gone for a Blu-ray reader and DVD writer combo and not really noticed the difference.

PSU – 750W Crucial

750W allows a lot of headroom for graphics cards’ power requirements, and extra components in the future. It is a good quality PSU also, so shouldn’t develop any problems down the line.

Headphones – Sennheiser HD 25-1 IIs
[Link to Amazon]

These are what I use when I can’t use my speakers. I bought them for DJing and audio work. They have great sound isolation (these are used by sports commentators you see on TV, because when you’ve got them on, you literally can only hear what’s coming through the headphones) and great sound quality (a favourite for top DJs and sound engineers). They don’t look that great though, and aren’t the most comfortable, but whatever. One nice feature is that they are designed for heavy use and are almost indestructable. If someone steps on the headphone lead, they won’t break, the cables will just pop out of the cans. If the headset breaks, well you can remove the cans and just buy a new headset. They have high ‘sound pressure’ which means the ratio of sound that enters your ear versus the amount of sound that comes out of the cans, is quite high due to their closed nature and sound isolating design. This, combined with high frequency range and a large volume range, means it’s quite easy to cause yourself hearing damage if you have them on too loud usually, or if you have a temporary high volume ‘spike’.

Soundcard – Asus ROG Xonar Phoebus Solo
[Link to Amazon]

Good 7.1 surround sound card, with headphone amplifier.

Headset – Razer Tiamat
[Link to Amazon]

7.1 surround sound headset with microphone for using on voice chat while gaming. I’ve had a few problems with electrical interference when voice chatting, people complaining of an electrical noise when I’m in chat rooms. I think I have reduced it but I’m not sure whether this gaming headset is at fault, or the soundcard, or some other element of my setup. Also I am not sure in retrospect whether I’m entirely convinced by the idea of a 7.1 surround sound headset. Bit gimmicky.

Speakers – KRK Rokit G2 5
[Link to Amazon]

These are great monitors, which I use for music production, and make for great speakers for general use as well. They are a little large for my desk and have a maximum volume which is far too loud for my flat, but I wouldn’t be without them.

Speaker Stands – IsoAcoustics L8R155 Speaker Stands
[Link to Amazon]

These are sound-isolating speaker stands, which I have setup to raise the speakers to ear height. I have to say, they’ve made the speakers sound so much better, and they look good too.

Mixer – Allen & Heath ZED 10
[Link to Amazon]

This is a good recording mixer which also doubles as a great USB soundcard. It has 4x mono RCA inputs and 2x stereo RCA inputs, which is enough to wire all my synths up, as well as feed the Rokit 5s.

Webcam – Logitech C920 HD Webcam
[Link to Amazon]

I use a webcam for Skype often, and I want to get more into recording for YouTube, so I bought a good quality HD webcam. It has two microphones on it, so I don’t have to have the hassle of trying to hook up my Audiophile soundcard for Skype.

Keyboard – Das Keyboard Ultimate Silent EU
[Link to Amazon]

This is the model with the quieter Cherry MX Brown key switches. It is a good mechanical keyboard for all purposes, looks good, and will encourage me to type more accurately. I grew annoyed at missing keys on the blank keycaps, so I added my own coloured keycaps for high visibility (see picture below).

Gaming Keypad – Razer Orbweaver Stealth
[Link to Razer Site]

This is the ‘Stealth’ model with the Cherry MX Brown key switches. I was initially doubtful whether it was worth getting a gaming keypad, but so many people have recommended it, that I had to try it out. I actually have found it very useful, much more comfortable and accurate than using a normal keyboard for gaming. It also forces you to get into the habit of remapping keys for your own preference.

Standard

microKORG Original + Novation Impulse 61

I picked up a rather ugly (but very cheap!) customised microKORG, and also the excellent Novation Impulse 61 USB/Midi keyboard controller.

mkplusnovation

The microKORG I like a lot. It was my first synth, and at first I couldn’t make any sense of it. I do agree with the Reddit /r/synthesizers view that it is not the best synth to learn on. Their view is that the best synth to learn on is one with a one-to-one mapping between controls and sound engine parameters. To put another way, the best beginners synth is one which has lots of knobs and buttons on it that you can tweak and hear actual results in the sound. It makes it more difficult if the sound engine is hidden away behind a large menu system with lots of daunting menus, like the microKORG has.

However, now I know the basics of synthesis, I’m finding it much easier to get the most out of the microKORG. You can also map a midi controller to a lot of the parameters, turning it into a poor man’s MS2000. The older MS2000 shares the same engine as the MK.

The Novation Impulse 61 is great, although it does take up a lot of desk space. The keybed is much better than any controller I’ve tried before, and even though it’s not weighted like my digital piano, it is very playable. The aftertouch and the velocity sensitivity are settings I will no doubt appreciate more in the future, for now I just turn them off. The arpegiator with the step sequencer is amazing! It turns the arpegiator into a little groovebox. It is quite similar to the arp sequencer on the microKORG, where you can hit the pads to change the notes on the fly. However the Impulse pads are a lot more sturdy, and responsive.

There is a lot about the Novation Automap functionality that I haven’t explored. I want to wire up my old Remote Zero SL unit as a controller for the microKORG, so I have more of a one-to-one mapping between knobs and the MS2000 parameter functionality exposed via MIDI on the microKORG.

Standard

Pioneer DDJ-SR Serato Controller Review

dj controller

I decided to buy the DDJ-SR controller because it was cheaper than even the cheapest pair of Pioneer CDJs. I’m no stranger to using a laptop and controller, before the DDJ-SR I used my trusty Faderfox DJ2 controller, which is a basic no-frills ‘play buttons, 3 EQs, crossfader and volume faders’ unit.

I was considering getting the Native Instruments Traktor S4 DJ controller, which is one of the most popular full-size controllers for Traktor. However, after borrowing one from a friend, I compared the build quality of the DDJ-SR versus the S4, and there was no contest! The Pioneer DDJ-SR has the same buttons and jog wheel as the Pioneer CDJ units, which are rock solid and industry standard. For anyone wanting to use CDJs in the club after using the DDJ-SR at home, you will find the feel very familiar.

I looked at the DDJ-SR’s big brother, the DDJ-SX1. The SX is much bigger in size, and not as portable as the SR. This was a major factor for me, as it’s often difficult enough to find space in the DJ booth, even for a small controller. The DDJ-SX1 (not the newest model which may be out by now) has a pretty similar feature set to the DDJ-SR. There is only one main difference that is significant to me. That being the fact that the SX is a full 4-channel mixer, which can operate without being connected to a computer. But it wasn’t enough to justify the larger footprint and the much increased cost. So I decided to opt for the more portable DDJ-SR.

I tried out the controller at my local music shop, Dawsons (Manchester) . I recommend trying out the controller and also buying locally if you can, because it’s much easier to return a controller to the shop than it is to send it back to an online store, if you are not happy with it. I also believe in supporting your local music stores.

Being used to Traktor, and having used it since 2006, I was initially a bit cautious over switching to Serato. After I played around with it, and for my typical use, there was not a lot in Traktor that I didn’t find equivalents for, in Serato. One thing that was very nice is seeing the waveforms from each deck, and how you can visually ‘sync up’ the starting track with the beats of the one that is already playing. I have been surprised about how useful this is, it really makes beatmatching so easy when you don’t want to use the sync button, which I often don’t.

Pioneer_DDJ-SR

The DDJ-SR comes with 8 pads under each jog wheel. They are very responsive, every bit as responsive as Akai drum pads used for music production. The pad FX definitely expand the creative potential of laptop DJing. The ‘slicer’ is my favourite so far, it cuts the upcoming music into 8 slices. You can choose to play a slice (or beat) out of time with the progression of the track, for example, instead of 1-2-3-4-5-6-7-8 you can opt for 1-2-2-4-5-6-6-8. You can play combination you like, assuming you hit the right pads in time!

The ‘slip’ feature is very nice. When toggled on, the track plays on as you trigger samples and loops. It is as if the track is kept playing in the background while you pick out sections earlier in the track and play samples over the top, and when you have finished, the track snaps back, not to where you left it, but to where it has progressed to. You can use this feature to replace whole loops with other loops in the track and keep the rhythm of the track going. It is really powerful.

There is a four knob ‘FX’ section above each jog wheel. This is used to add FX such as delay, reverb, flanger, and so on. I don’t find myself using this much for my style of DJing. I do wonder how much of the FX and pad hammering you can actually do to a track before you start to annoy your crowd. They are great to use occasionally though.

Overall, I am very happy with my purchase. I had a pair of Pioneer CDJ400s and mixer back in 2009 which had a lot less features and cost over twice the price as this unit, and yet had the same build quality. Even if you ignore the ‘which is better’ argument of digital DJing versus CDJs, if you already have a laptop, this is a great setup for the money.

Standard

New Synthesiser Additions: Microbrute, Nord Drum and Access Virus A

I bought some new synths.

Access Virus A

access virus a

This is the original 1998 Access Virus A. It, it was a staple synth for trance and electronic music in general for the early 00s. I am very happy that I managed to get this secondhand for less than a MicroKORG. It cost over £800 when it came out in 1998. Old digital synths seem to be unpopular at the moment, I’ve heard comments along the lines of ‘if it’s digital then I might as well use a plugin in my DAW’. But I think this is ignoring the tactile control surface that you get, and how it gets your head outside the computer and playing an actual physical instrument. The presets are really inspiring, several sounds that you will recognise if you were into electronic music in the 00s. VNV Nation, one of my favourite bands, produced their entire ‘Empires’ album with just the Access Virus A and a couple of samplers.

It has two oscillators which have extra functionality, as you can choose the waveform from a large selection of presampled waveforms, in addition to the usual sawtooth, sine, square. There is also a suboscilator, two filters, each with a ASDTR configurable envelope, the usual ASDTR for the amplifier, and three LFOs. You can choose to map the LFOs to almost anything, allowing a great amount of flexibility. It also has effects – delay and unison, as well as multiple timbers, meaning that you can have up to 12 different patches playing at the same time, each controlled with different MIDI channels. The whole thing is extensively controllable via MIDI also. It is my first polyphonic hardware synthesier, and so has opened up a whole range of new composition possibilities around chords.

Microbrute

microbrute

The Microbrute is fully analogue, and it can produce a good number of sounds through its one oscilator, by allowing you to blend in different quantities of sawtooth, sine and square, along with some extensive extras, such as a metalizer. It has a Steiner Parker filter, a LFO and a step sequencer. You can get more technical details about the Microbrute in Marc Doty’s great series of videos.

It has a hard aggressive character to the sound, especially when used with the ‘brute factor’. I like its sound, but sometimes wish for a little bit more warmth. However you can make all sorts of sounds with it, and I particularly like making chiptune arpeggio with the square wave, such as in my track ‘Blue Sky’.

It also has a mod matrix that I haven’t fully explored yet, but is very powerful, especially if you want to link it up to other CV capable synths.

Nord Drum

Nord-Drum 1

This is an analgoue modelling drum synthesiser. It is the first Nord Drum so it only has four channels, but the presets sound great in the mix. I haven’t even looked at the synthesis options on this yet, as I’ve been really happy with the presets, but there is a whole range of options that you can shape and edit for your own sound.

My synth ‘shelf’

I have swapped out the older synths that I don’t use anymore. Currently I’m using the three synths above. The keyboard at the top is my Alesis Q25 MIDI controller, there is a ZED 10 mixer on the middle shelf which I use as a recording device, as well as a gold EMU Orbit which I don’t have plugged in at the moment.

My Synth Shelf

Standard

A* Algorithm implementation in Python

pathfinding

Lately I’ve had the idea of creating a text-based Roguelike in C++. This lead me on to think about the game AI experiments that I worked during my degree in Computer Science and A.I.. Essential to game AI is the notion of pathfinding, or finding a path from ‘A’ to ‘B’, past any obstacles that get in the way. One way to do this is to use the A* algorithm. I decided to implement an A* pathfinding algorithm for possible use in a Roguelike later, and chose the pseudocode from the Wikipedia example to implement.

The program finds a path from the top right hand corner to the top left, avoiding impassable ‘7’ obstacles. The ‘*’ are the steps along the path. The algorithm is guaranteed to find the shortest path between the goal and the start, which means it can optimally solve any solvable maze, given time.

This is a sample board with obstacles setup:

00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000000777000000000000000
00000000000000000000000000000007777000000000000000
00000000000000077777777777777777700000000000000000
00000000077777777777777777777777700000000000000000
00000077777777777700000000000000000000000000000000
77777777777000000000000000000000000000000000000000
77777777000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
77777777777777777707777777777777777777777777777777
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
70777777777777777777777777777777777777777777777777
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
77777777777777777777700000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000777777777777777777777707777777
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000
00000000000000000000700000000000000000000000000000

This is the path found (the ‘*’s):

**000000000000000000000000000000000000000000000000
0***********************************00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000000777*00000000000000
00000000000000000000000000000007777*00000000000000
00000000000000077777777777777777700*00000000000000
00000000077777777777777777777777700*00000000000000
00000077777777777700000000000000000*00000000000000
77777777777000000000000000000000000*00000000000000
77777777000000000000000000000000000*00000000000000
00000000000000000000000000000000000*00000000000000
00000000000000000000000000000000000*00000000000000
00000000000000000000000000000000000*00000000000000
00000000000000000000000000000000000*00000000000000
00000000000000000000000000000000000*00000000000000
000000000000000000******************00000000000000
777777777777777777*7777777777777777777777777777777
000000000000000000*0000000000000000000000000000000
0******************0000000000000000000000000000000
7*777777777777777777777777777777777777777777777777
0*****************************00000000000000000000
00000000000000000000000000000**0000000000000000000
000000000000000000000000000000**000000000000000000
0000000000000000000000000000000*000000000000000000
0000000000000000000000000000000***0000000000000000
000000000000000000000000000000000*0000000000000000
000000000000000000000000000000000**000000000000000
0000000000000000000000000000000000**00000000000000
77777777777777777777700000000000000***000000000000
0000000000000000000000000000000000000**00000000000
00000000000000000000000000000000000000*00000000000
00000000000000000000000000000000000000**0000000000
000000000000000000000000000000000000000****0000000
000000000000000000007777777777777777777777*7777777
000000000000000000007000000000000000000000**000000
0000000000000000000070000000000000000000000*000000
0000000000000000000070000000000000000000000***0000
000000000000000000007000000000000000000000000**000
0000000000000000000070000000000000000000000000*000
0000000000000000000070000000000000000000000000***0
000000000000000000007000000000000000000000000000*0
000000000000000000007000000000000000000000000000**

Here is source code

Amit’s A* pages were incredibly useful in developing this.

(Perhaps one day I will do a flashy JavaScript version!)