Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs

FamiStudio

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

Option to mute piano roll click sounds while playing the current pattern in a loop.

A topic by Ren created Aug 13, 2020 Views: 127 Replies: 5
Viewing posts 1 to 2

Hi there!

Firstly, thank you very much for creating FamiStudio and making it opensource. I have tried to learn and use multiple trackers before, but have failed to make any meaningful progress in any of them. FamiStudio has been incredible, the UI feels very intuitive and the visual layout is very easy for beginners like me to grasp. Following through your first song tutorial was an absolute blast.

I've started making my own little tunes despite not really being a musician, and I find it a little hard to make melodious patterns. It's mostly just that I'm not very familiar with the tone of a particular note on the piano, so its a little hard to figure out if the pattern I'm making on the piano roll will sound good unless I play it.

The way I've tried to solve this is by having a constant feedback loop. Basically, I set the current pattern to loop continuously and add notes on the piano roll by clicking/pressing on it, which allows me to hear the pattern as I compose it and make adjustments if it doesn't sound alright. The one minor annoyance while doing this is that, the sound of clicking on the piano roll to add new notes interferes with the looped playback of the current pattern playing in the background. This is particularly noticeable while dragging a note in the piano roll, since the note plays constantly as I hold the mouse button down, making it harder to hear the full melody of current looping pattern.

I'm not sure if such an option already exists to do this directly, if not is there any other way to mute the piano roll. Having the ability to do this or get continuous feedback for the current pattern would be very helpful in experimenting with various tunes while composing.

I hope that the intent of the workflow I'm describing comes across clearly.

Thank you very much for your time.

- Ren

Developer

Hi! 

Thanks for the feedback. Seems like a fair enough request.

The only thing is that it might end up in the settings menu, is that OK with you? I don't want to add new toolbar buttons for very specific workflows, its getting crowded up there already!

-Mat

Awesome, thanks for replying.

Alright, so we would need an option in the settings menu to control this muting behavior. Sounds good.

I'm not much of a C# guy, but as far as I can tell, note playback on dragging  is being done at PianoRoll.cs, line 3079: App.PlayInstrumentNote(noteValue, false); And we would need to add a condition here based on the new settings option that would need to be created right?

I might take a stab at this if I manage to get the build process to work for me on linux.

Thanks for your time.

- Ren

Developer (2 edits)

Yes it is.

So I made it so that it only disables dragging sounds only when the sound is playing. This should give you the best of both world. You'll get silence when you are looping on your pattern, and you'll get audio preview otherwise. 

Btw if you have an idea for a shorter name for this option, let me know. Its very wordy right now.

-Mat

This is great. Thanks a lot for adding this.

Maybe the option could be named: "Mute piano roll interactions during playback.", but yeah its almost equally wordy.

Btw, I wasn't able to get it to build on Linux. Wasn't sure of how to fix this or if I was missing something.

All the mono packages (gtk-sharp-2 gtk-sharp-3 mono-msbuild mono-addins mono-tools mono-msbuild-sdkresolver monodevelop-bin) have been installed on my system. OpenTK dependencies seem to have been pulled as well, I'm guessing maybe its not the right version... Anyway, I'll try looking around to see if there's anything else I can try.


Thanks for your time.

- Ren

Developer

I'm not in front of my Linux machine right now, but my guess would be that maybe you grabbed a more recent version of a dependency in MonoDevelop?

I use very specific version (GTK# 2.12, OpenTK 3.1.0) i think and have no plan to update anything at the moment as things are pretty stable on all platforms. For example, I know GTK 3 has been out for almost 10 years and OpenTK has a 3.2.0 version, but i have no need to update. :)

I do prefer your option name, even if it is just as wordy.

-Mat