Skip to content

Alpha Release Task List

Roger B. Dannenberg edited this page Jan 16, 2022 · 81 revisions

Immediate Goals

Project State (πŸ‘Ώ)

Project Editor, as implemented in React, loses state when you leave the page, and there are many reasons to leave the page while editing, e.g. consulting another project or uploading a sound. Currently, you are prompted to save the project, but this is disruptive and even confusing.

I propose implementing a new model: A user should always have an open, working, editable project. The user can leave the project editor at any time and return to it at any time without losing edits.

(I think this is the model we are trying to support, but we currently expose too many mechanisms. If you leave the project page, you have to explicitly "save" the project to "local project" and then restore "local project" to get back to work. Thus, we know what the user wants, but instead of just doing it, we make the user jump through hoops to get there.)

To support this model:

  • make a "hidden" local project that can be stored in the database. The name should be not be normally usable, e.g. we could call it "_local" and prevent users from creating new names that begin with "_".
  • _local should have a project name, which may be "_unnamed" (see why below).
  • whenever you leave the project page, save the current state to _local.
  • whenever you enter the project page, restore the current state from _local.
  • when you "save", store the current state to the name given by the project name. If project name is _unnamed, then run "save as" instead.
  • when you "save as", set the project name to the name entered by the user, so future saves go to the last project name you saved to.
  • never prompt the user to save when you leave the project page -- it's too disruptive and there's no need because nothing will be lost.
  • we need a "restore" operation that reloads from project name so the user can undo any edits to _local.
  • various other operations may warn the user about differences between _local and the version stored in project name. E.g. if the user attempts to make a performance or share a project they have just edited but not saved, a warning should be given.
  • In particular, loading a named project when "_local" has unsaved changes should prompt to optionally save changes (which runs "save" operation) or "save changes to" (when project name is _unnamed; runs "save as" to request a name). Alternatively, the user can select an option that says "do not save changes" (if named) or "do not save project" (if unnamed).
  • "_local" does not appear in the list of projects. It's a hidden piece of implementation, but not part of the model seen by the user.

Positions Not Restored (πŸ‘)

Module positions are not restored when you save and return to a project.

Granular Synth and Transposer (πŸ”΄)

Until we get something that really works, remove the icons and code for Granular Synth and Transposer. (Comment the code so we can return to it later.)



The rest of this page is a bit out-of-date. Another item to do is organizing and updating this list!

The following are what we decided are necessary for an initial release:

Key:

  • πŸ”΄ - a problem - critical for release. Needs work. Feel free to add additional problems.
  • πŸ‘Ώ - a problem - not critical for release. Feel free to add additional problems.
  • ❓ - use this when a problem (πŸ”΄) has been fixed. A indication that RBD should test.
  • πŸ‘ - Roger agrees this problem is fixed (icon reserved for RBD).
  • ⏳ - module waiting for general fixes before further testing (but feel free to test now and report module-specific problems)
  • πŸ’š - marks preferred option or solution.
  • Feel free to add your own markers/tags. Here's a list.

Screen Layout

  • Owner: Amit
  • Requirements:
    • Working Icons only

    • πŸ‘Ώ Local project is displayed in the Recent Projects at the beginning. When there is more than 3 projects it isn't.

    • ❓ Patches are not restored when projects are loaded or imported.

    • Project Editor GUI details (for floating mode):

      • πŸ”΄ If we cannot fix floating mode, we don't need two modes for Alpha release, but one has to be good.
      • πŸ”΄ Repositioning: Create a module. Create a new module to the right of the first. Delete the first. The second module repositions to the left. Expected behavior: modules do not move when you delete another module.
    • Projects

      • πŸ‘Ώ Projects: Configuration. Default View determines the view no matter how it was saved.
    • Sounds

      • πŸ‘Ώ You cannot download the sounds from the sound page. The download need to add the extension to be readable
      • πŸ‘Ώ There is a problem if you try to go ahead some seconds in a sound
    • Modules

      • πŸ”΄ GranSynth. When clicking the page collapses. It does not work sometimes, maybe not now and maybe in an hour it does. [Kristin: Cause: GranSynth has a large webaudio object, and there is a functionality that stringify all data on the page and save to Local Storage -> Local Storage can't hold all data when GranSynth joins so the page collapse. I currently disable the Local Storage functionality and we'll see solutions later]

