Slight change of subject, since we seem to have FDS enthusiast here, I was wondering what kind of crazy things people managed to make with the ''custom'' wave form of the FDS sound channel. I feel like there could be some wicked possibilities.
Recent community posts
That Hardware sweep is intriguing :p
Thanks for the clarifications. I looked at the formula for pitch in the link and it makes more sense. One thing I am still perplexed about is why the channel pitch enveloppe goes from -128 to + 128 but the instrument enveloppe goes from -63 to +63 ? On a side note it is very difficult to fine tune the channel pitch enveloppe to a specific value. Maybe that level of precision is not actually useful, I don't know. But it triggers my OCD :p Is there a hidden control to nudge it +1/-1 ?
Ok let's move on to other matters, bugs. Today I tried to export my song to NSF and famitracker but I ran into issues.
NSF export file had a glitch with the triangle channel, it stops after like 3 notes. I tried it a couple times with the same result. The issue is present whether I Try to play the file with NSFplay or importing it back to famistudio.
For famitracker: After loading the txt file in famitracker, the song was missing ( or did not play ) chunks of music which seem to correspond to the end of my custom pattern lengths. Also, the ghost notes that I used for pseudo reverb seemed abnormally loud. I would suspect the attack was now active but I did not look further into it as Famitracker is rather alien to me.
I am attaching my famistudio song file if you would like to try it yourself to see if you get the same results.
I actually DO have a FDS that I got in a ''Junk'' lot from Yahoo Japan for peanuts. Quite a long time ago. It was never able to read disks but it might do for playing music? Can the extra FDS channel be accessed with a flashcart ? The extra FDS channel kind of scares me though, hahaha.
Also, I remember from years ago when I was pretty deep into console repair and modding, some folks were selling ''blank'' boards with expansion audio chips. They were intended for making repros. You just had to burn the ROM and install it in the board. I have a Gimmick NES repro that as far as I know was made with these. I meant to modify my NES to be able to play expansion audio but I never got around to it. My days of modding were a bit cut short when I became an ebay powerseller and my focus shifted.
The one thing that bugs me is why are the waveforms not aligned the same at each playthrough? If the reset points are predictable, does that mean that there is some randomness to the initial state of the waveform when the generator resets ? Or do the channels drift from each others over time ? Your explanation on what triggers the reset is indeed somewhat lost to me but what I do get is that it can be triggered by the right sequence of events. Maybe this can be exploited by playing some short ghost notes, will the reset still occur if the volume of the note is 0 ?
Using the pitch enveloppe to further control these issues sound like a good idea. Somehow I had not realized it allowed for such fine adjustments. How is ''one pitch unit'' defined ?
By the way I replied to your question on youtube in case you did not get a notification or something.
I could probably make some kind of interference test demo. Playing octaves or unisson typically results in some unpleasantness. Using different duty cycles helps but the best cure I found is to use a tiny amount of vibrato just to force the waveforms out of phase. But it is not 100% and once in a while a note kinds of craps out.
I am quite curious about the inner working of the sound generator in this regard. The annoying part is that the waveforms are seemingly never aligned exactly the same each time you play the same song, which makes fixing the occasional phase interference weirdness difficult. Is emulation accurate to the real hardware in this regard ? If so, are there some techniques to better control this aspect when you make music ?
Btw is your NES modified to play expansion audio ? I have a Famicom and I am contemplating getting a flashcart for it.
Here it is! Making this was quite an adventure. I went a bit overboard and used the MMC5 expansion for 2 extra square channels. It would have been hard to make the more atmospheric parts without them.
I love Famistudio. In a Normal DAW I just get lost in synthesizer settings and can't finish a project. The simplicity of the NES sound chip helps me focus on just making music. I still have some issues controlling phase interference as when you play the song twice it never sounds exactly the same. Using envelopes help mitigate interference artifacts but I still get a few random glitches here and there. I would be curious playing this on a real Famicom.
The title Mental Imperialism is at least in part conceptually inspired by the first novel of Frank Herbert's Dune. Which I re-read recently. Paul Atreides is faced with a cruel destiny and seemingly impossible odds. Yet he triumphs and becomes emperor through the sheer power of his superhuman mind.
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.
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.
This is gonna be great! Likely my most wanted thing from the wishlist. Will it also work with groups of patterns ? That is something I had not talked about in my original wishlist. Just the other day I wanted to copy a bloc of 3x4 patterns as new patterns at the other end of the song. The contemplation of having to do it manually one pattern at a time in the piano roll was depressing ( I still did it ).
Yeah the thread is a mess and has basically become general chat. The forum will eventually need sections but I suppose right now there are not enough users to bother.
A few ideas
- Gray out the options when dividing the note in even parts is not possible.
- Allow using it and round up or down but it always notches on the first frame of a note.
- Magnet setting uses frames instead of note divisions. Right click magnet opens a box where you just type or click up or down the number of frames you want between each notches. It always notches on the first frame of a pattern then follows along the grid you asked for. ( The more I think about it, the more I think this is the best option )
This should come handy! Will it be possible to tweak the magnet to match to half notes, third, quarter etc ? I suppose that might be a challenge considering the 60hz frame system has a high granularity. How do you compute a half note when when someone sets their note to have an odd number of frames ?
I very much like 12 frames per notes so far. Works with half, quarters and triplets.
Thank you for the continued development, I am really becoming addicted to famistudio. I have a new song coming nicely but I am now at the stage of tweaking the parts I don't like and this takes forever.
Indeed I had missed the message as it was posted in between older messages. I think it does that when you post something from an instance of the webpage that was not refreshed with the lastest posts.
I used ScreenToGif and made a Demo. As you can see, with the first paste it keeps the notes as they are formated the same regarding relative start time. But the second Note release is lost as it was not at the exact same place as in the original material. With the second paste, the notes are lost, except the first ( edit : and third ) one.
Another minor thing I forgot to mention. The special paste window text is cropped. It seems to be a system scaling issue. My system scaling is at 150%. If I change the settings in Famistudio it does not fix it. However setting my whole system to 100% fixes it.
For the alt + mouse wheel - Firstly it does it only with left alt. Right alt does not do it. And I noticed that I do not actually need to do them at the same time. If I press Left-Alt once, it locks the mouse wheel and wheel click. Edit ( it seems to be left-alt release that causes the issue. If I press and hold alt the mouse wheel keeps working until I release it )
Ok I think I got another one, a bit more serious. When using the special paste. I wanted to copy my volume enveloppe only. It still scrambles the notes unless you are pasting it against a single note that is formated exactly like the one you copied. In other words if I paste it on a single note, of the same length as the original one, with the release at the same spot, it works fine. But if the release is not at the same spot, it deletes the release. If you paste it on something that has more note than the original copied material it removes the extra notes. I have experimented with some variants and my feeling is that it will keep a note or a release only if there was one at the same spot on the original material. Again, that is with the special paste and only volume enveloppe selected.
While we are at it I just stumbled into another minor reproductible interface bug. I double right click to select a whole pattern in the piano roll, then drop an new instrument on the notes to change them. After that I cannot use ctrl-Up or Down to transpose one octave. It is not working. You have to cancel selection and start over.
While you are using the mouse wheel and press and release alt, the mouse wheel and middle click stop responding. If you press alt again. It resumes as normal. Doing most other operations will fix it as well. I had it happen a few times and could not figure out how I did it but I just found out and can reliably reproduce it.
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 ? )
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
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.
- 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.
Thank you for the great comments folks! This is motivating. This software really deserves a bigger user base!
I was considering sharing my tune on the famitracker forum but I am not sure if they would like that considering it was not made with famitracker.
You sure need some sort of publicity. I most likely would not have heard of Famistudio if your cousin Antoine did not tell me about it. ''Mouth to ear'' only goes so far. FamiStudio is perfect for people like me who never learned to use a tracker.
This is what I managed to make with Famistudio in my first week!
I never really released a composition before as I never seem to be able to finish them. And it has been years since I tried. I am never happy enough with whatever I make but I decided to release it as is and move on to a new one. I think this is a overall a healthier attitude than just letting my stuff die in a folder.
I was planning to make it longer but I got into a sort of writer's block and decided to cut it short into a ''game intro'' type of thing.
Overall I very much like the program so far and want to make more with it.
I imported some samples from another song but they are too loud in my mix. It does not seem the NES had a way of mixing sample volumes as I see no such options in Famistudio or Famitracker .
Unless I missed something I am considering the option of making my own samples or tweaking them with an external program. It looks like famitracker can convert wav to DMC but I see no way to tweak existing DMC.
Am I missing something here ?
Nice! I am glad there is a way. I had tried to drag the instrument itself from one instance to the other but it did not occur to me to try with the notes. I suppose a workaround could be to export to Famitracker, then use famitracker to export the instrument file.
On a side note, I had checked in the written documentation first and this trick does not seem to be included in the written manual.
Thanks again for the help.
As of now I have two projects where I have started writing some melodies and stuff.
In one of them I made some nice instruments that I like. Is there a smart way to transfer some or all of them to my other project ? ( short of recreating them by hand )
Can the famitracker instrument scheme be used for that ? I have never used famitracker.
If that is not a feature that is ok, I just want to know for sure.
On my side the note off is also a 90.
The keyboard i am using is an extremely vintage Yamaha portasound PSS-480 - Trying a different keyboard might be possible but a bit complicated at the moment.
Here I am with yet another apparent problem.
I have a midi keyboard connected to my computer via a m-audio Usb midi interface. Midisport 4x4 universary edition.
I have no problem with this setup in other DAWs. While it works in famistudio, when I release a key, instead of registering as a ''note off'' event, It seems to register as another ''note on''. The end result is a double note with short instruments or percussions and If I try an instrument with a loop in it, it plays forever. Any idea ?
* On a side note, is there a way to tweak the latency in Famistudio ? It is a bit too long for my liking and I see no settings to tweak it. I have a fast computer and I can play a typical VST instrument with virtually No lag in Cakewalk sonar using Asio4all.
You nailed it ! Good thinking. My windows scaling is set at 150%. I have a 2k monitor.
I went in the famistudio options and forced 100% scaling. It fixed it. But now everything is so small D: ( I have bad eyesight )
Ok I made a short video that shows the problem.
I used one of your demo song freshly loaded. Also, I just installed the non portable version and it does not fix the bug, I also restarted my computer, no luck.
As you can see on the video, the pattern position marker is moving slower than the actual playback and the piano roll marker. I am using a Behringer UCA200 usb audio interface for my audio output.
Famistudio 2.0.1 portable install
Specs - windows 10 64 bit Intel i9700k 32mb ram.
I am just starting with Famistudio and I quickly ran into an issue. When I play a song. Either one of the demo song or my own or even an imported NSF, the song position marker in the pattern section is moving too slow. It is lagging behind the playback. The marker in the piano roll is moving at the right speed though. The digital timer seems to also be advancing at the proper speed.
I am not sure if I am doing something wrong or if that is a know issue. I can make a video demo if required.
*On a side note, I watched the tutorial video and I cannot see this happening in the youtube tutorial.