<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[The 1-Bit Forum — new engine: PhaserF]]></title>
	<link rel="self" href="https://randomflux.info/1bit/extern.php?action=feed&amp;tid=358&amp;type=atom" />
	<updated>2024-02-18T15:22:32Z</updated>
	<generator>PunBB</generator>
	<id>http://randomflux.info/1bit/viewtopic.php?id=358</id>
		<entry>
			<title type="html"><![CDATA[Re: new engine: PhaserF]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=3022#p3022" />
			<content type="html"><![CDATA[<p>I could also pre-generate the tables, if that helps.</p>]]></content>
			<author>
				<name><![CDATA[utz]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=2</uri>
			</author>
			<updated>2024-02-18T15:22:32Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=3022#p3022</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: new engine: PhaserF]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=3019#p3019" />
			<content type="html"><![CDATA[<p>I expected the challenge to be the flexible channel layouts and PWM drums, but in fact yeah, I forgot I already handled such configurations. However, there is a less expected issue, both ulasyn and phaserF use a macro to calculate their filter tables. My assembler is certainly not up to parse that, so I guess, I&#039;ll have to offload table generation into the engine script. Anyways, seems to be doable.</p>]]></content>
			<author>
				<name><![CDATA[Shiru]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=11</uri>
			</author>
			<updated>2024-02-17T14:12:50Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=3019#p3019</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: new engine: PhaserF]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=3011#p3011" />
			<content type="html"><![CDATA[<p>Another great new engine. Very cool sound</p>]]></content>
			<author>
				<name><![CDATA[AtariTufty]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=5</uri>
			</author>
			<updated>2024-02-06T19:59:58Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=3011#p3011</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: new engine: PhaserF]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=3010#p3010" />
			<content type="html"><![CDATA[<p>What would be the challenge for adding it to 1tracker? The data format is quite similar to ulasyn&#039;s. In terms of interface, it could be shown as 4 channels, perhaps calling them 1A, 1B, 2A, 2B.</p><p>Btw forgot to mention in the readme that row length is 6-bit only, due to using the I register for counting.</p>]]></content>
			<author>
				<name><![CDATA[utz]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=2</uri>
			</author>
			<updated>2024-02-06T19:15:07Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=3010#p3010</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: new engine: PhaserF]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=3009#p3009" />
			<content type="html"><![CDATA[<p>Still, it is very impressive. I wouldn&#039;t say the sound quality is any bad, we&#039;ve had worse, and it is certainly on a new level.</p><p>This one feels to be tough to make into 1tracker, but anyways, I&#039;ll try.</p>]]></content>
			<author>
				<name><![CDATA[Shiru]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=11</uri>
			</author>
			<updated>2024-02-06T03:52:04Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=3009#p3009</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[new engine: PhaserF]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=3008#p3008" />
			<content type="html"><![CDATA[<p>As promised, here it is, Phaser with filters.</p><div class="codebox"><pre><code>- 2 Phaser channels, XOR/OR/AND mixing
- variable duty for both oscillators (channel 2 only)
- volume control (up to 6 levels)
- filters with variable cutoff (6 levels for lo-pass, 5 levels for hi-pass)
- sample rate 9114 Hz
- interrupting PWM sampled drums at 27343 Hz with 7 pitch and 3 volume levels
- player size 3333 bytes (when assembled at a 256b border)

Channel 2 can be split into two independent pulse wave channels that are mixed
Squeeker-style (OR mixing). Beware that changing channel 2&#039;s mixing mode is slow
(~200t), so avoid doing so if you are concerned about transition noise.</code></pre></div><p><a href="https://github.com/utz82/ZX-Spectrum-1-Bit-Routines/tree/master/phaserF">source code</a></p><p>This one was quite a challenge, and I&#039;m not entirely sure if it was worth the effort. Somehow it sounds muddier than ulasyn. Part of it is because length counter updates are slower, but there might also be a bug lurking in one of the volume cores. I&#039;ve checked them all multiple times in various ways though, and can&#039;t spot any obvious culprits.</p><p>PWM drums are slightly different from ulasyn - higher sample rate, but less volume resolution. There&#039;s no noise mode in this engine, so the samples need to make up for it.</p>]]></content>
			<author>
				<name><![CDATA[utz]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=2</uri>
			</author>
			<updated>2024-02-06T00:05:45Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=3008#p3008</id>
		</entry>
</feed>
