First message updated. I would like to hear suggestions
Holy cow. Looks awesome
Iām working on save/load song/instrument functions. I hope it will finish asap
Iām added save song function. Rboy tracker loads song but also popup error message. I donāt know why.
Good job @NullMember
The UI runs on hardware. Going to start looking at the fileIO and check how that works.
Edit: and ofcourse adding sound.
Some dummy bugs fixed today i start working to import synth library to tracker.
Edit: what is the Note Number (Internal Reference) in rboy tracker? I think itās midi number of note but itās half note different from midi note numbers.
How hard would it be to give pokkito functions like those teenage engineering pocket operators but with your own samples?
Iām not used pocket operator before but I like TEās products. Today and next three day is feast of Ramadan. Iām visiting my relatives and friends. After that I can check what we can
@nullmember I have not forgotten you! I will get back to this Tracker project soon. Iāll try to release new stuff on github later today
Cool, Have a good feast!
Thank you very much
Hey, if I remember correctly you were using Linux. Sound works in Linux now, you can continue work on the tracker.
Start by looking at the setOSC() command in the POKITTO_LIBS/Synth directory. That is the low-level call to the 3 oscillators.
Itās awesome. Iām not using Linux at this time but i have linux skills . Iām still thinking about your question at Music Format topic. Maybe we can use wavetables like pico-8 or tic-80. tic-80 have 16 wavetable and each wavetable 32 byte. So it takes maximum 512bytes. What you think about that?
Iāve just resurrected the rboy tracker. This is a project I made originally for Gamebuino but was halted because the Gamebuino didnāt have enough memory to do the playback.
I will start meshing the rbtracker code with your (@NullMember) project. I hope to have something to show in not too distant future.
I will also update and release the rbtracker so we have at least one compatible tracker to use on a PC.
Cool ā¦
Some feedback on the UI: selecting waveform /arpeggio mode makes screen blank
also: please make a playNote method in your Tracker class. This is called when you are changing pitch/instrument to give sound feedback to user how the note sounds. And put calls for that method in your UI. we can then hook that up to the synth & use same call in playback
edit; in rbtracker, the playNote method looks like this:
void rbtrackerFrame::playNote(uint8_t notenum)
{
uint8_t tracknum = Grid->GetCursorColumn();
if (tracknum == 0){
setOSC(&osc1,1,Wave->GetSelection(),Loop->IsChecked(), Echo->IsChecked(), ADSR->IsChecked(),
notenum,InstVol->GetValue(), Attack->GetValue(), Decay->GetValue(), Sustain->GetValue()<<8,
Release->GetValue(), MaxBend->GetValue(), BendRate->GetValue(), ArpMode->GetSelection(), Overdrive->GetValue(), Kick->GetValue());
} else if (tracknum == 1){
setOSC(&osc2,1,Wave->GetSelection(),Loop->IsChecked(), Echo->IsChecked(), ADSR->IsChecked(),
notenum,InstVol->GetValue(), Attack->GetValue(), Decay->GetValue(), Sustain->GetValue()<<8,
Release->GetValue(), MaxBend->GetValue(), BendRate->GetValue(), ArpMode->GetSelection(), Overdrive->GetValue(), Kick->GetValue());
} else {
setOSC(&osc3,1,Wave->GetSelection(),Loop->IsChecked(), Echo->IsChecked(), ADSR->IsChecked(),
notenum,InstVol->GetValue(), Attack->GetValue(), Decay->GetValue(), Sustain->GetValue()<<8,
Release->GetValue(), MaxBend->GetValue(), BendRate->GetValue(), ArpMode->GetSelection(), Overdrive->GetValue(), Kick->GetValue());
}
}
Iām thinking to add playnote for a while. And I know this bug and I already fix it. But maybe Iām not updated GitHub repo . Tomorrow I look at these things. Do you have any suggestions other than these?
Well, since you have built the UI, I think it would be best if you add the audio methods as āempty stubsā in the places where you thing sound output should begin.
What I mean is that you declare:
void Tracker::playPattern()
void Tracker::playSong()
void Tracker::pause();
void Tracker::playNote()
In this style. Then It is easy for me to work with you and we can āfill in the missing bitsā together
The way that it works in rbtracker is simple: there are 3 channels and 3 oscillators. When the playback starts, the sound callback function begins reading the āblocksā inside the pattern. When it encounters a note, it calls setOSC with the details of the note and the instrument. osc1 is for channel 1, osc2 is for channel 2 and osc3 is for channel 3
In any case, the right way to do this is:
- get playNote (play individual note) function working
- get playPattern (read through pattern) function working
- combine playPattern to playNote (so now it reads and plays)
- get playSong (play through all patterns) to work
and thats it. Its not a huge amount of work.
Note about selecting waveform/arpeggio mode bug: I looked it and i already fixed and updated. Problem is Core::menu function. On the old versions of Pokitto Simulator they works