Home Network Design

Did some network design for my home network. This will ensure that my new Virgin Media 1100mbps/50mps speed is fully utilised without any bottlenecks and will futureproof things up to at least 2.5Gbs/speed connections.

I should be able to load balance both internet connections to utilise them both simultaniously in the future, but for now I want to be able to get greater than 1000mbit/s speed on a single device otherwise there is not much point in speed increases past 1000mbits. Also there is a 200-300mbits speed increase possible from my existing VM hardware that is not utilised in the current network.

I will be using this method to extract the full speed from the VM hub: https://tech.msh100.uk/virgin/networking/2020/10/17/virgin-media-greater-than-gbit/

Since I have drawn up the diagram, there have been a few improvements suggested – using fibre and fibre modules instead of CAT 7 and more expensive modules to convert to CAT 7.

DJ Setup 2/5/22

This is my current DJ setup that I use for Twitch streaming mainly.

  • 2x Reloop RL-8000mk2 turntables.
  • 2x Serato ‘Butter Rug’ Slipmats.
  • 2x Concorde Mk2 Digital carts.
  • Numark NDX500 CDJ which I use for playing CDs, and as a Serato Controller as it has Serato Integration.
  • Roland DJ-707m controller.
  • Sennheiser HD-25 headphones.
  • Rode Procaster mic with mic boom, pop shield and cage.
  • t.bone MB 88U mic with table stand that I use as a guest microphone.
  • AKAI LPD8 Midi controller which I use to trigger Serato Sampler samples.
  • Macbook Pro Early 2015 Retina running Serato DJ Pro.
  • Behringer TD-3 acid groovebox for adding acid patterns over the top of the Roland drum machine.

The audio signal flow is below:

On Serato I have 4 decks mode enabled:

Deck 1 – Left Reloop 8000mk2 running in CDJ DVS mode from the preamp to line input (PC mode)
Deck 2 – Right Reloop 8000mk2 running in CDJ DVS mode from the preamp to line input (PC mode)
Deck 3 – Inbuilt Roland TR drum machine used for redrumming tracks and also providing a drum loop for use with, and outputting MIDI, to the Behringer TD-3 (TR mode)
Deck 4 – Numark NDX500 CDJ used in Serato DJ Mode (PC mode)

Other possible config options

  • I can switch Deck 1 and 2 away from DVS to Line mode so that I can play all-vinyl sets. I often use this to listen to my record collection.
  • I can switch Deck 4 away from DVS to line mode so that I can play CDs in my set or listen to my CD collection.
  • I can switch Decks 3 and 4 to DVS PC mode and control them using the 707m jog wheels if I want to have a full 4 deck setup. Decks 1 and 2 are the Reloop turntables, and decks 3 and 4 would be the 707m jog wheels.
  • I can switch all Decks 1,2,3 and 4 to DVS PC mode and control them using the 707m jog wheels if I want to have a 4 deck setup self-contained using the 707m controller.

FX Setup

  • The 707m has a number of inbuilt Roland FX, and it also can use Serato FX. I have both setup as I have all the Serato DJ Pro FX packs.
  • I have decks 1-3 setup using the inbuilt Roland filter FX, so I can mix using the filter as normal, and deck 4 using the bitcrusher FX so I can bitcrush the drums.
  • I have reverb, echo and delay set to be my 3 Serato FX on the 707m which I can apply to deck 1-4 as needed.
  • I tweak the inbuilt Roland microphone FX as needed, usually I have it set to an echo on my main mic.

Audio Out Setup

  • I have the crossfader set to the default setup, so that decks 1 and 3 are on the left crossfader and decks 2 and 4 are assigned to the right crossfader. I have the crossfader curve setup on the default 12 oclock position.
  • I have master out, booth out and zone out all exact copies of each other, and pulling off the currently selected crossfader mixed output.
  • I have the master out using three pin XLR connectors going to my audio interface that is hooked up to my speakers and the Twitch broadcasting client.
  • I have the booth out going to my Eurorack which I have setup with an envelope follower module and an oscilloscope so that I can plot the volume envelope for just a nice visual effect.
  • I have the zone out going to my VU meter (not shown in picture) so that I can monitor the master out levels easily and also it looks good on stream.
  • I have feedback suppression turned on just in case my microphones pick up any feedback from the speakers.

I have a MIDI cable running from the Roland 707m to the Behringer TD-3 so that I can sync the acid patterns according to the beat of the inbuilt Roland drum machine on Deck 3.

Video Tools I use for my Media Collection

I use and recommend the following software for Windows. They’re all quite easy to use. The paid software all have lifetime subscriptions, which are worth it because you need the latest updates in this area.

Aiseesoft Blu-ray Player: (for playing Blu-Rays) (paid)
https://www.aiseesoft.com/blu-ray-player/

Easyfab Lossless Copy: (for ripping Blu-Rays, also works for DVDs) (paid)
https://www.easefab.com/losslesscopy/

VLC: (for playing ripped copies) (free)
https://www.videolan.org/

Handbrake: (for converting between different video formats and compressing video) (free)
https://handbrake.fr/

Plex Media Server: (for hosting video files on your network and playing them) (free)
https://www.plex.tv/media-server-downloads/

Movavi Video Editor Plus: (for editing video files, similar interface to iMovie) (paid)
https://www.movavi.com/videoeditor/

FFMPEG: (for splitting ripped video files, for TV series episodes) (free)
https://www.gyan.dev/ffmpeg/builds/

For using FFMPEG to split a ripped bluray track into episode segments, I look up the series on https://thetvdb.com which has fairly accurate epsiode runtimes, and then for example:

 ffmpeg.exe -i '.\Samurai Jack Season 1_001.mp4' -acodec copy -vcodec copy -ss 01:11:43 -t 00:23:00 samurai_jack_s01e04.mp4
  • .\Samurai Jack Season 1_001.mp4 is the source file
  • 01:11:43 is the start time
  • 00:23:00 is the duration
  • samurai_jack_s01e04.mp4 – is the destination file. I use Plex Media Server prefered titling for TV series, e.g. this is Series 1 Episode 4. This makes it easy to import with Plex.

I then test the episode in VLC by looking at the start and end of the file to make sure the split is correct, and adjusting the start/end times and re-running as appropriate.

Using VIM as a Word Processor

It may surprise some people to learn that I don’t use a word processor to write pure text any more, and haven’t for several months. I still have a subscription to Microsoft Office 365, and probably will as long as recruiters and offices around the world still pay the MS tax.

I have created my own custom writing environment in my favourite text editor, VIM. This may sound like an absolutely foolish thing to do to anyone who knows VIM. By default, it is not setup at all to be an effective word processor. It is a programmers text editor, and a very complex and difficult to learn one at that.

Over the past 12 years or so, I have been slowly customizing it to exactly my needs. The great thing about VIM is that it is highly customizable, and you can change almost every major element of it to suit your tastes.

I use the following plugins when writing text or markdown files.

Vim Pencil

This changes the wrapping mode and a number of other VIM options to make VIM suitable as a word processor instead of just a programmers code editor.

https://github.com/preservim/vim-pencil

GOYO

This is a distraction free way of writing. Because of the way I have set it up, there is a lot going on in the default interface of VIM. This strips everything away to just what you see in this screenshot:

https://github.com/junegunn/goyo.vim

I toggle the ‘GOYO’ mode by pressing <F12>.

Spell

VIM’s default spellchecker. I use it in British English mode (of course). As soon as I type a misspelled word, it highlights it. Then I can use the arrow keys to skip between each misspelling and fix it with some keyboard shortcuts.

Wordy

This picks up words which are not helpful. For example, I have a bad habit of using the word ‘actually’ too many times. Wordy will highlight this. It has a number of dictionaries of ‘useless’ words which it will check for. It is opinionated, but I find it does help improve the quality of my writing.

https://github.com/reedes/vim-wordy

LanguageTool Checker

This is a Java-based command-line open-source grammar and spell checker. It is very thorough and picks up a lot of things. I don’t know how it compares to MS Word’s checking, but I find it more useful than I remember Word’s grammar checker being.

https://github.com/dpelle/vim-LanguageTool

For more information on my VIM setup, check out my dotfiles repository at https://github.com/wordswords/dotfiles.

DJ Setup 03/03/2022

This is my current DJ setup with the following components:

  1. Decks 1 and 2 – 2x Reloop 8000mk2 Vinyl Turntables with Serato intergration
  2. Deck 3 – Numark NDX500 CDJ with Serato Integration
  3. Deck 4 – Roland 707m Serato Controller and Mixer using its internal drum machine as a deck
  4. Behringer TB-303 Clone fed into the Aux input of the Roland 707m Controller
  5. Pioneer EFX-1000 DJ FX Unit placed between the master out of the 707m controller and the input of the sound interface on the broadcasting PC
  6. Reloop Neon Serato Controller used to control the Serato DJ Pro sampler
  7. Rode Procaster Microphone (not shown in diagram) fed to the Mic 1 channel on the 707m Controller as the main microphone for me while DJing
  8. t.bone MB 88U Dual Microphone (not shown in diagram) fed to the Mic 2 channel on the 707m Controller as the guest microphone for use when I have guests in the studio

I have simplified things massively over the last year over my previous setups with the purchase of the Roland 707m. It it an amazingly clever piece of equipment and does so much. I think it is definitely one of the most advanced and most powerful controllers on the market today. This is what I can do with the new setup:

  1. I can now do 3 deck mixing with the NDX500 CDJ functioning as a third Serato deck, OR using one of the platters on the 707m to use as a third deck. Originally my ambition was to progress to 4 deck mixing which this setup can do, but actually I’m sure 3 deck mixing will be enough for the long term future for my needs (plus it’s difficult enough!!)
  2. I am keen as ever to go above and beyond simple beatmatching and add creative music artist tricks into my DJing. To this end I have the Roland drum machine built into the 707m. Mostly I will use it for simple redrum effects, but it can also be used to put down a simple beat to put other things over. I also am keen to use the TB-303 with its inbuilt memory of classic acid patterns to possibly play over the Roland drum machine as an intermission between techno/acid tracks, which I do play quite a bit.
  3. DJ FX are fun to use, although I have to be careful not to overuse them! I have full control over the Serato FX on each deck via the 707m which I use quite a bit. I also have the Pioneer EFX-1000 which can do some amazing transition FX. Unfortunately I can only put this on the master channel due to the 707m not fully supporting send/recieve to my liking, but I am sure it will be fine.
  4. The Serato DJ Sampler is very useful while Twitch.tv streaming to add some personal ‘sound bites’ and entertaining vocal quotes from movies etc, and the Reloop Neon controller is the best Serato sampler controller, and it is cheap and intuitive.
  5. The Roland 707m has some amazingly advanced mic controls, and I can apply full EQing and an effect to each mic. I use the echo effect for a stadium echo type sound when announcing new people entering my stream. It is a bit silly but people like it.
  6. When I get bored of Serato DVS, I can play real vinyl records on my turntables and CDs on my CDJ. This is useful for all-vinyl sets which I occasionally do with my growing record collection. I also have tons of CDs that are fun to use.
  7. With the Reloop 8000mk2s I can actually use the Reloop 800mk2 controller pads and Serato controls in combination with the 707m Serato controller pads. This is very powerful because it means I can use the splice loop effect with one hand at the same time as pressing the buttons to reduce the loop length with the other hand for a ‘fatboy slim stutter drop’ type effect. There are other combinations that can only really be done with seperate and dedicated controls for each Serato function instead of having to flip between multi-use Serato pads.

Working with Jenkinsfiles in VIM

Using Jenkinsfiles in repositories for declarative pipelines, which is an example as infrastructure as code, is absolutely the right thing to do, in my opinion.

However the tooling for debugging and error checking Jenkinsfiles is currently quite difficult.

Setup Jenkinsfile linter

First of all you need to make sure to be able to access the Jenkinsfile linter. This linter is processed on the Jenkins server itself, unusually. There is a configuration option that requires adminstrator access to the Jenkins server.

There are a number of options to access the linter, but Jenkins officially recommends the ssh server option with preshared ssh public keys as outlined here:

https://www.jenkins.io/doc/book/pipeline/development/

Once you have set it up, you can pipe Jenkinsfiles through ssh to the linter and it will lint the Jenkinsfile for you:

ssh jenkins.dev.mycompany.co.uk -p1337 declarative-linter < Jenkinsfile

(change jenkins.dev.mycompany.co.uk and the port number to match your configuration of course)

And it will output the errors in the file.

Jenkinsfile syntax highlighting in VIM

VIM won’t automatically syntax highlight Jenkinsfiles because they don’t have an extension that it recognises. This is easily fixed with the following autocommand added to your .vimrc though:

