Skip to content

Call for Contributions

Gogotron edited this page Aug 27, 2021 · 10 revisions

Open calls

These elements can be handled by anyone willing to contribute to the project, and transferred to the community by opening a Pull Request after having implemented the feature.

  • [Software][New][Pong] There's no pong for Arbalet, only a very old GIF, what about implementing one? For example with options: Single player, 2 Players, 4 Players (One player on each table side), ...
  • [Software][New][Pixel Crush] Candy crush-like game where the user swaps pixels to destroy rows and columns of the same color
  • [Software][New][Breakout] Implement a Breakout game (FR: Casse-brique)
  • [Software][Improvement][Spectrum analyser] Currently the musical spectrum analyser only plays WAVE files, this CfC consists into connect to ALSA/PulseAudio to show the spectrum in real time, whatever you are playing sound from Youtube, Deezer, VLC, ... See libROSA
  • [Software][Improvement][Snake AI]: There is a Snake AI (code) using fields of potentials to move, but the AI does not anticipate and looses fast. Goal of the CfC: Add prediction to cover the biggest possible area! (Complex algorithmic problem, but a lot of research exists)
  • [Software][New][Flapix]: A Flappy bird-like game
  • [Software][Improvement][Lights Hero]: Lights Hero is only able to play one song of the Frets-on-Fire game at the moment, whose file path is hardcore in the Python script. The particularity of this song is that it has no MIDI events of type SetTempoEvent meaning that the tempo is constant and simpler to read, unlike many other MIDI files This CfC is: Extend compatibility of Lights Hero to other songs and accept a path to a song folder in argument (Relevant portion of code)
  • [Software][New][Tetris AI] What about a self-playing Tetris? Similarly to the Snake AI, implement a AI for Tetris game by overloading the Tetris app (Might be a complex algorithmic problem)
  • [Software][New] There are many other Python apps to develop, see a list of ideas here
  • [Software][Arduino]: Save memory on the microcontroller to run any number of LEDs ideas here
  • [Documentation] Find the simplest way to install the software on Windows, (incomplete draft here) and write the installation procedure
  • [Hardware] Add a small TFT screen to display scores and user instructions

More advanced contributions

These contributions are more advanced, and althought they are open to anyone, they are more likely to be done by the project's maintainer.

Bugs and Issues

  • [Software] As you might have noticed, there is SDK v3 (master branch) and v4 (dev branch). v4 is on the way but needs more coding and testing: implement the sequencer, check touch keys compatibility, ...
  • [arbasdk/arbapps setup.py] cv2/PIL/midi dependencies: installable via pip?

Missing features

High priority and/or short-term

  • [Packaging] A lot of people are requesting help to install v4 (branch dev) on Windows, a self extracting installer would be so nice!
  • [Wiki] Clean/easy installation procedures with a fresh install of each OS.
  • [Software] Centralize X11 events in a shared class of the SDK for non-graphical applications, cf commit 8f9944786315db74180b7f81ca24f062ac18ad4d
  • [Application class] Allow apps to fade down when receiving SIGTERM or a custom signal SIGUSR1 for smooth loops with the sequencer
  • [colors app] Include a step-by-step generator that does not "floatize" colors to avoid crenelating dark colors like [10, 10,0] (+ apply to the --brightness arg somehow?)
  • [Arbasim/Arbalink] remove all threading systems from the SDK by requiring a loop in Arbapp (like Arduino setup() loop()). Issue: what about the interactive mode?

Low priority and/or long-term

  • [Software] Sub-pixel grouping feature in the config file for huge surfaces with bigger pixels
  • [Software] Address non-RGB strips
  • [Software] Django-based Web UI for Arbalet for Home
  • [Software] High-level graphical designer, such as stickaz studio to draw arbamodels and even animate them without Python code.

History of closed contributions

Done stuff

  • [Arbaloop] In some rare cases, it refuses to take into account SIGTERM (the same pygame bug again...?) [Used SIGINT to nicely close apps 704af2bd19d87efa7b6ad9c2d2042af074e45e3c]
  • [Hardware] Use the Raspberry Pi's GPIO ports instead of an Arduino connected to a PC, can be made as a new class subclassing Arbalink (other credit-card computers are also usable...)
  • [Tetris] some touchdowns are detected abnormally in the middle/corner of the grid and not cancelled [dea8468e5f290ca83c55ac8da8846843dd9c2b45]
  • [Arbapixel] Save CPU and memory time for operators __mul__ and other [ae02df5fb5a5d8a7d1c0065ce583cf7abe91a108 Could probably do even better]
  • [Software] Arbapp: using only the embedded model can lead to some unexpected behaviours when it is currently filled but not yet ready it can be pushed to the table anyway: solution = lock? [b04029fdc14fa486280fe43b79950cdfe267337b]
  • [All apps, especially CDemo] The use of time.sleep() in control loops is very sensitive to CPU speed, better control loop? Example [1b24df1aaeb669296befadd9681b788f17e4edb9]
  • [SpectrumAnalyser] Does not start on RPi due to pygame.init() that never returns in this app only [was not pygame.init() but pyaudio.PyAudio(); pip --update pyaudio did the job]
  • Wiki: Comment on OS, realtime OS, microcontroller, fixed rate problem, and same-speed apps on all platforms
  • [LightsHero] Count score! +1 for each right played frame, -1 for each wrong played frame, compare with the frames that should have been played and give the score as a ratio% [fbfba91da57462370f8fdeecc517620c6c002f5a]
  • [LigthsHero] In class UserHits pygame.events should work even with no window (example: RPi in headless mode; pygame events?) [8f9944786315db74180b7f81ca24f062ac18ad4d]
  • [Software] Test Windows support, tag config/devices should depend on the OS [85e9c8282ea13dc3d0d87f3bbe0ddd7ecf689b35 ; Windows support still to be thought about]
  • [Tetris] Add keyboard support + use events instead of active polling of joystick, issue: events don't suffice when the key stay pressed [4f517d19cefb3b83535cb3b17f5a1c7c5ee8108f]
  • [Tetris] Fix joystick by looking for a hat-compatible joystick (Some computers have a fake embeded joystick, that should be ignored) [4f517d19cefb3b83535cb3b17f5a1c7c5ee8108f]
  • IRC channel #arbalet
  • Write the "Build your own" wiki page and drawings, some clues for drawings: Inkscape tracing module 3D->SVG
  • [Arbachar/Arbatext] Think about integrating text display inside the SDK
  • [Spectrum Analyser] compute the max level (= the divider) to scale automatically to weak or loud musics
  • [Application class] Clean pygame.event collection and sharing in Arbapp

Self-fixed or unsolvable

These TODOs have been fixed by 3rd party software updates or are just unsolvable.

  • [Hardware] Even when not driven, the blue color is never really stable and flashes somehow [Depends on the WS2812B quality]
  • [Software][Arbasim] Some pygame/pulseaudio thread burns the CPU (Mint bug report) bug spotted in Mint 17 Qiana + Ubuntu 14.04 [updated and solved since this time]