Ok, 2 wild guesses:
1. You are in Hold mode (can be toggled with [CLEAR])
2. Your speed is set to 0 for some reason. Do you have all columns filled in the sequence?
You are not logged in. Please login or register.
The 1-Bit Forum → Posts by utz
Ok, 2 wild guesses:
1. You are in Hold mode (can be toggled with [CLEAR])
2. Your speed is set to 0 for some reason. Do you have all columns filled in the sequence?
You need to qualifiy the path where tilp2 is installed, then. You can use the Tab key to auto-expand names. So, if your tilp installation is in C:\My Programs\tilp\, you do something like
My<Tab>\ti<Tab>\tilp ti84+ ...<Enter>I think you have the very old version of TiLP from http://lpg.ticalc.org/prj_tilp/. (Unfortunately they haven't updated the site in like, a decade.)
Might be better to get a more recent one from https://github.com/debrouxl/tilp_and_gfm/releases. first uninstall the old version and the Gtk runtime. Second, you will probably need to install the required version 2.24 of Gtk manually. You can get the installer here. After installing the new TiLP, you may or may not need to run Zadig again, as described in https://github.com/debrouxl/tilp_and_gf … DME.win32.
Huh, no menu at all. Something's definitely borked here. Which version of TiLP are you using, and which version of the GTK2 runtime is installed?
Also, could you try this in a command prompt:
tilp ti84+ DirectLink path\to\DoorsCS7.8xkGood writeup, introspec. I'll add that in addition to the pin pulse method, the Squeeker method also allows for some deviations in timing, and both of these methods still work (albeit with noticable degration of sound quality and of course frequency range) at fairly low update rates, as demonstrated by nanobeep.
That's odd, that File send option should be there even if the calc is not recognized.
Can you post a screenshot, perhaps?
Check out this excellent new article on 1-bit music, by Protodome. I'd say so far this is the best and most comprehensive one of a small but growing list of academic papers on 1-bit music.
And because theory is dry, we also have https://protodome.bandcamp.com/album/4000ad ![]()
A little feature request. Would it be possible to break long data lines in the asm output (such as the ones produced by wav import)? Some assemblers choke on these, including sjasmplus.
So as I was just about to fall asleep last night, it occurred to me that it's possible to implement a low-pass filter with variable cut-off, without using multiplication.
Assuming an engine that supports multiple volume levels per channel, the idea is as follows:
current_volume = 0
max_volume_delta = x
loop {
new_volume = n // use whatever standard method here
if abs(current_volume - new_volume) > max_volume_delta {
if new_volume > current_volume {
new_volume = current_volume + max_volume_delta
} else {
new_volume = current_volume - max_volume_delta
}
}
... // output sound
}This could potentially be used to add filter envelope emulation to existing synthesis algorithms such as Phaser. The question though is how to efficiently implement that big fat nested conditional.
It's fairly easy for a saw wave generator, because we can assume that when (abs(current_volume - new_volume) > max_volume_delta) is true, then (new_volume < current_volume) is also true for a real-world implementation (in other words, max_volume_delta is never exceeded on the rising edge of the saw). So that's what the attached example demonstrates.
Just realized it cannot be 1tracker. The track is from 2016, but Tritone was only added to 1tracker in 2018.
Perhaps best to ask the author directly: https://demozoo.org/sceners/63068/
Old version of 1tracker maybe?
Good read, thanks!
Qchan is pin pulse so in theory it should work. However, it may be too quiet to be properly audible, or maybe the pulses will be too short to actually switch the piezo. Could also be that the volume envelopes don't quite work as intended because some piezos have a pretty strong overshoot. Nevertheless, it's worth a try methinks. Same goes for the Octode family (except Octode PWM and Octode2k16, those are pulse interleaving), Stocker, Huby, and BuzzKick.
In-game beeper music is largely uncharted territory, because it's nearly impossible to pull off. This is because the process of generating 1-bit sound must be cycle-exact, and therefore pretty much all existing beeper engines block the CPU. As the old saying goes: "When beeper plays, scroller must stop".
It's not all hopeless, though. If the game in question doesn't require a lot of computation-heavy logic or screen updates, then it's possible to run the necessary game code on note updates ("between the rows"). Interrupt-based engines like SpecialFX and Savage are well suited for this. It's also been demonstrated with Tritone. In fact there's a version of Tritone in z88dk which facilitates this.
Engines using the pulse interleaving technique (Savage, Tritone, many others) most likely will not work on piezos. Pulse interleaving relies on inertia of the speaker cone, which is practically absent on piezos. So only engines using OR mixing (Squeeker, Squeeker Plus, PhaseSqueek, Squat) and maybe pin pulse engines will work.
That said, VZ also has tape out, right? I'd focus on using that for sound instead of the piezo.
Ha, the VZ gang is growing
Your SDL port of VZEM might come in very handy ![]()
Anyway welcome, great to have you aboard.
Yay, congratulations on this achievement! And welcome to the rabbit hole of 1-bit engine making ![]()
Ehh, I wish I had Shiru's advice back in the day when I started to make my own engines. Could never wrap my head around it back in the day. Just like I couldn't figure out 16-bit dividers, lol. Speaking of which, I'd say try to figure those out next. Aside from having a greater note range, it actually makes things simpler ![]()
Of course, if you have any questions, ask away. More than happy to help.
1tracker definitely has the widest selection of beeper engines, including many modern ones.
I don't recommend Bintracker. It's buggy, and those bugs won't be fixed either. I'm working on a completely new version of it (see https://bintracker.org), but it's not ready yet.
1tracker can be a bit intimidating at first, but once you get used to its somewhat unusual workflow, you'll find that it's a very efficient and well thought-out tool. It doesn't use a sequence/order list, so you don't ever edit your sequence manually. Instead, you have one endless pattern that you can break into sections by hitting Space. You can navigate between sections with the Home and End keys. You'll be copy/pasting a lot so remember those keys as well: Shift + arrow keys or Home/End marks a selection, then Ctrl+C/X/V to copy/cut/paste WITHOUT shifting the following content, or Shift+X/V to cut/paste and shift the following content. Other important keys: Ctrl-+/- or Numpad +/- to increase/decrease the speed, Numpad *// to increase/decrease the base octave (or Shift+number to select octave), Ctrl+U/D/O/K to transpose selection up/down by a semitone/by an octave. On engines that have instruments, +/- cycles through instruments on the instrument screen (F4). Ctrl+F10 quits. F5 is play/stop, hold Enter to play from current row.
Hi Jumperror, welcome to the forum. Wow, you're doing a lot of cool stuff! Glad to have you aboard. Looking forward to hearing more 1-bit (and other) tracks from you. I'm curious what you could come up with on some of the newer beeper engines. If you have any questions feel free to ask anytime.
That would be [ALPHA], [MODE].
Great little tune. A pity that CAFe didn't have a dedicated beeper compo though. Hmm maybe next year...
So if I understand correctly, the following code would be equivalent:
add ix,bc
ld a,ixh
add a,l
ld a,ixy
adc a,h
sbc a,a
and #10
out (#fe),aAye, it took a while for ye olde brain. I was fixated on the "volume control" part, but it's really all about the harmonics, right?
In that case, a word of caution: Emulators are often misleading in that respect, actual hardware can sound quite different. Generally 48k tends to be more noisy, and harmonics tend to be buried under the noise. Anyway, if you're going to explore further in this direction, I can help with some hw recordings.
The question remains where these harmonics come from in the first place. Is it because at these marginal pulse width threshold overflow errors from the frequency calculation become more significant?
When I worked on those multi-core engines with many volume levels, I also noticed another effect. If there are several consecutive frames with high total volume (mimicing a DC offset), some sort of volume ramping will occur, gradually turning rectangular waves into saws. Octode2k16 is perhaps the best example of this. I tried to control this effect but it was very unreliable. Still wonder though if it can be used somehow.
Hmmm, isn't this rather a (very fine-grained) duty sweep? Check what happens when you replace inc hl with inc h... I think for phase-shift controlled volume you'd need 2 outputs.
However, there are indeed some interesting harmonics going on here. No idea where they come from, but they do remind me of that time when I unsuccessfully tried to make a 15ch pwm engine: https://bitrotlabel.bandcamp.com/track/pad5
I really wonder where these harmonics come from.
Hi Dave,
In general you should be able to get away with LD ($6800),A. The thing is that, because of some hardware quirks, on the Spectrum we try to align all writes to port $FE to a multiple of 8 t-states for cleaner sound. Chances are you don't have such a requirement on your machine, so you can get away with shifting the timings a bit.
There is another problem here though. The engines that use this type of "output-and-rotate" approach heavily rely on the fact that the Speccy only looks at bit 4 for the output* and ignores the other bits. So writing the value of A directly to ($6800) probably won't work. You'd need to check bit 4 of A each time and set the output accordingly, or perhaps you could look into changing the sample format so it better suits your needs. I think if you changed the sample values as follows:
$88 -> $11
$cc -> $99
$ee -> $77
$ff -> $ff
things might work out.
* that's a bit over-simplified. Bit 3 also has an impact but often that fact is simply ignored.
Finally got around to finishing the engine based on Kurt James Werner's Velvet Noise technique, specifically Crushed Additive Random Noise. To my knowledge this is the first PFM (pin-pulse) ZX beeper engine that mixes tones and noise. In addition to the noise channel, there are 3 tone channels, all with volume envelopes. Added the synth kick from my new set of reusable click drums for good measure.
The 1-Bit Forum → Posts by utz
Powered by PunBB, supported by Informer Technologies, Inc.