autocmd BufRead,BufNewFile Jenkinsfile set filetype=groovy

This will ensure that Jenkinsfiles have some measure of syntax highlighting when loaded, as they are valid Groovy files.

Jenkinsfile linting on save in VIM

Once you have the linter running on a ssh port (see above) you can add this line to your .vimrc to have the linter run whenever a Jenkinsfile is saved, allowing you to debug your changes when you save them:

autocmd BufWritePost Jenkinsfile !ssh jenkins.dev.myompany.co.uk -p1337 declarative-linter < %

(change jenkins.dev.mycompany.co.uk and the port number to match your configuration of course)

This setup should make it significantly easier to spot and fix errors in your Jenkinsfile before it gets to the git commit stage.

My Story in Tech

I thought I’d write here a bit about how I got into technology and how my career has progressed for those people wanting to get into technology.

I was lucky enough to be born in a supportive home to good parents. My father was an early entrant into the world of computing, and my birth certificate records his profession as a ‘Computer Science Lecturer’, which was very rare at the time. In actuality, I’m fairly sure he taught only at local higher education colleges, but technically that still made him a lecturer. At any rate, he definitely worked in computing at a time when few others did (1982).

I was always interested in computers as a child. From an early age I was often seen next to the family computers, which were supplied at a regular basis from my dad’s workplace as he took home computers to get more familiar with them. I mostly used them for games. I spent a lot of time reading as a lot of people did before the internet. When I was 11 I borrowed a programming book from the library for the BBC Microcomputer and painfully typed in lines and lines of BASIC code from this book for a simple game. It didn’t work. Frustrated, I left my programming ambitions there.

When I was 11 (1993) I got my first IBM compatible PC for my ‘schoolwork’. This sat in my room at a desk. This was a huge thing for me and I spent most of my spare time next to that thing, mostly playing games.

When I was 13 or 14 I first got online. My mum had an AOL account that she was meant to use for her teaching, and I was able to use it a few hours per week. That was a huge thing for me. I became really interested in hacking and computer security. I spent about an equal time playing online games, chatting online and trying to be a hacker. It opened up a huge new world for me because we lived in a rather sleepy countryside town and had very little access to the bigger world.

My parents in vain tried to restrict me from going online. I took extraordinary measures to get online because there was so much more for me there than old library books and right-wing country viewpoints. Some of these involved staying up until late and taking the modem out of my dad’s PC at night and putting it in my computer and surfing the internet all night. Later I got my own phone line extension to my room, briefly. I was allowed a set number of hours per week online and no more. My parents were worried I would spend too much time on the internet and not enough on my studies or the ‘great outside’. They were right.

I found ways to repeatedly break their restrictions including programming my Linux PC to repeatedly redial a number infinitely to trigger the relay in the phone socket lock they had put on the master phone socket downstairs. Eventually it ran out of power, and I was able to use the internet when I liked. My dad eventually had enough and disconnected my phone line extension to my room. But by that point the school had internet, and I was able to use it at lunchtimes and in my free time.

I was 16 (1998) and I started Computing A-level classes which involved a lot of practical programming. With my head start in computing I found learning to program easy and fun. I hadn’t really excelled in much else at the grammar school I was in so that was a big deal for me. We used Visual Basic 5 and I spent a huge amount of time programming, getting into trouble for hacking the school IT network, and learning about programming.

I ended up repeating the second year of sixth form because of health reasons, so I actually had three years of Computing A-Level. I spent the third year mostly working on a programming project that my dad had arranged with his IT support technician team he managed at the local college he worked in. The project was building a hardware stock management database in MS Access and Visual Basic. It was quite a huge project and I spent a lot of time on it, and also got hired for a month as a summer job continuing to work on it after I had finished it.

I got fairly good A-Level grades for the time and got a place at Sussex University studying Artificial Intelligence with North American Studies. I only took the NA minor because it promised a year in America. Soon however I found I wasn’t very good at North American studies, and the tutors took a dim view on my use of Chomsky in my papers around 9/11 and the far left American viewpoints I was into. So I changed my degree to Computer Science with Artificial Intelligence after the first year.

University was a time of great social adjustment and life experiences for me, and I had some quite serious mental health problems at university. This caused me to take a year out. I spent that year mostly geeking out and expanding my computing knowledge. A succession of summer jobs followed including some web development, QA testing for computer games, and finally working for a web start-up as a PHP developer.

I struggled at university mainly because I didn’t have the maths background for my degree. The courses assumed knowledge of A-Level maths, but I had never taken A-Level maths, and it was never asked for. So I found it very difficult studying advanced neural network algorithms, for example. Most of the degree though I found very interesting, and I got a lot out from it. My dissertation was another software project arranged with a local company, and I got a 2:1 for it, although the company was not interested in hiring me after I graduated.

It was 2005 when I graduated, and got a job at £13,500 per year as a junior developer working on MS Access/Visual Basic database front ends for a telemarketing company. The development team were impressed with my degree as none of them had degrees. I really didn’t like working there though, and only stuck it out for 6 months before moving on.

I worked a number of short term IT and software jobs, only sticking in one role for over a year. Various titles included PHP Developer, IT manager, SEO Analyst and Configuration and Support Administrator. I didn’t like the people I worked with, and I didn’t like the environments. The training and support was more or less non-existent which was a problem for me, as I didn’t really know what I was doing.

I was also DJing a lot in my spare time, and partying. Brighton is famous for its hedonism and I totally got caught up in that, and had a great time (mostly). At one point I was DJing in clubs two nights mid-week, not getting home till 2am or 3am on those nights, and having to start work the next day at 9am! Needless to say, even with the energy of being young, it took a toll on my work life.

This and the suboptimal career I had, culminated in me burning out quite heavily in 2008/2009. This coincided with the Great Recession in the UK, so jobs were difficult to find. I ended up moving from Brighton to my parents and spent around a year getting better and fitter, cycling every day for hours, and taking on some part-time tech work, but nothing full-time.

In 2010 my parents had had enough of me lounging around the house, so it was time for my next steps. I applied to an MSc course at Kent University, I applied to a tech job in Kent and I applied to the BBC in London. I got accepted by all three, which was nice. In the end, I chose to go with the BBC and moved to London, staying in an incredibly small and expensive flatshare in East Acton and cycling to White City every day.

After a year the BBC moved our department to Manchester, and I was asked if I wanted to go, which I definitely did. I had visited Manchester before in 2009 for a cycling trip while I was unemployed, staying in hostels to minimize cost, and was amazed with the amount of space there was compared to the South East. And the prices too for a big city.

So I ended up moving (2011) to the BBC offices in Media:City UK in Salford Manchester with my girlfriend at the time. Manchester was so cheap back then that we were able to rent a large flat in NumberOne, which was actually attached to the building I was working in! This was very convenient for me, and it was a luxury arrangement compared to life in London.

I spent 7 years at the BBC and learned and a lot about technology and Agile software development. There was a huge investment in learning in our teams, and there was the BBC Academy which ran some good courses on software development. We also got sent to conferences and had coaches come in to give us lessons during our work day. It was a good place to learn.

After a while I realized that it was not a good place for senior engineers and I had watched the budgets steadily been cut back and back over the years. My wage hadn’t really moved for years and I thought it was time for a change.

I moved to Arm (2017) which really was a huge change in a number of ways! It was focused on C++ and embedded software development whereas the BBC was much more about web development. Arm also hadn’t adopted Agile at all, and was not really a collaborative place: it was a place for geniuses who liked to work on their own.

While I definitely liked to work on my own, and I learned a lot while at Arm through their excruciatingly accurate code reviews, the environment was definitely not right for me. I left after two years there.

Fast-forward to today (2022) where I have worked for a couple more organizations and seem to have found a niche as a ‘software automation engineer’: which is a combination of DevOps, QA tester, and developer. I have several years experience covering each, so it is a good role for me, and is in demand.

Privacy and Security methods I use

Ever since I worked at an internet marketing company on an advertising analytics platform, I have realised that I don’t want my personal internet browsing tracked, monetised, influenced, and sold to the highest bidder. These are the steps that I have taken to reduce (you can never totally eliminate) this process.

Pi-Hole DNS

This is a DNS server installed on a Raspberry Pi on my local home network. I have all the internet traffic going through my Virgin Media router filtered through this DNS server. It has many privacy-boosting features, but its main claim to fame is that it blocks the vast majority of internet advertising and analytics traffic on the DNS level. It currently blocks 20% of the requests made, which results in approximately 20% faster internet for me, and a lot more privacy/less tracking/less adverts.

https://pi-hole.net/

Firefox Browser

Using the Firefox Browser is kind of a no-brainer for internet privacy, because of out of all the main browsers available it is open-source and not controlled by a large commercial tech company. It has the best default privacy features out of all the browsers I’ve used. I use it on all my devices and the configuration is synced across all of them.

AdBlocker Ultimate Firefox Extension

This is the best web page advert remover I have used. It is constantly updated with new ways of removing adverts as the main companies like Facebook find ways around it. It currently removes all the adverts on all the web pages I browse on, including Facebook, which is quite a feat.

ClearURLs Firefox Extension

This removes all tracking elements from URLs in web pages you load, automatically. Tracking elements are information passed through in parameters appended to the end of web page links which provide information on where the traffic has come from and the tracked behaviour of the web user on the previous site. This is particularly important in advertising analytics, and breaking this chain between websites does a lot to protect your privacy.

Fakespot Fake Amazon Reviews and eBay Sellers Firefox Extension

This plugin is not strictly related to privacy but does help an awful lot on online shopping. It analyses Amazon and eBay reviewers for patterns to help understand whether they are fabricated or not. Often online merchants will use fake reviews to boost an otherwise mediocre product. This helps me save money on those.

Kaspersky Anti-Virus Protection

This is another level of general internet protection from the paid Kaspersky anti-virus product. Kaspersky costs me a small subscription every year but it is better than the free alternatives, and offers this browser plugin which has been helpful in sniffing out malware.

The Persuit of Happiness and the Hill-Climbing Problem

It seems that for a lot of people, perhaps the vast majority, they cannot expect to be 100% happy all the time. Even those incredibly successful celebrities and incredibly rich CEOs and politicians are not happy 100% of the time.

So is it a good idea to seek 100% happiness right away? Or should we always try and select the ‘least worst’ situation? If we keep making progress and optimse our happiness levels through constantly selecting the ‘least worst’ situation whenever we have a descision then it seems to me we will maximise our happiness potential in the long run.

Once we have reached the plateau of happiness for our chosen path though, and we are not getting any happier or there is no way to continue improving our happiness, then the only way of potentially improving our happiness is to do something radical and leap to another approach.

For those with training in A.I. or optimisation algorithms, I see this conceptually as see this as a hill-climbing local optimsation plateau problem. You can optimise locally your happiness level, but you need to take a risk when you have plateau’d in your happiness along your current path, to do something completely different and jump to another hill which might offer a higher level of happiness in the long run, although it may not. The amount of risk you take is dependant on the knowledge you have (the heuristics) that the next ‘hill’ or path you take will lead to a better outcome. But.. if it won’t, and all the paths available to you have been analysed, and you will not make yourself happier, you have won at the happiness problem. You are the happiest you can make yourself and no amount of seeking happiness improvements in your life will help.

This can be extended to job hopping, relationships.. of course there is an amount of risk as we never have a perfect heuristic but the concept is the same. Through constantly hopping hills and constantly seeking 100% happiness you can make yourself less happy than you thought. Maybe you were never born to be 100% happy? Maybe none of us ever were, we can just do the best with the oppertunities we were given.

I don’t know if I explained it well but this does a better job:

https://en.wikipedia.org/wiki/Hill_climbing

Retrospective on 2021

