Code Monkey home page Code Monkey logo

0cc-famitracker's Introduction

0CC-FamiTracker

0CC-FamiTracker is a modified version of FamiTracker that incorporates various bug fixes and new features which work in exported NSFs as well. The name "0CC" comes from the author's favourite arpeggio effect command. The current version includes:

  • Partial FamiTracker 0.5.0 beta support
  • Sound engine extensions:
    • Ad-hoc multichip NSF export
    • Echo buffer access
    • Polyphonic note preview
  • New effects:
    • Hardware volume envelope effects
    • Delayed channel effects
    • FDS automatic FM effects
    • N163 wave buffer access effect
  • Instrument extensions:
    • Arpeggio schemes
    • Instrument recorder
    • Compatible sequence instruments
  • Interface extensions:
    • Find / replace tab
    • Transpose dialog
    • Split keyboard
  • Extra module contents:
    • Detune settings
    • Groove settings
    • Bookmark manager
    • Linear pitch mode

See the change log for the full list of changes made in 0CC-FamiTracker.

This program and its source code are licensed under the GNU General Public License Version 2. Differences to the original FamiTracker source are marked with "// // //"; those to the ASM source with ";;; ;; ;" and "; ;; ;;;".

The current build is based on the version 0.5.0 beta 5 release of the official FamiTracker. 0CC-FamiTracker will be ported to newer official releases once they become available; features added in 0CC-FamiTracker may not have identical behaviour as the corresponding features on the official branch.

Links

0cc-famitracker's People

Contributors

hertzdevil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

0cc-famitracker's Issues

Disable selection operations when skip effects are present or when selection contains the same pattern in more than one frame

Consider a selection spanning across two adjacent frames:

Row Note Inst Vol fx1
2E C-3 462
2F D00
30-3F ... ... ... ...
00
01
02 D-3 464
  • Drag paste (may move skip effects to other frames)
  • Interpolate (may overwrite effects in between)
  • Reverse (may move skip effects to other frames)
  • Expand (may move skip effects to other frames)
  • Shrink (may remove lines containing skip effects)

Possible N163 Wave Position Typo?

When defining N163 Wave Position 127, the dropdown suggests waveforms past 127. Selecting 128 or higher in the wave position dropdown causes the FTM to break. I had to fix one of my projects using a hex editor because of the bug.

.

.

Sequence regions

Ability to split sequences into up to 16 regions, each redirecting to an individual sequence index and transpose value

2A03 sound chip class

  • combine CChannel and CExChannel (98bdd79)
  • defer all 2A03-related methods in CAPU to a CExternal-derived class (44e990b)
  • (optional) combine sound channel and sound chip classes through Composite pattern
  • combine related sound chip methods in CSoundGen (2d9ea4c)

Waveform generator interface

copied from http://0cc-famitracker.tumblr.com/post/137007965391/a-waveform-generator-interface:


An interface which exports the following functions: (see fa38a6e)

The wave editor in the tracker will no longer display the preset waveform buttons; instead, right-clicking over the wave editor reveals a "Generate waves..." option, which is a dialog that implements the following:

  • A parameter setter function using stWavegenParam;
  • A list control to perform the aforementioned functionality;
  • A function quantizing the generated floating-point waveforms;
  • Optional. Applying a master volume to the generated waveforms, or normalizing all generated waveforms;
  • A function applying a clipping behaviour to the generated waveforms;
  • Choosing a waveform preset generator;
  • Replacing the currently selected waveform with a generated one at a specific tick;
  • Optional. Previewing the current waveform selected by the tick as above;
  • Optional. Previewing all waveforms; (Waveform generators may not guarantee or enforce any specific wave index sequence)
  • Replacing all waveforms with the generated ones (must be supported by the underlying instrument type; N163 only, FDS not yet);
  • Optional. Applying a master frequency multiplier to the generated waveforms;
  • Optional. Applying a filter to the generated waveforms. (Said feature should belong in the waveform generator itself if desired; loses accuracy since CreateWaves already samples the waveforms)

The tracker should contain at least the following built-in generators:

  • Sine, no parameters;
  • Triangle, no parameters;
  • Sawtooth, no parameters;
  • Pulse, with 1 float parameter (pulse width);
  • White noise, with 2 integer parameters (tick count, seed).

