Known issues
To do soon:
- Loading the last opened file gives an error when it was not found. Should just load an empty one.
- Add an option to add all detected OSC addresses from the quick-add menu at once.
To do later:
- Use a default song file when starting a new song.
- Track this issue: DNSSD incompatible error when execution environment is not the standard 64 bit jre on windows (jdk fails too!). Seems to happen here in DNSSD.java:
System.loadLibrary( "jdns_sd");
int libInitResult = InitLibrary( 2); // Current version number (must be sync'd with jnilib version)
if ( libInitResult != DNSSDException.NO_ERROR)
throw new InternalError( "cannot instantiate DNSSD: " + new AppleDNSSDException( libInitResult).getMessage());
Is it finding the wrong dll? (there is one in C:\Windows\System32 and one in C:\Windows\SysWOW64)
Following these steps in Eclipse to make jdk default results in the error showing up when trying to run.
- Check: when adjusting track display mode: inteface only partially redrawn?
- If OSCseq doesn’t quit properly, keep a copy of the log file of that session.
- Show incoming OSC values in track titles
- Disable Add button in OSC Connections when no destination has been selected yet
- Change Paypal Buy Now button to Checkout button.
- [BUG (Unable to reproduce reliably)] With extreme amounts of incoming events pending to be recorded: playback doesn’t loop.
- Drag + Alt = duplicate event
- Add tool tips in main interface
- Time indicators instead of beats in index bar -> grid on program.
- Time line with minutes:seconds in a right side bar
- Add a general purpose input and output monitor
- Add modifying track address to undo stack
- When a collapsed track is de-collapsed and then falls outside of the screen boundaries, adapt displayBounds.
- Auto-scale to highest value in track when track mode is Basic?
- Add option to set the background color for certain cells
- Shift-click an event to send it out once
- On doubleclick on ip/port text in title bar, open preferences.
- Draw titles separate from redrawing selection buffer?
- Cmd + Mouse wheel zooming less fast
- Issue when having two active network interfaces available on the system: Devices are registered and displayed twice. Also, OSCseq detects itself (twice, for some reason..)
- Website: Mailing list (Add your email address here if you want to be notified of any significant updates of OSCseq. No spam, no 'other product information'.)
- Website: FAQ
- Osc-thru per track?
- Add all option in unknown messages menu
- tWhen recording events: only draw new events to existing buffer instead of redrawing all? Need to make sure that events are drawn only in the last pass of the backbuffer.
- When changing the name of an existing osc device only by capitalizing of decapitalizing one of the existing letters in the name, it is not being recognized as a name change in oscseq or other applicaions such as TouchOSC that already resolved it once
- Save selection in content, so it will be replaced to its old state after undo
- When the computer is connected to multiple networks, make a way to select which one to listen to. Currently it registers in two networks and also possibly doesn’t properly detect itself, resulting in Bonjour OSC Devices to be added twice to OSC Connections Menu
- log debug info to log file on Windows and Mac
- auto detect event type now says int for <100 and note for >100. counter intuitive maybe?
- Add caps keys modes for inserting various values caps keys: Notes, float, int.
- mode in track settings to display values permanently
- mute/record inverting (solo) via double click possible on every separate level?
- zoom to selection also if selection is larger than visible (which means we will zoom out)
- blink track record buttons on input, blink enable on output. maybe a while dot blink on top of mute?
- interpolate may delete events within selection
- on new track: move selection to the new track. So that you can reverse your action with ins or del. How to incorporate in submitresults? new selection position is possibly influential for following edit action. Pass on this info to next action?
- prepend computer name with bonjour registration name
- undo displayboundsupdate on = jump if cursor was aligned with bottom, off = now correct tracks update. Separate vertical and horizontal update? Change updateDisplayBounds: boolean for align up or down? Should always jump to correct position regardless of in which situation it was called.
- undo of for example movetrack. Doesn't place selection back to where it was. Should selection changes be undone in such a case?
- store events per track, change sequencer readback system for this.
- history of all actions (a la photoshop)
- events that are recorded while looping and enter just after the beginning of the loop but have to be place a few ms back in time and result in a location before the loop should actually wrapped back to the end of the loop
- add user action for open group edit box
- scan for superfluous redraws.
- per-event mouse support. grab an event and drag it to change position or height or size. Also do this with multiple events selected. Various graphical editing modes, depending on track type
- [BUG] for grid sizes above 1000, the index label doesn't fit.
- highlight event representation instead of jus a large pixel for event about to be edited within selection
- only repaint index on loop change
- quantize: how to handle double notes? And how to handle note offs?
- create Reaktor example patches
- Ctrl+F4 = close subwindows on Windows. a la cmd + w. Check if Ctrl + W works on windows
- create method with an algo to find an event on a specific beat fast. use quicksort?
- sequencer now synchronizes contentEdit completely, so also queue. Which means nothing can be added as long as actions are being executed. Synchronize actionqueue separately? Start new action queue as soon as we started executing actions?
- possibly synchronize content closer to actual content calls, making it less likely to lock stuff that the sequencer needs? No longer necessary when using new content pointer-swap system.
- idea for re-structuring threads: always do edits in user input thread while gui and sequencer continue to run. Making edits will alwyas create a new event vector and when gui/seq are ready with a complete run, they can have a look whether there is a newer content vector, change the pointer and do their stuff with the new content vector. Drawback is that a new content vector has to be created for every action. But this already happens for undo. Combine the two?
- store displaybounds in content? What if it’s changed by user input while events are being rendered (eg mousewheelmoved: moveStepSize uses and modifies displayBounds).
- if play has stopped, edit events within the selection (overwrite) by moving the controllers that are attached to those tracks?
- during editing an event with valueeditbox: exact beat position of event being edited should be dispayed properly visually.
- double click file to load (own file extension)
- event data pastable from clipboard into text editor as xml
- add controller points vertically instead of horizontal event lines, have look how it looks?
- undo optimization:
- what if you don't delete anything with a delete action? Dont make a copy.
- eg insertaction: dont clone deep or dont clone at all if no events have been changed
- in case of several edit actions deep clone isnt necessary is we delete events and add new ones instead of editing them in place.
- display one eventtekst every beat instead of none now. Looks better.
- needs events saved per track to be able to render effectively
- invert content under cursor instead of solid black
- save path in composition, read write command with save folder to all connected recipients, recipients are responsible for managing (storing/loading) their data in that folder. unified composition folder (in theory: what happens if the composition runs on multiple computers, or even analogue-digital hardware). Alternatively have connected devices request the save location
- upgrade undo so that it only refreshes stuff that has actually been changed back. Should be possible by keeping previous submitresults.
- Store and send notes with lengths after all, no note offs? Is more in sync with the OSC statelessness principle. But: where to record. In controller? Means that notes without offs will not be sent out by input devices, which is actually fine. But this means a different situation for recording than for realtime control. In sequencer then, relate incoming note offs to previously incoming note ons and hope they match?
- fluffy input field focus highlight on mac acts quirky. apple java bug? threading issue?
- settings: make ip field red if not entered correctly. use InetAddress exception.
- textfield blinks when doing NextValueBox. So close and re-create between screen refreshes. Possible at all with swing?
- make box for every field in the title, even if they are the same, but very light. Use for renaming doubleclick.
- make loop markers grey when dragging, only apply when released
- mac: set visible title in dock containing file path. Possible with java on mac?
- de-collapse track when doubleclicked in title for group eidt box of value edit box?
- Rewrite the whole thing in Cocoa and .net
- display number of selected events
- redraw stricly only changed region (eg when closing valueeditbox)
- able to navigate left and right from within valueditbox. Need events per track for that.
- special track type that sends out stuff dependent on current play cursor position in composition.
- now possible to change selection with cursor arrows while changing it with mouse. Disable this? or allow? Same for scrollwheel. zooming during dragging might be interesting.
- scrollbars
- draw a larger portion of the grid, don't redraw everything every ms when scrolling, only if you scroll to large area's. Or only redraw "new" area's, add them to the draw memory buffer.
- keep track properties open, sync with currently selected track
- add an option per track to send out latest value on play start and loop.
- tcp support. Means adding tcp input port to preferences? Is that all?
- Show destinations in address spaces in title bar? No, what if you want to send to multiple sources? Also: adds extra clicks to configuration. Just send everything to everyone.
- button bar with buttons such as collapse, quantize, etc. enble/disable this toolbar. Add grid/bpm/sel to toolabr as well.
- collapse title strings with dot/leave out consonants, etc.
- use client timeOffset to detect whether we're on the same line. When incoming events differ wildly from timetag (time they were sent), notify user, eg exclamation mark icon in settings
- button for scroll with timeline.
- write global settings whenever preferences window is closed?
- question mark icon next to difficult stuff that gives additional info. is there any difficult stuff?
- smart event insertion is possibly slower now then when using quicksort to re-sort everything.
- java bug: click count is updated to beyond two when clicking very rapidly, which makes doubleclick unresponsive when accidentally clicking more than twice
- possibly don't update ordering events every add. add a delay of about 200ms.
- test adding things with a japanese keyboard
- what to do with the max amount of bytes in an oscmessage? (currently 1024)
- idea to speed up rendering: when making the event list, add a factor of how much they are close to a whole beat or bar. Depending on this, add them to different vectors, besides of course the vector for all events. 0.5 = first event of a half beat, 1 = first event in this beat, 2 = first event of two beats, etc. while rendering, skip events with a relatively low score, dependent on step size.
- separate Shift + home/end cases, which makes it possible to select with home and end
- sequencer API: OSC messages for controlling every possible action in sequencer
- system to query OSC devices for their address space, which formats, any standards?
- right-click = context menu with selection editing options on selection (quantize etc)
- for slickness: grab left time index bar and drak, iphone-like animation with easing
- all colors in config xml file
- way to visualize track settings in main interface? extra bar below address?
- break points in index bar. Loop, jump to other break point (not to absolute beat!), stop, etc.
- incoming events temporarily shown as their recorded representation in title of tracks
- controll buttons mouseover
- control buttons tooltip
- change timeline scale to time instead of beats (also change grid resolution inicator)
- dropdown to change step size. add 4 higher and 4 lower values than current value
- send out stop when closing app while playing
- small overview of entire song left of index bar
- dragging the mouse below the bottom edge shoul d start scrolling down
- record overwrite on/off option. now always off.
- mouse resize track to custom size option
- double click track borders to auto-size to maximum value length
- when clicking below loop end, continue playing without jumping back to loop.
- enter-enter to change between two zoom modes? pattern/arrange siwtching style?
- double click on index = play start there
- mute sequencer during save
- yield writing thread now and then?
- allow step sizes other than 2^x
- open and play multiple sequences simultaneously,
- multiple views (zoom levels, etc)
- save values with event as osc message bytes (optimizing playback speed)?
- display timing error?
- enlarge value edit box when values need more space
- trigger button per track?
- change all event modification actions to scripts (lua? js?)
- latest value indicator per track
- permanently display track settings in a properties bar to the right or left
- non-destructive quantizing option in track settings. 'Flatten' option. Show quantized notes and copying means copying the quantized versions of the notes.
- make patterns through marked area. Ctrl+K and then select color. double click = set selection to marked area.
- drag muting tracks. a la flash hiding layers
Sequencer non-reproducible / to categorize:
- 1* enter didn’t confirm value edit box, value wasn’t added.
- standalone doesn’t load toeng and glitch
- 2* Output connection won’t work until connections window is opened, even though the connection was saved. Detector not yet active?
- zooming to selection shouldn’t redraw upward if not possible to zoom in further?
- why is osActionModifierPressed set to 1 when right-clicking on mac?
- repaint: after closing a textfield, java automatically sets a clip region in g. I’m overriding it back to null since the selection has to be repainted. Is that ok?