Well, 2021 has been a bit of a downer in a number of ways. There has been some upsides though.

  • I spent the first part of 2021 burned out, as in – totally burned out – of my career and really needing a break. This affected my work. It turns out that unknown to me at the time, I had cancer, Hodgkins Lymophoma, and a lot of my lack of energy and generally feeling awful was down to a large tumor that had been growing my chest for some time and was pressing down on my heart and lungs. In June I was admitted to hospital and they diagnosed the cancer. In July I started chemotherapy. Now the good news is that Hodgkins Lymphoma is one of the best cancers to get if you were able to choose, as it has a very high cure rate and very low fatality rate. The chemo as of November’s scan seems to be working even better than expected and they were expecting a good outcome. So that is positive. I should hopefully be done with chemo by March 2022.
  • One of the good things about 2021 has been the job that I found in the music industry. It is still doing software engineering, what my career has been based around, but they seem like a very nice bunch of people, and were prepared to support me and keep me on around chemotherapy. I am still employed part-time and that has been a HUGE help financially as you really don’t get a lot of money in benefits from the government, even when you have cancer it seems, and my family have had to help me out quite a bit. I have also had some success in the work that I’ve been doing – it seems very appreciated which is something I’m not really used to!
  • I have continued DJing on Twitch which has been great. I still do my regular Sunday show for 4 hours most Sundays, and it is a lot of fun and I have a bunch of regulars who pop in. I enjoy it a lot. I reached 500 followers and raised a LOT of money via charity streams with other DJs, both as a DJ and also helping as an organiser.
  • In December Conny and I caught the omicron varient of COVID-19 and that was a huge worry at the time because of my low immune system due to chemo and cancer. However we both have beaten it now, I had a short stay in hospital but it wasn’t that bad. NHS staff were very helpful and I think it really helped that I had 3 vaccinations in my system at the time of catching it.
  • In Jan 2021 I took the third of the 10 week university level courses at Point Blank Music School as part of my study of Electronic Music Production. This course was on mixing and mastering. I have learned a lot from it already, although I still haven’t finished it as I was quite busy most of the year.
  • I single-handedly raised £270 from friends and family for a cancer charity for my mother (who also has cancer) during a 12 hour DJ stream on my birthday in 2021. Ironically I had no idea I had cancer myself at the time.
  • I ripped all of CDs to FLAC. Hundreds of CDs. Ripped hundreds of DVDs, PS2 and PS1 games too. Hosted them all on a Plex media server and gave the majority of discs away to charity.
  • I sorted all my physical books, split into different subject bookshelves, alphabeticalised and catalogued in GoodReads.com.
  • I have read more books this year than several previous years. I still have a huge backlog to go through though.
  • I played quite a few more computer games than I have for a while, including beating Cyberpunk 2077 in a no-sleep 28 hour marathon after it was released. (Although that was technically in December 2020 I am going to include it anyway). It was such a great game in my view, amazing storyline and setting.

Here’s to 2022!

Setting up Enlightenment window manager on Ubuntu 21.10

Enlightenment is a very underrated window manager choice, in my opinion. It still looks very pretty and is very configurable. There is a packaging bug with the latest version of Enlightement in the 21.10 repo which means it doesn’t work correctly. The fix is to set the suid bit on the ‘enlightenment_system’ binary. So:

  1. sudo apt install enlightenment
  2. sudo find /usr/lib -type f -name enlightenment_system -exec sudo chmod 4755 {} \;
  3. Log out of Ubuntu
  4. Click the settings cog in the bottom right to change your Window manager to enlightenment
  5. Log on and the settings wizard will help you configure Enlightenment

My Simple Commandline Git Workflow

This is a simple description of how I work 99% of the time, as I am a simpleton. Origin/main is the new origin/master for future repositories, I just note both here for completeness because I use origin master for a lot of current repos.

  1. I first make sure I am uptodate on origin/master or origin/main by git pulling.
  2. git checkout origin master
  3. git pull origin master
  4. I start making changes to the local copy on my local machine.
  5. When it gets to a point where I want to save my changes, I:
  6. git stash push
  7. git checkout -b <branch name which will be made into a PR>
  8. git stash pop
  9. I then commit the changes to the new branch.
  10. git commit
  11. When I am ready to create the PR, I create and push to the remote branch:
  12. git push origin <branch name which will be made into a PR>
  13. Github will tell me if master/main has diverged past a state where my commits can be merged in without conflict. If there is a possible conflict, I will merge in origin master/main to my local copy and then push to the PR branch again:
  14. git checkout <branch name which will be made into a PR>
  15. git pull origin master (or origin main)
  16. I resolve locally conflicts through git mergetool which, for me, is vim’s three way diff tool.
  17. I commit the updated conflicts and push to the remote branch – git add && git commit && git push origin <branch name which will be made into a PR>
  18. Often at this point I find I have to add new commits to fix things I have broken or have been flagged up in PR review.
  19. git commit
  20. git push origin <branch name which will be made into a PR>
  21. Reviewers now have some of their comments made on stale commits in Github. This is better than squashing the commits I find because sometimes the commits are not stale and their comments are still valid, and it becomes easier to keep track of. They can view the ‘files changed’ tab to add review comments until they are happy. I loop back to check whether master/main has diverged, and if it hasn’t just keep adding commits to address their concerns.
  22. The PR gets approved (hopefully)
  23. I merge the PR into master or main
  24. I delete the old branch

How to fix Plex Media Servers ‘Various Artists’ problem using Beets.io and other tools

The Problem

As of the day of posting, Plex Media Server has a suboptimal handling of Various Artists compilations. Unless you follow BOTH of these rules, described clearly on the Plex support here under ‘Various Artists’, then they won’t appear collected under a particular album, they will be spread out filed under the different artists that created them. I think it should only require one of these rules, but it is not up to me. The problem is that release metadata available from the online metadata databases, often doesn’t follow these rules – lots of DJ mix compilations for example, do not set albumartist tag to Various Artists from the online metadata databases.

Also you may want to adopt a different file structure for your music than what is recommended and essential for Plex. I would agree that ONE of these measures should be required, and I would argue that setting album artist would be enough for Plex to figure out this problem, but you also need to structure your music also under the way they suggest, you won’t get the desired result of compilations being collected as a single album and in order.

My Solution

Firstly, you’re going to have to manually add the ‘Various Artists’ content to the ‘albumartist’ tag for all tracks in a compilation that doesn’t have them. Currently I’ve only found a way to do this by hand, would be very interested in any automated approaches, or if someone wants to write a beets.io plugin that would be amazing. You can do this with any tag editor, but I wrote my own solution which is faster for what I want to do and easy to use on my existing Beets.io setup and database which has a lot of these problem compilations already. Because I am using Windows I wrote a batch file which uses several third party tools to fix the metadata fast. You will have to download and setup the tools seperately, details are in the batch file comments.

Secondly, you’re going to have to make sure that Beets.io moves your files into the way that Plex Media Server recommends. This is my current Beets.io config file, the important bits here are the file rename and move structure, as per the support page, it has to be something along the lines of:


$albumartist/$album/$artist - $title

My Process

  1. ‘beet ls <query string> to identify tracks that need fixing. ‘beet ls fabric’ for example, got almost all of my dozens of Fabric mix CD tracks, which sped up the renaming significantly than using a GUI editor to go in and manually change each album. You have to make sure that the query string selects only the tracks you want to modify, unless you want to go back and edit those few tracks that got caught in the process later.
  2. I send that query string to my batch file which goes through the ‘beets ls -p ‘ full path results iteratively and runs a couple of command line tag editors on them, the first works for all MP3s and the second for all FLACs, e.g. ‘.\tag-various-artists.bat fabric’
  3. ‘beet update’ to update my Beets.io database with the new metadata I’ve changed with the batch script.
  4. ‘beet dup -d’ to delete any duplicates that have arisen.
  5. ‘beet move -p’ to preview the file moves into the new directory structure that is required by Plex.
  6. When I’ve scanned through and am happy with the file moves – ‘beet move’ to do the moving.
  7. I then backup my files through robocopying to an external drive, but this is not essential.
  8. Make sure you have checked ‘prefer existing metadata’ in the Plex options for your music library.
  9. Set Plex to rescan your libraries metadata.

Tools

The batch file I use, my beets.io config and other tools I use to organise my music collection on Windows 10.

The Results

All my Fabric mix CDs are now properly collected under one ordered album each on Plex:

My PSP Entertainment System for 2021!

I have recently been in hospital and been diagnosed with a condition that might mean I need to return quite a bit, at least in the short term. When I was in hospital I was struck by the fact that there were very long periods of waiting and it was easy to get very bored and quite dejected just sitting in a hospital bed.

Also there is not a lot of room for laptops, tablets and other things – you really don’t get a lot of space by your bed usually to store large items and they are not practical most of the time. Therefore I thought I would hack together some kind of portable entertainment system that I could use to pass the time and to block out some of the hospital negativity if I need to be in hospital again. My DJ headphones Seinhausser HD 2-IIs are actually very useful in a hospital because they are very good at sound isolation and you can remove one of the ear cups so you can lie on your side in a hospital bed and just listen to one earcup without it being uncomfortable, so they were very good to use with the PSP.

I chose the PSP 2000 model as it is very capable of playing emulated games up to Playstation 1 era, which includes my favourites the GBA, SNES and Genesis games. It also has option to watch Sony UMD movies, and the screen is actually very good and clear in the dark and most light settings.

I went through Etsy until I found a seller that was selling custom PSPs. They came with a tested battery, a mint condition screen and you could choose from a number of different cases. I chose the rare special edition Japanese signature Model 000001 Tsukimi case and it came to quite a reasonable price overall, £160 for everything although no memory card was supplied.

When it arrived, I was a bit worried that the screen would be scratched, but when I peeled off the screen protector there was zero damage to the screen. In all other ways it seemed mint, so was very happy. The battery was an official Sony one which still held a charge well, which I was very happy about because it is difficult to find a good battery.

I peeled off the screen protector and put on a new one straight away. I also ordered a 32GB PSP memory card, and a joint USB charge/data transfer cable. When the card arrived I put on the PSP 2000 ‘PRO’ Custom Firmware, allowing me to ‘root’ the device and install third-party software such as emulators on it. I then installed a PSP Snes9x version and downloaded a full complete set of SNES games and copied them to the memory card. I had to split the games up into folders of 200 games or so each otherwise the PSP struggled indexing all the games, but when I had done that they all worked. I could play any Super Nintendo game ever released on the emulator on my PSP and take them anywhere.

I also bought a hardshell carry case for my PSP which will have enough room for a charger, a few Sony UMD disks and the PSP. The PSP 2000 models are different from the 1000 models in that they actually have a HDMI cable available, so you can connect them to a HDMI monitor. So I bought one of those to play when I am home at my desk with my HDMI monitor – it is a much better user experience! See the picture below, it even works well in my 21:9 ultrawide monitor after fiddling with various upscaling options:

I already had a couple of Sony UMD discs and they are very cheap on Ebay, so I splashed out and ordered a complete set of the Harry Potter 1-8 movies. I could definitely just rip movies and put them on the memory card and it would save a lot of hassle but I like the UMD format and as I said they are very cheap nowadays. I may put some additional video file rips on the memory card.

I got ALL the information I could have wanted for this project from the excellent Reddit subreddit ‘PSP’. Reddit is a font of useful, up to date, technical info and just following the wiki and top links on that subreddit really was all that was required to do everything I needed.

Making Twitch DJ Promo Mix Videos

Sometimes as a DJ you may want to reconstruct the Twitch stream you have streamed into a video format to send to other people, for promotional purposes, or just to have a record of what you’ve done. Twitch makes this difficult though, as it mutes copyrighted music in the video it records for your Twitch stream. Also, when you download this video, it does not include the chat log, so any attempts at reconstruction are without the chat, so it looks like the DJ is just talking to him/herself. Not good. However you can get past this. This is how I reconstruct a video set to create a promo DJ video mix for my stream. You will need:

  1. Twitch.tv VOD recording of your stream
  2. A full audio capture unmuted. I use mixcloud.com for this as I find it very convinent. It is a paid service but it’s cheap, and you can just set it as a stream endpoint on Streamlabs OBS and forget about it – it will record all the audio from your streams. Currently there is not an option to download the audio, but you can get past that, see below.
  3. https://github.com/lay295/TwitchDownloader – The Twitch Downloader tool that allows you to download chat logs from the Twitch VOD and reconstruct them into a twitch chat pane video
  4. A video editor and some basic video editing skills. iMovie for OSX is good, I use the free Video Editor for Windows 10

Downloading the video from Twitch

Just browse to your video section of the creator dashboard and you will have an oppertunity to download the video of your Twitch stream.

Downloading the audio from Mixcloud

Make sure your audio recording is published on your Mixcloud and just use the site https://www.dlmixcloud.com to download a m4a copy of your audio stream.

Downloading and rendering the chat playback using Twitch Downloader

This is a great program but is a bit technical. There are two steps you need to do – 1) download the chat logs from a VOD and then 2) Render them into a video. So for example:

  1. .\TwitchDownloaderCLI.exe -m ChatDownload -u 1055017670 -o bla.json

    – where 1055017670 is your VOD ID (find this by browsing to your video on Twitch. the VOD ID will be displayed in the URL)

  2. .\TwitchDownloaderCLI -m ChatRender -i bla.json -h 540 -w 212 --framerate 30 --update-rate 0 --font-size 11 -o chat.mp4

    – this will render your chat playback in a video file with the dimensions 540x212px and the font-size of 11. This is what I use, you can edit this to suit your tastes.

Once you have these three elements, you can use any good video editor to sync the audio with the video, and overlay the chat video onto the video of your stream. Add some titles and there you have a promo video.

