Old 04-03-2016, 01:10 PM   #1
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,900
Default JSFX now ReaPack Friendly & ReaTeam JSFX Repository

Hi everyone !

If you are a JSFX creator, you will be happy to hear that ReaPack, the incomming REAPER extension by cfillion that is meant to download/synchronize ReaScripts from Git Repos, can now works with JSFX !

This means that JSFX coded and upoaded on a Git System like GitHub can be downloaded right from REAPER by anyone using the ReaPack !
More if you update your FX, people will be able to be notified, and to download your new version with one click only !

To benefit from that, all you have to do is to have a GitHub (or alternative like GitLab) account and upload your script there.

But you can also simply upload your JSFX on the brand new JSFX RaaTeam (ReaTeam is a collective of REAPER independent coders) public repo !

Just like ReaTeam Templates Repository, it can be a good place for collaboration and for centralizing JSFX, but if you prefer to be the only one to control your repo, then feel free to create one !

To make a JSFX ReaPack friendly,
  • you only have to say .jsfx as extension,
  • and to have an ReaPack friendly header, like this one :
JSFX/X-Raym_Header.jsfx at master · ReaTeam/JSFX

JSFX coders, are you ready for the ReaPack adventure ?

Let us know if you have any concerns or questions !

See you on GitHub !
X-Raym is offline   Reply With Quote
Old 04-03-2016, 01:58 PM   #2
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
Default

This is very cool and I hope it takes off but I'm super-busy and fairly lazy, so to entice people like me into supporting the worthy initiative, an explicit step by step "how-to" would probably be a good idea. If I had some simple instructions to follow, I might feel more inclined to invest some time in making my stuff compatible and uploading to a repository.

Make it super-easy and people will probably start to use it, which would be a good thing. My eyes start to glaze over at the very sight of the word "git" and I doubt that I'm alone in that.
IXix is online now   Reply With Quote
Old 04-03-2016, 03:46 PM   #3
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,900
Default

Cool if you are interested !

I'll try to make a quick resume but a more advanced english speaker may give more easy to understand information.

GitHub is webservice that provides Git system for its users.
It allows to have a access to source code online, which make collaboration easier.

Git is a system to manage source codes.
It has advanced version history per files (you can see which lines were added, deleted and by who and when), possibility to make collaborations etc...

A project managed on Git has a repository, which contains all files and version of the projects.

On the repo, you have a Master Branch, containing files and subfolders.
You can also optionally have other branch for other versions of the project (betas...).
Demo : My REAPER Scripts repo : https://github.com/X-Raym/REAPER-ReaScripts (master branch)

Full repos can be copied by other users on new repos as Forks, and these users can propose modifactions back against one source repo branch as Pull Request.

When you make a change on your local computer, you have to validate these changes from time to time by creating a Commit. A commit will track your changes, the time, and the author of the commit. Each commit have a name and description, entered by his author.
Demo : One commit resume : https://github.com/X-Raym/REAPER-Rea...9cff1686ab3a86
You can see the new lines created and the lines modified.

You can commit files from the GitHub website, or you their nice GitHub app.
https://desktop.github.com/

ReaPack is an Extension for REAPER that allows to download and sync scripts from online Git systems, like github.
By putting URL of repositories, you can download reascript or jsfx files.
It can scan the commit history and see if new files or if files were modified since your last synchronization with the repos.

This commit history is created using another software, the ReaPack Indexer. It scans files from a repo, a search files which have a certain type of header (containing script name, script author, versions..), and it can created a XML file with the list of all the valid files. But if these files already exist, it only check modifications.
Using a dedicated XML files to see repos changes is more efficient than if every user have to scan every files of a repo. By having a simple files with the modifications list, only one file is scanned.

To provide scripts or JSFX to users, you have several choice
  • Create a GitHub account, join the ReaTeam, and commit your formated files here
  • Create a GitHub account, create your own repo, and upload the formated file here
  • Create a account on GitHub alternative, and upload your formated here
ReaPack indexer is able to see JSFX if they have .jsfx as extension and if they have an header which look like this :
Code:
/**
 * JSFX Name: 
 * Author: 
 * Licence: GPL v3
 * REAPER: 5.0
 * Version: 1.0
 */

/**
 * Changelog:
 * v1.0 (2016-01-29)
  + Initial Release
 */
Each time you make a modifications on your FX, just modified the version number, and run ReaPack index.

When users will synchronize their package with ReaPack, they will see that you made a change to your repo, and ReaPack will automatically download them.

In resume, that's it
There is a bit of vocabulary but you may not need to know about forks, pull request and branch.

In resume if you want to be part of that :
  • Create a GitHub account
  • add .jsfx to your js (there is bulk renamer for that if needed)
  • Add the JSFX header to your files
And then you will be able to start using GitHub and the ReaPack indexer

I hope this help !
X-Raym is offline   Reply With Quote
Old 04-03-2016, 08:56 PM   #4
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,964
Default

