Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /storage/content/49/145849/famitracker.com/public_html/forum/classes/dbHandler.php on line 29
I have been using Famitracker for One Hour Compos lately - and when all you have is an hour, any time spent doing automateable busy work is time lost, and in such a competition format it really stings. So, I would like to suggest a number of workflow changes that would make common but tedious options much simpler.
0) Trivial: Paste and overwrite and Paste and mix should display their key shortcuts in the edit dropdown menu. Mostly because paste and mix is THE reverb creating operator and should be transparent to everyone.
0a) Maybe also make 'rows shifted by when you scroll the mouse' visible next to row highlight and 2nd highlight? Since typically if you make your song 3/6/9 rows per beat you'll want the scroll wheel to move by a factor of 3 too.
1) The frame editor in the top left has very poor usability. Here is a common operation I want to do: I have a 4 frame loop and I decide 'actually, I want this part of the song to go twice as long'. Now I grumble as I have to select frame 1 - right click - copy, select frame 4 - right click, paste, right click and move up/down if I put it in the wrong spot... repeat four times. This requires two mouse seeks, two right clicks and two left clicks [b]per frame I am duplicating.[/b] Now, let's examine some input that the frame editor does NOT capture when it has focus:
1z) First off, what it DOES capture: Double click, which lets you edit the number in a cell. This is fine.
1a) Click and drag, shift click, ctrl click. Clicking and dragging could be used to select all the channels in all the frames it overlaps (and if you drag over the frame number, it automatically captures the whole frame). Shift click would be like in windows explorer - shift click twice and you select all frames between your selection. Ctrl+click would add/remove frames to your selection as you use it on them. And now that we have a selection...
1b) ctrl+c should copy the cell numbers to the clipboard. ctrl+x should copy the cell numbers to the clipboard and delete the frames they came from. I can see more than one way to paste, so I'm just going to list them all for discussion:
--ctrl+m: Paste the cell numbers, top left corner starting at your selection, overriding the numbers already present in the frames.
--ctrl+v: Create as many new frames as there are frames in your clipboard, then paste the cell numbers into them.
--ctrl+f: Clone the patterns that the numbers in the clipboard refer to, then paste the numbers of the new clones into the new frames.
1c) ctrl+a's behaviour should be similar to its behaviour on the frame editor - one ctrl+a, select the whole frame. Two ctrl+as, select all frames in the song.
1d) Supposedly, insert and delete will create a frame with unassigned pattern numbers and delete the selected frame, respectively. These only work if you select them from the context menu. This means a right click, a seek and a left click - slow! Please let me hit the keys assigned to them.
1e) The frame editor does not capture arrow key input. Make it so that the arrow keys move the cell selection up/down/left/right.
1f) With all this focus capturing the frame editor is doing now, there probably needs to be a way to swap focus back and forth without the mouse. Shift+Tab? Ctrl+Tab?
1g) The frame editor could capture scrolling on the mousewheel (one frame moved per scroll), page up/page down (one frame? two, four? not sure), home/end (jump to first/jump to last frame)
1h) How about a keyboard shortcut for 'duplicate patterns'?
1i) One thing the frame editor actually captures is + and - on the numpad, which increases and decreases the cell number of the current selection. Once selecting multiple cells at once comes in, these should be able to increment/decrement the whole block at once.
1j) I would like to be able to drag frames around by clicking and dragging on their frame number on the left.
1k) 'move up' and 'move down' have no assigned keyboard shortcuts. Page up/page down?
2) Say you are defining an instrument's volume envelopes using Axx effects. This has the side effect of needing the volume reset for every new note. Since the common case is to set it to the same number for every note, there are a bunch of ways this could be handled;
2a) A 'volume mask' that is by default off - when on, every note entered acquires the volume of the last row you edited.
2b) A 'select all rows that start new notes' function, and a 'edit value into all rows in my selection' function. This would have a myriad of other uses - it would make same channel reverb a lot quicker to set up for example.
2c) A 'Replace volume' function like replace instrument, that sets all rows to the volume of the first row.
[color=black]3) The speed, tempo, rows, frames and step settings can't be selected with the mouse and typed into. This is especially bad for tempo since it takes forever to set to the number you want. [color=grey](Already implemented: Speed, tempo, etc can be edited, but only after a doubleclick. This is un-intuitive and should be fixed imo.)
4) When you 'paste' Famitracker should select all all the cells that were pasted into. When you 'paste and mix' the selection should consist of a sparse selection of ONLY the cells that were empty and that the paste considered for alteration - e.g. if the target was empty and the selection would have pasted something into there, even if the selection had nothing there, it is selected. This would then let you do things like 'Replace instrument' 'Replace volume' and other functions (hypothetical or otherwise) that alter only the cells you have selected.
4a) The above suggestion has 'make single channel reverb really easy' in mind. The workflow should be something like this:
-Select set of notes, copy
-Move X rows down, copy and mix
-Now only the cells that can be touched by the mix are selected. Do transpositions, replace instrument, replace volume, replace Axx effects, etc as necessary.
5) Improved selection for the pattern editor:
Right now you can do
-click to move focus to single cell
-doubleclick to select whole channel for that frame - double click on row number to select whole frame
-shift click to select a box from selection to new point
How about adding these:
5a) Clicking on a row number should be considered as selecting the whole row.
5b) Ctrl+clicking should add an unselected cell to your current selection set. Ctrl+click on a selected cell adds its whole row for that channel. Ctrl+click on a selected row for that channel selects the entire row for that frame. ctrl+clicking that unselects that whole row. Ctrl+doubleclick could either jump two ahead or go straight to select that whole row.
[color=black]6) If you have only volumes selected, using the scroll wheel should increment/decrement them by one point each. If you have only effects selected (one or many columns), using the scroll wheel should increment/decrement them by one point each. [color=gray](Already implemented: Shift+mousewheel and ctrl+mousewheel performs this.)
7) Some function that would increment/decrement your selection's position in time by single frames each, smartly pushing the rows up and altering Gxx effects. The main problem is that if speed != 150 then it is indeterminate how many frames a particular row takes up (as it depends on when you started) - but if it just picked an arbitrary but consistent starting point the errors would not be too great, possibly even appreciated.
8 ) A 'start playing from this row' function. It could start playing from the start of the pattern and process it as fast as possible until the current row, then start playing. Currently, if you want to see how something sounds but it's in the middle of a pattern you have to play from the start - if your patterns are large this is a lot of time spent listening to other things.
[color=black]9) Some kind of smart 'fill in effects that were still active in the previous pattern' mechanism. Maybe a toggleable option. Right now effects' continuation from pattern to pattern feels like programming in C - as in 'oops, you forgot to free this pointer, I'm not going to tell you and you're leaking memory' -> 'oops, you forgot to continue or end this effect, I'm just going to make the song sound different depending on which pattern you begin from'. Such an option would make it explicit what effects are ongoing and what aren't. If there are too many active effects to fit on one row they could be spilled in an arbitrary order onto successive rows. [color=gray](Can't be done: Frames can be re-arranged at any time, so the answer to the question 'what effects are outstanding' can change.)
10) If you're entering using a MIDI keyboard and play a chord, currently I believe only the last note played will appear in the pattern editor - it would be sweet if, upon hitting all notes in a very short window (<1/60th of a second), they got smartly arranged out onto successive channels. Go to the right skipping noise and DPCM, wrap around at the end. Probably should be a toggleable option too.
-What easy ways have you found for doing otherwise tedious things?
-What tedious things need easier ways to do them?
-I see Famitracker is open source - which of these should I try implementing?
-If I think of anything else, I'll make a post for it and also edit this OP.
[quote=Patashu]3) The speed, tempo, rows, frames and step settings can't be selected with the mouse and typed into. This is especially bad for tempo since it takes forever to set to the number you want.[/quote]
Try double-clicking those fields.
[quote=Patashu]4) When you 'paste' Famitracker should select all all the cells that were pasted into. When you 'paste and mix' the selection should consist of a sparse selection of ONLY the cells that were empty and that the paste considered for alteration - e.g. if the target was empty and the selection would have pasted something into there, even if the selection had nothing there, it is selected. This would then let you do things like 'Replace instrument' 'Replace volume' and other functions (hypothetical or otherwise) that alter only the cells you have selected.
4a) The above suggestion has 'make single channel reverb really easy' in mind. The workflow should be something like this:
-Select set of notes, copy
-Move X rows down, copy and mix
-Now only the cells that can be touched by the mix are selected. Do transpositions, replace instrument, replace volume, replace Axx effects, etc as necessary.[/quote]
That's probably not necessary. Single-channel echo is already a breeze achieve in no time; if you need transposition, your best bet is to paste clipboard contents into an empty frame, apply all your modifications there, then cut that and paste&mix into the destination frame.
[quote=Patashu] 6) If you have only volumes selected, using the scroll wheel should increment/decrement them by one point each. If you have only effects selected (one or many columns), using the scroll wheel should increment/decrement them by one point each.[/quote]
Shift+scroll wheel already does that.
[quote=Patashu] 8 ) A 'start playing from this row' function. It could start playing from the start of the pattern and process it as fast as possible until the current row, then start playing. Currently, if you want to see how something sounds but it's in the middle of a pattern you have to play from the start - if your patterns are large this is a lot of time spent listening to other things.[/quote]
You can define a shortcut for this in the settings. Look for "play from cursor". Right now though it doesn't compute what comes before that row so if you have any sort of effect going on it won't take those into account. I suppose making it process the pattern up to that row would be a plus, but I don't know how trivial or difficult that would be to implement...
[quote=Patashu]9) Some kind of smart 'fill in effects that were still active in the previous pattern' mechanism. Maybe a toggleable option. Right now effects' continuation from pattern to pattern feels like programming in C - as in 'oops, you forgot to free this pointer, I'm not going to tell you and you're leaking memory' -> 'oops, you forgot to continue or end this effect, I'm just going to make the song sound different depending on which pattern you begin from'. Such an option would make it explicit what effects are ongoing and what aren't. If there are too many active effects to fit on one row they could be spilled in an arbitrary order onto successive rows.[/quote]
That sounds like a neat idea, but bear in mind that there are two schools of thought for trackers: those where you have to continually enter the effect in order for it to keep working, and those where you toggle its start and end point. Famitracker belongs to the latter. While having toggle-type effects does save time (you don't have to spam the same effect all the time, wasting a lot of rows and time), it does come with a certain responsibility because you have to be wary of effects that could go on longer than you want them to. I think it's just inherent to this type of tracker workflow, and if you're going to have the program end the effect automatically, might as well revert to hold-type effects like OpenMPT, MilkyTracker, VGMMM and so on...
The rest of your ideas is pretty neat and I'd like to see those happen some time in the future!
_______________________
Follow me on [url=https://twitter.com/jrlepage2a03]Twitter.
I record (some) NSFs on hardware. Feel free to [url=http://www.famitracker.com/forum/posts.php?id=3633]request a hardware render.
[quote=jrlepage][quote=Patashu]3) The speed, tempo, rows, frames and step settings can't be selected with the mouse and typed into. This is especially bad for tempo since it takes forever to set to the number you want.[/quote]
Try double-clicking those fields.[/quote]
Thanks - but why not just make it single clickable? The fact that it is grayed out by default makes it look cold, sterile and uneditable.
[quote=jrlepage][quote=Patashu]4) When you 'paste' Famitracker should select all all the cells that were pasted into. When you 'paste and mix' the selection should consist of a sparse selection of ONLY the cells that were empty and that the paste considered for alteration - e.g. if the target was empty and the selection would have pasted something into there, even if the selection had nothing there, it is selected. This would then let you do things like 'Replace instrument' 'Replace volume' and other functions (hypothetical or otherwise) that alter only the cells you have selected.
4a) The above suggestion has 'make single channel reverb really easy' in mind. The workflow should be something like this:
-Select set of notes, copy
-Move X rows down, copy and mix
-Now only the cells that can be touched by the mix are selected. Do transpositions, replace instrument, replace volume, replace Axx effects, etc as necessary.[/quote]
That's probably not necessary. Single-channel echo is already a breeze achieve in no time; if you need transposition, your best bet is to paste clipboard contents into an empty frame, apply all your modifications there, then cut that and paste&mix into the destination frame.[/quote]
What about the situation where all your channels are full and you're using an extension chip? You'd have to scroll to a frame or temporarily change a pattern number to clear up space, paste into it, do your edits, cut it and paste it back and revert the rest of your song to normal. With such a 'paste and mix selects touched areas' feature, you could copy, shift, paste and mix, and do instrument replacement/transposition/volume/effect changing immediately. Saves time in the worst case.
[quote=jrlepage][quote=Patashu] 6) If you have only volumes selected, using the scroll wheel should increment/decrement them by one point each. If you have only effects selected (one or many columns), using the scroll wheel should increment/decrement them by one point each.[/quote]
Shift+scroll wheel already does that.[/quote]
Excellent - I will have to remember this. However, scroll wheel usage with no note starts selected could still do this (as it currently does nothing, so there is no behaviour it could be confused with). While shortcuts are great, shortcuts you can discover intuitively are even better!
[quote][quote=Patashu] 8 ) A 'start playing from this row' function. It could start playing from the start of the pattern and process it as fast as possible until the current row, then start playing. Currently, if you want to see how something sounds but it's in the middle of a pattern you have to play from the start - if your patterns are large this is a lot of time spent listening to other things.[/quote]
You can define a shortcut for this in the settings. Look for "play from cursor". Right now though it doesn't compute what comes before that row so if you have any sort of effect going on it won't take those into account. I suppose making it process the pattern up to that row would be a plus, but I don't know how trivial or difficult that would be to implement...[/quote]
I imagine it would be like the 'turbo' function in emulators - do all the processing of CPU, graphics and sound and so on, then just don't call the methods that pass it to the screen and speakers until finally you're at the spot where you want to resume.
[quote=jrlepage][quote=Patashu]9) Some kind of smart 'fill in effects that were still active in the previous pattern' mechanism. Maybe a toggleable option. Right now effects' continuation from pattern to pattern feels like programming in C - as in 'oops, you forgot to free this pointer, I'm not going to tell you and you're leaking memory' -> 'oops, you forgot to continue or end this effect, I'm just going to make the song sound different depending on which pattern you begin from'. Such an option would make it explicit what effects are ongoing and what aren't. If there are too many active effects to fit on one row they could be spilled in an arbitrary order onto successive rows.[/quote]
That sounds like a neat idea, but bear in mind that there are two schools of thought for trackers: those where you have to continually enter the effect in order for it to keep working, and those where you toggle its start and end point. Famitracker belongs to the latter. While having toggle-type effects does save time (you don't have to spam the same effect all the time, wasting a lot of rows and time), it does come with a certain responsibility because you have to be wary of effects that could go on longer than you want them to. I think it's just inherent to this type of tracker workflow, and if you're going to have the program end the effect automatically, might as well revert to hold-type effects like OpenMPT, MilkyTracker, VGMMM and so on...[/quote]
I'm not suggesting the program end the effect automatically. I'm suggesting that with this option on the program makes it explicit what effects are still continuing from frame to frame. Actually, now that I think about it - the fact that your frames will be re-ordered over time makes doing this automatically problematic (as in it has to keep track of what effects it automatically inserted so it can move them, or somehow delay insertion). So maybe this is not such a good idea.
[quote=Patashu]Thanks - but why not just make it single clickable? The fact that it is grayed out by default makes it look cold, sterile and uneditable.[/quote]
They used to be editable until people complained about editing them unintentionally. Then jsr made them grey but editable by double-clicking them. Can't make everybody happy though...
[quote=Patashu]What about the situation where all your channels are full and you're using an extension chip? You'd have to scroll to a frame or temporarily change a pattern number to clear up space, paste into it, do your edits, cut it and paste it back and revert the rest of your song to normal. With such a 'paste and mix selects touched areas' feature, you could copy, shift, paste and mix, and do instrument replacement/transposition/volume/effect changing immediately. Saves time in the worst case.[/quote]
What I do is hit Num+, paste, edit, select all and cut, hit Num- and paste&mix.
[quote=Patashu]Excellent - I will have to remember this. However, scroll wheel usage with no note starts selected could still do this (as it currently does nothing, so there is no behaviour it could be confused with). While shortcuts are great, shortcuts you can discover intuitively are even better![/quote]
I'm not sure I understand what you mean by "no note starts"... The shortcut has always worked fine for me regardless of whether there was a note in my selection or not... Do bear in mind that it will affect instruments as well, so you may want to select just the one column you want prior to using shift+scrollwheel. It's also worth noting that ctrl+scrollwheel will do the same thing but with the notes, effectively making it a super fast transposing tool.
[quote=Patashu]I'm not suggesting the program end the effect automatically. I'm suggesting that with this option on the program makes it explicit what effects are still continuing from frame to frame. Actually, now that I think about it - the fact that your frames will be re-ordered over time makes doing this automatically problematic (as in it has to keep track of what effects it automatically inserted so it can move them, or somehow delay insertion). So maybe this is not such a good idea.[/quote]
Ah, my bad then. But still I think this comes with experience - I've been using this program for 5 years, and very rarely now do I run into the problem where I have hanging effects across patterns.
_______________________
Follow me on [url=https://twitter.com/jrlepage2a03]Twitter.
I record (some) NSFs on hardware. Feel free to [url=http://www.famitracker.com/forum/posts.php?id=3633]request a hardware render.
[quote=jrlepage]
They used to be editable until people complained about editing them unintentionally. Then jsr made them grey but editable by double-clicking them. Can't make everybody happy though...[/quote]
Editing them unintentionally seems... a difficult feat, given you're not liable to click over there and type numbers unless you're trying to edit it. ?_?
[quote=jrlepage]
What I do is hit Num+, paste, edit, select all and cut, hit Num- and paste&mix.[/quote]
Ok, that is pretty quick. Will have to practice this.
[quote=jrlepage]
I'm not sure I understand what you mean by "no note starts"... The shortcut has always worked fine for me regardless of whether there was a note in my selection or not... Do bear in mind that it will affect instruments as well, so you may want to select just the one column you want prior to using shift+scrollwheel. It's also worth noting that ctrl+scrollwheel will do the same thing but with the notes, effectively making it a super fast transposing tool.[/quote]
Ok, after some playing around I agree with you now - even when selecting something the behaviour of scrollwheel should be to scroll around. So needing modifier keys to change the selection rather than moving around is fine. Shift+scrollwheel and ctrl+scrollwheel look pretty useful now.
[quote=jrlepage]
Ah, my bad then. But still I think this comes with experience - I've been using this program for 5 years, and very rarely now do I run into the problem where I have hanging effects across patterns.[/quote]
Yeah, definitely - same as programming, you make less 'off by ones' and wrong relational operator choices as you get better, but you still make them on occasion and have to task switch while you realize what you did wrong.
Hi. I'll read all this in detail later, but the reason the edit boxes are locked (unless double-clicked) is because the focus was supposed to be returned to the pattern editor after any of values has been changed. There is a note in the help files that these boxes can be unlocked with double click.
Anyway if you feel like contributing with code for any of these then feel free, I'd appreciate it.
Some of your requests remind me of wanting a "remap" function a la Sunvox, which allows you to replace the instrument/note from one to another across the current selection, frame, or whole song. (IIRC, Sunvox doesn't have the limit to the frame option, but that shouldn't stop us from adding it here.)
I believe I requested frame-editor selection and copy/paste a while back but it was one of those that got shelved. That and that requests thread was axed not too long afterward.
You went on for a while about features that depend on sparse selections, something that (afaik) isn't currently implemented in FamiTracker. As for the effort involved in adding that, I honestly couldn't say. (I still haven't dove into the code, and there's an interface fork I dreamed up a while back that I'd still like to do...)
_______________________
[url=http://icesoldier.me]Website (includes FTM's of my covers)
There are times I wish I could see a diagonstic display of various engine states during playback (like active effects, playback frequency, etc.). It would help catch hanging effects, but also makes it much easier to understand what is actually going on as a result of whatever notes/effects you have typed.
The debug build actually has a little bit of such a display, but the release build does not.
[quote=rainwarrior]There are times I wish I could see a diagonstic display of various engine states during playback (like active effects, playback frequency, etc.). It would help catch hanging effects, but also makes it much easier to understand what is actually going on as a result of whatever notes/effects you have typed.
The debug build actually has a little bit of such a display, but the release build does not.[/quote]
Like a piece of nsfplay's keyboard view in Famitracker, right? That would be great to have, I've been considering suggesting it but couldn't figure out what format it would take (would it be rendered in each channel header, like the volume-o-meter is now? On the track as a kind of graph-over-time that follows the rows somehow? In a separate non-modal popup window?)
I've done some work on this recently so I thought I'd give some comments back. I'll post a beta preview with these updates later.
0) Mixed paste is available as a menu item now.
1a) Selection + drag & drop is working, but it can only select full rows (as opposed to the pattern editor). Sparse selection is not supported either.
1b) Ctrl+C/Ctrl+V works on selection but no additional paste modes at the moment.
1d) The keys insert and delete should do that already if you enable edit mode. (Double click or F3)
1e) Arrow keys works in edit mode.
1f) The key F2 is assigned to select the pattern editor and F3 to select the frame editor (and enable edit mode).
1g) Mouse wheel scrolling currently works when in edit mode. It would be nice if just hovering over the window worked, but I'm not sure if windows allows that.
1h) That will be available in the next version.
1i) Incrementing/decrementing selections doesn't work currently, but I can probably add that.
1k) Move up and down is assigned to Control+Up/Down (in edit mode).
2) A volume mask option will be available. Might do the other too.
4 & 5) I can imagine that sparse selections would be useful sometimes, but that's a rather major change to the pattern editor and I'm afraid it would require too much work at the moment. Maybe in the future.
You should however be able to select full rows right now by clicking (and selecting) the row number.
7, 8, 10) These are not done now, but I'll consider it in later versions.