Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

FamiStudio

FamiStudio - NES Music Editor for chiptune artists & homebrewers · By BleuBleu

MaxWar's Wishlist

A topic by MaxWar created Jun 04, 2020 Views: 559 Replies: 11
Viewing posts 1 to 11
(3 edits)

I love famistudio but as I use it sometimes I run into something I wish I could do but apparently can't. I will use this post to log such things into a coherent list.  Hopefully this type of user feedback is useful!  I will update the list If I think of more things. If there is already a solution to something I mention my apologies in advance and hopefully someone can point me in the right direction. 

Quality of life improvement

- The ability to easily copy a pattern as a new pattern.  You can do this manually by copying into a selection  but it is a little labor intensive and it took me some time to get used to. Quite often I want to play the same pattern but with  a small variation.

- The ability to copy a pattern into a different channel.  Same as above you can do it manually but labor intensive. 

- When you want to load a project, instrument or DMC, Famistudio remembers the last folder you browsed. I wish it would remember the last folder browsed for this specific task rather than just the last one altogether. It just happens all the time, I want to load a project but the open window starts in my instrument folder. Then I want to load a DMC. It is in project folder. I have to navigate manually all the time.

- The ability to save and load instruments.  I used Famitracker to export my instruments.  I think it would be nice to be able to save instruments inside famistudio.

-Not sure if this one would have unintended consequence but : Muting channels that are not currently playing a pattern. The last note of the last pattern keeps playing forever and I find it annoying. I often find myself putting a note stop at the end of a pattern just to avoid this. 

-The ability to Solo channels. 

Features

- Standard timer - Minutes - Seconds etc

-The ability to export to midi file. Not a priority but that would be a nice feature to quickly export melodies to other DAWs. 

-Importing midi - Same idea as above. Right now I am recycling some composition drafts I had made in FL studio and I transfer it all by hand. Being able to use a midi file intermediary would speed up transfer greatly, even if some manual adjustment would be needed. 

Developer

Thanks man. Just to let you know i read the post. I just need to go through the list one-by-one and think about the impact.

Some are obviously trivial, some I need to think more. Ill get back to you.

Btw to solo a channel, "right click" on the channel icon.

-Mat

Hah! Thanks for this. I remembered you had talked about solo somewhere in the tutorial. I guess I was too lazy to find the reference or look into the manual. 

Developer

Quality of life improvement

Copy patterns (same of different channel)

I would like this too, im just not sure how to do it in a way that will be clear to the user what is a copy versus what is an instance. Do you have a suggestions? In the meantime, here is how i do it very fast.     
    1) Go in the pattern you want to copy
    2) Double-right click on header to select all notes
    3) Copy
    4) Double-right click on header of the destination
    5) Paste
    
  

Better remembering of folders

    Easy fix, will do right away.

Save/load instruments

Here is what i would propose, let me know if that would work for you. What if the same button that let you open FamiTracker instrument files (FTI) could let you open a FamiStudio file. Then it would show you a list of instrument that are in it, with check boxes, and you pick the ones you want. So basically you could create yourself a dummy project that is a collection of all your favorite instruments and just load them when you need them. What do you think?

Mute channels with no patterns.

This one is tricky. When you press play, FamiStudio will try to be smart and figure out exactly how the song should sound at this point in time (unlike FamiTracker, which does a really bad job of this, playing in the middle of a song will somtimes result in the wrong instrument, etc.). I would prever to stick to that rule. In understand that in the middle of composing a song, things are half-done and might have lingering notes, but changing this feels wrong, you end up with a song that could sound different depending on where you play from, and this scares me.

Solo channels.    

Right-click on channel icon.

Features

Standard timer (MM:SS)

Ok, but i would make this an option in the configuration, how does that sound?

MIDI support:

This one i will need your help with. Ive had a lot of requests for it but I'm not a MIDI guru. The 2 main issues are:
1) How to handle the fact that MIDI files can have many notes playing at once? When loading a MIDI file, how do we assign them to the 5 NES channels? How do we map them to instruments? Any suggestions is welcome here. It needs to be simple and intuitive.
2) How to handle tempo. You've watched my tempo video, NES run at 60FPS, so we are very limited in what we can do for tempo. How do you think we could map the speed of a MIDI file to FamiStudio?

-Mat

1. For copying the patterns as new patterns, what would be nice is a way to do it without the piano roll. How about Shift-Left click on a pattern then drag and drop? Just like when you use ctrl to copy a pattern but when you use shift instead it makes it into a new one. 

2. For saving and loading instruments, I like your solution. In a way it is more convenient than the .fti scheme.  

3. Muting the channel with no pattern - I am not sure I understand the problem you explain.  I do not see how the audible note trailing outside of patterns serves any useful purpose.  I guess a simple way to implement this is simply to force a note stop event on a channel when the playback arrow reaches a boundary between Pattern and No pattern. This would also work with the NSF export and the way the NES ''thinks''. 

3. I like everything else that you propose. 

4. Regarding the midi support, I realized when I proposed it that it would be complicated. That is why I said not a priority.    I read on the famitracker forum that they had this functionality in the early days but they ditched it because it was too buggy. That is a bad sign I guess but possibly it would be worth downloading one of these old versions and see how it worked ?  It would be limited to be sure, that is unavoidable. 

