Page 2 of 3

Re: GBtracker Alpha 0.0.1

PostPosted: Fri Jun 17, 2016 3:09 pm
by FreddyWild
Thanks Rodot.
Yes I plan for instrument support. Tracks are already supported :)

Re: GBtracker Alpha 0.0.1

PostPosted: Sat Jun 18, 2016 7:11 am
by rodot
Really cool, I'll have to give it a try... too bad I don't know how to compose music :(

Re: GBtracker Alpha 0.0.1

PostPosted: Sat Jun 18, 2016 7:44 am
by FreddyWild
Well i'm not any good with cords and all that either. I always used trackers for making sound effects and tiny melodies. The Mario melody is just copied from a old mod file i had lying around. I think a tracker is very useful even if you don't know how to compose a whole piece of music :)
Don't be sad, we are all the best at something ;)

Re: GBtracker 0.0.6 Alpha

PostPosted: Wed Jan 18, 2017 8:19 pm
by Awot
Nice work !
could you provide a file ready to import (like the mario theme), or a quick tutorial to help ?
Thanks

Re: GBtracker 0.0.6 Alpha

PostPosted: Tue Jan 24, 2017 2:40 am
by erico
Hey Freddy, I have been wanting to check this out for a veeery long time!
Hopefully I´m going to be a free man later this week and can give a go.

A tracker is the best way imho to try music, even if one have no idea about such. :)

Re: GBtracker 0.0.6 Alpha

PostPosted: Sun Mar 12, 2017 8:46 pm
by FreddyWild
Hey, Awot, I will provide a example for the soon to come 1.0 release. Erico please wait a bit for the new release, it will be a much better experience :)

Re: GBtracker 0.0.6 Alpha

PostPosted: Sun Mar 12, 2017 8:51 pm
by FreddyWild
Hey Rodot :)
If you see this, is there any good reason to reinit the commands when we play a new pattern?
I would like to keep my commands between patterns, when playing a track. See code below.

Code: Select all
void Sound::playPattern(const uint16_t* pattern, uint8_t channel) {
#if(NUM_CHANNELS > 0)
   if (channel >= NUM_CHANNELS)
      return;
   stopPattern(channel);
   patternData[channel] = (uint16_t*)pattern;
   patternCursor[channel] = 0;
   patternIsPlaying[channel] = true;
   noteVolume[channel] = 9;
   //reinit commands
   volumeSlideStepDuration[channel] = 0;
   arpeggioStepDuration[channel] = 0;
   tremoloStepDuration[channel] = 0;
   //Serial.print("play pattern\n");
#endif
}

Re: GBtracker 0.0.6 Alpha

PostPosted: Tue Mar 14, 2017 12:26 am
by Sorunome
While I am not rodot....yes there is a good reason. Patterns should be independent of each other, so that you could just take a pattern and play it anywhere else yielding the exact same result. Thus you need to set all the effects etc. to the defualt value.

Re: GBtracker 0.0.6 Alpha

PostPosted: Wed Mar 15, 2017 2:01 pm
by FreddyWild
Ok, I see. Maybe we could disable this while playing a track. It would be nice to set a effect in the beginning of a track, and then reset it only when the track ends, or another pattern/track/note is played. Or maybe disable by command??

Code: Select all
void Sound::playPattern(const uint16_t* pattern, uint8_t channel) {
#if(NUM_CHANNELS > 0)
   if (channel >= NUM_CHANNELS)
      return;
   stopPattern(channel);
   patternData[channel] = (uint16_t*)pattern;
   patternCursor[channel] = 0;
   patternIsPlaying[channel] = true;
   if (!trackIsPlaying[channel])
      {
      noteVolume[channel] = 9;
      //reinit commands
      volumeSlideStepDuration[channel] = 0;
      arpeggioStepDuration[channel] = 0;
      tremoloStepDuration[channel] = 0;
      }
   //Serial.print("play pattern\n");
#endif
}

Re: GBtracker 0.0.6 Alpha

PostPosted: Wed Mar 15, 2017 6:10 pm
by Sorunome
Again, that would change the entire idea of patterns.
Just place all your setting-commands at the beginning of a pattern, it is only a few bytes and allows for way more flexibility ;)