/NR1-UI-352

Primary LanguagePythonOtherNOASSERTION

Inspired by: diehardsk/Volumio-OledUI

23.09.2020 Splitted the Project

This is the Python3.5.2 version of Maschine2501/Volumio-OledUI


NR1-UI

Im building a Network Hifi Receiver from scratch. Main components are a RaspberryPi4 and an HiFi-Berry-Dac. An old Braun T2 Tuner serves as case for the player. To keep as much as possible from the look of the device i needed an Interface for Volumio. And especialy one that supports a 3,2" ssd1322 SPI Oled with 256x64Pixel. After doing some research i found diehrdsk/Volumio-OledUI. It fullfills many points on my "wishlist" but not nearly all. As we all know, the way is the destination, i spent some time (much time....) in modifying the original code. Unfortuneatly luma.oled does not support Python2 anymore. So this ist the new version, now depending on python 3.5.2

The project is not finished yet... but close the the goal!

I try to assist you, if you got questions or even problems with the code, just contact me.

Time by time more informations in the wiki will follow...

The Code is now modular:

To modify your Layout use the config files -> here is a little instruction about it.

To select your display, just change line 68 in nr1ui.py

To change the look/layout just press Button-C in "Standby-Screen" (Clock), select the desired Layout with the Rotary-Rotation and push the Rotary once to apply selection ->

Screenselect

Base ssd1322 (on all Layouts the same):

Spectrum-Left (ssd1322):

Spectrum-Center (ssd1322):

Spectrum-Right (ssd1322):

No-Spectrum (ssd1322):

Modern (ssd1322):

VU-Meter-1 (ssd1322):

VU-Meter-2 (ssd1322):

VU-Meter-Bar (ssd1322):

Base ssd1306 (on all Layouts the same):

Spectrum-Screen (ssd1306):

Progress-Bar (ssd1306):

Features of Maschine2501/NR1-UI:


  • 4 Button Interface (Button function depends on "State" of the screen, e.g. playback, menu...)

  • 1 Rotary with button (function also depends on "State")

  • Playback Screen with Artist, Song, file-format, samplerate and bitdepth

  • Standby-Screen with Time, Date and IP-Adress

  • 3 Menu Screens (Media-Library, Playlists, Queue)

  • Button-Layout-Icons on each Screen (depending on "State")

  • Media-Library-Information Screen (Statistics about your Media-Library -> Artists, Albums, Songs, total Playtime)

  • Boot and Shutdown Logo

  • interaction with standby module (hardware

  • shutdown interaction with SIGNAL (SIGTERM)

  • 8 LED's controlled by an PCF8574T (i2c gpio-extender) -> Cpu-load on 5 LED's, power-, play- and stere-indicator.

  • IP adress is selected automaticaly (eth0 or wlan0)

  • Playback-"progress bar"

  • spectrum display -> "CAVA" is used to display a bargraph spectrum

  • easy customization -> realized by a "config"-part at the beginning of the code

  • compatible with ssd1306(i2c) and ssd1322(spi) oled displays

  • versions without spectrum for ssd1322 and ssd1306 displays

  • selectable if you use led's or not -> further selection: LED's by GPIO or i2c extender connected

  • selectable if you use external standby equipment -> if so: automatic shutdown!

  • All-in-one Version (for both: ssd1306 and ssd1322)

  • Screen-Layouts -> selectable in line66 oledui.py

  • Added an "Playback-Indicator-Icon" to the NowPlayingScreen

  • moved all Layout related stuff to a config file, for more easy handling (./config/ScreenConfig.py)

  • Screen-Layouts are aviable

  • Screen-Layouts are conviniently selectable in a dedicated Menu

  • maybe more features will come... ^^

  • Some bugs will (not often) happen. Will debug it soon.

To-Do:

  • discontinued

Allready Done:


  • Standby-Screen (when Playback is stoped, Time, Date and IP is Displayed)
  • Automatic stop when playback is paused (value could be defined / declared)
  • display Fileformat/Samplerate/Bitdepth in the NowPlayingScreen
  • Scroll Text stops before shown completly -> text was defined as scrollText, which makes "black"-boxes arround the text
  • one rotary removed
  • 4 more Buttons via GPIO (needs some fine tuning)
  • MediaInformationScreen (volumio.local/api/v1/collectionstats)
  • Icons for the function of each button, depending on "state"
  • migration to Python 3.5.2
  • implemented an SIGTERM handler
  • implemented a new StandbyLED module
  • implemented a logic to select the active network card and display it`s IP
  • removed Volume Screen and Volume interactions completely
  • Add a "progress bar" for Playback
  • integrated "CAVA" to display a bargraph spectrum
  • added a "config"-part at the beginning of the code, to configure the whole display for your needs
  • added a ssd1306 Version
  • addes versions without spectrum for ssd1322 and ssd1306 displays
  • Combine all Versions to one Code (with configuration at the begining)
  • Make More Screen-Layouts -> selectable by config
  • Add an "Playback-Indicator-Icon" to the NowPlayingScreen
  • A VU-Meter Screen
  • Screen selection Menu (Aviable in Stand-ByScreen (clock) by pressing button-C)
  • VU-Meter-Bar-Layout -> Thanks Mihai for the Background Image! <3
  • Peak-Hold enabled in VU-Meter-Bar-Layout -> Thanks almajiro for providing a sample! <3
  • Scrolling-Text is back!
  • Tidal Playback is functional now
  • Simplyfied installation routine by using a bassh-script


Configuration Manual (will follow soon!)






Your Display is not supported yet? You have an idea for a function/feature?


Discord Server for direct contact:


You want to use a display which is not supported yet?

If you're willing to sponsor me the specific Display, I will implement it.


MS2501