Here's one way of submitting contributions:


  1. Fork ("make a working copy of" in english) a ReaTeam repository (ReaScripts or JSFX) in your GitHub account
  2. Clone it ("download it on your computer") in the GitHub Desktop app
  3. Create a subdirectory to organize the packages by category for easy searching (eg. Envelopes, MIDI, Dynamics etc)
  4. Add some metadata at the top of the new files to at least tell ReaPack what version they are at (see X-Raym's posts above for more info on that)
  5. Once you're done making changes, create a branch and add at least one commit inside
  6. Send your commits to the original repository with a pull request
After that, a member of ReaTeam will review the request, and if all is good, will merge it and update the package index.
At this point the new package or update is available for download to ReaPack users!

GitHub's help pages provide a good introduction to git and GitHub Desktop: https://help.github.com/.

EDIT: I've only put version metadata in the video (that's the absolute minimum), but for prettier packages it's best to also put author information and a changelog.
Check out the examples at https://github.com/ReaTeam/JSFX/tree/master/Templates.

Last edited by cfillion; 04-04-2016 at 12:56 PM.
cfillion is offline   Reply With Quote
Old 04-03-2016, 10:19 PM   #5
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,776
Default

Great !!

Any planned way to manage documentation / user info file in such system and provide a searchable index for same ?

-Michaek
mschnell is offline   Reply With Quote
Old 04-04-2016, 02:28 AM   #6
ijijn
Human being with feelings
 
ijijn's Avatar
 
Join Date: Apr 2012
Location: Christchurch, New Zealand
Posts: 482
Default

Sounds very exciting, thanks team! I'll look into this soon.

PS I wasn't a Git fan until I discovered GitKraken and now I (mostly) love it.
ijijn is offline   Reply With Quote
Old 04-04-2016, 02:37 AM   #7
DarkStar
Human being with feelings
 
DarkStar's Avatar
 
Join Date: May 2006
Location: Surrey, UK
Posts: 19,680
Default

I have a few questions:
1 Does the Free Plan work OK?
2 Where is ReaPack?
3 Where is ReaPack Indexer?
4 Does everything go in the ReaTeam repository?
5 cfillion's scheme seems to suggest running your own repository; is that needed? Doesn't that cost $?
6 Once a script is uploaded to the ReaTeam repository, can any reaTeam member update the script? Anyone-else?

How will a user search for the script that meets his / her requirements? Can user guides / screenshots etc be uploaded here too? (oops, that's what mschnell asked)

------------------------
Chambers Dictionary:
git noun, derog slang a stupid or contemptible person.
__________________
DarkStar ... interesting, if true. . . . Inspired by ...
DarkStar is offline   Reply With Quote
Old 04-04-2016, 08:08 AM   #8
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
Default

Quote:
Originally Posted by X-Raym View Post
ReaPack indexer is able to see JSFX if they have .jsfx as extension...
What about these?

1. external data files (wav, ogg, txt etc.) that need to be in the Data folder
2. jsfx-inc files
3. png, jpg, txt etc. referenced by the fx

Also the vast majority of JS created up until recently don't have a file extension. Having to rename them all is a bit ugly.
IXix is online now   Reply With Quote
Old 04-04-2016, 09:05 AM   #9
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,900
Default

@IXix
The header format have a field for external files:
Something like this should work :
Code:
 * Version: 1.0 
 * Provides: 
     . https://gitlab.com/user/repo/raw/$commit/$path background.png https://i.imgur.com/tKAkk9N.png
If certain things need to be at certain places, write to cfillion, and he'll certainly find a way
Quote:
Also the vast majority of JS created up until recently don't have a file extension. Having to rename them all is a bit ugly.
To be honest, not having a file extension is what is ugly.
  • You can't filter files by type in your finder/explorer, or on other softwares (Git for example)
  • You can't dedicate a default software to open your file
  • You can't sort files by types without taking the risk that other non jsfx files (who wouldn't have any extension) get mixed with your search results

I don't know why JSFX doesn't have any extension by default but you have to admit that providing files without extensions is completely unusual and doesn't provide any advantage. It is not because it doesn't need extension that it shouldn't have one.

Fortunately, there is a lot of ways to batch rename files on the different OS so it is not really a problem to add .jsfx to a file selection.
For Windows, Bulk Rename Utility is a killer software for renaming.
For mac : 3 Easy Ways to Batch Rename Files on the Mac

Renaming dozens of file can sound like a pain in the ass but it is really a matter of seconds with a renamer software.

cfillion really try hard to match usual and actual coding behaviors of the community but without any conventions, the ReaPack indexer would be a set of custom complex rules dedicated to each coders, which wouldn't be very easy to manage.
With ReaScript, we had the chance to already have some kind of conventions for the header, but we all had to tweak all our scripts a bit to make them ReaPack friendly. It take time, but because our work will more easily accessible than ever before, it really worth the time investment, don't you think ?