Distributing your promo DJ mix video

You may run into problems distributing your video as services like YouTube will flag up that you are using copyrighted music. However you can use the fantastic Handbrake tool to compress your video file into a small filesize, and then upload the resulting video to Google Drive. Then you can set Google Drive to ‘share via link’ and distribute that link to people you want to watch your video. They will sometimes be offered a live stream option but for best results they need to download the whole video file (so make it small!) and watch in a video player like Windows Media Player.

A Basic Example – Here’s one I made earlier

Remember to download the whole file for best results: https://drive.google.com/file/d/1qezKXSAvBK29hUCcuRNx1i3-fnodVss9/view
You should (maybe) also be able to preview it here:

Using Navidrome on a RPI3 to host my music collection for DJing so I can listen between sets

As a DJ it is important to listen to the music in your collection so you get an idea of what would work in particular sets, and you have a memory of how the tracks progress. So I decided to host a Spotify like service in my house so I could listen to my 500GB+ DJ music library. Navidrome (free open source software from https://navidrome.org) is running on the Raspberry Pi 3 which is under my desk via a wired connection with it’s own http://navidrome.local custom domain name. This is what it looks like:

It remotely mounts the music share on my main Windows PC which is almost always on, and quickly indexes and serves up the content in a Spotify type way.

I have setup an iptables port redirect so that any web traffic to port 80 or port 443 will be redirected to the correct navidrome app port so I don’t have to remember the obscure port number just the domain name above. I have also setup AutoFS to automatically detect when my main PC is running and mount the windows share automatically, so everything just works whenever my main PC is switched on and off, and docker-compose automatically loads the container whenever it goes down and the setup persists between reboots of the RPI and the windows PC. I have also installed Plex on the same RPI, using AutoFS so that it mounts and unmounts the video share on my other PC when it is switched on. I have ripped a bunch of comedy videos from my DVDs and BluRays using Handbrake.

Navidrome implements the Subsonic API, so it is compatible with a lot of different applications, including the excellent DSub application for Android which offers a more mobile-friendly streamlined player that connects to my Navidrome server and allows caching and pre-downloading, and a bunch of other cool features.

It provides an easy way for me to browse and play any music from my music collection from anywhere on my network, and it has full metadata added as part of my DJ music metadata workflow (see: https://davidcraddock.net/2021/05/05/organising-huge-music-libraries-with-serato/ for more info). I have also setup my RPI3 as a ZeroTier bridge to my local network, meaning I can create a P2P VPN from my phone to stream music via DSub when I am outside the house too, or to access Plex on the RPI from my phone while I’m on the move.

Another useful feature is that I can save playlists using Navidrome and download all the files that make up the playlist via the web interface. This is useful for preparing a set and moving all teh files onto my DJing laptop so that I can analyse them in Serato and play them in a Serato crate.

Proper Care and Operation of Vinyl Turntables for DJs

Setup your new Turntable

Follow this and only this guide. This is the best vinyl setup video on the internet as of 2021:

A lot of DJ turntables are based on Technics OEM clones, and so you will need to set the tonearm height, which is the only thing not covered by the above video:

The Basics

Once you’ve setup your turntable:

0) Should go without saying that I always use a velvet dust brush on my records just before I play them. Only takes a couple of seconds when you’re used to doing it.

1) I always use a stylus guard or record player dust cover when not using my decks.

2) I regularly clean my stylus/needle either by blowing or (how you’re supposed to do it) with a stylus cleaning brush.

3) I highly recommend you get one of these tracking weight scales: https://www.amazon.co.uk/Precise-Digital-Turntable-Backlight-Cartridge/dp/B08DKR87ZC/
and a small 10cm or so spirit level.

4) If you are dealing with expensive records, records you care about, or records that you think one day might become expensive, I do think it is a worthwhile investment to get a set of good outer covers for the vinyl jackets and some good quality inner sleeves to replace the inner sleeves (often printed paper) that come with the record. You typically put the old sleeves next to the record in the outer sleeve so they don’t get worn down by use. This will cut down the amount of dust and static that accumalates also. Take the digital download cards out of the records when you open them – if you leave them sealed with your record for years they can cause compression marks on the vinyl. I usually redeem them online once I buy the record and then rip up the digital download card.

5) Vinyl is an analogue medium. Occassionally things are going to go wrong – you’re going to get some fluff on your stylus and the record will stop tracking properly, or the record is going to skip, or there will be crackling from surface noise, dust, dirt, whatever. You will have to take action, usually involing lifting the needle from the record, often in the middle of your set. Be prepared, but you can always remind the audience jokingly that you are actually playing real records – they will (hopefully) understand it’s not like pressing a button.

6) Needle drops. I do not recommend beginner DJs start dropping the needle manually onto their records. On every record deck there will be a lever that gently lowers the needle into position on the record, and raises it when reversed. It IS possible to bypass this and drop the needle manually and gently on the record without using the lever, and lots of very experienced DJs can do it so well that there is no long-term damage to the needle and they are faster and often more accurate than using the lever, but doing it this way there is much more of a risk when starting out that you will scratch your records. Scratch DJs and old timer vinyl DJs drop the needle all the time, and good for them. Until you are more used to everything I recommend you use the lever.

7) Flight cases. You can get cheap second hand flightcases that have lasted decades and probably will last decades more. You’re looking for something sturdy and mostly metal but as light as possible. Make sure there are no dents and the catches operate like they should, and your decks and mixer snugly fit in without any movement. Coffin style flightcases are a popular option for vinyl DJs as they reduce setup time, but they are pretty heavy. Remember to check with the venue how much space you will have and will they have a table or booth you can put your entire setup on. A lot of venues are used to much smaller controller setups so check first.

8) Record boxes/bags. There are lots of different options here. I would recommend a secondhand metal flightcase style record box which is as light as possible, opens up at the front so you have plenty of space to shuffle through the records, and has wheels and a handle so you can pull it around like a suitcase. A full record box can be VERY VERY heavy! Only take the ones you know are going to go down well. There is a lot less manouvering space in your set for real vinyl DJing as opposed to just turning up with a controller and 20k songs to choose from, so you have to plan things more. Get a good idea what type of music you are booked for, and what people are likely to like. Make sure the records you have are good quality and will not skip or cause you problems. Remember to keep records away from direct sunlight – they will warp. A good habit is to put them back in the box once you’ve played them. They should always be kept standing up vertically, never stack them horizontally as the weight can cause problems for the bottom records. You may opt to leave behind all the outer sleeves and inlays etc and put each record in your record box only in a paper inner sleeve where you can write the artist, the track, the position on the record, and the BPM, and anything else you want to make selection easier. Colour coded stickers can be useful. Don’t assume you will have light in a darkened environment to read your inner sleeves, and I wouldn’t rely on your mobile phone torch – it uses up battery and you might need it for other things. You can get clip-on battery powered lights or keyring pencil torches that last for ages on a single battery.

Monthly Maintenance

Once every month or so, I do this:

A) Check the spirit level on the platter of your turntable without a record, to make sure that from top to bottom, from left to right, and from the center to the outside of the platter, everything is stable. If anything is off, use the adjustable feet on your decks to make sure everything is level, or put some cut up cardboard under one of the legs to lift it, if you don’t have adjustable feet.

B) Use the scale recommended above to check the tracking weight, again without a record on. Make sure it is within your cartridge acceptable weight range, but relatively low within that range unless you’re doing a lot of scratching. Higher tracking weight = quicker burnout of needle and record, but closer tracking when you scratch.

C) If you are using DVS, use some vinyl record cleaner to clean the DVS timecode records you’re using, and wipe them clean.

D) If you are using DVS, recalibrate the decks using the DVS software so that it uses the right sensitivity after any adjustments you have made.

E) Check all the connections on the back of your turntables, make sure they are tightly plugged in, occasionally they become loose over time and with knocks, and that can cause problems.

F) Check the speed of your platter is stable and spot on at different speeds – most OEM Technics style clones have a small strobe light and a number of dots. Learn how to use those to quickly check that all is in order.

That’s it. That’s all you need to do to make sure your equipment is reliable and lasts a long time.

Lighting and Camera Setup

Light Sources:

  • Phillips Hue Colour Lamp (top right)
  • Phillips Hue Colour Lamp (Middle)
  • Phillips Hue Colour Lamp (Bottom)
  • Phillips Hue Lightstrip
  • “DJ David Craddock” white illuminated sign
  • “Live on Air” blue sign
  • Laser (green or red laser wash)
  • Revolving disco balls

Dark Music Lighting Settings

For Phillips Hue sources I use Hue Sync on my broadcast PC which syncs the lights in time with the music. I will use different palletes depending on the event. For darkwave/dark music style events I will use this pallette:

I will have the ‘Live on Air’ sign on, but not the disco balls or the laser.

Generic Disco/Party Settings

For lighter/retro music settings such as my bi-weekly ‘DJ’s Choice’ I will use the following settings:

I will have the ‘Live on Air’ sign on, and the disco balls and laser.

Cameras

All cameras are mounted on tripods and require a USB port. Most have USB extension cables.

  • Spedal Wide Angle camera – this will be used as the DJ CAM as the wide angle will cover the entire room
  • Logitech C920 A – this will be used as the Decks Cam Right
  • Logitech C920 B – this will be used as the Decks Cam Left

Resolume MIDI Control in my Twitch DJing Setup

I have retired the Novation SL Zero Mk1 MIDI controller that was causing me a lot of grief when I was running Resolume and Ableton Live at the same time, as its Automap functionality was locking on to the Ableton Live mixer in session view now and then, and so, sometimes, when I thought I was controlling Resolumes visual FX, I was actually changing the volume faders in my DJ mix. Which was bad.

I have replaced it with the even older but classic Behringer BCF2000. I use the sliders to control the 8 dashboard visual FX controls on Resolume. I also have attached two pedals to the BCF2000. The first one, the sustain on/off switch pedal, I have mapped to control whether Resolume is running in autopilot mode or just looping the current visual. This will allow me to set it on autopilot through most of the set and then focus on one visual when I want to do some more involved stuff. The expression pedal, I have set to control the opacity of the top layer. I run Resolume with two layers, the main layer which is usually a background of an animation, and then the ‘extra lines and bars and stuff on top’ layer. So when I gradually depress and release the expression pedal, I fade in and fade out the ‘extra stuff’ layer from the scene.

I have additionally mapped four buttons on the Behringer BCF2000 to manually skip forward and backwards each layer through the prepared layer list. So if one layer is boring or I want to select something specific I have some control over that without having to open the Resolume window on the PC.

So far I’m happy with the autopilot setup I’ve got. I want to spend more time on Resolume and the VJing side of my stream, but for now this will do and will offer sufficient variety.

Hybrid Serato DJ Pro DVS/Ableton Live DJ setup (21/4/21)

I recently found a good price on a Vestax VCM-600 controller. It is a specially made MIDI controller for Ableton Live, with the same build quality as a DJ mixer. It allows for control over 6 channels in the Ableton Live ‘session’ view, which is arranged similarly to a mixing console. It also adds dozens of MIDI mappable DJ controls such as the traditional Hi, Mid and Lo EQs, a crossfader, a filter control, control over a lot of Ableton FX, and more. It has 6 channel faders + 2 send faders for FX. More info in this video:

It replaces my Pioneer DJM-S3 mixer. I use a 4×4 interface compatible with Serato DJ Pro DVS, the Denon DS1, and run the timecode audio from the Reloop 8000Mk2 decks through the Denon DS1. It outputs the Serato DJ Pro modified audio for both decks. The outputs of the DS1 are connected via a Douk VU-Meter (to see the levels for both decks for accurate gain control while mixing) to the Behringer UMC1820 audio interface which is connected to my broadcast PC running Ableton.

When I move the faders on the Vestax VCM-600 controller attached to the broadcast PC, it functions as a DJ mixer, with the actual mixing taking place in Ableton through the UMC1820 audio interface.

The microphone for streaming is connected to the sound interface as usual, and the DJ headphones are connected to the headphone amp on the the sound interface, with mic levels and cueing dealt with via Ableton Live.

The advantages of this setup over my previous setup are multifold, as I now have a 6 channel fully configurable mixer. Firstly it will allow me to bring in various external hardware instruments such as drum machines, hardware synths etc, all controlled via Ableton. I could also bring in software instruments/VSTs. It would allow me to use high quality studio software FX in my DJ sets. It would also allow me to trigger samples from Ableton Live and have them output on one of the channels, synced to the beat.

I am currently using the 4-band X:One EQ filter Ableton FX Unit clone from https://tarekith.com/freestuff/, see: https://forum.ableton.com/viewtopic.php?t=144388 .
I am also using the https://xferrecords.com/freeware DJM-900 filter clone. I have adapted these both into my Ableton VCM600 template set. I might release this set later once I’ve built it up more with Ableton FX.