OSC documentation

  • Owner: Amit, Roger
  • πŸ”΄ We need a new facility for performances:
    1. Requirements:
      1. performances are named and owned by the creator
      2. creator can enable others to join the performance
      3. performers can select a single current performance to determine what control messages to receive
      4. There is a default performance called "Personal" that is only for single users (so there is one per account) and cannot be shared, created, or destroyed. You are automatically "in" the Personal performance unless you select another one.
      5. This cannot be done with OSC, right? We need to implement a replacement for the Soundcool App using HTML+JS and supporting logins and performance selection.
      6. Maybe for connections, instead of port numbers (which would no longer name actual ports) we should just name objects, e.g. "SamplePlayer1", "SignalGen2", etc. It would be tempting to use simple names, S1, S2, ..., but we have some naming problems: SamplePlayer and SignalGen and Speaker use "S", in the future, more conflicts are likely, especially with video modules.
    2. Design: GUI, Database, Mobile Web App, and code design
    3. Implementation

Modules in general

  • Owner: Kristin + Amit
  • Requirement:
    • πŸ”΄ patching should be saved and should restore
      • See Jorge's email 6:21AM ET Oct 5 for more things to test.

Delay

  • ⏳ (not able to completely test yet)

Direct Input

  • ⏳ (not able to completely test yet)

Pan

  • ⏳ (not able to completely test yet)

Sample Player

  • ⏳ (not able to completely test yet)

Oscilloscope

  • ⏳ (not able to completely test yet)

Spectroscope

  • ⏳ (not able to completely test yet)

Signalgen

  • ⏳ (not able to completely test yet)

Transposer

  • πŸ”΄ Connect SignalGen (sinusoid, 440hz) to Transposer. Connect Transposer to Speaker and Oscilloscope. Result: obvious popping. Expected: Since every grain is smoothed, there should be no popping.

Player

  • ⏳ (not able to completely test yet)
  • Owner: Kristin
  • ❓ x0.01, x1, x2 buttons need outline to show they are buttons. - We have plenty of room to show text, so let's show x0.01 instead of x0 to be correct.
  • πŸ‘ No meter display.

Mixer

  • ⏳ (not able to completely test yet),
  • πŸ‘ Patching seems to be broken.
  • Owner: Kristin
  • πŸ”΄ No meters on inputs.

Speaker

  • πŸ‘ (not able to completely test yet), Patching seems to be broken.
  • Owner: Roger
  • Status: Good.
  • Audio Configuration: nothing required for Alpha, Ankit looking into what's possible within Web Audio. UPDATE: not much is possible. Probably we want to fix sample rate to 44100. Devices cannot be selected. One thing we could control is suggested latency. The semantics are implementation-dependent, so let's wait and see if we have any high-latency problems or low-latency glitches before trying to "fix" it with user control.

Runs on local server

  • Owner: none
  • ⏳ Status: This is complete when everything else is complete. It's mentioned here just to remind everyone that we are not implementing a cloud service (yet).

Installer

  • Owner: Amit & Roger
  • πŸ‘ Status: Done (Need final test when we have something ready to ship)
  • Requirements:
    • package that installs monolithic binary to run Soundcool server on local host
    • scripts and documentation for Roger to check out and document
      1. verify_requirments_linux.sh: It will check if the system is missing any requirements
      2. setup.sh: It covers the complete setup of soundcool project(e.g. mysql,.env, node_modules, etc.)
      3. launch.sh: It launches the soundcool application

Note: Make sure that the system meets the requirements before running setup.sh Everyone, please use the script and report the errors or improvements it can have. Also, Let me know if you think that we need a script for other functionalities. IMO a script to automatically clean and update the database is necessary.

