<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[The 1-Bit Forum — Adding vocal track]]></title>
	<link rel="self" href="https://randomflux.info/1bit/extern.php?action=feed&amp;tid=239&amp;type=atom" />
	<updated>2020-09-22T18:43:23Z</updated>
	<generator>PunBB</generator>
	<id>http://randomflux.info/1bit/viewtopic.php?id=239</id>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2174#p2174" />
			<content type="html"><![CDATA[<p>Haha, as usual. Giant scary looking math formula boils down to rather trivial real world solution <img src="http://randomflux.info/1bit/img/smilies/big_smile.png" width="15" height="15" alt="big_smile" /><br />Ok, so this looks indeed like something that can be done on Spectrum. I&#039;ll look into this once I have some free time (end of the year, hopefully). Unless you want to try, of course! It&#039;d be great to see a new engine from you!</p>]]></content>
			<author>
				<name><![CDATA[utz]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=2</uri>
			</author>
			<updated>2020-09-22T18:43:23Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2174#p2174</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2172#p2172" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>utz wrote:</cite><blockquote><div class="quotebox"><cite>Zilog wrote:</cite><blockquote><p>Do you know LPC fundamentals and this marvelous document? <a href="https://cnx.org/contents/swFM2W46@5.12:6sbZNcLi@4/Speak-N-Spell-Introduction">https://cnx.org/contents/swFM2W46@5.12: … troduction</a></p></blockquote></div><p>Fantastic, just what I need! I briefly looked at LPC before, but was like &quot;meh, too much maths&quot;. But in recent months I&#039;ve been working on my math skills so I might be able to tackle this now.</p></blockquote></div><p>Actually, the math behind is a bit misleading. In reality, it&#039;s dead-simple. Just few-item array (either round buffer, because there&#039;s no need to copy or shift anything, or array with fixed indexes that can be better hardcoded into the loop) and you compute weighted sums of previous items, and this sum is the new item.</p><p>Normally, such array would never leave the initial all-zeroes state, so it&#039;s also fed with excitation frequency (spikes, because they pre-contain upper harmonics, which are typically suppressed in the predicted output, because it&#039;s sum-averaged). That&#039;s all.</p><p>Have a look also here: <a href="https://cnx.org/contents/wh_aQ2UJ@20/Speech-Processing-Theory-of-LPC-Analysis-and-Synthesis">https://cnx.org/contents/wh_aQ2UJ@20/Sp … -Synthesis</a></p>]]></content>
			<author>
				<name><![CDATA[Zilog]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=35</uri>
			</author>
			<updated>2020-09-21T11:13:28Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2172#p2172</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2171#p2171" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Zilog wrote:</cite><blockquote><p>Do you know LPC fundamentals and this marvelous document? <a href="https://cnx.org/contents/swFM2W46@5.12:6sbZNcLi@4/Speak-N-Spell-Introduction">https://cnx.org/contents/swFM2W46@5.12: … troduction</a></p></blockquote></div><p>Fantastic, just what I need! I briefly looked at LPC before, but was like &quot;meh, too much maths&quot;. But in recent months I&#039;ve been working on my math skills so I might be able to tackle this now.</p><div class="quotebox"><cite>Shiru wrote:</cite><blockquote><p>RLE</p></blockquote></div><p>For if we&#039;d want to go full PCM instead of PWM (3-bit should be possible and give quite decent speech quality), I recently read that dictionary based audio compression apparently works well for low res audio, and was used quite a bit in old Amiga demos. So, chop up the audio into blocks of, say, 8 samples, create a dictionary of those, (optionally) massage dictionary a bit to eliminate similar samples, replace audio stream with pointers to dictionary. Simple enough to decode imo.</p><p>Regarding microsamples, there is one issue with fixing the length to 256 samples. You essentially end up with 3 different use cases: <br />- vowels: arbitrary length, must be looped<br />- k, t, p etc: one-shot samples with fixed length<br />- s, th, kh: noise, arbitrary length.<br />The main thing here is the noise ones: If you use a 256 b looped sample for it, you cannot control pitch, because it won&#039;t sound like noise for anything but the lowest stepping speed.<br />So to me it seems like the best approach is to detect the &quot;type&quot; of sound beforehand, and just synthesize the noisy ones, and perhaps the plosives as well. That&#039;s how I ended up with &quot;hey, if we can synthesize the vowels as well, then we don&#039;t actually need samples&quot;.</p>]]></content>
			<author>
				<name><![CDATA[utz]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=2</uri>
			</author>
			<updated>2020-09-21T06:16:28Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2171#p2171</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2170#p2170" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Shiru wrote:</cite><blockquote><p>Just a few days ago I released SquatE, which is very close to your Squeeker (thanks a ton for this thing!), plus it features a sample channel that plays along without interrupting the tone channels. This was done exactly with vocal and pitched instrumental samples in mind.</p></blockquote></div><p>My pleasure. Btw. is there some demo song, showing the SquatE abilities with all bells and whistles? Especially, that non-interupting samples must be great. <br /></p><div class="quotebox"><cite>Shiru wrote:</cite><blockquote><p>and 1-bit samples seem to be compressible with basic RLE well enough, so the next step would be an engine with on-fly RLE sample decoder</p></blockquote></div><p>Definitely. For background chords in the Amiga minor/major style. But still, I think that vocals are even cheaper to play. When 32 samples are enough on GB, are 16 probably as well... and this way, the looping and separation could be trivialised, probably. It&#039;s also of little importance, whether the voice sounds harsh, distorted by quantisation - one could take it rather as a feature... we all love robotic voices, especially when they are in-tune <img src="http://randomflux.info/1bit/img/smilies/smile.png" width="15" height="15" alt="smile" />.<br /></p><div class="quotebox"><cite>AtariTufty wrote:</cite><blockquote><p>Here&#039;s a couple of my tunes</p></blockquote></div><p>Great list. Everything there was new for me, nice to see such huge advances in this techinque.<br /></p><div class="quotebox"><cite>utz wrote:</cite><blockquote><p>Zilogat0r<br />What I&#039;d really want to do though is formant synthesis</p></blockquote></div><p>Do you know LPC fundamentals and this marvelous document? <a href="https://cnx.org/contents/swFM2W46@5.12:6sbZNcLi@4/Speak-N-Spell-Introduction">https://cnx.org/contents/swFM2W46@5.12: … troduction</a><br />It describes details of development of famous 80s SpeakNSpell toy - first LPC voice synthesizer chip. I think while LPC is fully computable on ZX (you can nicely interleave each LPC value processing with pulse width value decrement etc.), microsamples are better suited for this. We really need just few of them, they are ultrashort, might be 1-bit, and there&#039;s no computational overhead at all...</p>]]></content>
			<author>
				<name><![CDATA[Zilog]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=35</uri>
			</author>
			<updated>2020-09-20T20:06:54Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2170#p2170</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2169#p2169" />
			<content type="html"><![CDATA[<p>Go for it utz. Would be a brilliant feature for beeper tracks <img src="http://randomflux.info/1bit/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Got me thinking, remember this track on BOTB ?</p><p><a href="https://battleofthebits.org/arena/Entry/Ultra-Velocity+Party%21%21/16668/">https://battleofthebits.org/arena/Entry … %21/16668/</a></p>]]></content>
			<author>
				<name><![CDATA[AtariTufty]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=5</uri>
			</author>
			<updated>2020-09-18T22:31:08Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2169#p2169</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2168#p2168" />
			<content type="html"><![CDATA[<p>Been actually thinking about making an engine with a dedicated vocal/speech synth track for quite some time now. 256-byte wavetables is indeed well-suited for this. What I&#039;d really want to do though is formant synthesis. Haven&#039;t been able to pull it off yet, though.</p>]]></content>
			<author>
				<name><![CDATA[utz]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=2</uri>
			</author>
			<updated>2020-09-18T21:56:07Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2168#p2168</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2167#p2167" />
			<content type="html"><![CDATA[<p>Great thread, I&#039;ve been interested in trying to add vocal samples to my beeper tunes for ages.<br />I&#039;ll check out the updated Squat engine.</p><p>Here&#039;s a couple of my tunes that I&#039;ve managed to use vocal samples in Phaser 3, although these are interrupting.<br /><a href="https://youtu.be/pVvuPjC8W5Y">https://youtu.be/pVvuPjC8W5Y</a><br /><a href="https://youtu.be/ap5hNtAVsG8">https://youtu.be/ap5hNtAVsG8</a> </p><p>The most impressive example I&#039;ve seen is Lman&#039;s C64 music<br /><a href="https://youtu.be/HnWntppFOuA">https://youtu.be/HnWntppFOuA</a></p><p>Jammer has done some amazing stuff too (samples again though)<br /><a href="https://multistylelabs.bandcamp.com/track/left-right">https://multistylelabs.bandcamp.com/track/left-right</a></p><p>This Atari ST stuff got my interest too:<br /><a href="https://stumusic.bandcamp.com/album/3chnls4bit">https://stumusic.bandcamp.com/album/3chnls4bit</a></p>]]></content>
			<author>
				<name><![CDATA[AtariTufty]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=5</uri>
			</author>
			<updated>2020-09-18T18:45:29Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2167#p2167</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2166#p2166" />
			<content type="html"><![CDATA[<p>At the moment we have plenty engines with wavetable and sample playing capabilities.</p><p>utz did a great range of wavetable engines that using 256-byte long looped samples, which is enough to represent vowels; I did a number of engines with sample-based percussion of various kinds.</p><p>Just a few days ago I released SquatE, which is very close to your Squeeker (thanks a ton for this thing!), plus it features a sample channel that plays along without interrupting the tone channels. This was done exactly with vocal and pitched instrumental samples in mind. It can be done even better, as a song with vocal parts would need good compression, and 1-bit samples seem to be compressible with basic RLE well enough, so the next step would be an engine with on-fly RLE sample decoder, and a wider number of samples (currently numbers limited to 7-15). Perhaps with a sample offset effect, even.</p><p>As for a real-time vowel synth, I think we&#039;re discussed this possibility at some point somewhere around here. This sure yet to be done.</p>]]></content>
			<author>
				<name><![CDATA[Shiru]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=11</uri>
			</author>
			<updated>2020-09-18T16:55:55Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2166#p2166</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Adding vocal track]]></title>
			<link rel="alternate" href="http://randomflux.info/1bit/viewtopic.php?pid=2165#p2165" />
			<content type="html"><![CDATA[<p>Hello,<br />maybe you are aware of this, but to sum it up - it should be extremely straightforward to add vocal abilities to any 1-bit engine, as it seems, by the means of either microsamples (probably even 16-bit &quot;bitmask&quot; quantity in a register, and doing ADD HL, HL, is enough to express basic in-tune harmonics between distinct vowels) or to use, otherwise unused AY channels to sum it up additively.</p><p>Viznut&#039;s engine<br /><a href="https://www.youtube.com/watch?v=BFo7IEy92No">https://www.youtube.com/watch?v=BFo7IEy92No</a></p><p>Agemixer&#039;s Freestyler od SID MOS6581<br /><a href="https://www.youtube.com/watch?v=R5bzqhp1Jqk">https://www.youtube.com/watch?v=R5bzqhp1Jqk</a></p><p>Famous speech in U96 songs was actually STSPEECH.TOS utility on Atari ST, utilising AY-3-891x<br /><a href="https://www.youtube.com/watch?v=_dG2zekU2ak">https://www.youtube.com/watch?v=_dG2zekU2ak</a><br /><a href="https://www.youtube.com/watch?v=k7FMfy3YgN0">https://www.youtube.com/watch?v=k7FMfy3YgN0</a><br /><a href="https://www.atari-forum.com/viewtopic.php?t=2254">https://www.atari-forum.com/viewtopic.php?t=2254</a></p><p>Kecal, the routine from unknown author (it&#039;s NOT Oldsoft - Zdeněk Starý), was pioneering microsamples<br /><a href="https://worldofspectrum.org/archive/software/utilities/kecal-2-oldsoft">https://worldofspectrum.org/archive/sof … -2-oldsoft</a></p><p>And recetly, I have found this, looks like it uses sequence of 32 Gameboy&#039;s 4-bit samples:<br /><a href="https://www.youtube.com/watch?v=8g9AN5PPYQE">https://www.youtube.com/watch?v=8g9AN5PPYQE</a><br /><a href="https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware">https://gbdev.gg8.se/wiki/articles/Game … d_hardware</a><br /><a href="http://www.devrs.com/gb/files/hosted/GBSOUND.txt">http://www.devrs.com/gb/files/hosted/GBSOUND.txt</a></p><p>Are You aware of any other routine of this kind? I think this is very unexplored area...</p><p>Zilogat0r</p><p>P.S.: UTZ, great posts about engine techniques and computer music history! I&#039;m a biiig fan of what you are doing.</p>]]></content>
			<author>
				<name><![CDATA[Zilog]]></name>
				<uri>http://randomflux.info/1bit/profile.php?id=35</uri>
			</author>
			<updated>2020-09-18T11:42:01Z</updated>
			<id>http://randomflux.info/1bit/viewtopic.php?pid=2165#p2165</id>
		</entry>
</feed>