I am currently using Serato DJ Pro FX controlled by my Akai SP8 cheap controller connected to my DJ laptop, which I have changed the knobs on to make them more tactile. I also have an Ableton Push mk1 controller hooked up to broadcast PC which is useful for multiple things, but mostly for quickly controlling Ableton Live without having to mess around with the mouse. I have not synced the BPM automatically yet between Serato and Ableton; Serato has a problem with Ableton Link integration I found. For the moment, I am using the Serato DJ Pro beat-synced FX on Serato, and using tap-tempo on my Ableton Push controller to set the BPM in Ableton Live. I don’t need the BPM to be exact at the moment for Ableton Live as I am not using any beat-synced FX or looping FX on Ableton.

Looping, beat repeat, cue point jumping, tempo, sync, scratching and platter changes for each deck are handled by the controls on the Reloop 8000mk2 which are both connected via USB to Serato on the DJ laptop, so they function as a DVS system but with also pads and controls for Serato too.

I am using Resolume on my broadcast PC. I run a number of scenes on autopilot mode, and use the ancient Novation SL1 Mk1 MIDI controller to apply video FX to Resolume. I sync the BPM to Resolume through Ableton Link, with Ableton Live setting the BPM for Resolume through Ableton Link, and me setting the BPM for Ableton Live using the tap-tempo on the Ableton Push controller.

I have a sustain pedal which I use to trigger the ‘ducking’ affect in Ableton when I want to talk over the music.. when the pedal is depressed, the music fades down and the mic up a bit, so people can hear me better. When the pedal is let go, the microphone volume is killed so no background noise is picked up.

Here it is in action – the clicks are me flipping the crossfader or the channel faders on the VCM-600:

As you can see from the video, the latency really isn’t an issue. It’s very responsive even though the timecode audio from the turntables is being processed by the Denon DS1, sent through the Douk VU-meter, and then converted to digital signals by the UMC1820 sound interface, sent through an EQ and FX chain, and mixed by Ableton according to the VCM600 DJ controller movements.

Here is a flowchart which should help explain the signal flow:

Here is a list of equipment that I use:

  • VESTAX VCM-600 Ableton Controller. Came out in 2010, cannot buy anymore new. Bought second-hand for £175. Had to clean the knobs with isopropyl alcohol as the coating becomes sticky after years and years of use.
  • Novation Remote Zero SL Controller. Very old MIDI controller, cannot buy anymore. Can buy very cheaply now. Not sure if I would buy this exact controller again but it certainly is durable.
  • AKAI LPD8 Controller. Very cheap MIDI controller still being sold. Bought new for £30. Took the knobs off and replaced them with Doepfer knobs from my Eurorack for better grip.
  • Behringer UMC1820 Sound Interface. Very good value USB audio interface with lots of inputs and outputs. It comes with 8 physical inputs and 10 physical outputs. To get access to the other inputs and outputs you would need to buy an ADAT or SPDIF expander. Bought new for around £200.
  • Douk VU-Meter. Very cheap though accurate VU-meter for checking volume levels. Bought new for £60.
  • Denon DS1 Serato Interface. Not sold anymore, sadly, although it has a class-compliant driver for OSX so it is likely to remain suported for a while, while the alternative Rane Serato interfaces may not. Bought secondhand via Ebay for £120.
  • Reloop 8000mk2 vinyl turntables. Excellent turntables with a huge amount of features and a solid build. They are available quite cheaply new. Paid around £400 each for them. I use Concorde Mk2 Digital needles and Serato Butterrug slipmats and Serato control vinyl.
  • Ableton Push Mk1 Controller. Although the MK2 is out, the MK1 is still supported and there is no indication it will be deprecated soon. Not available new anymore, buy secondhand. I paid £250 for mine although they’re available much cheaper now.
  • RODE Procaster Microphone, cage, pop sheild and boom mount – This is an excellent high quality microphone. You can get a lot cheaper if you wanted to. Mic setup cost about £200 new.
  • Apple Macbook Pro 2015 13″ Retina edition. Still going strong from when I bought it. Only has 8GB memory and that is shared with the graphics card, but otherwise it is fine. I have kept it on Mojave, no plans to update. I only use it with Serato DJ Pro. I have an external HD attached to it for all my DJ music.
  • Broadcast PC – a workstation PC I built myself. For the specs see: https://davidcraddock.net/my-computer-setup/. In particular I have found the Nvidea 1080 graphics card very useful for Resolume – no way would it run well on my laptop.

For new equipment I use Thomann.de often or DV247.com, or Amazon, or whatever is cheaper on Google Shopping.
For used equipment I use Reverb.com or Ebay.co.uk or occasionally Facebook adverts.

2020 Retrospective – Wow, what a year!

I think, for obvious reasons, 2020 has been a year that no-one could really have expected. With COVID-19 and lockdown, a lot of things have changed, both in my life, in everyone’s lives, and in the workplace.

My online DJing setup

Things that went well

  • I changed medication around March 2020 which has resulted in significant weight loss, as expected. The previous medication was making me put on and retain weight even when I was eating very very little. In March 2020 my weight was nearly 136KG and now it has gone down to 125KG in March 2021. I have not been doing more exercise, indeed quite a bit less, as I have been staying indoors most of the time. The weight loss has had a very good effect on my general health and my sleep.
  • I am much happier than this time last year. Working corporate jobs I found very very stressful and apart from being financially rewarding, I wasn’t getting much else out of it. My mental and physical health was suffering. My relationship with my wife and friends are much better now because I am less miserable all the time.
  • I have taken up DJing over the internet and have turned this into a part-time income. It is so much fun. I used to DJ in clubs in my 20s regularly and I didn’t realise how much I had missed it. It is great to have a way to connect socially with people in lockdown and people really appreciate my DJ sets, which is great.
  • Working from home has been a great change for me. Before the pandemic I wanted to work from home 100% anyway, because I was ending up spending at least 2 hours commuting to and from work, it was costing a lot (because I can’t drive) and it was taking up a lot of time and energy.
My work from home setup

Things that didn’t go so well

  • I found that when I am working 100% from home, it is difficult to do work that I am not motivated to do. It is much easier to get things done that you really don’t enjoy when you are in the office. I have noticed a productivity decline in things I don’t really want to do, but I don’t think this is necessarily a problem with working from home, simply it is something I need to address by finding work I am more motivated to do.
  • My financial situation is a bit unsteady at the moment. I have got used to living on much less, and my costs are minimal. However I am struggling to find a job I am motivated to stick with. I think this simply requires me to explore careers and jobs outside of what I have done before.

26/2/2021 DJ Setup with Diagrams

After the last post I have added Ableton Live and my Eurorack modular to my DJ setup, with a master clock being sent via MIDI cables from my Roland TR8 drum machine that syncs with Ableton. The drum machine also can be used creatively for drum fills etc.

I hope these two diagrams explain my setup adequately – sometimes a picture is worth a thousand words! The ‘actor’ is me – I just couldn’t find a way to change that on http://draw.io 🙂

DJ Books: Reviewed

The classic!

Yes! Some people actually write and read BOOKS on DJing. As if YouTube wasn’t enough. Well it can be enough.. but YouTube is also a cess pit of rubbish information, and at least a book has a better chance of being properly edited and reviewed. Also reading a book makes you more intellectual. Which is utterly true.

So. I have been reading through these DJing books to see if they could teach me something I didn’t know about DJing after over 10 years doing it. And there were quite a few interesting techniques and tricks that I learned from these.

How to DJ (Properly) – Frank Broughton, Bill Brewster (2003)

This is a great old book that I first bought when I was getting into DJing back around 2000. It covers so much technical and non-technical information that is still highly relevant today, but some parts are laughably out of date. I really wish they would update this book and put out a new version. A lot of the non-technical stuff you won’t find elsewhere and is really useful still. Definitely worth a read but don’t expect a modern take on things.

https://www.goodreads.com/book/show/1889346.How_To_DJ_Properly_

FutureDJs: How to DJ – Austen Smart, Scott Smart, Tom Dent (2019)

This is the book you want if you want a modern and uptodate introduction to DJing. It was designed as a textbook to help train high school music teachers so they could include DJing tuition in their classrooms. It’s amazing – really great – and contains lots of diagrams which help the explanation. If you want to get just one book on DJing buy this.

https://futuredjs.org/book/

Rock The Dancefloor: The proven five-step formula for total DJing success – Phil Morse (2016)

I have to say straight away that I am quite biased as I don’t actually like Phil Morse of DigitalDJTips.com fame. I don’t find his reviews to be that accurate and often seem a bit like advertisements of products. I have learned some things from his website but not a huge amount. However this book has got lots of great reviews so I thought I’d mention it. I do have a copy but I found it a bit difficult to get through as it is all written in Phil’s quite conversational prose, with no diagrams or pictures or anything really to break it up. It may well be worth checking out to see if you can get anything from it though. I will probably try and get through it myself and give it a proper review, but just so you know it’s out there.

https://www.goodreads.com/book/show/31545542-rock-the-dancefloor

Beyond Beatmatching: Take Your DJ Career to the Next Level – Yakov Vorobyev, Eric Coomes, Bill Murphy (2012)

This is quite an interesting and quite advanced book by the developers of Mixed in Key. In it, they talk about using MIK’s features to detect musical key and energy level, and how you can use those features to plan your set around harmonic mixes and energy level arcs. It is quite advanced and very interesting. MIK is a pretty good piece of software, I have had it crash a few times when analysing very big libraries but generally it is pretty solid. I recommend checking this out, because although the basics of harmonic mixing are probably talked about in any recent DJing book, this goes into greater depth.

https://www.goodreads.com/en/book/show/19218202-beyond-beatmatching

Twitch Streaming Technical Setup

I thought I’d write a bit here about my Twitch DJing setup and some of the hardware and software I’m using. Twitch streaming has become very popular over the lockdown period, and I think people might be interested in how I have configured my stream. Something that seperates my stream from anyone else I’ve seen on Twitch is that is that I do live vinyl DJing AND live VJing at the same time on my stream. This is how I achieve it.

Broadcast PC

This is my main desktop PC that I use for personal use as well as streaming. It has a Nvidia 1080 graphics card which is very useful with Resolume Avenue, the VJing software I use. I have one main big monitor and one smaller second monitor which I have attached to a long HDMI cable and placed next to my DJing desk along with a second mouse and keyboard which goes into a USB 3.0 hub and a long USB 3.0 extension cable. When I go to DJ I set the Windows graphical settings to duplicate my screen on both screens, so I can control the broadcast computer from where I am standing next to my DJ equipment. I have a Behringer UMC1820 sound interface which has 8 balanced phono inputs. Inputs 5&6 are permanently connected to my DJ mixer, and I use Input 1 for my microphone.

Broadcasting Software

I use Streamlabs OBS on my broadcast PC. I did initially subscribe so they let me download one of their custom themes, which I have heavily edited but still remains integral to my setup. For some reason even though my subscription has lapsed that has not made any difference to whether I can continue using this theme and the app, although it has turned my follow/subscription/bit notifications back to the plain old free ones. I prefer it over free OBS for three features at least.

Firstly, the studio mode – I am not sure if OBS free has this (maybe it does?) but it is useful when fixing things live to have two scenes active, one which is being broadcast and one which is only visible to me. Secondly, the way you can order the layers on the scene, this is very intuitive to me and was more intuitive than the layering (front to back) on OBS free. Thirdly, the remote control element.. I have a remote control app for my Android tablet and phone which allows me to quickly cycle through scenes – no need to shell out for fancy scene controllers.

I use the free NDI tools for NDI streams to Streamlabs OBS for the external video elements on my screen – one from Resolume Avenue on my broadcast PC and the second from my Macbook Pro which is running Serato Video. I also use streamelements and Moobot to enable kappagen effects, and to moderate the chat and provide information to chatters.

Cameras

2x Logitech C920 web cams on tripods. I bought them because I saw them used at the BBC where I used to work. I think if I had more USB3 ports on my computer the bandwidth for these cameras would be increased and the resolution would be wider, but as they are, they are really solid. I’ve only had occasional problems with the auto-focus when there is a lot of lighting strobing going on.

DJing Equipment

I have a pair of Reloop 8000mk2 turntables with a Pioneer DJM-S3 Serato mixer. Both integrate really well with Serato and offer additional performance features. I use Serato on my aging Macbook Pro 2015 and have actually got it to reliably output Serato Video using NDI capture tool and send it over the network to my broadcasting computer without the fan having to spin up. I only use Serato on my Macbook because I don’t want to burden it – it is doing enough as it is! I have a 2TB external HD where I put all my digital music files and have it mounted as a network share so I can transfer files over the network from my main PC. I use Mixed in Key to add Serato cue points to music I use, and the free MusicBrainz Picard to correctly tag files and organise my music collection.

