Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

74 Excellent

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Whohoo you did it! Now VTUI Library seems almost maxed out. Really impressive. Thanks!
  2. kliepatsch


    As far as I can tell, the phase doesn't get reset to 0. There is simply no way to do it. The phase offset is just increased with a rate according to whatever frequency the voice is currently set. In my experience so far, updating the PSG registers very often doesn't have a negative impact on audio quality. (Why do I think the phase doesn't get reset? Two reasons: 1. Pitch slides work perfectly fine. If the phase would be reset on every update, the tone would sound distorted when doing pitch slides. 2. Turning on a triangle wave (from 0 volume to some nonzero value) produces a click with seemingly random intensity. This correlates well with the playback starting at a random point in the wave cycle, producing a sharp edge in an otherwise smooth waveform.)
  3. kliepatsch


    You can run the emulator with the command line option "-abufs 16". This increases the audio buffer from the default 8 to 16. This helped me with occasional audio dropouts (which I forgot to do in my videos, lol) You could increase the number further. At some point, you will start to notice lag in audio, I think. Audio crackling can also appear when the emulator isn't running at 100% speed, such as often in the web-emulator, or I found when using the debugger, the speed could also change. I think the order in which you set volume, frequency and waveform shouldn't play a significant role, at least in my experience so far. (Edit: well, as long as there is no significant lag between the writes.)
  4. Up until now, it's all the PSG (programmable sound generators) in the VERA. No samples so far. CPU, wise it depends really on what you are doing. If you are using the tracker with the UI, playback will use significantly more CPU power than if you are "just" playing back without any visual feedback. And how much CPU is taken up by playback itself also depends on how much of the sound engine's capabilities you are using. That includes, how many voices are playing and especially if the sounds are using a lot of modulation and effects. In other words, it should be possible to compose songs that are pretty lightweight, e.g. with 3 or 4 voices and not too much modulation going on. The 8 MHz of the X16 help quite a lot with this kind of stuff. Edit: I should mention that at the moment, as far as I know, the tracker exists only in conjunction with the UI. But maybe later a player-only version could be made that could be used inside other applications.
  5. We have a few things in common then ... both from the southern part of Germany, Pascal the first programming language, and also a physicist
  6. My personal favourite is the string input routine. Give x and y and maximum length of the string. Backspace to delete, enter to confirm. That's it. Oh, and of course there needs to be a string buffer. The pointer to it can also be in one of the ZP variables. I don't know if it would be doable in the remaining space. But if it does, it would be awesome!
  7. Released v0.2.0. The first modulation API has arrived! Pitchbend is now available. Added pitchbend. You can set pitch directly or set a glide slope or even do both. Example for API usage is included in the repo. Added voice vibrato dial. This vibrato affects all oscillators at once, whereas earlier, you had to set vibrato for each oscillator individually (which you still can do). Vibrato uses the voice's LFO (low frequency oscillator).
  8. For a first attempt, the music isn't bad at all. It sounds a bit like a march, though Sound effects, I don't have much of an opinion. They definitely serve their purpose of giving a hint on what's going on. (i.e. a boom when I am hit by a bullet). How did you make the music? Did you implement your own player, or are you using the Music Player Library?
  9. +1 Good point. I think even the initialization routine would be perfectly fine running from within the r0 to r15 registers. No need to use up additional ZP space, as far as I can tell, anyway.
  10. I've ran my first test with it. Loaded the generic flavor with the kernal routines SETNAM, SETLFS and LOAD into golden RAM ($400). Really clever solution with the initialization, and only using relative jumps apart from the jump table at the start. I like it. BTW the binary of the program itself (without VTUI) is 112 bytes. That includes setup of the library and the commands using the VTUI, and a "press any key" loop.
  11. Thanks! I think this is a nice resource for when people want to find the PCM settings that suit their needs best.
  12. I've just made a release for Version 0.1.1. There are no changes to the actual features of the synth engine. However, the code has been reorganized so that it is MUCH easier to include the synth engine with or without UI into your own ca65 project. Separated synth engine and UI so that they can be separately included Provided a simple API for both Added documentation and examples on how to use them Added precompiled binaries of all examples The example below shows what it takes to utilize Concerto in your own ca65 program .zeropage .include "concerto_synth/synth_zeropage.asm" .code jmp start .include "concerto_synth/concerto_synth.asm" start: jsr concerto_synth::initialize jsr concerto_synth::activate_synth ; play a note lda #60 sta concerto_synth::note_pitch lda #63 sta concerto_synth::note_volume lda #0 sta concerto_synth::note_channel lda #0 sta concerto_synth::note_timbre sei jsr concerto_synth::play_note cli ; and wait until key is pressed mainloop: jsr $FFE4 ; GETIN beq mainloop jsr concerto_synth::deactivate_synth rts
  13. Hi all, updates of my Concerto synth engine will be posted in this thread. The file upload can be found below and will be updated as soon as there are significant additions to the feature set. The source code can be found on GitHub: https://github.com/biermanncarl/cx16-concerto Version 0.1.0 has the following features: 32 synth patches 16 monophonic channels, each playing a dynamically assigned synth patch up to 6 oscillators per voice up to 3 envelopes and 1 LFO per voice pitch, volume and pulse width modulation volume control per voice ("velocity") save and load presets (currently 1 slot)
  14. To me it looks like PETSCII character 111 with background and foreground colors set accordingly.
  • Create New...

Important Information

Please review our Terms of Use