shhammer5634
Posts: 71
Joined: Mon Dec 04, 2017 10:45 am
Location: Iowa, USA

Re: fruitbox MP3 jukebox

Fri Nov 22, 2019 5:15 pm

willbuden wrote:
Fri Nov 22, 2019 3:59 pm
Finally got fruitbox working with the Official Raspberry Pi Touchscreen. It took me a few days of reading through this discussion to understand that you have to run

Code: Select all

./fruitbox --config-buttons
to transfer control of the buttons on the keyboard to the buttons on the screen. You have to actually touch the screen (anywhere) for each button that will appear on the screen. Now, I've got it and really love this app.

The only other issue is that I could not get my Logitech K830 wireless keyboard to work with it. The K830 has a USB dongle that works with the keyboard. The K830 works fine in the Raspbian Lite shell and with Full Raspian.

I've been looking for an app like this for 20 years. Yes, really! I never found anything that did such a great job of emulating a real jukebox.

Another thing, aside from the notes above, this is the ONLY Linux program that installed and ran the first time (in my experience). I usually have to find some missing dependency and install it only to find the dependency needs a dependency.

Thank you for all your hard work. This is a truly welcome and fun app. AWESOME!
Mike has done a brilliant job with Fruitbox. As far as your keyboard not working, any button you have defined as touch in the fruitbox.btn file won't work from the keyboard while Fruitbox is running. I have put only the buttons my skin uses in the file so that other buttons still work from the keyboard. Mine is a custom skin that is touch song, volume up and down, left and right, alpha left and right, and power off. That leaves the other buttons active on the keyboard.

Hope this helps.

Cheers,
Steve

willbuden
Posts: 7
Joined: Fri Nov 22, 2019 3:42 pm

Re: fruitbox MP3 jukebox

Fri Nov 22, 2019 6:02 pm

None of the keys work with the Logitech K830. They all worked fine with a USB wired keyboard from Microsoft.

Looking at raspi-config, and the Raspberry Pi compatible hardware page, I don't find the K830 but the Logitech K400 is compatible. I've loaned out my K400 but will try it when I get it back.

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Sat Nov 23, 2019 9:29 am

willbuden wrote:
Fri Nov 22, 2019 6:02 pm
None of the keys work with the Logitech K830. They all worked fine with a USB wired keyboard from Microsoft.

Looking at raspi-config, and the Raspberry Pi compatible hardware page, I don't find the K830 but the Logitech K400 is compatible. I've loaned out my K400 but will try it when I get it back.
Hi

Glad you like fruitbox. Sorry to hear you're having keyboard issues. If you want me to try and fix the problem, could you post a couple of things to me please?...

Can you send me the files /proc/bus/input/devices and fruitbox.log