Lighting

I use Phillips Hue lightsources and the hyeDynamic Windows 10 app. It connects to the Hue hub strobes the lights in time with an audio input. I have a Hue Lightstrip and 4x Hue Colour bulbs and they all sync together. I also have a small laser unit that syncs in time with the beat and is useful as added background lighting.

VJing

I use Resolume Avenue with a number of clips I have commercially bought. I have it running mostly in autopilot mode with all the clips synced to the beat. The beat is provided by a free app called ‘AudioBoxBaby’ which I am really looking to replace, but there is simply nothing else out there on the market. It detects the approximate BPM of any audio coming in on my sound interface from my DJ mixer, and translates it into a single repeating midi note. This midi note I have mapped to the tap tempo button in Resolume so it is like a human tapping the tempo along with the music in theory. Serato DJ Pro supports Ableton Link, and so does Resolume Avenue, but I have found that syncing via Ableton Link to be very problematic when using Serato, and of course it doesn’t work when not using Serato, for example with all vinyl sets.

I also have a Novation Zero SL controller which I have had for over 10 years and still works perfectly, so I really recommend it! It is attached via a USB extension cable to my broadcasting PC and I use it to control some basic VJing effects that I put over the audiopilot clips to create buildups and visual changes in time with the music. It has 8 sliders and I move them in time with the beat or to create buildups/variations etc.

Microphone/Voice

I have a Rode Procaster mic with a Rode microphone boom, shock cage and pop shield, which is attached to my audio interface for my broadcasting PC with a long cable. I have it wired so that when I press a piano sustain pedal on the floor under my microphone, vocal ducking happens – e.g. the music fades down slightly and the microphone volume fades up so you can hear me talking over the music. In order to accomplish that I use two commercial apps, the first called ‘Auto-Duck in Real Time’ which allows me to configure the vocal ducking linked to a keyboard keypress, and ‘Bome’s MIDI Translator Classic’ which when the MIDI signal that is generated when I press the sustain pedal connected to my Novation Zero SL controller, the MIDI translator converts it into a keypress that is picked up by the ‘Auto-Duck in Real Time’ app to trigger vocal ducking.  I have it configured so while I am holding down the sustain pedal, it ducks the music playing and when I release it, the music goes back to normal.

Internet Connection

I have a fast Virgin Media internet connection with 30mbits/second upload. I think my Twitch stream and everything else in my home requires about 5mbits/sec upload! I also have a backup internet fibre DSL connection that thankfully I have never had to use when I’m streaming, but it also has around 15mbits/second upload and I should be able to switch between both relatively quickly if I needed to.

Phew! That’s all! 🙂 I realise it is technically involved compared to a lot of peoples setups, but I have always been really interested in the technical side and have been lucky enough to be able to create exactly the setup that I really wanted for my stream. If you’re interested in checking it out, my regular stream is from 4PM UK time/UTC every Sunday and I play for at least 4 hours. Follow me on Twitch at: http://twitch.tv/djdavidcraddock

Struggling with the technical side? If you are interested in hiring me to help develop your own streaming setup, I have worked before in this capacity and can supply excellent references. The work can be done online, as with your permission I can remote control your computer and configure things. Please send me a message if you are interested via the contact form on this website.

David’s Guide to The News

Journalism has deteriorated to a huge degree in the online age. A lot of articles and video content are one-sided short ‘clickbait’ – short messages designed to trigger an extreme emotional reaction. ALMOST ALL journalism is like this these days, it doesn’t matter if you have a highly established news network you have been trusting for decades, they have all had to adopt this low-quality strategy due to the ultra-competitive and dire financial situation that all news reporting finds itself in. However a lot of people still take news content at complete face value, and this leads to a huge number of people being misled about the real facts.

So, whenever you are reading, listening to, or watching a piece of news content, here are some questions you can ask yourself to really get the full picture of what you are consuming.

1) How long is this news article/segment? What depth does it go into? Broadsheets like the New York Times go into much more depth than a 10 second ‘news highlights’ clip, and will usually present a much more detailed and extensive argument. If you really want to understand something, as the saying goes, read a book – or better yet, several books from several different perspectives. Do not expect to understand the full issue from TV news segments.

2) What emotional reaction is the journalist trying to get me to feel? What language does the piece use, what quotes are they using, what video are they using, what music do they use to set the scene, is the news anchor looking like they are being particularly dramatic? What is the emotional message?

3) What is the editorial slant of the news source? EVERY news source has an editorial voice – or bias – and you need to take that into account when getting your news from that source. It doesn’t matter if you generally agree with the editorial voice, you have to understand that everything is biased. News isn’t free and a lot of news sources get their funding from various ‘benefactors’ who often have a very real say on their editorial bias. Knowing how the news organisation is funded is very important in knowing what slant they will take, especially when it relates to political news.

4) Does the news piece provide a fair and plausible representation of both sides? There are ALWAYS two sides to the story, this is something that has been all but extinguished in modern news reporting. A few news sources will set up often comic ‘straw men’ opposition points, like the BBC interviewing odd people who drink their own urine for a news piece on how health information is understood by the public. While this may be amusing, it is not meant to present a fair and accurate argument from both sides, it is designed to ridicule one side. There are usually some genuine points from each side that are worth everyone considering, no matter what story it is.

5) Seek out contrary points and opposition points of view. If you want to understand a news event further, seek out a number of different articles from respectable sources with very different editorial voices/biases. Even when you take into account their individual biases, there are usually some valid points underneath it all.

I hope that everyone will consider thinking more criticially about the news they consume.

Finally my 27U Eurorack is complete!

So.. finally my 27U Eurorack modular synthesiser is complete. I have filled up the third – and surely last, as there is no more room in the studio! – case. I started this Eurorack modular in 2015.. so I am glad it is all complete now. I put in a small amount nearly every month for new modules. I am not some ‘rich kid’ who could afford to buy everything at once – and indeed I think my gradual approach has benefitted the overall modular because it’s made me think about what I actually need, and given me time to learn as I go along.

These are the details for the (newest) left section case:
https://www.modulargrid.net/e/racks/view/1225766

These are the details for the middle and right sections:
https://www.modulargrid.net/e/racks/view/744839

Very happy!

Ivy Bridge 2011 PCs are still useful today

In our house, seperate to my main PC (see the tab above) we still have two Ivy Bridge-based PCs:

Conny’s PC

  • i7-3770K
  • 16GB DDR3 RAM
  • Nvidea Radeon 970 Graphics Card
  • 250 GB SSD
  • Windows 10

My wife uses this as her main PC, and plays quite a few games with it. For a CPU and motherboard that I put together in 2011 or so, I am quite amazed it still runs adequetely! It runs the games she wants to play, the most graphically intensive being Deadpool, but it will also cope with Borderlands 2, Skyrim Special Edition, Shadow Warrior 2, and others. She is not interested in the top graphics games, but it runs just fine.

My Second PC

I have a computer that I use for my own programming and tech hobby projects. It used to be a top of the range workstation 2011 and I got it in a hardware disposal sale at Arm Ltd for only £400 in 2019. This is quite the deal, as it included a lisence for Windows 10 (normally costs £100 on its own).

  • Intel Xeon E5 2650 v2 8 CPU cores @ 2.60GHz
  • 32.0GB DDR3 RAM
  • 2048MB ATI AMD Radeon R9 200
  • 250GB SSD
  • 3TB HD
  • Windows 10

I don’t need a powerful graphics card as I don’t game on it, and the Radeon R9 3200 supports my 2560x1440px monitor so it is more than adequete. I have installed VMWare on it and am looking to spin up some virtual machines as servers, and have them running in the background while I am browsing. I could assign several cores and quite a lot of the RAM and not really notice a difference with the light work I do when using the computer.

I am just amazed at how much you can do with these old high-end CPUS. The performance delta between these Ivy Bridge 2011 CPUs today’s processors really isn’t that large, and they are so cheap these days. This following video shows just how cheap you can build one of these setups, and how powerful they are even today:


The only situation where these processors don’t really work hugely well is in applications which emphasise single-core performance – I tried to use my second PC as an Ableton Live machine, and a lot of audio plugins I wanted to use were not optimised for multi-core processors, just single-core, so that didn’t work well.

Studio Setup in 2020


IMG_20200130_143755(1)

I have made some considerable modifications to my modular since my last post. I have a 4-voice polyphony setup now with multiple voice Osc, VCA, Envelope and MIDI-CV modules, allowing me to experiment with polyphony voicing.

Elsewhere, I have added an Access Virus C synthesizer to my studio, and now have rack-mounted Behringer Model D and Emu Orbit 9090 synthesizers. I have also upgraded to Ableton 10 and use NI’s Komplete suite including Massive X, plus TAL-NO-UX Juno 106 softsynth, Sylenth1 and others.

A Retrospective for Years 2016-19

I thought I’d update my blog to reflect recent changes in my life, and review what was good and bad about them, as I was doing before.

The “Not Awesome”

  1. My overall health level has got a bit worse over the years. I have had limited success in losing weight. I was going for regular walks nearly every week with a friend of mine, but that has stopped lately. I find it difficult exercising while living in a city, as my favourite activity for excercising is walking, and there are not a huge amount of pleasent walking oppertunities around my area. I have been getting Ubers to parks and walking there. A posssible solution that I am actually considering is moving outside of the city, where there are a lot more pleasent walking oppertunities on my doorstep, and which would hopefully lead to a much more active lifestyle.

The “Awesome”

  1. Conny and I got married! We have also adopted two cats, so we have a little family now 🙂
  2. Brexit is not going to affect Conny’s ability to live and work in the UK after all, which is a great relief.
  3. I am doing well in my job, having achieved a “High Performing” overall performance rating at work for this year. This has taken a huge amount of personal effort.
  4. I have cutout meat from my diet for health reasons, although I’m still eating fish. I have also started getting prepared healthy dinner meals from this site online. The meals are a lot more healthy than what I was eating before, plus it saves Conny from having to cook for me in the evening, which is good as she is currently working two jobs.
  5. Conny has started work and is really enjoying it.
  6. Our finances are looking much more healthy than in previous years, with Conny starting working and due to bonuses in my current job. I have increased contributions for my pension, and we are doing very well with budgeting and financial planning.
  7. I’ve managed to build up my music studio and gaming PC setup quite a bit, which was always something I wanted to do after taking on a more stressful (and rewarding) job.
  8. Our house price has gone up a lot.
  9. I’ve developed a much healthier attitude to my professional skills and development, after reading the ‘Passionate Programmer’ https://www.goodreads.com/book/show/6399113-the-passionate-programmer. I have been putting in extra time after work to read a number of books and developing my technical skills.
  10. I have started learning maths in my spare time through enlisting one of Conny’s friends who is also math tutor. Building up my math skills will unlock a lot of interesting paths for my software development skills, such as audio DSP, graphics programming, and data science.
  11. I have taken up record and CD collecting, and have quite a large collection of electronic music on vinyl and CD now. I bought a Rega Planar 1 turntable and two CDJ1000s with a pioneer mixer for DJing. I can connect the setup to Serato on my laptop for digital DJing too.

Home Cinema Setup

I have been gradually adding parts to my PC so that it functions better for watching movies and gaming. Here are the components that I have used:

Monitor – BenQ EX3501R 35″ Ultra WQHD Curved Monitor

This monitor is great for watching movies and gaming as it is ultra-wide at an aspect radio of 21:9, 3440×1440, a VA panel with high contrast, and the monitor is slightly curved so that you get a cinematic experience.

Surround Sound Speakers – Logitech Z906 5.1 Speakers

This is a good set of 5.1 surround sound speakers with a separate subwoofer. I connect it from my motherboard’s optical out via ADAT for the best connection. I have the rear speakers mounted on the wall behind me, and the front speakers on the desk in front of me angled towards my seat.

Phillips Hue Bulbs and Dynamic Lighting

I have three Phillips Hue bulbs near the monitor which I have added to a ‘Hue Entertainment Group’ which means their colours can be rapidly changed with applications that use the Phillips Hue Entertainment API. One such application is ‘hueDynamic for Hue’ which is a Windows 10 application that monitors the colours on the pixels at the edges of the monitor, and changes the lights next to each edge according to the colours on that edge. This means I can have some dynamic lighting when watching movies.

Source of 4K Video

