Version 0.5 preview

General discussion about tracking, help and support.
User avatar
HertzDevil
Posts: 475
Joined: Thu Apr 23, 2015 7:39 pm
Location: Hong Kong SAR
Contact:

Re: Version 0.5 preview

Postby HertzDevil » Tue May 26, 2015 11:31 pm

You cannot; although Vortex Tracker uses "E" for enabling the modulation in instruments, and FamiTracker's 5B mode sequences still have one bit to spare (0CC-FamiTracker uses this bit instead of relying on Hxy effects depending on whether y equals 0), the beta does not allow one to use "e" in the MML field.

One may even allow another bit of the 5B Vxx effect to turn on/off the modulation.
refactoring 0cc-famitracker

User avatar
Stratelier
Posts: 378
Joined: Sun Apr 26, 2015 7:46 pm

Re: Version 0.5 preview

Postby Stratelier » Wed May 27, 2015 3:41 pm

ImATrackMan wrote:EDIT: Also, the 5B seems to be using the same volume "scheme" as the rest of the channels. Seeing as it's a logarithmic chip, it'd probably be best to have things like the volume column and Axx affect volume in a subtractive manner rather than a miltuplicative one.

But Axx isn't multiplicative with channel volume at all, Axx "is" channel volume -- it literally just slides that setting up or down.

User avatar
betasword
Posts: 2
Joined: Sun Apr 26, 2015 10:51 pm

Re: Version 0.5 preview

Postby betasword » Thu May 28, 2015 2:59 am

I just checked, and it looks like the 64 DPCM sample limit is still in place. Is that by any chance going to be lifted for this version, or perhaps a later one? Other than that, I haven't really had a chance to look into the new stuff, but I'm looking forward to checking out 5B!

User avatar
ollaxe
Posts: 736
Joined: Mon Apr 20, 2015 7:07 pm
Location: Sweden
Contact:

Re: Version 0.5 preview

Postby ollaxe » Thu May 28, 2015 7:34 pm

I'm working on a 5B song, and I noticed that the Qxx-, Rxx- and 3xx-effects does not work. Why is this?
Hi! I'm not really active here anymore but I still make music. Nowadays I mostly make dubstep with emphasis on good melodies and chord progressions.
SoundCloud: soundcloud.com/ollaxe
Twitter: twitter.com/ollaxe
Discord server: dis.gd/tK7uRnc
I'm also on Spotify. Search "OllAxe" and you'll find me.

User avatar
w7n
Posts: 241
Joined: Fri May 15, 2015 1:37 am
Location: Nanamori-Chuu
Contact:

Re: Version 0.5 preview

Postby w7n » Sat May 30, 2015 1:39 am

128 instruments when?
nsf.nesbbs.com under reconstruction, better player might be available in the future.

VRC6 PWM is GAY because it has colours of the rainbow in the NSFPlay keyboard visualizer.

User avatar
jrlepage
Forum Staff
Posts: 237
Joined: Wed Apr 15, 2015 11:25 am
Location: Quebec, Canada
Contact:

Re: Version 0.5 preview

Postby jrlepage » Sat May 30, 2015 1:49 am

ollaxe wrote:I'm working on a 5B song, and I noticed that the Qxx-, Rxx- and 3xx-effects does not work. Why is this?

I managed to get 3xx to work on 5B channels, but not Qxy or Rxy.
Follow me on Twitter.

User avatar
HertzDevil
Posts: 475
Joined: Thu Apr 23, 2015 7:39 pm
Location: Hong Kong SAR
Contact:

Re: Version 0.5 preview

Postby HertzDevil » Sat May 30, 2015 2:36 am

0CC-FamiTracker used to have the same issue until 0.3.9 before a bit of refactoring, and I believe this oversight remains in 0.5.0 beta.

In FamiTracker, CChannelHandler::SetupSlide(int, int) is called from each virtual override of CChannelHandler::HandleNoteData(stChanNote*, int). Every time the channel handler reads note data from the current row, SetupSlide is called to set up the speed of the note slide, the destination note, and the destination period of Qxy and Rxy effects, if these exist on that row. For example, VRC6 does this:

Code: Select all

void CChannelHandlerVRC6::HandleNoteData(stChanNote *pNoteData, int EffColumns)
{
   m_iPostEffect = 0;
   m_iPostEffectParam = 0;

   CChannelHandler::HandleNoteData(pNoteData, EffColumns);

   if (pNoteData->Note != NONE && pNoteData->Note != HALT && pNoteData->Note != RELEASE) {
      if (m_iPostEffect && (m_iEffect == EF_SLIDE_UP || m_iEffect == EF_SLIDE_DOWN))
         SetupSlide(m_iPostEffect, m_iPostEffectParam);
      else if (m_iEffect == EF_SLIDE_DOWN || m_iEffect == EF_SLIDE_UP)
         m_iEffect = EF_NONE;
   }
}

For the Sunsoft 5B the code simply calls the base method:

Code: Select all

void CChannelHandlerS5B::HandleNoteData(stChanNote *pNoteData, int EffColumns)
{
   CChannelHandler::HandleNoteData(pNoteData, EffColumns);
}

The 3xx effect sets this up directly in CChannelHandler::CheckCommonEffects(unsigned char, unsigned char), therefore works in Sunsoft 5B:

Code: Select all

...
case EF_PORTAMENTO:
   m_iPortaSpeed = EffParam;
   m_iEffect = EF_PORTAMENTO;
   if (!EffParam)
      m_iPortaTo = 0;
   break;
...

