jimkim.de - High Fidelity









Search Preview

Digital Music Player with Raspberry Pi and Volumio – jimkim.de

jimkim.de
↓ Zum zentralen Inhalt StartseitePhotographyPortfolioSmartphone PhotographyZollverein Es
.de > jimkim.de

SEO audit: Content analysis

Language Error! No language localisation is found.
Title Digital Music Player with Raspberry Pi and Volumio – jimkim.de
Text / HTML ratio 44 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud = ' Raspberry message Player Music display Volumio line2 strip Pi infoSong VFD lcd_columns control power DAC infoArtist songArtist LCD
Keywords consistency
Keyword Content Title Description Headings
= 90
' 33
Raspberry 30
message 29
Player 25
Music 22
Headings
H1 H2 H3 H4 H5 H6
1 0 3 0 0 0
Images We found 17 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
= 90 4.50 %
' 33 1.65 %
Raspberry 30 1.50 %
message 29 1.45 %
Player 25 1.25 %
Music 22 1.10 %
display 17 0.85 %
Volumio 16 0.80 %
line2 15 0.75 %
strip 9 0.45 %
Pi 9 0.45 %
infoSong 9 0.45 %
VFD 9 0.45 %
lcd_columns 9 0.45 %
control 8 0.40 %
power 8 0.40 %
DAC 8 0.40 %
infoArtist 8 0.40 %
songArtist 7 0.35 %
LCD 7 0.35 %

SEO Keywords (Two Word)

Keyword Occurrence Density
message = 24 1.20 %
Music Player 20 1.00 %
Raspberry Music 14 0.70 %
' ' 11 0.55 %
= ' 10 0.50 %
line2 = 9 0.45 %
of the 8 0.40 %
Raspberry Pi 8 0.40 %
for the 8 0.40 %
line1 = 7 0.35 %
on the 6 0.30 %
is a 6 0.30 %
Digital Music 6 0.30 %
in the 6 0.30 %
to the 6 0.30 %
a very 5 0.25 %
'\n' line2 5 0.25 %
lcdmessageline1 '\n' 5 0.25 %
= statusLines 5 0.25 %
' line2 5 0.25 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
Raspberry Music Player 14 0.70 % No
= ' ' 5 0.25 % No
lcdmessageline1 '\n' line2 5 0.25 % No
line2 = ' 5 0.25 % No
Digital Music Player 5 0.25 % No
'' message = 4 0.20 % No
' line2 = 4 0.20 % No
Music Player with 4 0.20 % No
lcdset_cursor00 line1 = 4 0.20 % No
with Raspberry Pi 4 0.20 % No
the VFD display 3 0.15 % No
Player with Raspberry 3 0.15 % No
I wanted a 3 0.15 % No
< lcd_columns 1 3 0.15 % No
' lcdmessageline1 '\n' 3 0.15 % No
base plate Raspberry 3 0.15 % No
plate Raspberry Music 3 0.15 % No
songArtist = statusLines 3 0.15 % No
155 ' line2 3 0.15 % No
Volumio 155 ' 3 0.15 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
' line2 = ' 4 0.20 % No
Digital Music Player with 4 0.20 % No
' lcdmessageline1 '\n' line2 3 0.15 % No
Music Player with Raspberry 3 0.15 % No
Player with Raspberry Pi 3 0.15 % No
with Raspberry Pi and 3 0.15 % No
Raspberry Pi and Volumio 3 0.15 % No
line1 = ' Volumio 3 0.15 % No
= ' Volumio 155 3 0.15 % No
' Volumio 155 ' 3 0.15 % No
Volumio 155 ' line2 3 0.15 % No
155 ' line2 = 3 0.15 % No
line2 = ' ' 3 0.15 % No
plate Raspberry Music Player 3 0.15 % No
base plate Raspberry Music 3 0.15 % No
Raspberry Digital Music Player 2 0.10 % No
there is quite some 2 0.10 % No
= statusLines split''1 strip 2 0.10 % No
show song title and 2 0.10 % No
Raspberry Music Player Raspberry 2 0.10 % No

Internal links in - jimkim.de