Even though my monitor doesn’t quite support 4K, using VLC means I can adjust the aspect ratio so that it will re scale the 4K video onto the monitor’s 3440×1440 dimensions, making 4K the best fit for my monitor. However my wireless connection is not currently fast enough to stream 4K video, so I use the ‘4K Video Downloader’ app to download free 4K videos from YouTube so I can play them on VLC.

Putting It All Together

(Click on diagram to enlarge)

So, I download 4K videos from Youtube, play them on VLC which adjusts the 4K content to fit my monitor. The audio goes to my surround sound setup which creates a virtualised surround sound output to my speakers, and the hueDynamic app running in the background on my PC samples the colours are the left and right areas of my monitor, and dynamically changes the colour of the Hue bulbs as the video plays. This creates an immersive ‘Home Cinema’ experience.

 

Finished Eurorack

Finally I have finished my Eurorack synthesiser! And I know many people say that ‘Euroracks are never finished’ but this one absolutely has to be, for financial reasons. I think that I have got to a place where I have every major feature common in most synthesisers, but in a modular instrument format. It is a great place to learn about different synthesis techniques.

finished modular

 

This is the layout on Modulargrid.net where you can examine each module.

Node.js HTTPS server with self-signed certificate creation on openssl 0.9.8zh with node.js 7.10.0

I couldn’t find a concise guide to setting this up quickly so thought it was worth a post. To quickly get something working and create a https server using the above versions of openssl and node.js, do the following:

 Generate self-signed server certificate with no password

sudo openssl req -x509 -newkey rsa:2048 -keyout ./csr.pem -out server.crt -days 3001 -nodes

Use this node.js code to setup a server quickly

const https = require('https');
const fs = require('fs');

const options = {
key: fs.readFileSync('csr.pem'),
cert: fs.readFileSync('server.crt')
};

https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);

Go to https://localhost:8000 and accept the certificate, you should see ‘hello world’

Finished Planning My Eurorack Modular Synthesizer

In January 2015 I put in an order for my first Eurorack case. Little did I know that I would end up filling that case and buying a larger one. Finally, 2 years and 3 months later, I have nearly finished assembling what will be the complete Eurorack. I have been buying a module or two per month, researching what I need and playing a lot with what I have got already to find out its limitations and areas for possible expansion. It’s much like incrementally building and upgrading a gaming PC really, although with very different results.

Today I have come up with a final plan for what the cases will contain. The picture below is slightly misleading, I have two cases, so the case below is actually split down the middle into two enclosures. The left-side case is 2/3rds the size of the right hand case, that is why there is a grey unusable area at the top left.

With the purchase of 4 modules this month, I’m nearly at the end. The remaining 3 modules will be bought and installed over the next month or two, depending on budget.

Screen Shot 2017-04-16 at 22.58.16.png

In addition to the Eurorack modular, I also have a polyphonic MIDI->CV converter called the CV.OCD which plugs into the modular, a Nord Drum semi-modular analogue drum synthesizer, which also plugs in and allows me to make and play drum sounds, a Korg SQ1 sequencer which allows me to add 2×8 step sequencers to the mix, a MS20 Mini semi-modular synthesizer and a keyboard controller which allows me to play notes and chords on the whole damn thing.

Design

I have built a synth roughly around three goals. The first is keeping a traditional ‘East Coast’ 3 voice subtractive synthesiser format, e.g. 3 oscillators, 3 filters, 3 envelopes, lots of LFOs and modulation, 3 VCAs, mixers, an FX unit including delay, reverb and others, 4×8 step sequencers which can be chained together (plus the 2×8 step in the SQ1). The second is that I wanted 3 voice polyphony – not ‘true’ analogue polyphony because that is difficult to achieve – but 3 of everything, wired together with a polyphonic MIDI -> CV controller, allowing me to play chords and experiment with traditional musical structures. The third goal was to keep the cost down! I am really not one of these modular synth heads with a huge studio and a near infinite budget, I have a lot of financial outgoings which I have met while building this. Building a modular synthesizer is never really ‘cheap’ in any sense of the word I would use, but this is definitely a lot cheaper than many other modulars I’ve seen, without compromising on quality.

 

What I have Learnt

  • Modular synthesizers can be built on a relatively low budget to achieve a good result.
  • I have sold all but one of my other synthesizers that I had before starting this project, finding the modular approach much more fun and rewarding then the in-the-box techniques and non-modular hardware synths.
  • Ignore what others might term as ‘conventional wisdom’ in building a modular, the freedom of Eurorack is that you can build whatever you want, and exactly what you want, so go with what works for you.
  • Slowly building up a modular synthesizer is likely to be much better than buying everything at once, you will experiment with what you’ve got, and learn its limitations and that will guide your purchases. It is impossible (in my opinion) to truly know what you want before you have started.
  • Use Modulargrid.net to plan out your synthesizer. It is very useful and has a huge database of modules. You can rearrange modules countless times on Modulargrid before you do it in reality, so you can plan and achieve a productive workflow.

 

 

 

Goals for 2017

Looking at my past posts, you may notice that I didn’t set myself any goals for 2016. Looking back, this was a mistake, so I’m going to remedy this by setting some for 2017.

Goals:

  • Lose a significant amount of weight – this is very important for health reasons.
  • Study maths courses – I intend to sign up for some maths courses at the OU. This will improve my mathematical knowledge, allowing for further study in subjects I’m interested in, plus allow me to work in more mathematically-heavy careers. This equates to 10 hours study per week, so it’s not a light commitment, but one I think I need to make.
  • Exercise more – this is important as it improves my mindset, stamina, and makes me feel good.

Not too many goals this time, but some important ones, and I think I’m in a good position to commit to these thanks to the support of my partner, and therefore I am in a position to improve my life.

Will post updates at some point during the year to chart this progress.

 

Studio Setup

Studio

This is my current studio setup.

I have the following gear:

Eurorack 9U case
Eurorack 6U case
KORG MS20 Mini Synth
Roland TB3 Synth
AY3 Chiptune Synth
Roland A500-PRO Keyboard Controller
Nord Drum Synth
Macbook Pro with Ableton Live 9 Suite
MIDI.OCD Polyphonic MIDI->CV Converter
Samson Patchbay

I am looking to sell my Acces Virus A and concentrate on filling up the remaining Eurorack case holes.

Switching to WordPress.com

I am currently moving the blog, which was formerly hosted on Dreamhost, to WordPress.com hosting. Most of the content is moved over already, I have to go through all the posts and tidy up the references, relink the images etc. Hopefully I will get around to this shortly.

Music Workflow 2017

In 2017 I want to build a relatively static hardware-based workflow. This is what I’ve chosen:workflow-setup

The components are:

Current Music-Making Setup

With my current setup, I’m trying to make as much music ‘out of the box’ as possible, away from the computer as I find it more fun.

Synths:

KORG Minilogue: I use this for a keyboard controller, and I use the 16 step sequencer to run simple sequences. It connects to the PC via USB and has MIDI output. I can also use this as a synthesizer its own right, it’s good for backing chords and pads.
KORG MS20 Mini: I’m borrowing this from a friend. I will use it as a bass synth mostly. I’ve got a Harvestman English Tear module which connects it to my Eurorack.

Effects:

Electro Harmonix Stereo Memory Man with Hazarai: This is an effects pedal with reverb and delay, which I use to add a bit of effects to modular synthesizer before I record. I will also use effects within Ableton, but I like the sound of this pedal in general.

Drum Machine:

Nord Drum Mk1: This accepts triggers from the Eurorack I’ve recently discovered, so I have a drum machine that I can connect up to the Eurorack with 4 different drum voices.

Modular:

This is equivalent to a fairly standard three oscilator synth, with ring-mod, S&H and noise out. I have a few different filters, an XPander style filter, an ‘extreme’ filter which is loosely modelled on the MS20 filter, and a triple resonance filter which I use for noise soundscapes. It has two envelopes, and a Make Noise Maths and a Serge VCS equivalent for some modulation madness. It also has a 16 step sequencer.

My Eurorack Modular
My Eurorack Modular

Workflow:

I still use Ableton Live as a midi sequencer, creating midi clips for drums and the hardware synths. I will build up a patch on the synth, tweaking until it sounds servicable, then make a midi clip, record some loops from the synths, and cut up and move the audio around to compose a track. I might add some soft-synths and effects such as reverb and delay on the PC and mix the track. Then I will upload it to soundcloud and show it to musically minded friends. Depending on what they say, I may tweak the track and upload it again. This whole process usually is done within the space of a day or two, I sometimes spend longer for tracks that I want to be more finished and professional, but I am not really usually making music for more than a few people at the moment, so I don’t spend ages finetuning each track.

Narrative-Led PC Games

80 days poster

When I first started getting into computer roleplaying games in the 90s/00s I remember playing the Infinity Engine games by Bioware and Black Isle, such as Baldur’s Gate 2, the original Fallout games, and of course Planescape: Torment. It was the quality of writing that drew me in and took me to another world, the graphics were just a background setting to that writing.

Somewhere in the 2000s RPGs became more action orientated and prioritised mechanics and visual appeal and combat over branching stories. Nowadays a lot of popular RPGs are those such as Dark Souls, which seem more about combat and atmosphere than anything else. Blockbuster games such as Dragon Age: Inquisition and The Witcher 3 still show that great writing, characterisation and real player choices can still be popular.

I still prefer the classic RPGs of yesteryear, those with mountains of dialogue and that take direct influence from fantasy novels and pen and paper, Dungeons and Dragons type games, which I grew up with. Here are some games which capture some of that great writing for me, although some are more interactive fiction than technically RPGs:

80 Days
You are the butler of Philleas Fogg, the man Jules Verne writes about in ‘Around the World in 80 Days’. Your task is to choose how to get around the world not more than 80 days, as you plan routes between cities, buy and sell items and manage the finances of the trip. It really captures a sense of adventure in the world, and builds on Jules Verne’s steampunk theme as you encounter fantastical means of transport such as mechanical ostriches, airships and others. Every route is different and you can choose how the story unfolds by selecting different actions your character will take. The writing is the best I’ve ever seen in a mainstream game.

http://store.steampowered.com/app/381780/

Sunless Sea
In this game which also takes influence from Jules Verne, the city of London has fallen through the crust of the earth into hell, where there is a giant underwater cavern called the Underzee. You sail across this underground sea, exploring islands and immersing yourself in this Vernesque/Victorian/Lovecraftian setting. The writing again is amazing; it reads like poetry.

http://store.steampowered.com/app/304650

Torment: Tides of Numenera
Another outlandish game, this time set in the world of Monte Cook’s Numenera, the writer behind the Planescape world which Planescape: Torment was set in. It hasn’t fully been realised yet but this game in early access form is already weird and wonderful, and much more interesting to me than yet another copy of on the elves and dwarves Tolkien formulaic settings.

http://store.steampowered.com/app/272270/

Eurorack 2016

eurorack

So.. the problem, as so many people have said, with getting into building a Eurorack modular synthesizer is that it becomes addictive, and you inevitably spend more than you can really afford. That said.. I now have a great fully customised synthesiser for what I want to do 🙂 The layout is:

Top shelf:

3 oscilators and noise generator in the top left, 4 VCAs and S&H and Ring Mod sections in the mid center, LFOs in the top right.

Middle shelf:

Filters! I love filters. 3 large format filter modules, and a Triple Resonance Filter which consists of an additional 3 filters packed into one unit. A quantizer is also there which I currently don’t use much.

Bottom shelf:

Envelopes in the bottom left, Voltage Controlled Slew Generator and Make Noise’s Maths in the center left, center right is my trigger sequencer setup from LADIK, bottom right is attenuators and linear and exponential mixers.

OSX Fish Functions to open Chrome from the Shell

These functions are quite handy, and allow you to do things such as copy and paste errors and google for them without having to manually open a browser. You have to enclose arguments to both functions in single quotes, e.g. ‘chrome ‘http://www.google.co.uk&#8217; and google ‘one two three four’. You should add these to your config file at ~/.config/fish/config.fish and make sure Google Chrome is already installed.

function chrome
  /usr/bin/open -a '/Applications/Google Chrome.app' $argv[1:]
end
function google
  /usr/bin/open -a '/Applications/Google Chrome.app' "https://www.google.co.uk/search?q=$argv[1]"
end

My vIM Configuration

Screen Shot 2016-03-26 at 04.00.46

I use a heavily customised setup for vIM, the text editor that annoys me the least in ~30 years of using a computer. You can see my exact setup in my dotfiles repo on github, https://github.com/wordswords/-.