There is no hurry, take your time, and don't forget that maybe some volunteers can help you.
X-Raym is offline   Reply With Quote
Old 04-04-2016, 12:38 PM   #10
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,964
Default

@DarkStar
Quote:
Originally Posted by DarkStar View Post
5 cfillion's scheme seems to suggest running your own repository; is that needed?
A fork (working copy) is a bit different from a full-fledged independent repository: it's a way to make and submit changes without having to join ReaTeam.

If you intend to send modifications often, it's probably best to join ReaTeam and have direct write permissions, but for occasional contributions I think it's best to fork/branch/pull-request: it's easier and less error prone (pull requests are checked for common mistakes by a bot and manually reviewed before being applied).

The package indexer is intended for repository maintainers, developers/contributors don't need to bother with it unless they run their own independent repository or want to test the changes in ReaPack locally before sending them.

Quote:
Originally Posted by DarkStar View Post
How will a user search for the script that meets his / her requirements?
Users search for packages to install using Extensions > ReaPack > Browse packages: https://i.imgur.com/HxqwqeF.gif.

@Sju

Quote:
Originally Posted by Sju View Post
For example, I just navigated to the ReaPack download page, but I have no idea what to do with those .dll and .dylib files (do i need one or both? where do i put them? etc...)
.dll files are for Windows and .dylib are for OS X. Choose the architecture (32/64 suffix) to match REAPER's.
To install, download and put the file in REAPER's resource directory, inside of the "UserPlugins" subfolder.

@IXix

Quote:
Originally Posted by IXix View Post
What about these?

1. external data files (wav, ogg, txt etc.) that need to be in the Data folder
2. jsfx-inc files
3. png, jpg, txt etc. referenced by the fx
As X-Raym said, additional files are specified from the metadata header:
Code:
/*
 * Version: 1.0
 * Provides:
 *   ixix-functions.jsfx-inc
 *   YourPackage Data/background.png
 *   some_file_that_is_not_in_the_repository.pdf http://download/url
 *   [windows] ixix-functions-win32.jsfx-inc
 */
This tells ReaPack to install ixix-functions.jsfx-inc from the same directory as the current file, background.png from the "YourPackage Data" subfolder and some_file_that_is_not_in_the_repository.pdf from an external URL. ixix-functions-win32.jsfx-inc is only installed on computers running Windows.

There are two limitations on this:
  1. Only one package can claim a specific file at a time (meaning that sharing files between packages sucks at this time and I have yet to find a good solution. Suggestions appreciated)
  2. Files cannot be installed outside of the repository's root directory

Last edited by cfillion; 04-04-2016 at 01:48 PM.
cfillion is offline   Reply With Quote
Old 04-04-2016, 02:08 PM   #11
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,652
Default

Quote:
Originally Posted by X-Raym View Post
To be honest, not having a file extension is what is ugly.
Yeah, but I have projects with JSFX, and they all refer to the files without extension. Renaming the files will break those projects. Also, all bundled JSFX are without extension, so I guess you could say that they are that way by convention...

Anyhow, TBH this all seems like way to much work for me personally (I like coding, I like Git, but I hate "paperwork"), so I probably won't be contributing anyway, which kinda makes my opinion m00t I guess i.e. please ignore me.
Tale is offline   Reply With Quote
Old 04-22-2016, 03:48 AM   #12
daxliniere
Human being with feelings
 
daxliniere's Avatar
 
Join Date: Nov 2008
Location: London, UK
Posts: 2,583
Default

Quote:
Originally Posted by IXix View Post
My eyes start to glaze over at the very sight of the word "git" and I doubt that I'm alone in that.
No-one likes a git here in the UK...
__________________
Puzzle Factory Sound Studios, London [Website] [Instagram]
[AMD 5800X, 32Gb RAM, Win10x64, NVidia GTX1080ti, UAD2-OCTO, FireFaceUCX, REAPER x64]
[Feature request: More details in Undo History]
daxliniere is offline   Reply With Quote
Old 04-22-2016, 04:15 AM   #13
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,891
Default

Quote:
Originally Posted by cfillion View Post
@IXix Done! ReaPack v0.10 can install whole packages or individual files in REAPER's Data folder:

Code:
/* test.jsfx
 * Version: 1.0
 * Provides:
 *   background.png
 *   [data] Test Data/*.txt
 */
- or -
Code:
/* test.data
 * Version: 1.0
 * Provides: Test Data/*.txt
 */
https://forum.cockos.com/showthread.php?p=1672209
It might need some more tuning though, please let me know.
Cool! (but Damn! Now I'll have to get my act together and test it! Need more hours in a day and more days in a week.)

Quote:
Originally Posted by daxliniere View Post
No-one likes a git here in the UK...
That could be part of my aversion. Perhaps it's a subconscious reaction to the word? Nah, probably just crippling laziness, not wanting to figure out a new thing.
IXix is online now   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 11:55 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.