The tracker should enumerate through DLL files located at the /plugins directory so that third-party developers may include their own waveform generators for all sound chips that support wavetables: N163, FDS, and future extensions.

Bookmark Manager

multiple bookmarks can be saved into the ftm, each with optional highlight amount, ctrl+page up/down to navigate

instrument preview issue

opening 3.14, immediately creating a new instrument and then previewing that instrument will cause all the notes from the lower keyboard to be continuously repeated from lowest to highest
pressing or clicking any key is ineffective
especially visible when using the VRC7, creates constant noise unless sound is halted

seems to be fixed by first playing the currently open module, stopping it and then previewing the instrument

edit: seems to have fixed itself after rebooting

Compatibility mode

  • check version of current FTM
  • report on detecting unsupported feature
  • enforce compatibility while modifying FTM
  • disable unsupported features
  • remove incompatible data from current FTM or saved FTM
  • separate i/o methods from CFamiTrackerDoc
  • configuration tab

Cleanup dialog

Enforces clean-up operations in the order as given below:

Frames

  • Remove inaccessible
  • Count data in unused

Patterns

  • Remove unused
  • Count data in unused
  • Sort indices

Pattern rows

  • Remove inaccessible
  • Count data in unused

Grooves

  • Remove unused
  • Clear (replace button from groove settings dialog?)
  • Sort indices

Instruments

  • Remove unused
  • Count data in unused
  • Clear
  • Sort indices

Sequences

  • Remove unused (verify)
  • (Optional) Clear
  • Sort indices

DPCM samples

  • Remove unused
  • Clear (also removes all DPCM assignments)
  • Sort indices
Options
  • Clear selection
  • (Optional) Presets (enumerate Windows registry? load ini?)
  • Clean up frames and patterns in current song only

"Count data in unused" may be enabled by the user to indicate that unused entities of one kind still record the usage of other entities. These options are disabled if the respective "remove unused / inaccessible" options are checked. During clean-up, the following inclusions are recorded:

  • Frames: Patterns
  • Pattern rows: Grooves, Instruments
  • Instruments: Sequences, DPCM samples

This allows, for example, one to keep instruments even they are only used on inaccessible rows / in unused patterns.

Classes for sound chips

e.g. when one attempts to use two instances of sunsoft 5b at the same time, each individual set of channels must use its own set of global variables

  • base class
  • 2A03
  • expansion chips
  • incorporate into CSoundGen
  • incorporate into CFamiTrackerDoc or CChannelMap
  • remove SNDCHIP_ constants

Interface improvements in 0.5.0 beta 5

  • Display average BPM (0577dda)
  • Display channel state
  • Registry entry for "Display register state" (b46dada)
  • Movable octave bar (dd7038b)
  • Control panel position
  • Meter decay rate setting (d2a1aa2)
  • Registry entry for frame editor font (fbe3764)
  • Save/load appearance settings (4d1212e)
  • Pattern editor row marker (bookmark) (25a50d9)
  • Mixer reset button (915e39e)
  • 5B noise / mode sequence MML field handling (05f4b08)
  • DPI scaling (6ea3409)
  • Remove octave setting from DPCM assignment editor (b236ad8)
  • DPCM sample editor (116aa88)

Eliminate brownian noise at very high frequencies

since 0.3.7 official, CAPU::RunAPU2(uint32) may cause the noise channel output to add to itself before being output, effectively integrating white noise to form brownian noise: for example if instrument 00 is blank then

Triangle            Noise
B-7 00 . P8B        F-# 00 1 ...

produces such noise

Use enumerated types whenever possible

  • apu_machine_t
  • arp_scheme_mode_t
  • buffer_event_t
  • chan_id_t
  • chip_level_t
  • chunk_type_t
  • color_items_t
  • column_t
  • command_t
  • cursor_column_t
  • EDIT_STYLES
  • edit_t
  • effect_t
  • frame_edit_pos_t
  • inst_type_t
  • machine_t
  • note_prio_t
  • note_t
  • paste_mode_t
  • paste_pos_t
  • PATHS
  • play_mode_t
  • render_end_t
  • s5b_mode_t
  • scroll_t
  • sel_condition_t
  • seq_setting_t
  • seq_state_t
  • sequence_t
  • transpose_t
  • vibrato_t
  • vrc7_command_t

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.