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.

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’ 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