Photography
Portfolio – jimkim.de
Portfolio
Portfolio – jimkim.de
Smartphone Photography
Smartphone Photography – jimkim.de
Zollverein Essen (Guided Tour)
Zollverein Essen (Guided Tour) – jimkim.de
3D Modeling
3D Modeling – jimkim.de
Guitar Projects
Guitar Projects – jimkim.de
Arduino MIDI Switch
Arduino MIDI Switch – jimkim.de
The MIDI Looper
The MIDI Looper – jimkim.de
The Midi Switch
The Midi Switch – jimkim.de
Jet City JCA20HV customizing
Jet City JCA20HV customizing – jimkim.de
EV Thiele 806 Guitar Cab
EV Thiele 806 Guitar Cab – jimkim.de
Power Supplies for FX Pedals
Power Supplies for FX Pedals – jimkim.de
Shielding guitar pickups with adhesive copper foil
Shielding guitar pickups with adhesive copper foil – jimkim.de
Switching guitar (audio) signals with relays
Switching guitar (audio) signals with relays – jimkim.de
Project Gallery
Project Gallery – jimkim.de
High Fidelity
Digital Music Player with Raspberry Pi and Volumio – jimkim.de
Digital Music Player with Raspberry Pi and Volumio
Digital Music Player with Raspberry Pi and Volumio – jimkim.de
Squeezelite Streaming Client with Raspberry Pi
Squeezelite Streaming Client with Raspberry Pi – jimkim.de
Turntable Talk
Turntable Talk – jimkim.de
Verwellte Schallplatten glätten
Verwellte Schallplatten glätten – jimkim.de
CT 235 Coaxial Loudspeaker (Diva Clone)
CT 235 Coaxial Loudspeaker (Diva Clone) – jimkim.de
Gadgets
Gadgets – jimkim.de
Standalone Hifi MP3 Player
Standalone Hifi MP3 Player – jimkim.de
The MAME Arcade Controller
The MAME Arcade Controller – jimkim.de
Impressum & Datenschutz
Impressum & Datenschutz – jimkim.de
See more...
Portfolio – jimkim.de

Jimkim.de Spined HTML


