-
Annotation attempt 1
06/17/2021 at 03:41 • 0 commentsA pretty frustrating experience, to be sure. It's nowhere near as easy with a mouse on a music desk as it was with a pencil or a mouse on a normal desk. Line, oval, zoom tools might help, but drawing text without a keyboard is hopeless. Another idea besides writing a paint program from scratch is to boot up the gimp every time the user wants to annotate, but it requires a keyboard & it's even slower. It's pretty frustrating to not be able to go to a store & try out a trackball.
The annotation system is a minimal drawing program based on PC Paint. Vintage software has once again proven useful as the basis for a modern application. Drawing programs have been the nemesis of lions ever since they tried to program one in childhood but never could finish it.
The mane showstopper is event compression on the pi is non existent. It seemed like a good idea to have PC Paint's XORed brush augmented with a crosshair, but it just sits & redraws single pixel mouse movements without event compression.
The color palette ended up being the 16 original Commodore 64 colors rather than a modern color picker. The rest is a simplified version of what lions remember of PC Paint. Drawing is bitmap based. There's draw & erase with different brush sizes. There's no lasso, selection, fill, or polygon tool. There is a foreground & background layer while the original scanned music is untouched. There are a certain number of undo levels.
Erasing large areas is pretty rough without a selection tool. There is a large eraser brush to try to compensate. The user has to hit the save button to make new annotations appear on both monitors. It automatically saves when the user exits or loads a new file.
Despite every effort, it composites the 2 annotation layers in every single page turn. It would be pretty involved to make it selectively composite the annotation layers only if they're used. The page turns have dropped back to 13 per second, with annotations & the background pixmaps required for any useful menu system.
-
Software
06/13/2021 at 05:37 • 0 commentsMaking a minimal confuser actually do minimal confusing is a lot harder than it used to be. For decades, the raspberry pi foundation has labored to run as much as possible as slowly as possible. With much coercing, it can be made to just run fvwm on X11. The key commands are
apt install fvwm
xinit /usr/bin/fvwm2&
/usr/share/fvwm/system.fvwm2rc has to be copied from somewhere else. It needs an option in system.fvwm2rc to disable the reader's window border.
Style "Reader" NoTitle, HandleWidth 0
Sadly, the current versions of fvwm no longer support keeping a window on top. That has to be done in the program.
Then, there are commands to try to slow down the mouse speed.
xinput
xinput --list-props "PixArt USB Optical Mouse"
xinput --set-prop "PixArt USB Optical Mouse" "libinput Accel Speed" -1The lion kingdom believes the mouse speed still needs a kernel hack to be slow enough.
The server pi needs to export NFS to the client pi so they can access the music files.
The decision was made to finally make the Cinelerra toolkit a standalone library with the ability to strip out all its video editing features. It works quite well as a minimal retro interface, only taking 18 minutes to compile on a 1B. As simple as it is, it's still takes a beast to do all the listbox, textbox, & menu operations a toolkit has to do.
Since it's not a dual head confuser, the mouse only works on 1 monitor. It's a bit contorted to have a mouse 3 octaves away from the screen. It definitely needs a mouse stand on top of the panel.
Despite all the hype about a pointing device which can draw, annotations are going to slow page turns way down. In its simplest form, every page would optionally have 2 annotation layers, a foreground & background. Each layer would have 16 possible colors, including transparent. The resolution wouldn't be able to use RGB subdivisions. Annotations would go in a separate file with flat images & flags saying if an image was used.
It needs to support 1/2 a page turn so every page can be shown on the screen with the pointer. The client confuser needs to poll the annotation file for updates. The annotation file needs to be in RAM along with all the music images. The client would have to reload the entire file when it changed. To speed this up, the annotation file can start with a table of contents, showing what revision each page is on. The client can reload just the latest revision of 1 page.
Then of course, the server needs a full paint program, 1/2 page turn buttons, draw, erase, color palette, layer, save file, brush size, brush type, but no undo is required. The 2 layers need different color palettes.
There's still a dream of just running it without RGB subdivisions, on the dual head 4B, with its horrible aliasing. Page turns with annotations would be a lot faster. The mouse would work on both screens. The networking protocol, NFS, half page turns would go away.
-
Stand version 3
06/10/2021 at 18:06 • 0 commentsA new batch of stands came off the printer.
Featuring all new latches
Much easier access to the electronicals. Farther placement back. Flaps to keep it from sliding forwards.
New confuser placement.
Plans continued for a pointing device. All attention turned from trackballs back to an old fashioned mouse in the short term, eventually being replaced by a trackpad.
So the Elan 33059 isn't documented anywhere, but it's similar to a more common Synaptics described on
https://www.hackster.io/frank-adams/laptop-touchpad-conversion-to-usb-d70519The ribbon cable pinout doesn't match, but the Elan version otherwise has the same signals as the Synaptics. The test points are even labeled
TD - PS2 data
TC - PS2 clock
T13_R - right button
T14_L - left button
T19_RR - scroll right
T20_RU - scroll up
T21_RL - scroll left
T22_RD - scroll down
TN - ?
TP - ?
Source code is scarce. The best example was
https://www.hackster.io/frank-adams/laptop-touchpad-conversion-to-usb-d70519
There were comments about the source code working with an Elan chip. It bit bangs the PS2 pins. Sadly, a quick test showed TN & TP are not USB pins.
-
Setup 1
06/08/2021 at 09:24 • 0 commentsThe fastest possible setup yielded this.
A giant 500W Dell power supply made barely enough pixies to feed 3 raspberry pi's.
It was a bit weird to turn pages with the buttons. It was hard to turn pages with the left paw, but anything was better than the ipad. A 3rd button on the left side might aid the left paw. Ventilation was worse. It's going to be brutal in hot weather.
It needs to be 5mm farther back. The magnet holders need to be without walls so they can sit farther back. There's a case for bolting it on the back so it can go a few inches farther back. Maybe the viewing angle can be more horizontal. Making it completely fold when not in use would require a major overhaul of the cables.
The back needs panels to keep it from sliding forward. The corners need latches. The confusers all need to go under the instrument instead of on top of it. Maybe that would free up enough space for a pointing device.
As cramped as it is, it's a function of what $30,000 in annual rent can afford. Want more space? Pay $50,000 in rent or $80,000 after everyone moves back.
The pointing device is the next big deal. Selecting files without a GUI is really slow.
There's not enough room for a mouse pad anywhere. Alternative pointing devices have gotten nosebleed expensive. The cheapest solution is the mighty $20 Perixx trackpad.
https://www.amazon.com/Perixx-PERIPAD-501-Professional-Wired-Touchpad/dp/B001CX85I8
It's 76x64mm.
Good trackpads are hundreds of doll hairs. Good trackballs start 3x more expensive than mice & a are bit bulkier than trackpads.
It's been 25 years, but balls have retro appeal & lions remember having a better experience with them than pads. Based on the memory, a trackball would be a better match than a trackpad for a stationary application. All modern trackballs are just upside down mice with optical sensors pointing up.
The best trackball is the $33 Kensington Orbit
https://www.amazon.com/gp/product/B07YVMXLQC
No dimensions are given, but it's as wide as a paw.
There is a thumb operated trackball
https://www.amazon.com/Wireless-Handheld-Finger-Trackball-Pointer/dp/B0057KL2AU/
But this would be impossible to draw annotations with.
There is a lot of interest in reusing macbook track pads as standalone devices, but the track pads themselves are SPI devices connected by a very fine pitch ribbon cable to the mane board. The brain that converts the keyboard & trackpad to a USB signal is on the mane board.
The touch pads extracted with the LCD panels have undocumented ELAN 33059 chips but appear to use I2C. The internet has never figured out how to use these.
There was a desire long ago to make a pointing device out of a webcam that tracked a blinking LED. It might be too low in resolution & too consuming of space.Both trackballs & trackpads are harder to draw on than mice. Given the need to draw annotations, using a phone as a trackpad may be the best option. An interface which takes both a stylus & paw is a big win. The phone can also show the recording interface. There's a lot of adware for using phones as trackpads.
-
Raspberry pi 4 busted
06/06/2021 at 04:41 • 0 commentsThe goal was to plug the monitors into the existing 4B which is used for sound processing. Things were going well with the raspberry pi 1B on a single monitor, but the 4B does not support 1366x768. The problem is it's a very uncommon mode in modern times so it was phased out in order to support dual HDMI.
They offered an explanation of the compromise:
https://www.raspberrypi.org/documentation/configuration/config-txt/pi4-hdmi.md
They do mention supporting a close 1360x768 resolution.
There's no way to disable scaling on the Novatek NT68676, so 1360x768 always has aliasing which makes it worthless for showing text. No scaled mode would allow individually addressing RGB triplets.
It would have been a bad day for anyone who just spent $200 on portable monitors of 1366x768 resolution.
There is a way to change the language which isn't documented anywhere. That allowed lions to search for a non existent way to disable scaling.
That leaves daisychaining the last 2 raspberry pi 1B's. There were once 3, but lions unwisely stripped the HDMI header from 1 to minimize its footprint. Many thoughts go through a lion's mind about the affordability of getting 2 new 1920x1080 monitors vs wrangling multiple raspberry pi's.
Relying on the sound processor to drive 2 displays & have enough clockcycles for sound processing always was a risky move.
Xorg can be run in 8 bit mode to get the fastest page turns. This requires adding another line to /boot/config.txt
framebuffer_depth=8
8 bit mode caused aliasing in the X direction, yet another unsupported mode. The best it could do was 16 bit.
framebuffer_depth=16
Page turn speed vs depth:
8 bit: 25fps
16 bit: 25fps
24 bit: 12fps
Faster page turns may be possible by writing to the framebuffer directly, but 25 was good enough.
With a simple network protocol & a bag of network cables, the 2 pages finally showed.
Next comes a power system. The combined panels draw 1.1A at 12V. The PI's draw a few more amps at 5V.
-
Displaying the 1st page
06/04/2021 at 18:53 • 0 commentsRotating the framebuffer on a raspberry pi required editing /boot/config.txt & adding
display_rotate=3
to the top.
It's essential for the pointer to move in the right direction, since the lion kingdom plans on using a standard X11 pointing device.
A growing list of configuration settings will be required to disable screen blanking & drive 2 screens.
The Cinelerra toolkit amazingly compiled for ARM pretty easily. Compiling Cinelerra for ARM would be problematic because all the 3rd party libraries are written in assembly language. After a few pixel mangling functions, the text finally appeared.
It was the 1st time a lion had a scanned piece of music in more than its original 12" height, on a practical display.
A key feature ended up being splitting each pixel into RGB triples to get more vertical resolution.
If all the pixels were white, it would be just 1366x768 instead of 4098x768.
This version loaded all the pages from 300dpi PNGs, stretched, & cropped to fill the panel on the raspberry pi. It was too slow to be practical. The slowest step was decompressing the PNG files. It needs to load an uncompressed image format which has already been converted directly to the framebuffer format on a faster confuser.
-
Prototype version 2
06/04/2021 at 04:28 • 0 commentsThe cables may have to go out opposing sides when 2 monitors are side by side.
Alignments were a lot worse because loctite superglue doesn't set as fast as hobby glue, but it still managed to clear the buttons.
The single latch was a disaster. It needs 2 latches in the corners, but that's where the magnets are.
The next task was displaying something useful, which would require native X11 programming because of the lack of clockcycles. Tiny confusers running native software are still better than buying a $4,000,000 room to fill with tower PC's just to run a different language.
-
Prototype version 1
06/02/2021 at 06:09 • 0 commentsThe hardest part in an operation like this is the enclosure.
Each panel would have its own stand. The stand would attach by magnets & fold up. It was too big to fit on the print bed, thus began the brutal experience of modeling & gluing 10 pieces. The dimensional accuracy of a model split into many pieces is horrible.
Tolerances were bad enough to keep it from folding up. The wires took up a lot of space.
The LVD cable needed the living daylights bent out of it to fit in there.
The magnets held it on. It needed a hair more clearance over the buttons.
Viewing angle was as bad as expected. It may end up being a single page if 2 pages are too far apart.
Rear panel either came out too narrow or the LCD panel came out too wide. Rear panel doesn't need a solid sheet. LCD panel needs gaps to route cables next to the panel.
Might have to leave it unfolded & make a bigger cover.
-
LCD controller test
05/31/2021 at 03:36 • 0 comments2 weeks later, the bang good controllers arrived pretty bang fast. They worked without any 6 bit reconfiguration. The monitors have to be on before the pi in order to get Linux to detect the right resolution, though the Novatek clearly stretches whatever comes from HDMI to the LCD's native resolution. There's some kind of communication from the panel to the Novatek to HDMI, informing the pi of the native resolution. This might also tell the Novatek the right encoding.
They both ran with the backlight header feeding 12V directly into the 40 pin connector. They could run on as low as 8V, though this sucked more current. They both needed 1.5A at 12V. The viewing angle on these was really narrow. Forgot how bad the viewing angle on cheap laptops was, 10 years ago.
LG LP156WH4
LG scaling 1920x1080 to 1366x768
Samsung LTN156AT24
The next step is the enclosure, the HDMI cables, the user input, & the software.