Here are the plugins I use:

  • ConqueTerm – Opens a shell window inside vIM, allowing you to have a REPL environment within vIM.
  • NERDTree – A filetree plugin that you can see on the left of the window above. It replicates the Sublime text editor’s filetree.
  • vim-airline – This is a statusline plugin for vIM that allows for a nicer status view for windows and buffers.
  • vim-devicons – Allows for UTF-8 icons to make vIM editing slightly more graphical. Used by airline to display more info in less space, and by NERDTree to show filetype information.
  • vim-fish – Syntax highlighting for fish shell script editing.
  • vim-rails – Syntax highlighting and more for rails.
  • vim-ruby – Syntax highlighting for Ruby.

Working with Fish Shell, ffmpeg, MP4Box and sox to generate audio files

More adventures with Fish shell. I have scripted the generation of a bunch of test asset audio files in mp4 format suitable for dash streaming. I have used the audio file commandline tools ffmepg MP4Box and sox in this script, they are pretty powerful and worth installing via homebrew on OSX.

Thoughts: I think that instead of quoting you can just output $variable, which is probably better coding style. I’m still working out good way to return variables from functions, it seems that you need to echo out the output and that gets picked up by the calling function, which is a bit messy.

#!/usr/bin/env fish
# move to the asset output directory..
cd ..

# Generate .m4a file for file, and all the associated .mp4 dash assets
function generateDash
  set bitrate $argv[1]
  set input_filename $argv[2]
  set output_filename "$input_filename"-"$bitrate".m4a
  ffmpeg -i "$input_filename" -ab "$bitrate"k "$output_filename"
  MP4Box -dash 10000 "$output_filename"
end

# Generate 3 second sine wave in a specified bitrate at a specified frequency
function generateWav
  set bitrate $argv[1]
  set filename $argv[2]
  set frequency $argv[3]
  set wavfilename "$filename"-"$bitrate".wav
  sox -n --norm=-3 -b "$bitrate" "$wavfilename" synth 3 sine "$frequency"
  echo $wavfilename
end

# Main loop, generate 128,192 and 320 bitrate dashed .mp4s for 16bit and 32bit 3 second sine waves
for i in (seq 24)
  set freq (math "$i * 64.5")
  set wavfilename (generateWav 16 "output$i" "$freq")
  generateDash 128 "$wavfilename"
  generateDash 192 "$wavfilename"
  generateDash 320 "$wavfilename"
  set wavfilename (generateWav 24 "output$i" "$freq")
  generateDash 128 "$wavfilename"
  generateDash 192 "$wavfilename"
  generateDash 320 "$wavfilename"
end

Audio Routing for my PC

For my own benefit as much as anyone elses, I thought I’d document my PC audio setup. I have two soundcards and two sets of speakers, one surround soundcard and speaker set for gaming and watching surround sound movies, and one audio interface linked up to my studio monitor speakers for music production. I also have a Digi 002 mixer which I use to mix in the outputs from my synthesisers to my recording interface. When I want to record, I usually record one track at a time from a synthesier to the audio input of the audio interface, via the Digi 002 mixer:

Untitled Diagram

These are the audio cables needed for this setup, some of which I will need to order in shorter sizes than the 3m ones I already have, to reduce cable clutter:

single phono to phono
2x phono to 2x phono
single phono to phono
single 3.5mm jack to phono
single 3.5mm jack to phono
2x phono to 2x phono
2x phono to 2x phono
2x phono to 2x phono
2x phono to 2x phono
2x phono to 2x phono
2x phono to 2x phono

Fish Shell Scripting

A few months ago I switched across from Bash onto the Fish shell, on my main development machine. I can’t get enough of its fast autosuggestions and its sane scripting language. Compared to Bash it is very fun to use.

Today I wrote a script to automate the backup of my development workspace onto a private bitbucket account. Bitbucket is good because it allows unlimited private repositories, but it caps the size of these repos at 2GB max, with some features disabled after 1GB. This means that I want to find out the size of my repo before automatically backing it up. This script does this:

#!/usr/bin/env fish

set size (du -sm . | awk '{print $1}')
echo "Workspace is $size MB"
if math "$size > 1000"
  echo "Workspace too big to commit!"
  exit
else
  echo "Workspace is under 1GB, OK to commit"
end

git add .
git commit -m "Automated backup"
git push origin master

Each individual directory additionally usually has its own git config which is synced to the separate repos for the code I’m actually working on. But if my development machine is stolen or somehow destroyed, or I want to quickly replicate my environment on another machine with access to the original repos, then I can regenerate the associations between the different directories. It also makes me mindful of not committing images or other video assets.

ADAT with Digi 002 Consoles – Don’t throw them away just yet!

So I got given a Digi 002 console version, which looks like this:

Digi 002 Console

A fairly old style digital audio interface and mixer, which was all the rage back in 2002 when it first came out, but now is often found sitting in the skip. Why? Because it is a Pro-Tools inteface, and Avid stopped supporting it about 5 years ago, so it won’t actually work under Pro Tools and Windows 10 (believe me, I’ve tried!). It only works as a recording interface through Pro Tools, so you can’t just connect it via firewire to your PC and expect it to work.

It does have a stand-alone mode though, which allows you to use it as an analogue mixer, and that is pretty useful in itself if you want to drive monitors or record things from the master out. However after digging around on internet forums for a while, I figured out a way of actually using it as a recording interface! This is through use of the ADAT output, allowing you to plug it into a ADAT capable soundcard and record seperate channels over optical.

Caveats: it has to be 44.1khz sample rate, and you still have to use the Digi 002’s analogue to digital coverters in the chain, which are pretty old now!

If you’re willing to live with this, and I was considering what the console cost me, you get an extra 8 audio input channels in your soundcard! Well worth the effort I’d say.

To set it up with my Focusrite Sapphire 24 Pro, I followed the following advice from the Focusrite forum. This should work on most of the Sapphire range of soudcards.

A Basic Eurorack Technique

I thought it might be of some interest to describe how I use my Eurorack, at lot of the time, in making tracks. I have a 3 oscilator – 3 VCA – 3 filter Eurorack which I use primarily so that the oscilators initially work in unison mode with some slight detuning. I typically use a single loop, arpeggio or pattern that I repeat over the song. Then, partway through a track, I will transpose the octaves of the oscilators and vary the sustain of the envelopes, along with the filters and pulse-width modulation amount, to make a morphing yet harmonious sound texture progression.

Here is my Doepfer Eurorack, which has 2 oscilators, the third is provided by a Doepfer Dark Energy MK1 semi-modular synthesiser that is wired into the Eurorack.

eurorack

 

Here is the patch I almost always use:

 

Eurorack Patch Diagram

Here are some examples of where this same basic technique has been used:

Goals of 2015 Summary

2015 goals written on a whiteboard

At the start of 2015, I wrote down some goals for 2015. Around half-way through the year, I revisited these goals with some thoughts on how well I’d done. Now 2015 is over, I want to reflect on what has been achieved and what hasn’t.

I also want to comment on the fact that I am discussing personal things here. A few years ago I was decided that I was going to keep this blog professional and pretty much dry of any thoughts or feelings on my personal life. I have moved away from that though, inspired by blogs such as Iain’s, where personal thoughts and feelings are mixed with technical observations. I would like to think that this isn’t a bad move; after all if potential employers come to look at this 5 years from now, and don’t like what I’ve done here, then I probably don’t want to work for them anyway. There is the argument that blogs should be ‘themed’ or targetted towards a particular subject to garner followers, and that too much sharing is possibly a bad thing. However, my current thoughts are that dry techncial info is boring, and I’d rather mix it with other things that are important to me.

Retrospective for 2015

With that said.. 2015 was an eventful year, some things were awesome, some not.

The “Not Awesome”

My mum started treatment for cancer, which is a non-curable kind, Myeloma. The treatment was a success and she is currently in remission for the time being, so that is a good thing, but how long she will stay in remission we do not know. Both my remaining grandparents also sadly passed away. I also split up with my girlfriend of 5 years, which was difficult and still haunts me to a certain degree.

The “Awesome”

The money that my parents were going to put towards the wedding of the ex-girlfriend, they gave to me so I could put a deposit down on a house. So in August I bought and moved into a house in Withington, which I am in the process of doing up. It is *incredibly* cheap to buy in Manchester compared to the south-east of England, where I’m originally from, where the dream of having my own 3 bed, semi-detached house would not be possible in any area with a reasonable number of IT jobs in short distance. I don’t drive, so the fact that the tram stop is 10 minutes walk away is great for getting to work.

I met my current girlfriend, Conny in May, and things seem to be going very well; she is even planning to move from Berlin to Manchester to live with me. This is obviously great, and I don’t know where I would be without her support.

Work

With all these things happening in my personal life, work took a secondary focus as I got things sorted. It also made me rethink what I wanted from my career. At the start of 2015 I had a new role, as Test Manager; the first level of technical management in my area at the BBC, and a big career move for me. Although I liked some aspects of the management role, I missed the technical challenges that had pretty much characterised the last 10 years of my career. There was not much direct coding, and I felt I was in danger of losing that aspect of my work. I took a 6 month attachment to R&D, which had me working in an extremely challenging technical role, on a HTML5 360 VR engine. In April when this attachment ends, I am looking to continue in a technical role of some description, and not return to pure management, at least for the meantime.

Goals of 2015 – How Did I Do?

Work Goals

  • Settle into my new role at the BBC as Test Manager – As I mentioned before I’ve taken a move towards another route in my career
  • Pushing for a place to be opened up in Platform Test to employ someone from the Extend Scheme – This was achieved, and Ben has joined the BBC on an Extend placement.

Creative Goals

Social Goals

Financial Goals

  • Saving more over the course of the year – Partly achieved. I have bought a house, so now I am in a quite a bit of debt, but the money I will be putting towards my mortgage will be money I am effectively ‘saving’ because it will be put into the value of the house.
  • Joining a pension scheme – Achieved.

Health Goals

  • Adopt a regular form of keeping fit – Partly achieved. I have now setup a return commute which involves walking past a gym that I’m a member of, so it is quite easy to go in there for 30 mins on the treadmill 2-3 times a week. I’ve just got to maintain the discipline.

Top 5 Recommended Upgrades for your PC

I have made a lot of different upgrades and modifications to my PC, as you can see here. Some of the upgrades have made more of a difference than others though. Here is what I think you should be concentrating on, if you’re looking to upgrade.

upgrades

  • Solid State Hardisk (SSD) – Solid State hard drives use flash memory instead of the moving disk platters of traditional hard disks. It is the same type of storage as your USB stick. This type of storage is a lot faster to access compared to magnetic storage. Upgrading will result in a huge performance increase for most systems if you are changing from a traditional hard disk. Get as big a size as you can afford. If you play computer games or do a lot of media production work, then the added space will be useful. They have reduced in price over the years, the first SSD I bought was £120 for 120GB SSD back in 2012, in 2015 I just bought a 250GB SSD for £50. So it’s definitely affordable now.
  • Large Monitor – If you can get a 27″-32″ monitor then do so. It has made so much difference to the day to day usage of my PC. I would recommend 1440p if you can. 1440p is half the resolution of 4K. I wouldn’t recommend a 4K monitor yet in 2015 as I don’t think they have enough software support, and the cost is considerable for a decent screen. If you’re a gamer, then you might want to aim for a higher refresh speed, but I’d say this should be a secondary consideration to the screen space. Look on TFTCentral for reviews and guides to the different screen types available.
  • Good Soundcard and Surround Sound Speaker System – Headphones are OK, but even a basic surround sound soundcard and speaker system is going to be so much better. I have a Asus Xonar Phoebus Solo which I recommend, it’s a 7.1 surround sound card. I have a cheap £60 set of surround sound speakers, Logitech Z506 Surround Sound Speakers. Surround sound really makes a difference in gaming and movies. I think it’s the seperate subwoofer that has the most effect, so if you are not that convinced by surround sound, you could get a 2.1 (two speakers and a subwoofer) setup for a bit less.
  • Ergonomic Mouse and good mousemat – Chances are, most of the time you’re at your PC, you will be using the mouse. It is therefore really important you have a good mouse that won’t damange your hand after a few years use and is comfortable to use. Modern mice use laser scanners to track the position of the mouse on a flat surface. A higher resolution laser (measured in DPI – dots per inch) means that you can get more accurate tracking. Therefore look for high DPI mice for gaming or fine detail work as well as an ergonomic fit and lots of buttons. I recommend Logitech mice, after having had several Razer mice that didn’t last very long. I would also pick up a steel mousemat, as they never get tangled up in your mouse like the fibre mousemats do.
  • Recent Graphics Card – If you are into gaming or 3D modelling work, you would often prioritise this over any other upgrade. A new graphics card means that your existing games will run faster on higher detail settings, and you can play new games on higher settings with better framerate. I don’t think it matters too much whether you go for Nvidea or AMD as long as you can run the games you want to run. If you are not interested in running the latest games, then perhaps you don’t need this, but you may be missing out in the future.