<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[ChipMusic.org - Coding a tracker: Where to start?]]></title>
	<link rel="self" href="https://chipmusic.org:80/forums/feed/atom/topic/9740/"/>
	<updated>2013-01-06T22:59:20Z</updated>
	<generator>PunBB</generator>
	<id>https://chipmusic.org/forums/topic/9740/coding-a-tracker-where-to-start/</id>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149483/#p149483"/>
			<content type="html"><![CDATA[<p>In my experience, if you&#039;ve never written a sound driver before write that first.&nbsp; &nbsp;Either way, writing the driver first is the best idea because everything you&#039;ll want the UI to read/write can be got working in source, before you even start on the front-end.&nbsp; &nbsp;Coding a tracker is 95% ui and 5% driver (like the old &quot;1% inspiration and 99% perspiration&quot;).&nbsp; You might end up writing the driver, be happy enough editing music in the source and not even get to the UI part.&nbsp; (that&#039;s how most of mine have turned out at least)</p><p>Failing that, adapting an existing driver with a friendlier interface could be a happy exercise.&nbsp; There are <a href="http://csdb.dk/release/?id=75124" target="_blank">plenty</a> <a href="http://csdb.dk/release/?id=66495" target="_blank">of</a> <a href="http://csdb.dk/release/?id=75436" target="_blank">those</a> around on the c64, for example.</p>]]></content>
			<author>
				<name><![CDATA[4mat]]></name>
				<uri>https://chipmusic.org/4mat</uri>
			</author>
			<updated>2013-01-06T22:59:20Z</updated>
			<id>https://chipmusic.org/forums/post/149483/#p149483</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149481/#p149481"/>
			<content type="html"><![CDATA[<p>if you want to make one for an old system it is pretty much imperative that you learn assembly language for that system</p><p>if you want to make one for modern PCs then C or C++ is probably most appropriate. it takes quite a while to learn how to program if you have never done it before (and &quot;making a tracker&quot; isnt really a suitable beginners project sadly <img src="https://chipmusic.org/forums/img/smilies/sad.png" width="15" height="15" alt="sad" /> )</p><br /><p>edit: if you want to do PC i think the best library to use should be SDL... milkytracker, schismtracker, piggy, etc all use it and it handles everything you really need for sound and graphics on windows/linux/mac/more, it is a C library (will work with C++): <a href="http://www.libsdl.org/" target="_blank">http://www.libsdl.org/</a></p>]]></content>
			<author>
				<name><![CDATA[ant1]]></name>
				<uri>https://chipmusic.org/ant1</uri>
			</author>
			<updated>2013-01-06T22:41:32Z</updated>
			<id>https://chipmusic.org/forums/post/149481/#p149481</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149475/#p149475"/>
			<content type="html"><![CDATA[<p>coding maxYMiser was a big struggle. all the GUI/editing feature coding etc was very dull. it took more a less a year of all my spare time to write the first version.</p><p>at the time i regretted spending so much effort, but now i don&#039;t see it that way and am very happy with the results. i would definitely encourage anyone to write a tracker! but it is more work than it may se.</p>]]></content>
			<author>
				<name><![CDATA[gwEm]]></name>
				<uri>https://chipmusic.org/gwEm</uri>
			</author>
			<updated>2013-01-06T22:20:04Z</updated>
			<id>https://chipmusic.org/forums/post/149475/#p149475</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149393/#p149393"/>
			<content type="html"><![CDATA[<p>Milky is opensource. You could learn references and structure and try some of your own.</p>]]></content>
			<author>
				<name><![CDATA[xylo]]></name>
				<uri>https://chipmusic.org/xylo</uri>
			</author>
			<updated>2013-01-06T13:00:40Z</updated>
			<id>https://chipmusic.org/forums/post/149393/#p149393</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149387/#p149387"/>
			<content type="html"><![CDATA[<p>Not exactly a tracker, but I have some barely readable code for a sequencer/fm synth with a JACK backend and a Curses frontend <a href="https://bitbucket.org/boomlinde/dx303/src" target="_blank">here.</a></p>]]></content>
			<author>
				<name><![CDATA[boomlinde]]></name>
				<uri>https://chipmusic.org/boomlinde</uri>
			</author>
			<updated>2013-01-06T11:04:02Z</updated>
			<id>https://chipmusic.org/forums/post/149387/#p149387</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149365/#p149365"/>
			<content type="html"><![CDATA[<div class="quotebox"><cite>egr wrote:</cite><blockquote><p>What about using Pure Data or Max? Not lightweight enough or ...? I believe both of those have options to export as a standalone application. Might be a way to jumpstart your progress at least.</p></blockquote></div><p>It would certainly work for the sound engine. I believe that libpd let&#039;s you embed PD patches in executable files. Its still a bit experimental. In the long run it may be better just to learn how to do it yourself.</p>]]></content>
			<author>
				<name><![CDATA[breakphase]]></name>
				<uri>https://chipmusic.org/breakphase</uri>
			</author>
			<updated>2013-01-06T02:55:39Z</updated>
			<id>https://chipmusic.org/forums/post/149365/#p149365</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149356/#p149356"/>
			<content type="html"><![CDATA[<p>What about using Pure Data or Max? Not lightweight enough or ...? I believe both of those have options to export as a standalone application. Might be a way to jumpstart your progress at least.</p>]]></content>
			<author>
				<name><![CDATA[egr]]></name>
				<uri>https://chipmusic.org/egr</uri>
			</author>
			<updated>2013-01-06T02:01:14Z</updated>
			<id>https://chipmusic.org/forums/post/149356/#p149356</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149353/#p149353"/>
			<content type="html"><![CDATA[<p>Ok guys, I had some of the same question last years and I have dig the Internet for you <img src="https://chipmusic.org/forums/img/smilies/wink.png" width="15" height="15" alt="wink" /></p><p>For me the best way to start was reading some simple code and try to understand them.<br />One that was really helpfull was taken here : <a href="http://olofson.net/mixed.html" target="_blank">http://olofson.net/mixed.html</a><br />DT42 is a drum tracker which work with 3000 line of C using sdl.<br />It is not easy and well written but it contain :<br />- a nice sdl GUI ;<br />- a load save function ;<br />- a structure to store the song ;<br />- sample instrument : just trig ;<br />- a really basic synth&nbsp; but well written and great to understand ;</p><p>There is also a minimal version without the GUI which take 1000 line of C, it&#039;s a strip down version of DT42. This guy has done a really good tutorial for anyone IMHO.</p><p>If you plan to write a tracker I think you should learn how to write&nbsp; :<br />- a waveform generator ;<br />- a minimal sound mixer ;<br />- a pattern player with an audio engine ;</p><p>I&#039;m not an expert in this area, I just begin to code a minimal player.<br />It play wave but the audio engine is not really perfect.</p><p>it&#039;s well written I think but I am a noob in waveform generation so i get broken c++ code.<br />It works I can generate sawtooth wave <img src="https://chipmusic.org/forums/img/smilies/smile.png" width="15" height="15" alt="smile" /> and I enjoy it.<br />I can&#039;t get a decent sine wave, i don&#039;t understand the full stuff...</p><p>Good to see there are people out there which write code, i enjoy this <img src="https://chipmusic.org/forums/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>And hope this will help you to begin.</p><p>Johann</p>]]></content>
			<author>
				<name><![CDATA[yoyz2k]]></name>
				<uri>https://chipmusic.org/yoyz2k</uri>
			</author>
			<updated>2013-01-06T01:52:19Z</updated>
			<id>https://chipmusic.org/forums/post/149353/#p149353</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149352/#p149352"/>
			<content type="html"><![CDATA[<p>A tracker is basically consist two very different parts: UI, which is normally a larger one, and sound code. They aren&#039;t overlap too much, so you may start to learn how to do them separately, then combine them into one fully functional thing.</p><p>Sound part takes data in some format, interprets it, then plays somehow, sort of through virtial low level commands. If it is a cross tracker, it produces register data for emulated chip, if it is a sample based one, it produced commands like start sample, stop, change channel pitch, change volume. In my opinion, easiest way to learn how to make sound part for a cross tracker is to write a simple VGM format player, the one that is for Sega Master System - the format is very simple, the chip is very simple, so you can easily write your own emulator, and get all kinds of ideas how the stuff work.</p><p>UI part of a tracker is kind of specialized text editor that implies certain limitations on the input. You may make one that will just produce a text file formated in certain way. You may start from a N-column editor that allows to enter numbers into each column, navigate, copy/paste, etc.</p>]]></content>
			<author>
				<name><![CDATA[Shiru]]></name>
				<uri>https://chipmusic.org/Shiru</uri>
			</author>
			<updated>2013-01-06T01:51:14Z</updated>
			<id>https://chipmusic.org/forums/post/149352/#p149352</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149347/#p149347"/>
			<content type="html"><![CDATA[<p>I&#039;d be interested to hear more opinions on this too.&nbsp; I&#039;ve got an alright background in Java and I don&#039;t really see how to make the jump to programming for sound.</p>]]></content>
			<author>
				<name><![CDATA[Theta_Frost]]></name>
				<uri>https://chipmusic.org/Theta_Frost</uri>
			</author>
			<updated>2013-01-06T00:54:12Z</updated>
			<id>https://chipmusic.org/forums/post/149347/#p149347</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149346/#p149346"/>
			<content type="html"><![CDATA[<p>Personal opinion:</p><p>A tracker don&#039;t have any specials stuff to code, for that reason you will never find a &quot;programming a tracker tutorial&quot; as you find &quot;programming a platform game&quot;.<br />You have to learn how to output sound, how to make a button, how to capture the keyboard and the sum of that could be a tracker if your knowledge was correctly acquired.</p><p>Personally I learned how to make all of that stuff in different things that I did in the past (dOb Engine, Brilek, NES programming, Amiga programming, blah, blah, etc, etc, etc), then programming DefleMask was only start to code it.</p><p>So, for short I recommend you to start coding simple apps: output a sine wave, create buttons, etc, etc. After that a tracker could pop up at anytime.</p>]]></content>
			<author>
				<name><![CDATA[Delek]]></name>
				<uri>https://chipmusic.org/Delek</uri>
			</author>
			<updated>2013-01-06T00:32:58Z</updated>
			<id>https://chipmusic.org/forums/post/149346/#p149346</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149345/#p149345"/>
			<content type="html"><![CDATA[<p>Both</p>]]></content>
			<author>
				<name><![CDATA[Saskrotch]]></name>
				<uri>https://chipmusic.org/Saskrotch</uri>
			</author>
			<updated>2013-01-06T00:32:37Z</updated>
			<id>https://chipmusic.org/forums/post/149345/#p149345</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149343/#p149343"/>
			<content type="html"><![CDATA[<p>Oooh, interesting topic.&nbsp; Famitracker is open source too. Are you making a synthesizer or just a sampler?</p>]]></content>
			<author>
				<name><![CDATA[breakphase]]></name>
				<uri>https://chipmusic.org/breakphase</uri>
			</author>
			<updated>2013-01-06T00:21:40Z</updated>
			<id>https://chipmusic.org/forums/post/149343/#p149343</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149341/#p149341"/>
			<content type="html"><![CDATA[<p>i have yet to find a good manual/tutorial for that - so i&#039;d welcome some pointers, too.</p><p>got one for you: maybe you&#039;d want to have a look at the source code for shiru&#039;s 1tracker - <a href="http://shiru.untergrund.net/files/src/1tracker_src.zip" target="_blank">http://shiru.untergrund.net/files/src/1tracker_src.zip</a> </p><p>it&#039;s for windows though, haven&#039;t got it to build on linux yet, though some people supposedly have <a href="http://shiru.untergrund.net/1bit/pivot/entry.php?id=194#comm" target="_blank">http://shiru.untergrund.net/1bit/pivot/ &#133; d=194#comm</a></p><p>good luck xD</p>]]></content>
			<author>
				<name><![CDATA[irrlichtproject]]></name>
				<uri>https://chipmusic.org/irrlichtproject</uri>
			</author>
			<updated>2013-01-06T00:09:35Z</updated>
			<id>https://chipmusic.org/forums/post/149341/#p149341</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Coding a tracker: Where to start?]]></title>
			<link rel="alternate" href="https://chipmusic.org/forums/post/149339/#p149339"/>
			<content type="html"><![CDATA[<p>I&#039;m kind of interested in trying to make a chip tracker, but I have no idea where to start (googling creating/coding a music tracker mostly results in &quot;how to create/code music using a tracker program&quot;), I figured there were at least a couple people here that could point me in the right direction. </p><p>i don&#039;t want to give too much away incase i actually manage to make this thing, but: i&#039;m not looking to make a console native tracker, or even a windows tracker that exports to a file format (at least not yet), so that might help with getting started. </p><p>thanks in advance</p>]]></content>
			<author>
				<name><![CDATA[Saskrotch]]></name>
				<uri>https://chipmusic.org/Saskrotch</uri>
			</author>
			<updated>2013-01-06T00:01:06Z</updated>
			<id>https://chipmusic.org/forums/post/149339/#p149339</id>
		</entry>
</feed>
