Recur technical queries!

Hello, I built my first Recur a couple of days ago and overall I’m really impressed! It does some amazing things to video and I hope a couple of these can become the centre piece of my live setup.

I found some issues in V2_0_2 that may have been resolved in the latest firmware, but I can’t get that version to work. I’m hoping someone may be able to help with some of my issues below? (Apologies for the number of questions!)

  1. On V2_1 - RasPi asks for a password then I get a blank screen after 5 seconds or so.

On V2_0_2:

  1. My numpad mapping is wrong - n/4 & numlock don’t work.
    I briefly managed to remap numpad key ‘n’ to load slot 4 but this setting didn’t save on reboot
  2. Cannot remap numlock (trying w/ key code 144 but…)
  3. RasPi may need numpad to be unplugged and replugged for remapping to take effect, but numpad becomes unresponsive if this is done. Requires reboot to work again.
  4. RasPi always reverts to wrong key mapping on external full keyboard - replugging solves issue but annoying to do every time to get working!
  5. WiFi seems to be disabled (error - “cannot communicate with wpa_supplicant”) - was hoping to test out SSH or r_e_m_o_t_e ?
  6. Is there a full list of key commands for Recur? (I saw somewhere that “.” quits the program. I also managed to get the HDMI video output showing on the small IPS screen with another key but unsure what that was! And pressing again didn’t seem to undo it)
  7. Is there a way to boot Recur program from the RasPi if it’s been quit, without rebooting? (On Mac/Windows there is usually an icon you click to open the app but I can’t find anything within the folders)

I found some limitations of the different video players:

  • With my HDMI to USB capture card, Captur Preview only works in ofvideoplayer and is basically unusable due to low frame rate and large delay. I couldn’t successfully record a video using my USB capture card.

  • Using a HDMI to CSI adapter though, the quality is very good and the preview is almost real time. It runs at 1080p/25fps from my GoPro but in theory you could run any HDMI source through it! Almost all shaders work well and I can apply them to the video input using ofvideoplayer. I also had some success merging live video capture with pre-recorded video.

  • In Playback Mode:
    Omxplayer works best for playback - very smooth but has no shader support or sound (sound not needed by me)
    Ofxomxplayer stutters and also has no sound
    Ofvideoplayer doesn’t always play videos, and sometimes has sound. Also rotates portrait videos to landscape, but allows for shader fx.

  1. Is there an easy way to rotate/fit videos to screen? As some players (ofvideoplayer in particular) stretch or rotate the image to fill the screen. The rotate feature is cool though if it can be controlled.

  2. Not all tested shaders work and some stall the Raspi.
    Restarting OpenFrameworks command sometimes helps
    FX shaders look great!
    I’m most interested in distorting video and live camera feeds, so more of these would be amazing! (I plan to try making some in near future)

  3. I’m using ofvideoplayer for the shader fx, but would be great to improve playback lags. Any tips to improve video playback response?

  4. On loop, often videos go black for a split second at end of loop (in ofvideoplayer).

  5. Any way to eject USB while Recur is on? (I think this was added in V2_1?)

  6. It looks like video speed/direction controls are available within the various video players (more info below). I plan to map these to controls in near future but wondering if anyone has had success with this previously? (William Kong mentioned on Facebook he had it working on OMXplayer, but then you can’t use shaders…)

  7. Plugins sound cool but I have no idea where to start at present… Are there any good ones worth checking out? How hard is it to make your own?

  8. Is it possible/easy to play videos simultaneously or crossfade videos together?

  9. Is it possible to Hold “<” or “>” to move up & down selection in pages? Rather than having to keep pressing the buttons?

  10. Stability issues - sometimes playback stops working. CPU & Memory don’t seem to be maxed out so wondering if problems could be with the Recur code or if the video player it’s running on is stalling? Sometimes restarting OpenFrameworks helps. Other times it needs a reboot.

  11. I saw 2 or 3 forks on Github from the original code that had interesting ideas in. I managed to download them, but I have no idea how to turn these into an image for the RasPi. Can anyone help?

FYI I’ve been using this wired USB numpad for my Recur.

Recur is certainly a great tool but has a few bugs and is let down by poor documentation.
I’d be happy to contribute time to improve documentation for users but I don’t have all the information necessary to do so. (This info seems to be scattered across various forum posts or known only to certain individuals who have figured it out for themselves)

Video speed control info:
In the code for each player, it looks like it’s possible to adjust the playback speed. (This would be amazing to implement and something I’m planning to play around with if I can get it working.) It’s referred to as speed or rate depending on the player:
ofVideoplayer
ofOMXplayer
OMXplayer

Many thanks in advance for any help you can offer!

1 Like

Hello jamieoxford. I am a beginner with first experiences with wavepool. I am interested in your project. I think the only point I can give you a hint is to point one. I had the same login issue. The problem was nothing about a login. The reason was I use a weak power supply. Hope that helps. Greetings from here

1 Like

