dn-programming-core-management / dn-famitracker Goto Github PK
View Code? Open in Web Editor NEWmodifications and improvements for 0CC-FamiTracker (based on j0CC-FamiTracker 0.6.3)
License: Other
modifications and improvements for 0CC-FamiTracker (based on j0CC-FamiTracker 0.6.3)
License: Other
to make it easier for noobs to make sound
Currently, the default frame editor size is set to the number of 2A03 channels, which is also the minimum frame editor size. However, some people may find it quite inconvenient when it comes to expansion audio or multichip modules, due to having to re-expand the frame editor every time the module has to be opened.
Vanilla Famitracker and 0CC-Famitracker both had the ability to input effects that use numbers (such as 4xy) using either the top number row on the keyboard or using the number pad that many keyboards have.
However, this functionality was mysteriously absent from j0CC. I would love to see this restored if at all possible, as it's basically the only reason I'm reluctant to switch from 0CC.
todo:
The frame editor has received some changes in master... causing lots of regressions unfortunately.
I tested an old master revision (b6aa6cf), and there have been no substantial code changes between then and now (7022b89).
Expected behaviour: The module, upon tweaking any song/global setting and confirming the changes, would stay on the same song, with the same row position, after tweaking something in the aforementioned settings. The comments box would not reopen after this action, even if the tickbox for displaying it upon load is enabled.
Actual behaviour as of 0.4.0.1: The module, upon tweaking any global or song setting, resets itself as if you've reopened it upon confirmation. This includes displaying comments if the tickbox for displaying it upon load is enabled.
Deep cloning an FDS instrument of any kind seems to simply crash, at least according to 0.4.0.0 (assuming 0.4.0.1 as well since all that changed was the displayed version)
Set up:
The 64bit 0.3.0.0 version of Dn-Famitracker, (debug or release)
MacOS Catalina 10.15.7
Wine 5.7 installed via homebrew (wine-stable or wine-devel package is the same result)
Steps to reproduce:
File, open....
menu or use the iconFile, Save
or File, Save As...
menu or use the iconFile, open....
menu and type the same filenameResults:
You can't tell what folder you're in or navigate to another.
The file is saved (appears on the Mac desktop by default, nice enough)
Files can be opened successfully only from the desktop, and by entering the names, not by selection.
As a workaround I'm able to drag & drop files to open.
The following appears in the terminal from which Wine was launched:
002e:fixme:commdlg:IServiceProvider_fnQueryService Interface {e07010ec-bc17-44c0-97b0-46c7c95b9edc} requested from unknown service {e07010ec-bc17-44c0-97b0-46c7c95b9edc}
002e:fixme:shell:ViewModeToListStyle ViewMode 0 not implemented
002e:fixme:shell:IShellBrowser_fnSendControlMsg stub, 0x2632630 (2, 1026, a003, 0, 0x50b5d0)
002e:fixme:shell:IShellBrowser_fnSendControlMsg stub, 0x2632630 (2, 1026, a004, 0, 0x50b5d0)
002e:fixme:shell:IShellBrowser_fnSendControlMsg stub, 0x2632630 (2, 1025, a003, 1, 0x50b5d0)
002e:fixme:shell:IShellBrowser_fnSendControlMsg stub, 0x2632630 (2, 1025, a004, 1, 0x50b5d0)
i have a branch of famitracker supporting address sanitizer (https://github.com/nyanpasu64/Dn-FamiTracker/tree/asan). note that file dialogs crash for an unknown reason.
turns out that increasing the tick rate of a vrc7 module by over double can result in memory corruption (writing past the end of the vrc7 audio buffer), even in unmodified master.
explanation at https://docs.google.com/document/d/15j5uyfIH5t6j3NrhJSDfylctmWX7DUJFc3zhRt3elC8/edit#bookmark=id.ob7ro7klshus.
it crashes instantly in asan, it crashes sometime later in non-asan.
Vanilla FT was definitely not designed for larger monitors.
As title says, app crashes on startup for me, affects version 0CC-FT versions 0.14.5 and up including dn_famitracker binary release 0.2.1
May be specific to my system but I dont have the tools to decrypt the crashlogs
You intended to make a new release three days ago, but it's not on the releases page.
Due to updates to Visual Code 2019, Dn-FamiTracker will be dropping Windows XP support for all new releases of Dn-FamiTracker.
While this may be sad to hear for some, we really can't keep supporting a deprecated operating system that is 7 years past it's extended support lifespan.
Despite this, the latest version as of writing (release 0.3.1.0) still supports XP. Consider this build the "legacy" compatible build for older systems. With the release of the next Dn version, 0.3.1.0 will be effectively "legacy" and/or deprecated. When 0.3.1.0 becomes obsolete, it too will become deprecated, and any bugs in that build will not get fixed unless it also affects all later builds of Dn-FamiTracker.
don't know why it happens, but CSoundChip2's volume API does not have this problem, and replacing emulation cores will fix it over time.
Currently, hardware envelopes are set to effect EEx, and are largely unintuitive and are often not known about. I propose we could give the volume editor a toggle for hardware envelopes, since it both simplifies the workflow (no more manual decay instruments!) and allows one to further utilize the sound hardware.
ASAN crashes when i open a file dialog. i don't know if it's a spurious crash... or gasp a real bug (the CString use-after-free i've been ignoring).
Set up:
The 64bit 0.3.0.0 version of Dn-Famitracker, (debug or release)
MacOS Catalina 10.15.7
Wine 5.7 installed via homebrew (wine-stable or wine-devel package is the same result)
Steps to reproduce:
File, Configuration....
menuResult:
Famitracker crashes, the following is printed in the terminal which was used to launch wine:
0009:err:seh:setup_exception stack overflow 2512 bytes in thread 0009 eip 000000007bc8c30c esp 0000000000410c40 stack 0x410000-0x411000-0x510000
Beta 0.5 of FamiTracker (as well as it's April 2020 build) have successfully implemented automatic wave RAM allocation for the N163 expansion chip. While 0CC/forks do minimally support it, all it does is disregard the toggle for said dynamic allocation, instead forcing the user to manually allocate the wave RAM for the instrument. Finding a way to implement this feature would be very nice, and quite possibly extremely beneficial to many FT users, helping simplify the N163 workflow.
Now onto the second issue. The later April 2020 beta of Vanilla FT introduced a new module format, same for the pattern data copied to and from the clipboard as well. While I don't expect 100% compatibility with this version, being able to at least read this changed module format would be very useful, same with the "copied pattern data" issue.
There's also some other small quality of life changes to the tracker done in the 2020 beta that I'd personally love to see in Dn-FT at some point in the future (I wouldn't consider these as necessary or required changes):
[image would go here, but it crashes amazingly]
With the ability to switch between different VRC7 hardware patch sets (some of which , a cool extension that immediately suggests itself is to be able to use your own, user-defined sets of patches. this would essentially get around the vrc7's limitation of only one user-defined patch at a time, which would really expand the capabilities of what you could do without (hopefully) too much difficulty of implementation.
Extends Levant DPCM bass has notes which reference a (n/a) unoccupied sample slot. When you export the DPCM bass and reimport, they turn into a 0-byte sample with an empty name, which turns into 1 byte when you save and reopen the module.
CSoundGen::PlaySample() deletes any sample with an empty name. This causes memory corruption when you preview (but not play) the sample, then close the document or preview the sample again.
First, I'd like to say I'm very glad that DN-Famitracker supports the ability to spell black piano keys as flats. It's a huge help when working in flat key signatures, and it's a feature most trackers lack. However, I think there is room for further improvement in the way note spellings are handled.
One major flaw in this scheme is that it must be manually changed when switching between a song with a sharp key and one with a flat key--or two different sections of a single song that changes keys. There are also times when you want both sharps and flats in a single key--for instance, Bb and C# in the key of D minor.
Additionally, it's not unheard of to see notes like E#, Fb, B#, Cb, or double sharps and double flats in sheet music. Ideally, I'd like all of those to be supported, but it'd be a lot of effort for something that is only rarely useful. It's probably reasonable to draw the line here, but I thought I'd mention it, at least.
Given what I've discussed above, I'd like to propose several different potential ways to address the handling of note spellings:
Thank you for your time and consideration. I have also submitted a similar request to BambooTracker. I mention this only because BambooTracker shares a lot of code with DN-Famitracker, and hopefully it is possible to avoid duplicated effort.
The meaning of the name "Dn" is whatever you wish it to be.
So what you're saying is that the official name for Dn-FamiTracker is "Deez Nuts FamiTracker"? 😏
Using && when an instrument has a duty set gets reset back to V00 during playback. It's supposed to hold the current duty that is set as well. Effects all chips that allows you to change that.
Edit: It effects all chips apparently, even the VRC7. In that ones case, it swaps to another patch. Weird.
Should add a way to enable on a per-module basis:
&& means "change pitch but don't retrigger note". Qxy means "bend towards a new pitch". Together, the pitch changes, but Qxy bends towards old pitch + y.
Same thing happens if you remove the note and &&, but use T0y (to the left OR right of Qxy) to change the pitch without retriggering the note.
demo module: && Qxy bug.zip
The VRC7 channels can produce unwanted noises when playing back/stopping a module.
Steps to reproduce the issue:
From 3F and 63 to FF and 256?
The jump to v0.3 was a warm welcome, what with its features, but I unfortunately found a somewhat annoying bug while messing with the VRC7 instrument presets. The presets play as intended (Patch 1 sounds exactly like Patch 1, Patch 2 sounds exactly like Patch 2, etc), but the instrument data that's read is completely different from their intended data. The preset data itself is read as follows:
1: $13 $41 $14 $0D $D8 $F6 $23 $12
2: $31 $61 $0C $07 $A8 $64 $61 $27
3: $02 $01 $06 $00 $A3 $E2 $F4 $F4
4: $23 $21 $22 $17 $A2 $72 $01 $17
5: $B5 $01 $0F $0F $A8 $A5 $51 $02
6: $71 $23 $11 $06 $65 $74 $18 $16
7: $61 $63 $0C $00 $94 $C0 $33 $F6
8: $01 $01 $18 $0F $DF $F8 $6A $6D
9: $05 $01 $00 $00 $F8 $AA $59 $55
A: $00 $00 $00 $00 $00 $00 $00 $00
B: $00 $00 $00 $00 $00 $00 $00 $00
C: $00 $00 $00 $00 $00 $00 $00 $00
D: $00 $00 $00 $00 $00 $00 $00 $00
E: $00 $00 $00 $00 $00 $00 $00 $00
F: $00 $00 $00 $00 $00 $00 $00 $00
These exact "bugged" presets are consistent throughout each and every patchset.
This would be especially useful for expansion audio music creation if you want to hide channels your are not using lets say for example the stock NES Triangle channel or DPCM channel.
i had the code at some point in the past, but no gui.
exo has a gui of sorts, with 4 options (probably more than needed).
There is an obscure trick you can do with the VRC7 expansion chip to generate extra "patches".
Here is a song I made a while ago which demonstrates this: https://youtu.be/T2mho3IAwFE
In FT this involves changing the patch in quick successtion (usually speed 1) like this:
(using &&
instruments provides the most consistent results in the exported NSF)
The problem is that the resulting sound is completely different between j0cc-FT, Dn-FT, and NSFPlay. I have attached a demo module so you can compare the sound in the software I've mentioned.
VRC7Flex.zip
I'm hoping that the NSFPlay core can be integrated for the VRC7, much like the 2A03/FDS.
(An outlandish request if possible: It would be convenient if this behaiviour can be implemented into an instrument, with a UI similar to a duty cycle macro.)
Hello there, Gumball2415! My name is Juan Reina, I am a blind boy who loves chiptune, including nes/famicom! I have been following famitracker from the days of Jsr, Hertzdevil, Nyanpasu64, and now to you. I am using a screen reader called NVDA, opensorce screen reader for windows, found at https://www.nvaccess.org/ if you like, you can download the screen reader, and give it a shot. Additionally, the blind can only interact with the computer using the keyboard, as we can't see to use the mouse.
What dnft doesn't report. Note. I only figured these out by guessing and paycients. Press alt for the menu, rite to instrument, and enter on new instrument. No version of famitracker reads the channel you're on, tab changes channels. At least the instrument editor reads out and all keys work. Apparently, ctrl home and end do something, but screen reader doesn't report anything. The editing of notes are the hardest, as we don't know where we are in the view if you use the arrow keys, it doesn't report anything. They're more, but these are the little I can think of. I don't know how to code, but I love hardware made chiptune. I hope you will consider making this more screen reader friendly, as alot of people who are blind, really love famitracker, and it being accessible would just be the icing on the cake. Edit, I hope other people from the famitracker community help with this, especially cause I saw Nyanpasu64 and others from famitracker community here.
MakeDPCM is comparatively more flexible in converting .wav files to DPCM than the old DPCM import, most notably with finer preprocessing input .wav files and its reduction of positive DPCM bias through a moving average algorithm.
I am planning to implement the following:
In the tracker, when using the automatic FM effect would produce a modulation rate over the maximum i.e. greater than $4806 = $FF and &4807 = $0F, they just get set to the maximum of $FF and $0F respectively, When exporting to NSF, however, the values overflow and wrap around to lower, incorrect values. This bug has been present since 0cc, but I figured that I'd mention it here again. I've attached 0cc and NSF files that succinctly demonstrate the bug.
fds.bug.zip
noticed Dn isn't a fan of opening the downloads folder if you opened the program with a module file (i.e: double clicked an associated FTM/0cc file to open)
I used to see this, no longer see it.
I've noticed FamiTracker versions in general change how the filesystem browses depending on whether you opened FamiTracker from a module or if you open it from the executable itself
Certain directories just kinda become inaccessible if you open from module
On my machine, if you call the dn-ft .exe and pass in a .0cc or .ftm file, then the Open dialog is missing "This PC".
This occurs regardless if you call it by a 8.3 .exe name or a long path, through either a file association or in a console. (Dn-FT sets itself as a file handler for .0cc files, using a 8.3 path for the EXE, but the module is passed in as a long path. This is not the bug.) It does not occur if you call Dn-FamiTracker.exe -console
(a command line argument that's not a file to open).
It would be nice with support for OPNA, basic support for the SSG channels are already there in the S5B
but the 6FM channels and possibly adpcm would be nice too
When toggling the "auto arpeggiate chords" setting under the MIDI tab and holding multiple notes on the keyboard, the selected channel will arpeggiate as normal, but if other channels of the same type are available (e.i. other pulse channels), those channels will still play. This is not present in 0CC-Famitracker, where, when the same setting is toggled on, the other channels remain silent and the selected channel arpeggiates without any other channels sounding.
I hope that makes sense. Let me know if you need anything to help with debugging :)
This is something that has already been explored in the past but hasn't been updated in a while. The only program I could get to work that imports NSFs into Famitracker is this program by rainwarrior. However, this version runs off of Famitracker 0.3.7, so it doesn't support expansion chips N163 or 5B.
Is this something that would be possible, or would it be outside the scope of Dn-Famitracker?
Dn-Famitracker will he support Android in the future😊?
corrupt module :(
the last thing i did was save the module and unplug the pc immediately after because i had to leave
hmm, the hex view shows a bunch of 0s
After some users in the famitracker.org server requested both a triangular vibrato effect and a one-sided vibrato effect, I decided to combine the two concepts into a single effect:
5xy - Triangular Vibrato
x = Vibrato speed (in ticks per frame / 3)
y = Vibrato depth
50y - Channel Vibrato Settings
y = Bitwise Vibrato Control:
Bit 0: Disable upper portion of vibrato
Bit 1: Disable lower portion of vibrato
Bit 2: Reverse vibrato direction
Bit 3: Invert vibrato pitch changes
Settings edited with 50y apply to both 5xy and 4xy.
Sample pitch macro generated by 5xy commands, using default vibrato settings:
515:
| 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 0 0 -1 -1 -1 -2 -2 -2 -3 -3 -3 -4 -4 -4 -5 -5 -5 -4 -4 -4 -3 -3 -3 -2 -2 -2 -1 -1 -1
Same 5xy pitch macro, but with an 508 effect applied beforehand, inverting the sequence:
| 0 0 0 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 5 0 0 0 -5 -5 -4 -4 -4 -3 -3 -3 -2 -2 -2 -1 -1 -1 -2 -2 -2 -3 -3 -3 -4 -4 -4 -5 -5 -5
This is a major feature change, but it could radically improve Dn-FT's functionally. Allowing users to edit pitch, arpeggio (including scheme arpeggios!), volume, and patch settings from an instrument would open up several doors for VRC7 composition, like complex arps, unique vibrato, and overclocked sound design.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.