Here are some ideas that just popped into my head. 

  • *Midi Channel 10 goes into Noise
  •  *Midi channel 1, 2 ,3 go into Square 1, Square 2 and Triangle respectively. All other channels are ignored unless maybe when you have some audio expansion loaded it uses the same mechanic with the next midi channels.
  • *Regarding polyphony, only the Highest note of each channel is imported.  Rest is ignored. Another more fancy idea would be to arpeggiate automatically when there is more than one note at a time on a channel. Maybe not on the noise channel though as this would just make a mess I guess. 
  • *DPCM is ignored.  Or maybe imported from Channel 4. Then you manually setup  your samples for it to make sense.
  • *Importing midi could ignores all instrument information from the midi file. However envelopes and slides are kept as much as possible.  I suppose Velocity and midi channel volume could be ignored, or fancily integrated into the channel volume enveloppes in famistudio. 
  • *When exporting to midi we would want to keep the channel enveloppes. I suppose instrument volume and pitch enveloppe could be converted into midi enveloppes too.  I noticed that when converting into NSF, those are all flattened into channel enveloppes. So they are the same thing in the end.  
  • *Not sure about tempo. I am not a programmer or a midi guru myself. I know midi files have a kind of basic time unit, the midi tick. Kind of like the frames in famistudio.  I googled midi tick and I found someone asking a question about how to compute note duration from midi information from a midi file. Once you have the note duration it could possibly be quantitized into its closest equivalence in term of  how many frames it lasts in Famistudio. 
  • They have some formulas in the link  https://stackoverflow.com/questions/2038313/converting-midi-ticks-to-actual-play...
  • *It would be the responsibility of the user to format their midi file properly before using it. I don't think users will expect to load a random midi file and have it work and magically sound like a NES. It would  be a tool to rapidly import melodies from elsewhere. 
  • *It seems someone made a small program to export Famitracker files to midi. I have not tried it but I'm curious how well it works.  http://forums.famitracker.com/viewtopic.php?t=610
Developer (1 edit)

Ha sh*t, had written a reply and accidentally pressed back!

1) Ok, that's not a bad idea. I'll think about it some more, sometimes i need to let ideas mature a bit in my head before i make up my mind. :) There is also the case of copy/paste which always creates instances right now. Another way of doing it would be to do something similar to the special paste in the piano roll (CTRL+SHIFT+V). We could pop a box which as options, one of those would be "duplicate pattern content" or something. But that's also not great. Ill think more, ok?

2) Got it working already.


3) Oh ok, so i think i understand now! If there is not pattern, we stop the sound. That's it. This one bugs me but i cant quite put my finger on why. One reason (although not a great one) is that is will now behave differently from FamiTracker, so im not sure how to accommodate this. Let me think about it ok? Maybe we could make it an options in the project to make everyone happy! :)

4) Thanks man, that's a lot of info. And you are right, the MIDI ticks can probably converted to frames. And channels, some MIDI messages like volumes, pitch bend can be mapped to the effects. Ill do some more reading, I am definitely a bit ignorant with MIDI stuff. One issue (which is not technical) that i learned the hard way when i added support for FamiTracker files, is that if you tell people that you support a format, they will open the file and just assume that everything will just work and sound exactly the same, obviously it will not! Almost nobody reads the documentation, no matter how much you tell them. That being said, most people that would be using MIDI are probably more "expert" than most, so maybe it could work. And MIDI export im less worried about, its import that worries me. Ill start by reading some more.

-Mat

Developer

More updates.


I've  lost a few long forum posts over the years this way! At one point I was paranoid and when typing long posts I  used a word processor and only pasted into the forum at the end. 

I am impressed that you got all these things working already !  You really did that in no time, you know your stuff.   

Regarding the real time clock. I was picturing it initially as an extra box alongside the pattern counter. It is a standard feature in many DAWs.  But the programs I actually use, Cakewalk and FL studio, they both have the clock box clickable so it switches between one mode or another. I find it a very efficient and more convenient than checking a box in the options.  Here is an exemple from FL studio ( Also what tool do you use to make and edit your demo gifs ?  )

 

Developer

Oh yeah,  good idea, ill do that.

(1 edit)

A few ideas regarding loop points. 

- When working with a project,  in the pattern view, I think it would be useful to also have a "end" or "terminate"  loop point, like in the instrument volume enveloppes. Sometimes your song layout is mostly completed but you have some leftover patterns that you do not necessarily want to delete yet. I like to put them at the end of the song into some kind of reserve. Then you may want to play the song for a while just to get the ideas flowing. Sometimes I would press play and let it run while i do something else like folding my laundry.  Right now  the song will also go through the reserve before looping. Which is not desirable in the context I just described.  Maybe the end loop point could be added or removed with L-right click. Which should not interfere with the current interface

- When editing instruments, I find it a bit awkward to remove loop points. Unless I am missing something, you basically need to slide the enveloppe duration back and forth to delete the points. This is a rather minor thing and you can get used to it but I am pretty sure most new users would find this weird and not intuitive ( like I did ). Having the ability to delete loop points with L-click like in the pattern view would give the interface a more unified feel. 

Developer (1 edit)

- That's a good idea for the loop point thing. But this mean everything on the "right" of the "endpoint" will never ever play right? Its just a temporary storage area?

- Just slide them offscreen (left or right) they will go away. Right click to delete would be nice, but i unfortunately already mapped the release point to right click. Not exactly consistent. Need to think about this.

(2 edits)

Things at the right of the endpoint should not play unless you purposely place the playback arrow past the endpoint. 

Edit : Regarding export of the song to other formats, I am not sure how they work but I presume NSF and famitracker do not have such a end loop point, only a song end. Then I think the special endpoint, which would be a special famitstudio feature, should be ignored so that the material in the reserve is not lost in the conversion.