Digital Music Player with Raspberry Pi and Volumio – jimkim.de ↓ Zum zentralen Inhalt StartseitePhotographyPortfolioSmartphone PhotographyZollverein Essen (Guided Tour)3D ModelingGuitar ProjectsArduino MIDI SwitchThe MIDI LooperThe Midi SwitchJet City JCA20HV customizingEV Thiele 806 Guitar CabPower Supplies for FX PedalsShielding guitar pickups with wrapper copper foilSwitching guitar (audio) signals with relaysProject GalleryHigh FidelityDigital Music Player with Raspberry Pi and VolumioSqueezelite Streaming Client with Raspberry PiMBL 4010 Vorverstärker Revision und ModifikationTurntable TalkVerwellte Schallplatten glättenCT 235 Coaxial Loudspeaker (Diva Clone)GadgetsStandalone Hifi MP3 PlayerThe MAME Arcade ControllerImpressum & Datenschutz Home ›UpperFidelity › Digital Music Player with Raspberry Pi and Volumio Digital Music Player with Raspberry Pi and Volumio This standalone Digital Music player is the successor to my first Raspberry Pi-based digital audio project, and it was intended as some kind of evolution. Player #1 was running Squeezelite (later once Volumio, but merely as a test setup), so it needed a server or NAS to be running in order to play music. I’m not interested in playing music over the network –  instead I wanted a standalone digital audio solution without the need to start/shutdown spare network devices each time I want to listen to music. Raspberry Music Player: front panel with VFD, Volumio in idle state  Raspberry Digital Music Player with Volumio OS  Raspberry Music Player: VFD closeup  Raspberry Digital Music Player: Philips RD5860 remote  Player #2 will be implemented in two stages: The first stage will contain the fully functional player with local usb storage and an I2S DAC. The second stage will add a Tube CD filter based on a spin published in the german DIY Hifi magazine “Klang & Ton” in 1994 ( modern player tech meets oldschool tube circuitry). The Tube CD filter is intended to filter out upper frequency noise leftovers from the DAC. I rather consider the filter to be some kind of additional/optional sound “flavour”, I’m not too strict regarding “sense” or straightforward design. BTW, the spin diamond of the filter ist very, very similar to this one. Honi soit qui mal y pense… These were my requirements when designing the concept:Upperquality playback of audio files Volumio as software/OS, Raspberry Pi as hardware Flac files stored on local usb medium Inbuilt power supply with linear regulation A exhibit showing vital info well-nigh the currently playing song/artistVitalremote tenancy functions (play, pause, next, etc.) incl. shutdown option; all enhanced tenancy functions like artist/playlist selection will be performed using the volumio web interface, or maybe by using mpd-compatible apps like “mpdroid“ Appealing, living room uniform visitation I did some web reading and (to cut it short) finally dicovered audiophonics.fr, some french guys designing/selling DIY Hifi components, with an accent on digital products. I chose the I-Sabre DAC ES9023 TCXO for the Raspberry 2 (read well-nigh USB vs. I2S on the Raspberry Pi here); the sound quality of the ES9023 is reported to be very good, and the DAC workbench offers GPIO passthrough, so remoter periphery devices (ir receiver, dot matrix display) can be hands connected. Audiophonics offers other nice components, like power supply regulators and aluminium chassis. To save some time and have a cleaner layout, I ordered some  LT1083 regulator boards; these unhook power for the Raspi, the usb storage, the exhibit and –  later on – for the tube heaters (my diamond has a minor flaw concerning the heater voltage; increasingly on that later). The regulators get their AC supply from a 50VA torrodial transformer with two secondary wirings. Raspberry Music Player: Raspberry, SABRE ES9023 DAC, power supply mounted in case  Raspberry Music Player: components closeup  Raspberry Music Player: rear panel with Neutrik USB/network connectors, solid state and tube output, mains  Raspberry Music Player: Volumio playing, mpd song/artist info on VFD  I moreover opted for a chassis that suited my needs – there is quite some space required for all these components. Furthermore, I wanted a chassis that once had a suitable cutout for the display. The two knobs will tenancy power on/off and the tube output volume. On the back, there are suitable cutouts for power and audio connections (2 x stereo, DAC uncontrived and tube output). I only had to drill unobjectionable cutouts for the Neutrik USB and LAN connectors, this can be seen on one of the pictures. The dot matrix VFD has been recycled from a very old project. It is a very nice diplay (much sharper than LCDs, moreover with a greater viewing angle) with 24×2 chars/lines and a HD44780 uniform controller. The exhibit is unfluctuating to the Raspberry in 4bit parallel mode. The IR receiver is a TSOP38238. This device can be directly unfluctuating to the GPIO port. LIRC ist installed as software; I had to fiddle virtually with the correct GPIO ports and LIRC instructions – there are a lot of instructions on the web that show you how to setup and configure LIRC (which is a nice support), but you have to read 3 or 4 of them to get a well-constructed picture… Find one of the nicer ones here. The RD5860 remote is from an old Philips CD player, you can plane find a pre-configured lirc config file for this remote; the chassis feet have moreover been recycled from this player. Raspberry Music Player: Futaba 2x24 VFD mounted in case  Raspberry Music Player: Raspberry Pi, Audiophonics DAC and power supply mounted on wiring plate  Raspberry Music Player: flipside view of wiring plate  Raspberry Music Player: wiring plate (2 x 2mm) with lots of screws for mounting components  All hardware components have been mounted on an spare 2mm aluminium board. I did not want to drill that many holes directly into the chassis. I ordered two boards (one spare), and later on decided to use both boards, which resulted in a very solid 4mm base. This wiring moreover serves as a heatsink for the voltage regulators. You can see that in stage 1 there is quite some space left in the when – this is where the Tube CD filter will fit in in stage 2. Raspberry Music Player: planning component layout  Raspberry Music Player: drilling wiring plate  Raspberry Music Player: lower wiring plate ready!  Raspberry Music Player: drilling larger holes for neutrik connectors in rear panel  The Volumio OS is currently installed in version 1.55. A newer version with major modifications is once misogynist on volumio.org, but I decided to stay with the older version, get everything up and running (lots of things to be figured out) and then later on try the stable 2.x release. On top of Volumio there is (as once mentioned) LIRC for IR remote tenancy and the Adafruit LCD library (Adafruit_Python_CharLCD) written in python for exhibit control. You moreover need the GPIO library to wangle the GPIO port in python. My python script for reading song/artist info from mpc (mpc ist the writ line using which is used to tenancy the Music Player Daemon [mpd]) and writing this info to the VFD exhibit is a heavy modification of a script taken from this page. I stripped it lanugo to a very vital version (song/artist/track number/total play time/some status info) in order to reduce cpu load and considering I wanted a preferably wifely and simple presentation of the vital data on the VFD exhibit in wing to the well-constructed info on the Volumio web interface. I moreover implemented some optimizations in the code, e.g. introduce sigterm handling (when shutting lanugo the script), indulge german special chars on the exhibit (“umlaute”, considering the custom weft table of the Futaba display) , part-way text on the display, etc. This is the current version of the script: #!/usr/bin/python # -*- coding: utf-8 -*- import subprocess import textwrap import time import signal import sys import Adafruit_CharLCD as LCD # Raspberry Pi gpio pin configuration lcd_rs = 5 lcd_en = 6 lcd_d4 = 17 lcd_d5 = 23 lcd_d6 = 24 lcd_d7 = 27 lcd_backlight = 26 # pinpoint LCD post and row size for LCD lcd_columns = 24 lcd_rows = 2 # init the LCD using the pins whilom lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) def sigterm_handler(signal, frame): lcd.set_cursor(0,0) line1 = (' Volumio 1.55 ')[0:lcd_columns] line2 = (' shutting down... ')[0:lcd_columns] lcd.message(line1 + '\n' + line2) sys.exit(0) signal.signal(signal.SIGTERM, sigterm_handler) def replace_specialchars(message): try: # message = message.encode('utf-8') message = message.replace('ä', chr(228)) message = message.replace('ö', chr(246)) message = message.replace('ü', chr(252)) # message = message.replace('Ä', chr(196)) # message = message.replace('Ö', chr(214)) # message = message.replace('Ü', chr(220)) # message = message.replace('ß', chr(223)) # message = message.replace('°', chr(223)) # message = message.replace('µ', chr(228)) # message = message.replace('´', chr(96)) # message = message.replace('€', chr(227)) # message = message.replace('–', '-') # message = message.replace('“', '"') # message = message.replace('”', '"') # message = message.replace('„', '"') # message = message.replace('’', ''') # message = message.replace('‘', ''') # message = message.replace('è', '232'); # message = message.replace('é', '233'); # message = message.replace('ê', 'e'); # message = message.replace('á', '225'); # message = message.replace('à', '224'); # message = message.prelace('â', 'a'); except: return message; return message def main(): # print welcome message line1 = ' Volumio 1.55 ' line2 = ' initializing system ' lcd.message(line1 + '\n' + line2) # create custom char (...) = three dots in one weft char_threeDots = [0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b10101,0b00000] # create in ram position 0 lcd.create_char(0, char_threeDots) # wait 2 seconds time.sleep(2.0) # well-spoken exhibit and turn on backlight lcd.clear() # lcd.backlight(lcd.ON) songArtistPrevious = '' stoppedSet = 0 z = 0 while True: # get current status and playtime process = subprocess.Popen('mpc', shell=True, stdout=subprocess.PIPE) status = process.communicate()[0] statusLines = status.split('\n') # trammels if mpc returns increasingly that one line plus an uneaten # in that specimen we dont have stopped the music and can parse spare data if len(statusLines) > 2: # pericope the song name / versifier name (first line) # web radio has station name surpassing versifier / song songArtist = statusLines[0] if ":" in songArtist: songArtist = statusLines[0].split(':',1)[1].strip() if ":" not in songArtist: songArtist = statusLines[0] # pericope player status (playing/stopped) infoPlayerStatus = statusLines[1].split(' ',1)[0].strip() # trammels for song change; only write new data to exhibit # if there is a transpiration rationalization this is nicer to cpu if songArtist != songArtistPrevious: songArtistPrevious = songArtist stoppedSet = 0 z = 0 infoArtist = songArtist.split(' - ',1)[0].strip() # shorten versifier name if longer than lcd_columns if len(infoArtist) > lcd_columns: infoArtist = (infoArtist)[0:lcd_columns - 1] + '\x00' # part-way while len(infoArtist) < (lcd_columns -1): infoArtist = ' ' + infoArtist + ' ' infoArtist = infoArtist + ' ' infoSong = songArtist.split(' - ',1)[1].strip() # shorten song name if longer than lcd_columns if len(infoSong) > lcd_columns: infoSong = (infoSong)[0:lcd_columns - 1] + '\x00' # part-way while len(infoSong) < (lcd_columns -1): infoSong = ' ' + infoSong + ' ' infoSong = infoSong + ' ' # pericope a string like '2:01/3:43 (54%)' # from the string '[playing] #2/8 2:01/4:38 (50%)' infoLine = statusLines[1].split(']',1)[1].strip() # remove first weft ('#') # format aftwerwards: 2/8 2:01/4:38 (50%) infoLine = infoLine[1:] infoTrack = infoLine.split(' ',1)[0].strip() infoTimes = infoLine.split(' ',1)[1].strip() # split of (50%) infoTimes = infoTimes.split('(',1)[0].strip() infoTotalPlaytime = infoTimes.split('/',1)[1].strip() # toggle versifier / track info if z > 40: z = 0 if z == 0: # show song title and total play time / track lcd.set_cursor(0,0) line1 = (infoSong)[0:lcd_columns] line2 = ('Track: '+infoTrack+' Time: '+infoTotalPlaytime)[0:lcd_columns] while len(line2) < (lcd_columns -1): line2 = ' ' + line2 + ' ' if infoPlayerStatus == '[paused]': line2 = ' [playing paused] ' # wipe special chars line1 = replace_specialchars(line1) # line2 = replace_specialchars(line2) lcd.message(line1 + '\n' + line2) if z == 10: # show song title and versifier lcd.set_cursor(0,0) line1 = (infoSong)[0:lcd_columns] line2 = (infoArtist)[0:lcd_columns] # wipe special chars line1 = replace_specialchars(line1) line2 = replace_specialchars(line2) lcd.message(line1 + '\n' + line2) else: # message when stopped # set message only once, not in a loop (cpu friendly) if stoppedSet != 1: lcd.set_cursor(0,0) line1 = (' Volumio 1.55 ')[0:lcd_columns] line2 = (' [no music playing] ')[0:lcd_columns] lcd.message(line1 + '\n' + line2) songArtistPrevious = '' stoppedSet = 1 # sleep 0.5s time.sleep(0.5) z += 1 if __name__ == '__main__': main() There is moreover a small modification to the Adafruit LCD library: I widow splendor tenancy for the VFD exhibit (config is hardcoded in the library). This is a special full-length of some VFDs, you can retread splendor in four degrees; this is washed-up by setting spare shit during exhibit initialization: #Splendorof Futaba VFD exhibit # Set to 100% for LCD displays # 100% # LCD_BRIGHTNESS = 0x00 # 75% LCD_BRIGHTNESS = 0x01 # 50% # LCD_BRIGHTNESS = 0x02 # 25% # LCD_BRIGHTNESS = 0x03 Then in the init procedure of the library (“__init__”) you have to modify the pursuit line for the splendor setting to take effect: # Initialize exhibit control, function, and mode registers. [...] self.displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_2LINE | LCD_5x8DOTS | LCD_BRIGHTNESS The Flac files are stored on an SSD USB disk unfluctuating to the Raspi. The disk has its own power supply. The USB2SATA controller is taken from an external USB drive; this controller is my second shot – the first controller had been recycled form a very old external USB drive, and it resulted in stuttering music playback; it took me some time and nerves to icon out the rationalization of this problem! With the SSD, there are no moving parts in the player, so it is absoutely silent. Raspberry Volumio Highend Player Standalone Digital Music Player with Raspberry Pi and Volumio, SSD data storage, Highend grade I2S ES9023 DAC. Read more… Photography A hodgepodge of pictures that I have taken over the years. Analogue and digital, with Minolta XD7, Leica Digilux 1 and Panasonic G1 and G6. See more... Arduino MIDI SwitchTenancyguitar amps and effects with this Arduino based MIDI Switch. Receives program changes on 16 channels, all setup is washed-up in software. Read more… © 2018 jimkim.de Responsive Theme Powered by WordPress Top