SoundMachine Build Log 02

Posted by in Hardware, Tutorial

I’ve decided to put in a knob to control the volume directly on the box itself. It will be controlled by volumio itself via a plugin, much like the GPIO Buttons plugin. Since this is really a development kit approach, the hardware consists of: A KY-040 rotary encoder and A screw-based prototype board Both are relatively easy and cheap to find and buy. Rotary encoder The encoder is straight-forward cheap version, with a push button too, just in case. It’s even mounted on a PCB and has pins too, so…read more

Build Log 01

Posted by in Hardware, Tutorial

A while ago I’ve decided to try my hand at replacing my Sonos system with a DIY version of a sound system. I have two reasons to do this: I think it’s going to be fun and I have a bunch of FLAC files at odd resolutions which are not really playable by the Sonos system. After giving it some thought, I’ve settled on the following configuration: A Raspberry Pi A sound card for the Raspberry Pi. For starters I’ll be going with a Chinese clone An amplifier A couple…read more

HifiBerry Pin Usage

Posted by in Hardware, Tutorial

The past few days I’ve been struggling with the unknown of how many pins from the GPIO interface are actually used by the HifiBerry sound card (or my clone). Fortunately, I’ve found the used pins: As you can see, there are quite a few pins left for other things, which means I won’t have to use an arduino to control things anymore :) HTH,

Applications for EPSO/AD/331/16 – Second Phase

Posted by in EPSO

The number of applications are: No. Section Places Candidates Ratio 1 Data Analysis and IT Service 30 88 ~3x 2 Digital Workplace, Office Automation and Mobile Computing 25 75 3x 3 Enterprise Resource Planning (ERP) 14 41 ~3x 4 ICT Security 49 147 3x 5 IT Infrastructure 38 112 ~3x 6 IT Portfolio/Programme Management and Enterprise Architecture 24 72 3x Ratio: How many people compete for one place to the reserve list HTH,

Change the File Extension in Typescript – Using Path

Posted by in Software, Tutorial

Following from my previous post, I’ve updated the function to use only the path module. Now, the code looks like:

I’ve updated the workflow presented previously to: isolate the dir, ext and root components of the path replace the ext with the new extension return the normalized version of the composed path Now, our function accepts complete paths, not only filenames. Note: The path.normalize() function does NOT calculate the absolute path. It only changes the path separators.

My Raspberry Pi 3 Config.txt for Volumio

Posted by in Hardware

My stable configuration file for Volumio looks like this now: Basics:

Sound card:

WaveShare screen:


The only more convoluted configuration is the networking, which allows me to connect to my wireless network. Once the setup will be stabilised, I will be able to connect it via ethernet, making the whole last section obsolete. And the wpa_supplicant.conf file looks like:


Configure Volumio with PiFi DIGI DAC+

Posted by in Hardware, Tutorial

The other day I’ve got a Chinese clone of HiFiBerry, a PiFi DAC+ v2.0: Here are the steps to configure it with Volumio. First, you need to install Volumio 2 (2.129 at the moment of writing). You need to configure it to e.g. connect to the network, index songs. Note: Back up your config.txt (and wpa_supplicant.conf) Once you’ve got it up and running, select the Playback menu: … and select the Hifibetty DAC Plus for the Output Device and *DAC Model. Make sure you enable I2S DAC: For the options,…read more

Change the File Extension in Typescript (or Javascript)

Posted by in Software, Tutorial

TL;DR: You need to get the root name (without the extension) and append the new extension. Then, it only depends on how tolerant you are. The other day I figured I needed a function to change the file extension (from a .jpg to a .nfo). Since I haven’t found a ready made function to do this, I decided to create my own (it’s also a good exercise for my neurons…). The function ended up having the following steps: Prerequisite: the function input parameters are the file name (not the full…read more

Consistent Testing

Posted by in Software, Tutorial

TL;DR: Delete the settings file before starting the test. Today I implemented a simple wrapper over the electron-settings functionality to gibe me access to a set of properties via get/set methods. My scenario is simple: I have a property named path.backup and I want to be able to get, set andtest it’s set`. The code is:

Now, my testing code would be something along the lines:

And I was surprised to find the test failed in the second part (can detect it has source paths). Consistently. Then, I…read more