igorski / efflux-tracker

Browser based music making application driving synthesizers, samplers and effects using both a tracker and piano roll/loop based interface. Supports MIDI controllers and provides both local and cloud based project storage.
https://www.igorski.nl/application/efflux
MIT License
209 stars 23 forks source link

Import/Export and Share options for patterns #51

Open Teteros opened 2 years ago

Teteros commented 2 years ago

Thank you for Efflux 2.0, been having a lot of fun with it, here's my feature request after using it again.

Currently the entire song is able to be saved to a file or to a link as well as the instruments (which are able to be imported/exported to a file, but not shared.) Would it be easy to make the patterns themselves be exportable too?

The great thing about this tracker is the portability, however I've been wishing Efflux had a bit more collaboration tools to take advantage of it being a webapp.

Being able to copy/paste the pattern data into a clipboard and share them with a friend would be pretty big. You'd be able to work on a song together by working on a pattern locally simultaneously. At the moment this workflow is not really viable because Efflux requires you to work on the whole song so one person would have to wait on the patterns to be finished before being able to work on theirs. Copy paste-able instruments would be a good addition as well.

The other use case for this is being able to reuse patterns offline (e.g importable drum loops/breaks snippets), to speed up song creation.

igorski commented 2 years ago

Good to hear Efflux 2 is proving useful! :)

I like your ideas as so far Efflux had been developed with audio features and performance first, and great usability second :see_no_evil: so it's good to catch up on that aspect.

If I understand your request is that: individual patterns should be exportable

I assume this would be similar to the "advanced" pattern button : e.g. you can select a range of patterns and an optional range of channels within the patterns to export ?

You also mention clipboard copy/pasting. Maybe I'm not entirely sure I follow but with clipboard pasting I assume you mean being able to copy the data, save it in a txt file and share this file with your collaborator ? We can create a new file format for this purpose that you can export directly from Efflux with the "pattern export flow" described above.

Note that for instruments this currently exists. In the instrument manager you can click the "export" button for individual instruments (which your collaborator can import using the import button in their instrument manager).

For ease of use I can imagine extended the clipboard paste and file drop functionality. Currently you can drop audio files and Efflux songs into the application. This could be extended to also allow pasting from clipboard and also include paste/drop of instruments and the exported patterns.

What do you think?

Teteros commented 2 years ago

so far Efflux had been developed with audio features and performance first, and great usability second see_no_evil so it's good to catch up on that aspect.

That's true, the Vue rewrite definitely runs better than the previous version which tended to lag behind when following the tracks played, well done!

If I understand your request is that: individual patterns should be exportable I assume this would be similar to the "advanced" pattern button : e.g. you can select a range of patterns and an optional range of channels within the patterns to export ?

It could be implemented by having a second button Export Content (after "Copy Content") in the "advanced pattern editor" menu in which the specified data can be exported, which might work.

You also mention clipboard copy/pasting. Maybe I'm not entirely sure I follow but with clipboard pasting I assume you mean being able to copy the data, save it in a txt file and share this file with your collaborator ? We can create a new file format for this purpose that you can export directly from Efflux with the "pattern export flow" described above.

Txt or JSON or something like that could work, although if the data is compact enough to fit into the clipboard, maybe this could be implemented even more seamlessly. There could be a global option in settings that turns on "collaboration/share mode"?

When this is on the CTRL-C and CTRL-V on pattern selections, as well as the Copy/Paste pattern operation buttons under the tool bar will utilise the clipboard (storing the data in plaintext). That way, the UI will not be cluttered by any new options and the user can paste stuff in and out of the application into a chat app etc.

If the data is too big for that (especially with the samples considering they are binary data), there could be a couple buttons to export patterns in/out. The advanced pattern menu option as well as "Share" or "Export" in the pattern operations: share

Currently you can drop audio files and Efflux songs into the application. This could be extended to also allow pasting from clipboard and also include paste/drop of instruments and the exported patterns.

Sounds good :+1: Just did some tests, dropping efflux songs and samples into the application works. Drag and dropping instruments doesn't work. Also there is "import file" for samples but no "export file" to retrieve them in the sample editor. However this can be worked around currently by exporting the instrument itself, though that is not an audio clip of course.

igorski commented 2 years ago

A small update on the latest added features:

Still to do : import/export fo both individual samples as pattern content.

igorski commented 2 years ago

Patterns can now be exported to .xtp-files from the "advanced" pattern editor window. As before, you can select arbitrary pattern and channel ranges to export/clone. Additionally, this is also added to state history (previously you couldn't undo the action of inserting a range of patterns into a song). The aforementioned has been added in 1126ac051c83e9bcc7297ac3c2825e0ddfceb642

Like any other supported file format, you can paste an .xtp file from your clipboard into the application using ctrl|cmd+V or by dragging the file into the Efflux window.

Still to do: import/export of individual samples.