Also can you run evtest from the command line, select the keyboard device from the list (if it's detected) and send me its output when you press a key.

Cheers
Mike

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Sat Nov 23, 2019 9:41 am

PittStone wrote:
Sun Nov 17, 2019 12:27 am
Hello, is there a way to change the textures of the Arrow and Windowborder of the --chose Menu? Only this Wooden is boring and i would have a Metal Version.
Hi

Sorry missed your post when you first sent it. The graphics are built into the source code so can't easily be changed unless you understand C++ and are willing to modify the code and rebuild the app. However, v1.16 (next release before the end of the year) has a revamped interface.

If your are willing to change the source code I will be happy to explain what needs changing.

Cheers
Mike
Last edited by fruitbox on Sat Nov 23, 2019 9:52 am, edited 1 time in total.

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Sat Nov 23, 2019 9:52 am

lamers_united wrote:
Mon Nov 18, 2019 7:44 pm
mamer999 wrote:
Mon Jun 17, 2019 8:07 am
Hi Mike,

I hope everything is okay. Unfortunately I have to bother you again. I bought a new touch screen for a new fruitbox project,
(Waveshare Raspberry Pi 10.1inch HDMI LCD 1024x600 Capacitive Touch Screen). Is detected by evtest and works perfectly with the PI, but unfortunately not with fruitbox. Touch is not recognized at all! Output from evtest:

(Removed by lamers_united for readabilty)

Cheers

Jürgen
Hey Jürgen,

I am stuck with the exact same Model on a RasPi 3. Though, stuck in a different way. My Waveshare works out of the box, unfortunately the TouchOne-Skin (to my limited understanding the only default skin working with touch screens), is optimized for the 7" RasPi Screen. Hence most Buttons pressed, don't give feedback, as the Template of the Skin is using a 800x400 resolution and button spaces in odd places.

I guess I need to do some changes in the skins fruitbox.cfg. Would you be able to give a lead there or maybe share your cfg with me, IF you should be using that skin. Well, ANY skin would be fine, to be honest. I just need this on a short notice, as this is supposed to go live in an exhibition in 3 days and I lack the time for thorough template building.

Would be awesome, if you are able to give me a hand there or point me to a resource.

Thanks in advance,
Stefan
Hi Stefan

You won't need to modify fruitbox.cfg for the resolution...the touch coordinates for the buttons are relative to the skin resolution and not the screen resolution...fruitbox will scale the skin to fit onto any size display, and also scale the touch coordinates as well, taking into account if the touch resolution is different to the display resolution. This means when you are designing a touch skin you don't need to care about what the display or touch sizes are. So if it's not working there's a good chance it's a problem with fruitbox. I'll take a look (unfortunately though I've only got a 7" touch screen so testing may be a bit interactive with you).

Cheers
Mike

willbuden
Posts: 7
Joined: Fri Nov 22, 2019 3:42 pm

Re: fruitbox MP3 jukebox

Sat Nov 23, 2019 10:40 pm

dojo1787 wrote:
Mon Feb 18, 2019 10:26 pm
Hi Mike,

Is there any support for multiple unique title strip designs, set on a per-strip basis from a database or genre variable?
...
If there's no support currently, is it something you'd consider implementing?

Thanks for this great software.

Dojo
I'd like to see this too.

Bill B

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Sun Nov 24, 2019 9:19 am

willbuden wrote:
Sat Nov 23, 2019 10:40 pm
dojo1787 wrote:
Mon Feb 18, 2019 10:26 pm
Hi Mike,

Is there any support for multiple unique title strip designs, set on a per-strip basis from a database or genre variable?
...
If there's no support currently, is it something you'd consider implementing?

Thanks for this great software.

Dojo
I'd like to see this too.

Bill B
...interesting idea. Could you give some examples and I'll have a think about it.

Cheers
Mike

willbuden
Posts: 7
Joined: Fri Nov 22, 2019 3:42 pm

Re: fruitbox MP3 jukebox

Sun Nov 24, 2019 1:54 pm

fruitbox wrote:
Sat Nov 23, 2019 9:29 am
willbuden wrote:
Fri Nov 22, 2019 6:02 pm
None of the keys work with the Logitech K830. They all worked fine with a USB wired keyboard from Microsoft.

Looking at raspi-config, and the Raspberry Pi compatible hardware page, I don't find the K830 but the Logitech K400 is compatible. I've loaned out my K400 but will try it when I get it back.
Hi

Glad you like fruitbox. Sorry to hear you're having keyboard issues. If you want me to try and fix the problem, could you post a couple of things to me please?...

Can you send me the files /proc/bus/input/devices and fruitbox.log

Also can you run evtest from the command line, select the keyboard device from the list (if it's detected) and send me its output when you press a key.

Cheers
Mike

This is great. It's hard to find someone who is so passionate about their projects that they reply to questions and provide such great support.
Thank you,
Bill B
Here is fruitbox.log

Code: Select all

fruitbox v1.15 (Oct 10 2019, 21:10:35) by Mike Kingsley
A customisable MP3 Retro Jukebox for the Raspberry Pi.
Detecting display...800 x 480 (60Hz)
NOTE: Opened "FT5406 memory based driver" (/dev/input/event0)
NOTE: Opened "Logitech K830" (/dev/input/event1)
NOTE: Opened "Logitech K830" (/dev/input/event2)
NOTE: Paired  with /dev/input/event0
Loading button mapping file 'fruitbox.btn'...
Reading skin chooser file 'skins.txt'...
  Title = ...Select Skin...
  File = skins/TouchOne/fruitbox.cfg
  SkinName = TouchSong
  SkinDescription = Touch skin for Official Raspberry Pi 7" Touch Screen
  File = skins/WallSmall/fruitbox.cfg
  SkinName = WallSmall
  SkinDescription = Ideal for small displays
  File = skins/WallJuke/fruitbox.cfg
  SkinName = WallJuke
  File = skins/Granite/fruitbox.cfg
  SkinName = Granite
  SkinDescription = An Albums based 70s skin
  File = skins/Modern/fruitbox.cfg
  SkinName = Modern
  SkinDescription = by Alvaro
  File = skins/NumberOne/fruitbox.cfg
  SkinName = NumberOne
  File = skins/Splat/fruitbox.cfg
  SkinName = Splat
  SkinDescription = Minimal joystick demonstrator
  File = skins/MikeTV/fruitbox.cfg
  SkinName = MikeTV
  SkinDescription = by Mike
  Screenshot = screenshot.jpg
  File = skins/Wurly/fruitbox.cfg
  SkinName = Wurly
  SkinDescription = by chundermike
  File = skins/WurlyVideo/fruitbox.cfg
  SkinName = WurlyVideo
  SkinDescription = by chundermike and karrika
Reading configuration 'skins/TouchOne/fruitbox.cfg'...

  [general]
  SkinName = TouchSong
  SkinDescription = Touch skin for Official Raspberry Pi 7" Touch Screen
  SkinSize = 800 480
  Database = ../fruitbox.db
  MusicPath = ../Music/
  SortSongsBy = Title
  SortSongsBy = Artist
  AutoSelect = true
  SelectTimeout = 150
  SelectHoldTimeout = 150
  AutoPageTurnTime = 3000
  MaxPlaylistLength = 20
  LoopPlaylist = false
  PlaysPerCoin1 = 0
  SongsPerPage = 6
  PageSize = 360 308
  PairSongs = Dual
  ArtistDescription = Artist
  ArtistDescription = " / "
  ArtistDescription = PairedArtist
  PageMoveStyle = 20 0 false
  SongLoadTime = 0
  SongUnloadTime = 0
  ArtistText = 1 255 32 32 255 centre true true false 0 7 294
  SongText = 0 0 0 0 255 centre true true true 0 7 360

  [sounds]

  [font]
  File = skins/TouchOne/bluecond.ttf
  Height = 24

  [font]
  File = skins/TouchOne/bluecond.ttf
  Height = 22

  [font]
  File = skins/TouchOne/dotmatrx.ttf
  Height = 16

  [font]
  File = skins/TouchOne/bluecond.ttf
  Height = 18

  [bitmap]
  File = skins/TouchOne/background.jpg
  Position = 0 0
  Size = 800 480

  [page]
  Position = 30 100
  Background = skins/TouchOne/strip3.jpg

  [page]
  Position = 410 100
  Background = skins/TouchOne/strip3.jpg

  [status]
  Position = 30 12
  Size = 352 84
  Text = 2 255 255 255 255 right false true false 0 0 350
  Contents = skins/TouchOne/now_playing.txt
  LineSpacing = 4
  TimerTickPeriod = 60

  [status]
  Position = 414 12
  Size = 352 84
  Text = 2 255 255 255 255 left false true false 0 0 350
  Contents = skins/TouchOne/coming_up.txt
  LineSpacing = 4

  [status]
  Position = 160 432
  Size = 234 53
  Text = 2 255 255 255 255 centre false false false 0 0 350
  Contents = skins/TouchOne/help.txt
  LineSpacing = 4
  TimerTickPeriod = 200

  [touch song]
  Bitmap = skins/TouchOne/touch_red.png

  [bitmap]
  File = skins/TouchOne/foreground.png
  Position = 0 0
  Size = 800 480

  [bitmap]
  File = skins/TouchOne/volume.png
  Position = 8 422
  Size = 12 51
  VertScale = Volume
  VertScaleMode = Clipped

  [status]
  Position = 423 421
  Size = 93 53
  Bitmap = skins/TouchOne/random_button.png
  Contents = skins/TouchOne/random_pressed.txt

  [status]
  Position = 546 421
  Size = 94 53
  Bitmap = skins/TouchOne/skip_button.png
  Contents = skins/TouchOne/skip_pressed.txt

  [status]
  Position = 663 421
  Size = 54 53
  Bitmap = skins/TouchOne/left_button.png
  Contents = skins/TouchOne/left_pressed.txt

  [status]
  Position = 37 421
  Size = 93 53
  Bitmap = skins/TouchOne/volume_button.png
  Contents = skins/TouchOne/volume_pressed.txt

  [status]
  Position = 717 421
  Size = 53 53
  Bitmap = skins/TouchOne/right_button.png
  Contents = skins/TouchOne/right_pressed.txt

  [touch areas]
  ButtonRandom = 423 421 94 53
  ButtonSkip = 546 421 94 53
  ButtonLeft = 663 421 48 53
  ButtonRight = 724 421 45 53
  ButtonVol- = 38 421 32 53
  ButtonVol+ = 98 421 32 53

Initialising audio ...
Loading database '../fruitbox.db'...
112 songs found
Sorting songs by Title...
Sorting songs by Artist...
Building song pages...
Let's Rock!
and devices --

Code: Select all

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="FT5406 memory based driver"
P: Phys=
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0 
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=2608000 3

I: Bus=0003 Vendor=046d Product=404c Version=0111
N: Name="Logitech K830"
P: Phys=usb-3f980000.usb-1.5:1
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.2/0003:046D:C52B.0003/0003:046D:404C.0004/input/input15
U: Uniq=404c-f1-cf-3f-ed
H: Handlers=sysrq kbd leds mouse1 event1 
B: PROP=0
B: EV=12001f
B: KEY=300ff 0 0 0 0 483ffff 17aff32d bf544446 0 0 ffff0001 130ff3 8b17c007 ffff7bfa d941dfff febeffdf ffefffff ffffffff fffffffe
B: REL=143
B: ABS=1 0
B: MSC=10
B: LED=1f

I: Bus=0003 Vendor=046d Product=404c Version=0111
N: Name="Logitech K830"
P: Phys=usb-3f980000.usb-1.5:2
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.2/0003:046D:C52B.0003/0003:046D:404C.0005/input/input16
U: Uniq=404c-a2-fe-4c-ae
H: Handlers=sysrq kbd leds mouse2 event2 
B: PROP=0
B: EV=12001f
B: KEY=300ff 0 0 0 0 483ffff 17aff32d bf544446 0 0 ffff0001 130ff3 8b17c007 ffff7bfa d941dfff febeffdf ffefffff ffffffff fffffffe
B: REL=143
B: ABS=1 0
B: MSC=10
B: LED=1f

and evtest

Code: Select all

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0x404c version 0x111
Input device name: "Logitech K830"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 12 (KEY_MINUS)
    Event code 13 (KEY_EQUAL)
    Event code 14 (KEY_BACKSPACE)
    Event code 15 (KEY_TAB)
    Event code 16 (KEY_Q)
    Event code 17 (KEY_W)
    Event code 18 (KEY_E)
    Event code 19 (KEY_R)
    Event code 20 (KEY_T)
    Event code 21 (KEY_Y)
    Event code 22 (KEY_U)
    Event code 23 (KEY_I)
    Event code 24 (KEY_O)
    Event code 25 (KEY_P)
    Event code 26 (KEY_LEFTBRACE)
    Event code 27 (KEY_RIGHTBRACE)
    Event code 28 (KEY_ENTER)
    Event code 29 (KEY_LEFTCTRL)
    Event code 30 (KEY_A)
    Event code 31 (KEY_S)
    Event code 32 (KEY_D)
    Event code 33 (KEY_F)
    Event code 34 (KEY_G)
    Event code 35 (KEY_H)
    Event code 36 (KEY_J)
    Event code 37 (KEY_K)
    Event code 38 (KEY_L)
    Event code 39 (KEY_SEMICOLON)
    Event code 40 (KEY_APOSTROPHE)
    Event code 41 (KEY_GRAVE)
    Event code 42 (KEY_LEFTSHIFT)
    Event code 43 (KEY_BACKSLASH)
    Event code 44 (KEY_Z)
    Event code 45 (KEY_X)
    Event code 46 (KEY_C)
    Event code 47 (KEY_V)
    Event code 48 (KEY_B)
    Event code 49 (KEY_N)
    Event code 50 (KEY_M)
    Event code 51 (KEY_COMMA)
    Event code 52 (KEY_DOT)
    Event code 53 (KEY_SLASH)
    Event code 54 (KEY_RIGHTSHIFT)
    Event code 55 (KEY_KPASTERISK)
    Event code 56 (KEY_LEFTALT)
    Event code 57 (KEY_SPACE)
    Event code 58 (KEY_CAPSLOCK)
    Event code 59 (KEY_F1)
    Event code 60 (KEY_F2)
    Event code 61 (KEY_F3)
    Event code 62 (KEY_F4)
    Event code 63 (KEY_F5)
    Event code 64 (KEY_F6)
    Event code 65 (KEY_F7)
    Event code 66 (KEY_F8)
    Event code 67 (KEY_F9)
    Event code 68 (KEY_F10)
    Event code 69 (KEY_NUMLOCK)
    Event code 70 (KEY_SCROLLLOCK)
    Event code 71 (KEY_KP7)
    Event code 72 (KEY_KP8)
    Event code 73 (KEY_KP9)
    Event code 74 (KEY_KPMINUS)
    Event code 75 (KEY_KP4)
    Event code 76 (KEY_KP5)
    Event code 77 (KEY_KP6)
    Event code 78 (KEY_KPPLUS)
    Event code 79 (KEY_KP1)
    Event code 80 (KEY_KP2)
    Event code 81 (KEY_KP3)
    Event code 82 (KEY_KP0)
    Event code 83 (KEY_KPDOT)
    Event code 85 (KEY_ZENKAKUHANKAKU)
    Event code 86 (KEY_102ND)
    Event code 87 (KEY_F11)
    Event code 88 (KEY_F12)
    Event code 89 (KEY_RO)
    Event code 90 (KEY_KATAKANA)
    Event code 91 (KEY_HIRAGANA)
    Event code 92 (KEY_HENKAN)
    Event code 93 (KEY_KATAKANAHIRAGANA)
    Event code 94 (KEY_MUHENKAN)
    Event code 95 (KEY_KPJPCOMMA)
    Event code 96 (KEY_KPENTER)
    Event code 97 (KEY_RIGHTCTRL)
    Event code 98 (KEY_KPSLASH)
    Event code 99 (KEY_SYSRQ)
    Event code 100 (KEY_RIGHTALT)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 104 (KEY_PAGEUP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 107 (KEY_END)
    Event code 108 (KEY_DOWN)
    Event code 109 (KEY_PAGEDOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 117 (KEY_KPEQUAL)
    Event code 119 (KEY_PAUSE)
    Event code 121 (KEY_KPCOMMA)
    Event code 122 (KEY_HANGUEL)
    Event code 123 (KEY_HANJA)
    Event code 124 (KEY_YEN)
    Event code 125 (KEY_LEFTMETA)
    Event code 126 (KEY_RIGHTMETA)
    Event code 127 (KEY_COMPOSE)
    Event code 128 (KEY_STOP)
    Event code 129 (KEY_AGAIN)
    Event code 130 (KEY_PROPS)
    Event code 131 (KEY_UNDO)
    Event code 132 (KEY_FRONT)
    Event code 133 (KEY_COPY)
    Event code 134 (KEY_OPEN)
    Event code 135 (KEY_PASTE)
    Event code 136 (KEY_FIND)
    Event code 137 (KEY_CUT)
    Event code 138 (KEY_HELP)
    Event code 139 (KEY_MENU)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 144 (KEY_FILE)
    Event code 150 (KEY_WWW)
    Event code 152 (KEY_SCREENLOCK)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 161 (KEY_EJECTCD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 169 (KEY_PHONE)
    Event code 171 (KEY_CONFIG)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 174 (KEY_EXIT)
    Event code 176 (KEY_EDIT)
    Event code 177 (KEY_SCROLLUP)
    Event code 178 (KEY_SCROLLDOWN)
    Event code 179 (KEY_KPLEFTPAREN)
    Event code 180 (KEY_KPRIGHTPAREN)
    Event code 181 (KEY_NEW)
    Event code 182 (KEY_REDO)
    Event code 183 (KEY_F13)
    Event code 184 (KEY_F14)
    Event code 185 (KEY_F15)
    Event code 186 (KEY_F16)
    Event code 187 (KEY_F17)
    Event code 188 (KEY_F18)
    Event code 189 (KEY_F19)
    Event code 190 (KEY_F20)
    Event code 191 (KEY_F21)
    Event code 192 (KEY_F22)
    Event code 193 (KEY_F23)
    Event code 194 (KEY_F24)
    Event code 206 (KEY_CLOSE)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 209 (KEY_BASSBOOST)
    Event code 210 (KEY_PRINT)
    Event code 212 (KEY_CAMERA)
    Event code 216 (KEY_CHAT)
    Event code 217 (KEY_SEARCH)
    Event code 219 (KEY_FINANCE)
    Event code 223 (KEY_CANCEL)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 228 (KEY_KBDILLUMTOGGLE)
    Event code 229 (KEY_KBDILLUMDOWN)
    Event code 230 (KEY_KBDILLUMUP)
    Event code 231 (KEY_SEND)
    Event code 232 (KEY_REPLY)
    Event code 233 (KEY_FORWARDMAIL)
    Event code 234 (KEY_SAVE)
    Event code 235 (KEY_DOCUMENTS)
    Event code 240 (KEY_UNKNOWN)
    Event code 241 (KEY_VIDEO_NEXT)
    Event code 244 (KEY_BRIGHTNESS_ZERO)
    Event code 256 (BTN_0)
    Event code 272 (BTN_LEFT)
    Event code 273 (BTN_RIGHT)
    Event code 274 (BTN_MIDDLE)
    Event code 275 (BTN_SIDE)
    Event code 276 (BTN_EXTRA)
    Event code 277 (BTN_FORWARD)
    Event code 278 (BTN_BACK)
    Event code 279 (BTN_TASK)
    Event code 280 (?)
    Event code 281 (?)
    Event code 282 (?)
    Event code 283 (?)
    Event code 284 (?)
    Event code 285 (?)
    Event code 286 (?)
    Event code 287 (?)
    Event code 353 (KEY_SELECT)
    Event code 354 (KEY_GOTO)
    Event code 358 (KEY_INFO)
    Event code 362 (KEY_PROGRAM)
    Event code 366 (KEY_PVR)
    Event code 370 (KEY_SUBTITLE)
    Event code 372 (KEY_ZOOM)
    Event code 374 (KEY_KEYBOARD)
    Event code 376 (KEY_PC)
    Event code 377 (KEY_TV)
    Event code 378 (KEY_TV2)
    Event code 379 (KEY_VCR)
    Event code 380 (KEY_VCR2)
    Event code 381 (KEY_SAT)
    Event code 383 (KEY_CD)
    Event code 384 (KEY_TAPE)
    Event code 386 (KEY_TUNER)
    Event code 387 (KEY_PLAYER)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 396 (KEY_MEMO)
    Event code 397 (KEY_CALENDAR)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 408 (KEY_RESTART)
    Event code 409 (KEY_SLOW)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
    Event code 416 (KEY_VIDEOPHONE)
    Event code 417 (KEY_GAMES)
    Event code 418 (KEY_ZOOMIN)
    Event code 419 (KEY_ZOOMOUT)
    Event code 420 (KEY_ZOOMRESET)
    Event code 421 (KEY_WORDPROCESSOR)
    Event code 422 (KEY_EDITOR)
    Event code 423 (KEY_SPREADSHEET)
    Event code 424 (KEY_GRAPHICSEDITOR)
    Event code 425 (KEY_PRESENTATION)
    Event code 426 (KEY_DATABASE)
    Event code 427 (KEY_NEWS)
    Event code 428 (KEY_VOICEMAIL)
    Event code 429 (KEY_ADDRESSBOOK)
    Event code 430 (KEY_MESSENGER)
    Event code 431 (KEY_DISPLAYTOGGLE)
    Event code 432 (KEY_SPELLCHECK)
    Event code 433 (KEY_LOGOFF)
    Event code 439 (KEY_MEDIA_REPEAT)
    Event code 442 (KEY_IMAGES)
    Event code 576 (KEY_BUTTONCONFIG)
    Event code 577 (KEY_TASKMANAGER)
    Event code 578 (KEY_JOURNAL)
    Event code 579 (KEY_CONTROLPANEL)
    Event code 580 (KEY_APPSELECT)
    Event code 581 (KEY_SCREENSAVER)
    Event code 582 (KEY_VOICECOMMAND)
    Event code 583 (?)
    Event code 592 (KEY_BRIGHTNESS_MIN)
    Event code 593 (KEY_BRIGHTNESS_MAX)
  Event type 2 (EV_REL)
    Event code 0 (REL_X)
    Event code 1 (REL_Y)
    Event code 6 (REL_HWHEEL)
    Event code 8 (REL_WHEEL)
  Event type 3 (EV_ABS)
    Event code 32 (ABS_VOLUME)
      Value      0
      Min        1
      Max      652
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 0 (LED_NUML) state 0
    Event code 1 (LED_CAPSL) state 0
    Event code 2 (LED_SCROLLL) state 0
    Event code 3 (LED_COMPOSE) state 0
    Event code 4 (LED_KANA) state 0
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)

willbuden
Posts: 7
Joined: Fri Nov 22, 2019 3:42 pm

Re: fruitbox MP3 jukebox

Sun Nov 24, 2019 2:11 pm

dojo1787 wrote:
Mon Feb 18, 2019 10:26 pm
Hi Mike,

Is there any support for multiple unique title strip designs, set on a per-strip basis from a database or genre variable?
...interesting idea. Could you give some examples and I'll have a think about it.

Cheers
Mike
[/quote]

Here is a website that will make title strips for jukebox owners. You can see the variety of styles that have been offered over time. https://www.mikesarcade.com/arcade/titlestrips.html

From a discussion, here -- https://forums.stevehoffman.tv/threads/ ... rs.260378/
This is a short list I've compiled --

Orange - Easy Listening
Green - C&W or Country & Western
Blue - R&B or Rhythm and Blues
Purple - Oldy
Red - Pop / Rock

Holiday music had their own styles --
Christmas - colorful trees, candy canes, etc.
Halloween - orange jack-o-lanterns, etc.

There is a lot of information buried in the deeper darker places of the web.

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Sun Nov 24, 2019 3:42 pm

dojo1787 wrote:
Mon Feb 18, 2019 10:26 pm
Hi Mike,

Is there any support for multiple unique title strip designs, set on a per-strip basis from a database or genre variable?
Ok, so if it's just the page background (graphic image) which is different for different genres rather than the font type, size and colour then that may not be a big difficult change... I'll have a look at it when I get the chance.

Cheers
Mike
Last edited by fruitbox on Sun Nov 24, 2019 10:16 pm, edited 1 time in total.

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Sun Nov 24, 2019 7:32 pm

willbuden wrote:
Fri Nov 22, 2019 6:02 pm
None of the keys work with the Logitech K830. They all worked fine with a USB wired keyboard from Microsoft.

This is great. It's hard to find someone who is so passionate about their projects that they reply to questions and provide such great support.
Thank you,
Bill B

and devices --

Code: Select all

…
H: Handlers=sysrq kbd leds mouse1 event1 
Hi Bill,

It seems that the problem may be that the Logitech K830 registers both kbd (keyboard) and mouse handlers in the same entry. In that situation fruitbox just takes the last entry (mouse) so is ignoring the keyboard. This is an easy fix but because my current source code base is full of changes for the next release (v1.16) I can only release a fix (which I can't test as I haven't got that keyboard) in that next release. If you're desperate I can send you the current v1.16 pre-release with the fix attempt in but in may be broken in other areas as it's still under development.

Cheers,
Mike

TnT
Posts: 2
Joined: Wed Dec 19, 2018 7:54 pm

Re: fruitbox MP3 jukebox

Mon Nov 25, 2019 11:05 am

Hi Mike,

Really appreciate the time and dedication that you put into this project, and responding to people issues / questions.

I was planning on creating a new skin for fruitbox, but I have a question. I want to replicate the look and more importantly the functionality of the old fantastic SK Jukebox (which unfortunately isn't developed anymore and is only for windows).
I'll include a link to a youtube clip showing it in action for those unfamiliar (sorry about the quality, it was the only short clip demo I could find someone had put up).
https://www.youtube.com/watch?v=wrXiIznjYBI

SKG Jukebox was another fork which added a bit of functionality, here's a screenshot:
Image

Basically, it displays 4 albums including cover art and the track listing, you press a button to page forward or back, to go to the next 4 albums. Then you type the number of the album (each album is designated an individual number, so you don't even have to have them on screen if you remember the album number). This full screens the selected album, then you type the number of the track you want to add to the playlist.
Like a modern jukebox.

I see that in fruitbox you can use an albums mode, so it displays by album, but from what I can see then when you make a selection it puts the whole album in the playlist. I don't understand why anyone would want that to happen in a jukebox style software, but at any rate, how would I be able to set up a skin so it would just select a particular track from an album?

Thanks in advance,
Darren

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Mon Nov 25, 2019 12:23 pm

TnT wrote:
Mon Nov 25, 2019 11:05 am
Hi Mike,

Really appreciate the time and dedication that you put into this project, and responding to people issues / questions.

I was planning on creating a new skin for fruitbox, but I have a question. I want to replicate the look and more importantly the functionality of the old fantastic SK Jukebox (which unfortunately isn't developed anymore and is only for windows).
I'll include a link to a youtube clip showing it in action for those unfamiliar (sorry about the quality, it was the only short clip demo I could find someone had put up).
https://www.youtube.com/watch?v=wrXiIznjYBI

SKG Jukebox was another fork which added a bit of functionality, here's a screenshot:
Image

Basically, it displays 4 albums including cover art and the track listing, you press a button to page forward or back, to go to the next 4 albums. Then you type the number of the album (each album is designated an individual number, so you don't even have to have them on screen if you remember the album number). This full screens the selected album, then you type the number of the track you want to add to the playlist.
Like a modern jukebox.

I see that in fruitbox you can use an albums mode, so it displays by album, but from what I can see then when you make a selection it puts the whole album in the playlist. I don't understand why anyone would want that to happen in a jukebox style software, but at any rate, how would I be able to set up a skin so it would just select a particular track from an album?

Thanks in advance,
Darren
Hi Darren

That's currently not possible; I'll add it to the feature list for the next release.

Charts
Mike

willbuden
Posts: 7
Joined: Fri Nov 22, 2019 3:42 pm

Re: fruitbox MP3 jukebox

Mon Nov 25, 2019 1:01 pm

fruitbox wrote:
Sun Nov 24, 2019 7:32 pm
willbuden wrote:
Fri Nov 22, 2019 6:02 pm
None of the keys work with the Logitech K830. They all worked fine with a USB wired keyboard from Microsoft.

This is great. It's hard to find someone who is so passionate about their projects that they reply to questions and provide such great support.
Thank you,
Bill B

and devices --

Code: Select all

…
H: Handlers=sysrq kbd leds mouse1 event1 
Hi Bill,

It seems that the problem may be that the Logitech K830 registers both kbd (keyboard) and mouse handlers in the same entry. In that situation fruitbox just takes the last entry (mouse) so is ignoring the keyboard. This is an easy fix but because my current source code base is full of changes for the next release (v1.16) I can only release a fix (which I can't test as I haven't got that keyboard) in that next release. If you're desperate I can send you the current v1.16 pre-release with the fix attempt in but in may be broken in other areas as it's still under development.

Cheers,
Mike
I'm looking forward to the next release. I'm focusing on the touchscreen for now. Having the keyboard is secondary.

willbuden
Posts: 7
Joined: Fri Nov 22, 2019 3:42 pm

Re: fruitbox MP3 jukebox

Mon Nov 25, 2019 8:49 pm

I've been able to adapt the TouchOne skin to a Christmas motif. It uses the same font files and most of the text files are unmodified. I've concentrated on making new bitmap images.
screenshot.jpg
screenshot.jpg (94.59 KiB) Viewed 348 times
Please let me know what the rules are for posting skins.

Please contact me if you are interested.

shhammer5634
Posts: 71
Joined: Mon Dec 04, 2017 10:45 am
Location: Iowa, USA

Re: fruitbox MP3 jukebox

Tue Nov 26, 2019 2:00 am

Hi Mike,

A couple things. I figured I'd try my hand a troubleshooting my touchscreen issues with the chooser through the source code. Especially since I'm the one with the issue. If I turn up anything interesting I'll let you know.

The second thing I've noticed is that in 1.14, I was able to touch Escape on my keyboard to exit fruitbox since I don't have it defined in the button file. With 1.15 this isn't working. It's not a huge deal. I should probably define a touch exit on the skin. Just thought I'd mention it.

Cheers,
Steve

PittStone
Posts: 19
Joined: Mon Apr 23, 2018 6:48 pm

Re: fruitbox MP3 jukebox

Tue Nov 26, 2019 5:27 pm

I have a Question about "NOW_PLAYING_ARTWORK".
I will stop Playing Artwork after the Song is finished and it should start Again after the Next Song is playing.
Tested this in "now_playing_artwork.txt":

$IF_SONG_PLAYING$IF_TIMER_TICK$NOW_PLAYING_ARTWORK$END_IF
$IF_NOT_SONG_PLAYING$IF_TIMER_TICK$STOP_PLAYING_ARTWORK$END_IF

But it doesnt work.

Is there a command for stop playing Artwork?

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Tue Nov 26, 2019 7:19 pm

willbuden wrote:
Mon Nov 25, 2019 8:49 pm
I've been able to adapt the TouchOne skin to a Christmas motif. It uses the same font files and most of the text files are unmodified. I've concentrated on making new bitmap images.

screenshot.jpg

Please let me know what the rules are for posting skins.

Please contact me if you are interested.
Hi

That's a good looking skin. If you'd like to share it you can do a push request on GitHub, or alternatively just zip it up and email it to rpi-fruitbox (at) outlook (dot) com

Cheers,
Mike

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Tue Nov 26, 2019 7:30 pm

PittStone wrote:
Tue Nov 26, 2019 5:27 pm
I have a Question about "NOW_PLAYING_ARTWORK".
I will stop Playing Artwork after the Song is finished and it should start Again after the Next Song is playing.
Tested this in "now_playing_artwork.txt":

$IF_SONG_PLAYING$IF_TIMER_TICK$NOW_PLAYING_ARTWORK$END_IF
$IF_NOT_SONG_PLAYING$IF_TIMER_TICK$STOP_PLAYING_ARTWORK$END_IF

But it doesnt work.

Is there a command for stop playing Artwork?
Hi,

If you want the cover art to show when the song is playing and not show when it isn't you simply need the following text in your status contents file ("now_playing_artwork.txt" in your case)

Code: Select all

$NOW_PLAYNG_ARTWORK
.. see NumberOne skin for an example.

Just a note about the status variables; most are triggered by the variable themselves, so for example $IF_SONG_LOADING is executed when the song load sequence begins, so you don't need to keep checking through the use of the $IF_TIMER_TICK variables. The timer ticks are designed to be used for changing status displays such as animations or flipping text messages. If you check for timer ticks in your status Contents files then this means the contents file is parsed regularly, at a rate determined by the TimerTickPeriod status parameter, and it can be upto 60 times a second! So try to avoid using these for things that don't change that often (such as cover art and coming up lists, etc.) as they make the Pi work harder than it needs to, and could make fruitbox sluggish in extreme cases.

Cheers,
Mike
Last edited by fruitbox on Tue Nov 26, 2019 9:12 pm, edited 1 time in total.

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Tue Nov 26, 2019 9:10 pm

shhammer5634 wrote:
Tue Nov 26, 2019 2:00 am
Hi Mike,

A couple things. I figured I'd try my hand a troubleshooting my touchscreen issues with the chooser through the source code. Especially since I'm the one with the issue. If I turn up anything interesting I'll let you know.

The second thing I've noticed is that in 1.14, I was able to touch Escape on my keyboard to exit fruitbox since I don't have it defined in the button file. With 1.15 this isn't working. It's not a huge deal. I should probably define a touch exit on the skin. Just thought I'd mention it.

Cheers,
Steve
Hi Steve,

To help you debug the touch screen chooser, take a look at lines 69-75 of config.cpp - this is where the left and right arrow touch areas are defined for the chooser screen. I suspect I haven't scaled them for the case where the touch screen pixel resolution is different to the touch screen touch resolution. The scaling is done for the touch areas of the buttons defined in the [touch areas] section of the skin config file - see input.cpp lines 506-507, 515-519, so it may just be a case of applying this scaling and offset to the values in config.cpp 69-75?

For the second thing, I've tried my TouchOne setup and the keyboard ESC key works fine, when the other control are configured for touch, so I'm not sure what's happening there!

Cheers,
Mike

shhammer5634
Posts: 71
Joined: Mon Dec 04, 2017 10:45 am
Location: Iowa, USA

Re: fruitbox MP3 jukebox

Tue Nov 26, 2019 9:18 pm

fruitbox wrote:
Tue Nov 26, 2019 9:10 pm
shhammer5634 wrote:
Tue Nov 26, 2019 2:00 am
Hi Steve,

To help you debug the touch screen chooser, take a look at lines 69-75 of config.cpp - this is where the left and right arrow touch areas are defined for the chooser screen. I suspect I haven't scaled them for the case where the touch screen pixel resolution is different to the touch screen touch resolution. The scaling is done for the touch areas of the buttons defined in the [touch areas] section of the skin config file - see input.cpp lines 506-507, 515-519, so it may just be a case of applying this scaling and offset to the values in config.cpp 69-75?

For the second thing, I've tried my TouchOne setup and the keyboard ESC key works fine, when the other control are configured for touch, so I'm not sure what's happening there!

Cheers,
Mike
Thanks Mike,

I've already been through input.cpp, and the values coming out of it for touches while the chooser is active look pretty reasonable. I'm just in the process now of looking at config.cpp. since my screen is scaled, that may be the issue, but I'll let you know what I find.

My keyboard trouble may be my Logitech wireless.

One thing at a time. ;)

Cheers,
Steve

shhammer5634
Posts: 71
Joined: Mon Dec 04, 2017 10:45 am
Location: Iowa, USA

Re: fruitbox MP3 jukebox

Wed Nov 27, 2019 1:42 am

shhammer5634 wrote:
Tue Nov 26, 2019 9:18 pm
fruitbox wrote:
Tue Nov 26, 2019 9:10 pm
shhammer5634 wrote:
Tue Nov 26, 2019 2:00 am
Hi Steve,

To help you debug the touch screen chooser, take a look at lines 69-75 of config.cpp - this is where the left and right arrow touch areas are defined for the chooser screen. I suspect I haven't scaled them for the case where the touch screen pixel resolution is different to the touch screen touch resolution. The scaling is done for the touch areas of the buttons defined in the [touch areas] section of the skin config file - see input.cpp lines 506-507, 515-519, so it may just be a case of applying this scaling and offset to the values in config.cpp 69-75?

For the second thing, I've tried my TouchOne setup and the keyboard ESC key works fine, when the other control are configured for touch, so I'm not sure what's happening there!

Cheers,
Mike
Thanks Mike,

I've already been through input.cpp, and the values coming out of it for touches while the chooser is active look pretty reasonable. I'm just in the process now of looking at config.cpp. since my screen is scaled, that may be the issue, but I'll let you know what I find.

My keyboard trouble may be my Logitech wireless.

One thing at a time. ;)

Cheers,
Steve
Hi Mike,

I stumbled into a fix (at least for my screen). I borrowed some code from farther down in the config.cpp and put it in with a minor change.

Code: Select all

  // configure touch areas for chooser screen

  uint32_t posx = Display->info_box_pos.x;
  uint32_t posy = Display->info_box_pos.y;

  // added code start
  if (buttons->touch_max.x == 0) buttons->touch_max.x = Display->display_size.width;
  if (buttons->touch_max.y == 0) buttons->touch_max.y = Display->display_size.height;

  uint32_t touch_range_x = static_cast<uint32_t>(buttons->touch_max.x - buttons->touch_min.x);
  uint32_t touch_range_y = static_cast<uint32_t>(buttons->touch_max.y - buttons->touch_min.y);

  Input->touch_offset_x = buttons->touch_min.x;
  Input->touch_offset_y = buttons->touch_min.y;

  if (touch_range_x)
  {
    Input->touch_scale_x = static_cast<double>(Display->display_size.width) / static_cast<double>(touch_range_x);
  }
  if (touch_range_y)
  {
    Input->touch_scale_y = static_cast<double>(Display->display_size.height) / static_cast<double>(touch_range_y);
  }
  // added code end
The added code is different in that where you see Display->display_size it was originally general->skin_size. For whatever reason it works!

Cheers,
Steve

BLK80
Posts: 1
Joined: Fri Dec 06, 2019 10:47 am

Re: fruitbox MP3 jukebox

Fri Dec 06, 2019 10:52 am

Will there be an update to the Fruitbox software to allow for M4A file types to be played?

Also, when I start the Skin, it loads, but the screen just fades out to black. What am I missing?

Thanks.

User avatar
fruitbox
Posts: 331
Joined: Mon Feb 22, 2016 7:35 pm
Location: UK

Re: fruitbox MP3 jukebox

Fri Dec 06, 2019 1:52 pm

BLK80 wrote:
Fri Dec 06, 2019 10:52 am
Will there be an update to the Fruitbox software to allow for M4A file types to be played?

Also, when I start the Skin, it loads, but the screen just fades out to black. What am I missing?

Thanks.
Hi

m4a files are for internet streaming, yes? I tried to implement this before but it didn't work particularly well, but I may return for another look sometime.

Not sure what is causing the fade to black? Maybe it's running very slowly because you haven't assigned the GPU enough memory? Check for gl_GetError0x505 errors in the console. If so, run sudo raspi-config and change the memory split to 256 in the advanced settings.

Cheers
Mike

Return to “Graphics, sound and multimedia”