Video playback speed is a thorny issue on raspberry pis in openFrameworks. I’ve had great success with ofxHapPlayer which is an almost drop in replacement for the built-in video player. OMX is deprecated in the newer RPi OSs now due to the a) the chips that it used not being used in the 4 and 5 and b) it’s not compatible with the 64bit architecture. I would recommend that you do upgrade to the 64bit flavour for the bump in performance - even on 3 and Zero 2 W. There are some caveats of course. ofxHapPlayer only plays HAP format so there’s no fallback to other video formats - if you want buttery smooth playback for your videos (up 3 x in either direction on Pi 3) then you’re going to have to re-encode your files. The built-in oF video player caps speed at a max of 1 x on the Pi which is enforced by the underlying GStreamer and is hard-coded.

1 Like

happy to see continued interest in this project! (that was more or less archived by me over 6 years ago…)

the numpad part does have some problems. what seemed like a good idea at the time actually was quite difficult to implement - required some weird hacks and also different behavior between seemingly similar numpads…

  • one thing to note is that if the usb for the numpad is unplugged and replugged then the mapping is reset. so for it to work correctly it needs to be plugged in before boot…

in practice i eventually moved towards just using midi controller to control recur… initially it didnt have any continuous inputs so a keyboard would suffice but once shaders and other bits that prefer having knobs and sliders were added then this made much more sense… (i also designed a custom numpad for it you can see here to get around some of the issues u mentioned…)

this is remapping at boot time that makes it work for numpads. as you say unplugging and plugging resets this…

i would try to get the latest version v2_1 running first and then try some of this stuff again… its hard to remember exact states of things in previous versions…

but there are some notes for adding wifi on this page:

note about wlan connection
if you have connected your recur to your home internet you may have needed to add your network name and password to a file /etc/wpa_supplicant/wpa_supplicant.conf ; now that we have two different connections wlan and access-point , you will need to add your home network to the file etc/wpa_supplicant-wlan.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

yupp you can see and edit all the mappings from keyboard in these files - and theres similar files for midi mappings etc…

this is toggle_screen_mirror - you toggle this on and off with FN + 5 - these docs go over the basic functions and what buttons do what etc… can also see it in the mapping here:

	"o": {
		"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"],

the second value is when FN is on…

i believe from the terminal you could run:

python3 ~/r_e_c_u_r/r_e_c_u_r.py

yupp thats why theres different options there - because it depends on your use case - the original intention was just to playback video so first only supports omxplayer … then more features were added to explore different uses like shaders etc… but they come with trade-offs. im glad to hear your success with the hdmi-csi input! its partly why the project was archived - too many different ways to do too many things and not everything worked well… it kinda grew with input and interest from people using it but became a bit tangled…

theres been some work to distill ideas from this project into simpler devices that are more stable - you can checkout the recurBOY for example - keeps it simple and mainly SD but quite fun… i also started working on a more involved HD/newer pi version called NEO_RECUR which i demo here but its been paused for now while i work on some other stuff first…

yea weirdly i never tested this with sound (was mainly using cvbs out and never plugged in the audio…) so if there is sound it was not intentional… for my use case i never wanted sound but i understand this is important to some people

i tried a lot to get these working but without any luck. as mentioned here you really need the videos formated with keyframes every frame and ideally a custom video player to handle this kind of thing - i did experiment with a in-memory frame-buffer style video playback (see detour which was fun but never implemented directly… and only worked for very short videos…

this is possible. the controls are a bit weird but you can do it by switching settings -> sampler -> loop_type: PARALLEL there should be an example of this in the shader demo video - around here

feel free to edit the doc pages on the github wiki - as i mentioned its not being actively maintaned… and def has a few bugs still… think of it as an experiment to provide diy video playback on rpi3 with lots of input from the community… its not a polished product and wasnt intended to be…

atleast from my side i have taken learning from this experiment and used it as spring-board for new projects that do one or two of the many things recur does but better ui or stablity etc… you are welcome to do the same!

Thank you for your responses!

  1. I’ve since successfully booted V2_1 on my Pi - it just took a long time to start up. (I assume the default ‘raspberry’ password would work here though)

  2. My numpad is annoyingly incompatible as the numlock function is local/hardcoded to the numpad. For checking compatibility you can use “sudo showkey” in terminal to display the key-codes for each key. I’ll have to find a better solution or alternative numpad, but tact switches like Clikr also look useful!

I’ll look at the other things next week to see what I can do and will report back with any progress!

As mentioned, using the HDMI to CSI adapter works great at 25fps with my GoPro Hero7. There is maybe 500mS - 1 second delay, depending on settings and shaders, but I’m hoping to reduce the latency by using an Arducam IMX415 CSI camera which has excellent low light sensitivity and interchangeable M12 lenses.

I’ve shown Recur to people at the hackspace here in Oxford and many have shown interest in the project, with some considering building their own units. Compared with what else is commercially available, this is about £1,000 cheaper and fully customisable which is amazing! So thank you for all your efforts on this project. (It’s not something I would have toyed with if the cost of entry was that high.)
I’m also very excited to try out Neo_Recur when it’s closer to completion! (Do get in touch if you need any help with beta testing :slight_smile: )