Local storage for sounds and projects

  • Owner: Roger
  • πŸ‘ Status: Roger wants to test and review documentation. Maybe we're done.

Already done

Screen Layout

  • πŸ‘ Display the name of the current project, maybe to the left of the current user ID
  • πŸ‘ Edit Profile has been created, but it is needed to update the API in order to let users change their settings.
  • πŸ‘ If you create a project without logging in, then log in, your project is deleted. That's just rude. Either
    • disable project creation unless you are logged in, OR
    • πŸ’š preserve project while unlogged-in user registers or logs in, then allow the project to be saved
  • πŸ‘ Repositioning: Create a speaker. Create a Player. Save. Exit and reopen project from Projects screen. Observed: Player is on top. Expected: Speaker is on top the way it was originally created and saved.
  • πŸ‘ Projects page has "Export" button. Should we have an "Import" button? [in dropdown menu]
  • πŸ‘ cannot expand vertically by much -- really unusable if you want a larger window
  • πŸ‘ why do we have any panel at all instead of just using the main window where the icons are?
  • πŸ‘ why can't this window be the entire browser window (except for the menu bar?) Can we make the window resize when you drag a module beyond the border? If not, let's just have a fixed sized window for Alpha, or one step better would be put a drag-able handle on the bottom of the window that you could use to make the edit area taller.
  • πŸ‘ Column view has large margins between modules.
  • πŸ‘ The top of columns could be aligned with the top of the window and the top of the module palette -- why the space at top? Here's my suggestion:
    layout pic
    but here's what it looks like now:
    layout pic 2.
  • πŸ‘ It would be nice to have recent projects appear in the drop-down menu to allow a single selection to open a recently edited project.
  • πŸ‘ Column view: columns disappear if you make the window narrower with no scroll bar to find them.
  • πŸ‘ Icons at the top left (currently not at the top).
  • πŸ‘ Modules are numbered sequentially, so if you create S1, S2, S3, S4, delete S1 and create a new one, it gets numbered S5 instead of reusing S1. Each class of module should pick the first available integer for each new instance.
  • πŸ‘ Patches need to keep track of when changes happen so that you don't get warnings about unsaved patches if you haven't changed anything and therefore it's already saved.
  • πŸ‘ If you move off a project page, it says "WARNING: you are leaving the project editor. If you leave now, you can resume the current progress in Projects -> Resume Local Project, or you can stay on the current page and save." But:
    1. You get this message even if you save. Should only get warning if there are changes.
    2. If you make changes an leave, your changes are not stored and Resume Local Project does not work.
    3. "Local Project" shows up a a recent project, but it is not listed on the complete list of projects. Let's make this rule: the last project on the project editor is always saved as the Local Project, which you can get to by clicking on "Resume Local Project." It can be called Local Project internally, but aside from the "Resume Local Project" button, users should not see it anywhere.
  • πŸ‘ Tooltips float off screen -- especially bad for icons on the left edge of screen.
  • πŸ‘ Many icons are for modules that are not implemented. Need to remove non-functional icons. See Alpha Release Modules for list of modules: https://github.com/rbdannenberg/soundcool/wiki/Modules-Status-Table
  • πŸ‘ "About Us" needs work. Every name has "description" below it. Not sure what our roles should be, but let's fix it.
  • πŸ‘ GranSynth module minimize, close and out buttons are in the wrong places.
  • πŸ‘ SignalGen module minimize causes a crash: Create Signalgen. Create Player. Create Speaker. Minimize Signalgen. Minimize Speaker. Delete Speaker. Click Signalgen minimize button. This should maximize the Signalgen, but instead, the project editor crashes.
  • πŸ‘ Project Menu: Change "Floating view: On" to "Column View"; change "Floating View: Off" to "Floating View" (OK, thanks for implementing what I asked for, but it still seems wrong. I think we need something like "[ ] Column View" with a clear checkbox that is checked when in column view. If checkbox is hard to implement, just replace "Floating View" with "β–‘Column View" and replace "Column View" with "βœ”Column View" (Maybe you can find better characters -- I was looking for just an empty box and a matching box with an X or check.) If checkbox is hard to implement, just replace "Floating View" with "β–‘Column View" and replace "Column View" with "βœ”Column View" (Maybe you can find better characters -- I was looking for just an empty box and a matching box with an X or check.) [consider X and βœ” to be equivalent -- right now you can switch from X to βœ” but that's very confusing and non-standard]
  • πŸ‘ Why is Soundcool icon not on the far left?
  • πŸ‘ Export patch: Instead of tabs, use 2 spaces in JSON
  • πŸ‘ When I put speaker at the top of column, gransynth below it, and connect gransynth to speaker, they swapped places(!)
  • πŸ‘ I got two tooltips for the same icon to appear at the same time in different font sizes. Might be related to changing from column mode to floating view and back.
  • Project Editor GUI details (for column mode):
  • πŸ‘ The button column has been aligned but it is not still responsive, when there is less than 1245px of width the column does not adapt
  • πŸ‘ Project:New -- does not work. Go to Projects page. Click Start New Project button. Create a Player. Select Project::New menu item. Expected: "you are leaving this page" dialog, followed by blank screen. Observed: No dialog, Player is still in the edit window.
  • πŸ‘ Project:New -- if you connect SignalGen to Speaker, make a sound, and select Project:New, the sound does not stop.
  • πŸ‘ Project:Save As -- create a new project. Create a simple patch. Project::Save As. Dialog says "Create New Project" but we are "saving as" (should not change terminology given to user). Fill in name and description. Click "Create" (but this should be "Save"). Dialog pops up: "Stay on Page" or "Leave Page" (no dialog should be given here). Click Stay on Page and bad things happen.
  • Project Menu Requirements:
  • Projects tab should open a drop-down menu:
    • πŸ‘ New -- creates an empty editor window
    • πŸ‘ Open -- opens what is currently called "ProjectMenu," a list of projects with Actions choices of Edit, Share, Copy, and Delete
    • πŸ‘ Save -- saves the current project from the editor. If user is not editing a saved project, the user is prompted for a name and description.
    • πŸ‘ Save As... -- prompts for a name and description (default to current name with " copy 1", " copy 2", etc. appended) and then saves under the new name.
    • πŸ‘ Export -- allows user to download a .json representation of the project. This can be imported using the Import menu item.
    • πŸ‘ Import -- prompts to upload a .json file representation of a project and adds it to the list of projects. (Or else, remove for Alpha release) This seems to be already implemented in the 'sharing' dropdown menu.
    • πŸ‘ Use Floating View/Use Column View -- changes the view mode to/from floating or columns. (works, but confusing labels)
  • Project Editor GUI details (for floating mode):
    • πŸ‘ Floating view editing region has strange behavior and a visible border. Maximum width should expand to width allowed by window. Region has big right margin (try dragging something to the far right.) Nested scroll bars are strange.
    • πŸ‘ Floating view has only a tiny drag icon you have to use. (And the drag behavior is different in the two views: column view has the open hand icon where you can drag and anything that's not a control serves as a point you can drag; floating view must drag by the little arrows in the corner, and when you hover there you see an index finger icon instead of a hand icon.)
  • Sounds
    • πŸ‘ You cannot upload .aiff files
    • πŸ‘ Connect a player to a speaker. Hover over Speaker In button. Player dims to indicate connection. Click on Speaker In button. Connection is broken upon mouse up event. Move mouse away from Speaker In button. Player is still dim. Expected behavior: On mouse up event, connection is broken and the Player display is restored to normal (bright) look.

OSC documentation

  • πŸ‘ OSC does not seem to work now. See also Issue #84 for additional work.

Modules in general

  • πŸ‘ patching should work -- Try hooking up a player to Mixer input and then disconnecting it.
  • πŸ‘ delete buttons should all work - make a new project. Create one of every module. Delete the modules one-by-one. Project will crash. (What did the Dalai Lama say to the hot dog vendor? "Make me one with everything." 😁)