As for instruments: Modify MAX_INSTRUMENTS, then increase the version number of the PATTERNS block, and after reading the instrument index from the FTM in CFamiTrackerDoc::ReadBlock_Patterns(CDocumentFile), set it to the new MAX_INSTRUMENTS if it equals its old value (0x40). The NSF driver already supports up to 128 instruments, but FamiTracker imposes limit on the amount of instrument data in exported NSFs, so further edits in the ASM source may be required to allow bankswitching some instrument data, such as longer sequences or waveforms.
refactoring 0cc-famitracker

User avatar
w7n
Posts: 241
Joined: Fri May 15, 2015 1:37 am
Location: Nanamori-Chuu
Contact:

Re: Version 0.5 preview

Postby w7n » Sat May 30, 2015 3:59 am

After looking into the code, I guess I'd better just manually assemble stuff after all. Such project is too much for me.
nsf.nesbbs.com under reconstruction, better player might be available in the future.

VRC6 PWM is GAY because it has colours of the rainbow in the NSFPlay keyboard visualizer.

User avatar
ollaxe
Posts: 736
Joined: Mon Apr 20, 2015 7:07 pm
Location: Sweden
Contact:

Re: Version 0.5 preview

Postby ollaxe » Sat May 30, 2015 6:59 pm

jrlepage wrote:
ollaxe wrote:I'm working on a 5B song, and I noticed that the Qxx-, Rxx- and 3xx-effects does not work. Why is this?

I managed to get 3xx to work on 5B channels, but not Qxy or Rxy.


Oh, 3xx did work! I think I used a too quick 3xx-effect before, so I didn't hear it. Sorry! :)


HertzDevil wrote:0CC-FamiTracker used to have the same issue until 0.3.9 before a bit of refactoring, and I believe this oversight remains in 0.5.0 beta.

In FamiTracker, CChannelHandler::SetupSlide(int, int) is called from each virtual override of CChannelHandler::HandleNoteData(stChanNote*, int). Every time the channel handler reads note data from the current row, SetupSlide is called to set up the speed of the note slide, the destination note, and the destination period of Qxy and Rxy effects, if these exist on that row. For example, VRC6 does this:

Code: Select all

void CChannelHandlerVRC6::HandleNoteData(stChanNote *pNoteData, int EffColumns)
{
   m_iPostEffect = 0;
   m_iPostEffectParam = 0;

   CChannelHandler::HandleNoteData(pNoteData, EffColumns);

   if (pNoteData->Note != NONE && pNoteData->Note != HALT && pNoteData->Note != RELEASE) {
      if (m_iPostEffect && (m_iEffect == EF_SLIDE_UP || m_iEffect == EF_SLIDE_DOWN))
         SetupSlide(m_iPostEffect, m_iPostEffectParam);
      else if (m_iEffect == EF_SLIDE_DOWN || m_iEffect == EF_SLIDE_UP)
         m_iEffect = EF_NONE;
   }
}

For the Sunsoft 5B the code simply calls the base method:

Code: Select all

void CChannelHandlerS5B::HandleNoteData(stChanNote *pNoteData, int EffColumns)
{
   CChannelHandler::HandleNoteData(pNoteData, EffColumns);
}

The 3xx effect sets this up directly in CChannelHandler::CheckCommonEffects(unsigned char, unsigned char), therefore works in Sunsoft 5B:

Code: Select all

...
case EF_PORTAMENTO:
   m_iPortaSpeed = EffParam;
   m_iEffect = EF_PORTAMENTO;
   if (!EffParam)
      m_iPortaTo = 0;
   break;
...

As for instruments: Modify MAX_INSTRUMENTS, then increase the version number of the PATTERNS block, and after reading the instrument index from the FTM in CFamiTrackerDoc::ReadBlock_Patterns(CDocumentFile), set it to the new MAX_INSTRUMENTS if it equals its old value (0x40). The NSF driver already supports up to 128 instruments, but FamiTracker imposes limit on the amount of instrument data in exported NSFs, so further edits in the ASM source may be required to allow bankswitching some instrument data, such as longer sequences or waveforms.


I don't know code so well, but I think I get the basic idea of what you're saying. Thanks for taking your time to explain! :)
Hi! I'm not really active here anymore but I still make music. Nowadays I mostly make dubstep with emphasis on good melodies and chord progressions.
SoundCloud: soundcloud.com/ollaxe
Twitter: twitter.com/ollaxe
Discord server: dis.gd/tK7uRnc
I'm also on Spotify. Search "OllAxe" and you'll find me.

User avatar
Stratelier
Posts: 378
Joined: Sun Apr 26, 2015 7:46 pm

Re: Version 0.5 preview

Postby Stratelier » Sun May 31, 2015 5:20 pm

HertzDevil wrote:The absolute pitch sequence overrides the fixed arpeggio sequence. In other words, the fixed part no longer needs to begin at the first frame of the instrument, as shown in the attached FTM. I do not know if this is an intended behaviour, since the pitch offset should be applied after acquiring the fixed note; otherwise the fixed arpeggio sequence should use a special constant like -1 to indicate that the instrument uses the current note from the pattern data (so every fixed sequence of the form {x} becomes equivalent to {x | -1}).

This is not unique to 0.5; it occurs in 0.4.6 as well. I have a particular instrument for Triangle where the intended note is prefixed by a basskick. I would like the kick to be as close to 120Hz as possible (because 60Hz engine speed), i.e. B-2 + P7B; the corresponding instrument definition should be fixed arpeggio {35} + relative pitch {5} but the pitch tuning is ignored in favor of arpeggio (so I get a straight B-2 with no tuning). The end result as is is close enough to work already, it just ... y'know, causes my OCD to flare up. :)


Return to “General Talk”

Who is online

Users browsing this forum: No registered users and 1 guest