cyberboy666 / r_e_c_u_r Goto Github PK
View Code? Open in Web Editor NEWan open diy py/pi based video sampler
License: GNU General Public License v3.0
an open diy py/pi based video sampler
License: GNU General Public License v3.0
some things to consider for v2 of panels:
other vague panel-y things to think about;
how might we design/modify the panels for:
when a video is mapped to a slot it should get the video length and display it
start, end and duration need to be updated to floats for more control, rounding up 0.5s could create issues when checking for the end of a clip
also need to add length variable which is the difference between the start and end points
when recur is connected to screens with different resolution it should adjust to fit the screen
have a setting that is screen resolution - this can be toggled between the ones i encounter and can be added to for other cases
while fixing a noticeable memory leak in the display code (turns out the tk text object stores a list of every state in has been in by default, which is bad if u update the object every half second !) i discovered another much smaller leak in the same area of the code (if i stop the display updating there is no noticeable leaks at all).
when i set the display to update every millisecond , i can see the size of the python process slowly increasing.
im not sure what the problem is atm , i added a reset option in the settings as a workaround if memory maxs out.
basically this exact problem, i have a feeling it has to do with booting with the usbdrive in the pi, not sure tho...
when switching dev on mode the pi reboots with display on hdmi out, when off it reboots to display again
with this setup the video playback is exactly as expected, however when i try running recur on a real hdmi the video playback experiences some problems :
i have spend some time trying to figure out why it seems to work for my hdmi-vga dongle, including trying different (lower) screen resolutions but no luck.
this is the biggest and most crippling bug discovered , if this cant be resolved , i couldnt offer hdmi out from this device
when a file is mapped to a slot the browser column does not update with the new slot number
for hdmi devices whose preferred hdmi setting is 1080 , recur seems to drop the video for all filetypes.
it seems to be related to the memory being used (without recur running , two videos is plays fine but three causes same dropout) but changing the gpu/cpu split etc doesnt help.
what does help it is dropping the hdmi output setting down to 720. from here recur will play all videos fine including 1080video files.
while investigating this i also noticed that my hdmi-vga converter (which prefers DMT x DVI) also drops while trying to play 1080 videos. maybe just because it cant handle the scaling etc ?
sometimes the pi loads my usb as 'TIM1' and has a 'TIM' folder stuck in pi/media.
The purpose of a dotfiles directory being to document the necessary configuration changes made to the pi in order to run the project.
The directory can include the actual config files such as
-.remap
-launcher.sh
-.config/xdg/lxsessions.....autostart
-drivers for the screen
-python packages necessary for installation
an optional extension : c_a_p_t_u_r - for live video sampling.
also take a fresh raspberian and configure to a working recur by following instructions in dotfile..
at this stage im thinking of keeping this as simple as possible :
currently , we need to press enter on boot. (due to issue #37 )
then after every boot it maps the keys, however this takes up to 4 seconds , which slows loading time. idealy we wont need to enter on boot (or could have that key press do both enter and our key in meantime) so we can keep the custom mapping until we tell it otherwise
work in progress - see here : build documentation
currently there is some attempt to display info and error messaging on the screen but it needs some work and testing. also should write any 'unexpected' errors to a log file for troubleshooting
various settings and options require the python program to interact with other programs on the pi. apparently its not good practice to use the shell=True , but for some of the more complicated calls i couldnt figure out how to call them correctly.
it is a low priory right now but i should go back and do this properly sometime !
the browser and settings mode only shows 5 lines although the screen can fix more. also the sampler mode has 15 slots in a bank where theres only keys for 10
it would be useful if, on startup, the program checked that it could locate each file mapped to a slot. if it couldnt find it, should still display it but grayed out.
since most sd cards are 16g or greater , there is plenty of unused space that could store the videos you wanted to perform with , making it easier.
simple symbols and characters, white on black background, with smaller text at bottom describing second function. shared in cloud-doc format for easy customization
some changes to make to v2 (green) enclosure:
the length of selected row is inconsistent
also (internally) the browser index should be absolute rather than relative
also setting and browser navigation seem dependant
on <SAMPLR> mode , an extra column that displayed the playback speed : 1.0 by default ? would have to experiment with max and min values and if different file types / formats have the same or different limits.
a base action : change_speed_by(value) which can be called by parent actions in any of the ways described below
currently settings is used to toggle things - ie change the screen resolution or switch playback mode etc. going forward we may want to trigger an action (ie quit or restart the program, switch to hdmi out). we also could still access key presses that arnt mapped on keyboard - allowing more flexibility around custom mappings, shortcuts and actions...
its getting to the point where having tests over this project would be v useful !
some ideas for playback modes :
Just realised how important tags are on github when people are searching for repositories.
Would be a good idea to put them in if you are interested in this :)
have a video file saved to the pi that loads as placeholder when banks are clear. also could load a tutorial video for peoples first time
a thorough testing of the video player with respect to a number of variables would be useful including :
i started up recur , and then plugged in the usb. the files already mapped could be loaded and played fine but the browser mode had not refreshed to reflect this. just need a way to tell the browser list to redraw (if u re-enter the browser screen perhaps ?)
the openframeworks backend sometimes crashes, this seems to be if it tries an action on a video in a format it doesnt like but there could be other reasons ?
the numlock key and the 000 key have a specific operation that makes it difficult to map within the program. a custom keyboard layout will need to be created on machine to strip these functions and make it easier.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.