diff --git a/README.md b/README.md index 8762d43..6348260 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,26 @@ ![vectorfront][vectorfront] - __r_e_c_u_r__ is an embedded python application on _raspberry pi3_ that uses `input` from the _keypad_ to control omxplayer's `video out` while `displaying` a simple text user interface on the _rpi lcd screen_   + __r_e_c_u_r__ is a fully customizable hardware video sampler. the open source python application is built around a _raspberry pi3_ that uses `input` from a _keypad_ to control omxplayer's `video out` while `displaying` a simple text user interface on a _rpi lcd screen_ ## features -- seamlessly loop video through rpi's HDMI out +- seamlessly loop video through rpi's HDMI or composite out - intuitively _browse_ video files on a usb and map them into __r_e_c_u_r__ - load and trigger video samples from numbered slots in the _sampler_ bank -- monitor the current samples playback status and the sampler banks details on the lcd display - dynamically set and clear the start/end points of each sample as it plays - configure the _settings_ menu to suit your use -(more coming soon) +### more coming soon: -### feature requests +- ~~composite video out (hopefully)~~ +- midi controlled +- more playback modes and options +- optional extention for live sampling -i started a [board] of features i would like to explore +### other feature ideas + +i started a [board] of some features i would like to explore ## main objectives: @@ -32,6 +36,14 @@ i started a [board] of features i would like to explore - [building] - how to build r_e_c_u_r - [developing] - how to contribute to r_e_c_u_r +## status + +The nature of this project is to be open-ended and community driven. my r_e_c_u_r already solves the problems i intially built it for. what happens next depends on how it is used and recieved by you. if you like the idea please consider getting involved. Currently: + +- the _software_ is at a MVP status; the basic functionally is there and should work as expected. no doubt there are both known and unknown bugs around the edges (let me know whats impacting you!). this is also only the beginning of whats possible using python on a raspberry pi. i will continue to maintain and improve it, but in what direction and velocity depends on the users + +- the only _hardware_ option currently avaliable is the `diy enclosure`; this is designed be low cost, hackable and accessable. you can modify and 3d print/laser cut your own case, the recommended keypad and lcd parts are the cheapest i could find (with some compromises), basicly aiming to get these in the hands of as many other diy-er as interested. i also have plans to offer a limited `boutique enclosure` option at some point in the future - professional custom cut aluminuim cover , hand wired mechanical keys , real vinyl printed stickers, no compromises! this will probably coincide with a larger software release in near future if theres any interest (another future idea : a eurorack version based of raspi3 compute) + ## contact langolierz@gmail.com diff --git a/data_centre/data.py b/data_centre/data.py index 2bb5824..bd89efc 100644 --- a/data_centre/data.py +++ b/data_centre/data.py @@ -22,6 +22,7 @@ KEYPAD_MAPPING = 'keypad_action_mapping.json' EMPTY_SLOT = dict(name='', location='', length=-1, start=-1, end=-1, rate=1) EMPTY_BANK = [EMPTY_SLOT for i in range(10)] PATH_TO_DATA_OBJECTS = '{}/json_objects/'.format(get_the_current_dir_path()) +PATH_TO_BROWSER = '/media/pi' def read_json(file_name): with open(PATH_TO_DATA_OBJECTS + file_name) as data_file: @@ -33,14 +34,6 @@ def update_json(file_name, data): with open('{}{}'.format(PATH_TO_DATA_OBJECTS, file_name), 'w') as data_file: json.dump(data, data_file) - - -def get_path_to_browser(): - return read_json('path_to_browser.json') - -PATH_TO_BROWSER = get_path_to_browser() - - class Data(object): def __init__(self, message_handler): self.browser_data = BrowserData(PATH_TO_BROWSER) diff --git a/data_centre/json_objects/next_bankslot_number.json b/data_centre/json_objects/next_bankslot_number.json index 6d77ead..f2b9505 100644 --- a/data_centre/json_objects/next_bankslot_number.json +++ b/data_centre/json_objects/next_bankslot_number.json @@ -1 +1,2 @@ -"0-3" \ No newline at end of file +"0-0" + diff --git a/data_centre/json_objects/settings.json b/data_centre/json_objects/settings.json index 724808f..12117cd 100644 --- a/data_centre/json_objects/settings.json +++ b/data_centre/json_objects/settings.json @@ -1 +1 @@ -[{"options": ["dev_mode", "XGA", "composite"], "name": "SCREEN_SIZE"}, {"options": ["run_action"], "name": "quit_the_program"}, {"options": ["run_action"], "name": "switch_display_to_hdmi"}, {"options": ["run_action"], "name": "switch_display_to_lcd"}] \ No newline at end of file +[{"name": "SCREEN_SIZE", "options": ["dev_mode", "composite", "XGA"]}, {"name": "quit_the_program", "options": ["run_action"]}, {"name": "switch_display_to_hdmi", "options": ["run_action"]}, {"name": "switch_display_to_lcd", "options": ["run_action"]}] \ No newline at end of file diff --git a/display_centre/display.py b/display_centre/display.py index 8dab461..df3b35c 100644 --- a/display_centre/display.py +++ b/display_centre/display.py @@ -29,7 +29,7 @@ class Display(object): @staticmethod def _create_display_text(tk): - return Text(tk, bg="black", fg="white", font=('courier', 13)) + return Text(tk, bg="black", fg="white", font=('Liberation Mono', 13)) def _add_tags(self): self.display_text.tag_configure("SELECT", background="white", foreground="black") diff --git a/documentation/build_docs.md b/documentation/build_docs.md index 69a16d0..46f405e 100644 --- a/documentation/build_docs.md +++ b/documentation/build_docs.md @@ -52,7 +52,7 @@ other bits and pieces: [raspberry pi3]:https://www.aliexpress.com/item/RS-Version-2016-New-Raspberry-Pi-3-Model-B-Board-1GB-LPDDR2-BCM2837-Quad-Core-Ras/32789942633.html?spm=a2g0s.9042311.0.0.FkRWty [main parts]: build_all.jpg -[raspberry pi screen]:https://www.aliexpress.com/item/New-3-5-inch-Raspberry-Pi-LCD-TFT-Touchscreen-Display-Touch-Shield-Raspberry-pi-2-Model/32605410449.html?spm=a2g0s.9042311.0.0.ZW1WDU +[raspberry pi screen]:https://www.aliexpress.com/item/3-5-Inch-TFT-LCD-Moudle-For-Raspberry-Pi-2-Model-B-RPI-B-raspberry-pi/32707058182.html?spm=a2g0s.13010208.99999999.262.bV4EPV [usb keypad]:https://www.aliexpress.com/item/2-4G-Wireless-Keyboard-USB-Numeric-Keypad-19-Keys-Mini-Digital-Keyboard-Ultra-Slim-Number-Pad/32818206308.html?spm=a2g0s.9042311.0.0.FkRWty [key stickers]: https://docs.google.com/document/d/1vhXv5QTfyUqsZuMdQu1lh2dMfEk5HMNVyp8uhrc-I2w/edit?usp=sharing [etcher]: https://etcher.io diff --git a/documentation/vectorfront.png b/documentation/vectorfront.png index 2a7bdd9..3a9ee6b 100644 Binary files a/documentation/vectorfront.png and b/documentation/vectorfront.png differ diff --git a/documentation/vectorfront.svg b/documentation/vectorfront.svg index af647eb..0043979 100644 --- a/documentation/vectorfront.svg +++ b/documentation/vectorfront.svg @@ -11,19 +11,31 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="210mm" - height="297mm" - viewBox="0 0 744.09448819 1052.3622047" + width="240.43629mm" + height="350mm" + viewBox="0 0 851.93963 1240.1574" id="svg2" version="1.1" inkscape:version="0.91 r13725" - sodipodi:docname="vectorfront.svg"> + sodipodi:docname="vectorfront.svg" + inkscape:export-filename="D:\Leo\gitrepos\r_e_c_u_r\documentation\vectorfront.png" + inkscape:export-xdpi="160" + inkscape:export-ydpi="160"> + + + + gradientTransform="matrix(0.71188978,0,0,0.71188978,-141.05604,-226.04825)"> + gradientTransform="matrix(0.01108729,0,0,0.00942587,3379.2285,4332.5806)"> + gradientTransform="matrix(0.00848718,0,0,0.0047598,2622.7356,2412.0741)"> + + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0"> - + inkscape:label="backplane" + transform="translate(154.79398,362.30316)"> + style="display:inline" + transform="translate(154.79398,362.30316)"> + style="display:inline" + transform="translate(154.79398,362.30316)"> cmd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +