diff --git a/demos/quickstart.fur b/demos/quickstart.fur new file mode 100644 index 000000000..0e2d241b5 Binary files /dev/null and b/demos/quickstart.fur differ diff --git a/doc/1-intro/qs-insteditor.png b/doc/1-intro/qs-insteditor.png new file mode 100644 index 000000000..e00dabe0c Binary files /dev/null and b/doc/1-intro/qs-insteditor.png differ diff --git a/doc/1-intro/qs-instlist-empty.png b/doc/1-intro/qs-instlist-empty.png new file mode 100644 index 000000000..644cae3b8 Binary files /dev/null and b/doc/1-intro/qs-instlist-empty.png differ diff --git a/doc/1-intro/qs-instlist-full.png b/doc/1-intro/qs-instlist-full.png new file mode 100644 index 000000000..fa7fe3d52 Binary files /dev/null and b/doc/1-intro/qs-instlist-full.png differ diff --git a/doc/1-intro/qs-instlist-lessempty.png b/doc/1-intro/qs-instlist-lessempty.png new file mode 100644 index 000000000..ec2005c9d Binary files /dev/null and b/doc/1-intro/qs-instlist-lessempty.png differ diff --git a/doc/1-intro/qs-macro-release.png b/doc/1-intro/qs-macro-release.png new file mode 100644 index 000000000..659982f3b Binary files /dev/null and b/doc/1-intro/qs-macro-release.png differ diff --git a/doc/1-intro/qs-macro.png b/doc/1-intro/qs-macro.png new file mode 100644 index 000000000..a4481aba3 Binary files /dev/null and b/doc/1-intro/qs-macro.png differ diff --git a/doc/1-intro/qs-notes-effect.png b/doc/1-intro/qs-notes-effect.png new file mode 100644 index 000000000..1d88ee485 Binary files /dev/null and b/doc/1-intro/qs-notes-effect.png differ diff --git a/doc/1-intro/qs-notes-inst.png b/doc/1-intro/qs-notes-inst.png new file mode 100644 index 000000000..2c0c2e9bf Binary files /dev/null and b/doc/1-intro/qs-notes-inst.png differ diff --git a/doc/1-intro/qs-notes-spaced.png b/doc/1-intro/qs-notes-spaced.png new file mode 100644 index 000000000..507dec35b Binary files /dev/null and b/doc/1-intro/qs-notes-spaced.png differ diff --git a/doc/1-intro/qs-notes-vol.png b/doc/1-intro/qs-notes-vol.png new file mode 100644 index 000000000..5644da1a0 Binary files /dev/null and b/doc/1-intro/qs-notes-vol.png differ diff --git a/doc/1-intro/qs-notes-wronginst.png b/doc/1-intro/qs-notes-wronginst.png new file mode 100644 index 000000000..b92e6a70d Binary files /dev/null and b/doc/1-intro/qs-notes-wronginst.png differ diff --git a/doc/1-intro/qs-order-added.png b/doc/1-intro/qs-order-added.png new file mode 100644 index 000000000..372968f46 Binary files /dev/null and b/doc/1-intro/qs-order-added.png differ diff --git a/doc/1-intro/qs-order-changed.png b/doc/1-intro/qs-order-changed.png new file mode 100644 index 000000000..47abdcc6c Binary files /dev/null and b/doc/1-intro/qs-order-changed.png differ diff --git a/doc/1-intro/qs-order-default.png b/doc/1-intro/qs-order-default.png new file mode 100644 index 000000000..e7823b0f8 Binary files /dev/null and b/doc/1-intro/qs-order-default.png differ diff --git a/doc/1-intro/qs-samplist.png b/doc/1-intro/qs-samplist.png new file mode 100644 index 000000000..cfe4990e8 Binary files /dev/null and b/doc/1-intro/qs-samplist.png differ diff --git a/doc/1-intro/qs-speed.png b/doc/1-intro/qs-speed.png new file mode 100644 index 000000000..19a9e109d Binary files /dev/null and b/doc/1-intro/qs-speed.png differ diff --git a/doc/1-intro/qs-waveeditor.png b/doc/1-intro/qs-waveeditor.png new file mode 100644 index 000000000..33ad7dfbe Binary files /dev/null and b/doc/1-intro/qs-waveeditor.png differ diff --git a/doc/1-intro/qs-wavelist.png b/doc/1-intro/qs-wavelist.png new file mode 100644 index 000000000..fd4f85062 Binary files /dev/null and b/doc/1-intro/qs-wavelist.png differ diff --git a/doc/1-intro/quickstart.md b/doc/1-intro/quickstart.md index 2e7d3df1a..6694e15e5 100644 --- a/doc/1-intro/quickstart.md +++ b/doc/1-intro/quickstart.md @@ -1,10 +1,3 @@ - - # quick start guide first things first: thank you for taking the time to understand Furnace, the world's most comprehensive chiptune tracker. it's amazingly versatile, but it can also be intimidating, even for those already familiar with trackers. this quick start guide will get you on the road to making the chiptunes of your dreams! if you're a beginner, it will probably take about an hour from start to finish. @@ -29,9 +22,9 @@ on starting Furnace for the first time, the interface should look like this. if there's a lot going on, but the most prominent part of Furnace's interface is the **pattern view** – the spreadsheet-like table that takes up the bottom-left. -click to place the cursor somewhere in this view. it will appear as a medium-blue highlight. try moving around with the up and down arrow keys. also try the `PgUp` and `PgDn` keys to move around faster. the vertical axis represents time. during editing and playback the view scrolls around a highlighted row that stays put in the center; this is called the **playhead**. +click to place the cursor somewhere in this view. it will appear as a medium-blue highlight. try moving around with the up and down arrow keys. also try the `PgUp` and `PgDn` keys to move around faster. the `Home` and `End` keys quickly move to the first and last rows. the vertical axis represents time. during editing and playback the view scrolls around a highlighted row that stays put in the center; this is called the **playhead**. -now try the left and right arrow keys to move between columns. while we're at it, use the `Home` and `End` keys to quickly get to the first and last columns. pressing them twice will also shuttle you to the top or bottom row. when you're done, hit `Home` twice to return to the top-left. +now try the left and right arrow keys to move between columns. pressing `Home` or `End` twice will shuttle you to the first or last column, respectively. when you're done, hit `Home` twice to return to the top-left. hit `Del` to delete them all at once. +now let's clear out those notes. you could delete them individually with the `Del` key, but let's try something else first. click and drag to select them all. you'll know they're selected when they have a medium grey background. hit `Del` to delete them all at once. ![selection area](qs-selection.png) @@ -65,7 +58,7 @@ you'll usually want more than one note playing at a time. move back to the start ![notes in three channels](qs-notes-channels.png) -that chord will ring out for quite some time, but let's try stopping it early. a few rows after that chord, use the `Tab` or `1` key to enter a **note off** (sometimes called "note cut") in each channel that has a note. it'll appear as `OFF` in the note column. now try the shortcut `F5` to play from the start without having to move there. you should hear the chord as before, then it will stop where the note offs are, as though letting off the keys of a piano. +that chord will ring out for quite some time, but let's try stopping it early. a couple rows after that chord, use the `Tab` or `1` key to enter a **note off** (sometimes called "note cut") in each channel that has a note. it'll appear as `OFF` in the note column. now try the shortcut `F5` to play from the start without having to move there. you should hear the chord as before, then it will stop where the note offs are, as though letting off the keys of a piano. ![notes and note offs](qs-noteoffs-channels.png) @@ -77,19 +70,19 @@ before the next part of this guide, save the current **module** – the tracker at the top of the interface, just right of center, is the **instrument** list. there are also tabs for wavetables and samples, but we'll get to those later. just like physical instruments, these define the sounds we can use in the track. unlike physical instruments, these sounds can be endlessly redefined. -{{ empty instrument list }} +![empty instrument list](qs-instlist-empty.png) click the `+` button to add a new instrument. a small list of instrument types will pop up, one for each type supported by the chips in use. select "FM (OPN)", and the new instrument will appear in the list as "00: Instrument 0". this will sound the same as the default instrument (listed as "- None -"). -we still need something new and different, so let's pull from another module. open up a second instance of Furnace and use `Ctrl-O` to open the `quickstart.fur` file included with Furnace in its `demos` directory. the instrument list will contain "00: horn"; select it, then use the floppy-disk save icon above it to save it wherever you like. Furnace instrument filenames end with the `.fui` extension. +we still need something new and different, so let's pull from another module. open up a second instance of Furnace and use `Ctrl-O` to open the `quickstart.fur` file included with Furnace in its `demos` directory. the instrument list will contain "00: horn"; select it, then use the floppy-disk save icon above it to save it wherever you like. Furnace instrument filenames end with the `.fui` extension. let's return to the first instance with our slowly-evolving practice track. load up the new instrument; click the folder button left of the "save instrument" button and select the file. it will appear in the list as "01: horn", and it should already be highlighted. -{{ less empty instrument list }} +![less empty instrument list](qs-instlist-lessempty.png) -click into the pattern view and add some notes. the number `01` appears next to them; this is the instrument column, and it can be edited directly by typing in the number desired. generally, each note should have an associated instrument value. +click into the pattern view and add some notes in another FM channel well after our existing chord. we'll hear them with our new sound, and the number `01` appears next to them. this is the instrument column, and it can be edited directly by typing in the number desired. generally, each note should have an associated instrument value. -{{ small chunk of pattern view showing filled-in instrument value }} +![notes with instruments](qs-notes-inst.png) +beneath Base Tempo is "Speed", set to 6. right now, each row takes 6 ticks to complete before moving to the next row. let's say we want things to be a little faster. play the current set of notes to hear their tempo first. then, change speed to 5; the tempo after "Divider" will now show "180.00 BPM". play our notes back, and they're definitely faster... perhaps faster than desired. it's possible to get tempos in between by alternating speeds; if you're interested, check out the documentation on [speeds and grooves](../8-advanced/grooves.md) later on. ## what about those other channels? here's where we really get into the nitty-gritty of our emulated videogame system. we've been using Furnace's default system, the Sega Genesis. it employs two very different sound chips. the first is the Yamaha YM2612, also known as the Yamaha OPN2; it uses frequency modulation (FM) synthesis to generate sounds, and that's what we've heard so far. the other sound chip is the Sega PSG; it's a programmable sound generator (PSG) that can only make square waves and variations of noise. it's nowhere near as versatile, but don't ignore it – it's an important part of the classic Genesis sound. -let's start by creating a new instrument, this time choosing "Sega PSG" from the list. the new "Instrument 2" appears in the instrument list, already selected. now click in the pattern view and change one of our existing notes to use the new instrument. the number will change color from soft blue to bright yellow; this means that the chosen instrument isn't meant for the chip it's being used on, and if played back, we'll only hear that familiar default FM instrument. +let's start by creating a new instrument, this time choosing "SN76489/Sega PSG" from the list. the new "Instrument 2" appears in the instrument list, already selected. now click in the pattern view and change one of our existing notes to use the new instrument. the number will change color from soft blue to bright yellow; this means that the chosen instrument isn't meant for the chip it's being used on, and if played back, we'll only hear that familiar default FM instrument. -{{ chunk of pattern view showing normal instruments and one incorrect one }} +![notes with a wrong instrument](qs-notes-wronginst.png) go ahead and undo that edit, then move to the channel labelled "Square 1", the first of the PSG's channels. try adding notes with the new instrument, and they'll work just fine without complaint. of course, they're plain, no-frills square waves. while we're here, try making them quieter by entering new volumes; since this chip only uses sixteen volume levels, `0F` is the maximum. @@ -176,15 +165,15 @@ let's move to the noise channel now. the same instrument will work here, but pla the FM side of the Sega Genesis has a special feature; channel 6 can be used to play back digital **samples**. this means that any recording – a snare drum, an orchestra hit, somebody talking, whatever you have – can be part of the music. -go back to that second instance of Furnace. just as we saved an instrument last time, let's switch to the "Samples" tab and select the lone sample there, "0: bell", then save it as a `.wav` file. swap back to the instance of Furnace we've been working in, and load it there. +go back to that second instance of Furnace. just as we saved an instrument last time, let's switch to the "Samples" tab and select the lone sample there, "0: example", then save it as a `.wav` file. swap back to the instance of Furnace we've been working in, and in the Sample tab, open it. -{{ samples tab? }} +![sample list](qs-samplist.png) in order to use the sample, we want to make an instrument that references it. right-click on it in the list and select "make instrument". the "Instrument Editor" window will pop up to show us that we now have an instrument 3 named "example", a type of "Generic Sample", and below that, the sample selected is "example". while we're at it, let's change the instrument name to "bell" since that's what it sounds like; just select the "example" at the top and type over it. -{{ instrument list? }} +![full instrument list](qs-instlist-full.png) -now, let's hear it in action. close the instrument editor, then clear out everything in the patterns of our first order. (either delete what's there, or adjust orders to get it out of the way.) switch to our new bell instrument and put a C-4 note in channel "FM 6". when we play it back, it sounds perfect! +now, let's hear it in action. close the instrument editor, then clear out everything in the patterns of our first order. (either delete what's there, or adjust orders to get it out of the way. try hitting `Ctrl-A` three times to select everything at once.) switch to our new bell instrument and put a C-4 note in channel "FM 6". when we play it back, it sounds perfect! if ever a sample sounds out of tune, refer to the [sample tuning guide](../9-guides/tuning-samples.md) to fix it up. @@ -194,21 +183,21 @@ now that we've gotten everything we need from `quickstart.fur`, close that insta ## what about wavetables? -some chips can use **wavetables**, which are a lot like very short looping samples. one of these is the Game Boy. let's start a new file, either from the menu or with `Ctrl-N`. a dialog box pops up to ask which system we want; type "boy" in the search and it can be easily located in the results. +some chips can use **wavetables**, which are a lot like very short looping samples. one of these is the Game Boy. let's start a new file, either from the menu or with `Ctrl-N`. a warning dialog asks if you want to save; it's up to you. after that, a dialog box pops up to ask which system we want; type "boy" in the search and it will be at the top of the results. select it. in our brand new song, we'll want to add a new wavetable. between the "Instruments" and "Samples" tabs, select "Wavetables". add a new one with the `+` button. Furnace will generate a wavetable of the right size for the current chip, and it will already have a sawtooth wave in it. -{{ wavetables list }} +![wavetables list](qs-wavelist.png) double-click that new entry to open the "Wavetable Editor". you'll see a line of large pixel-like blocks. this is our sawtooth wave. nice as those are, let's get creative. click anywhere in that area and "draw" a new wave, something interesting. note that at the bottom of the window, there's a line of numbers that change as you edit. you can edit the numbers directly to change the values above; keep this in mind for later. once you're happy with this wavetable, make at least two more, just for later demonstration purposes. -{{ wavetable editor }} +![wavetable editor](qs-waveeditor.png) right now, we can't do much with this wavetable; as with samples, it needs an instrument. this time we can't just create one directly from the wavetable, so go to the instruments list and add a new one. open it up in the instrument editor, name it whatever you like, then select its "Macros" tab. -we'll get to macros in more detail in a bit, but for now, simply click the down-arrow next to "Wavetable". click the `+` button that appears; a column will turn grey in the box to the right. click in the middle of that column and it turns half orange; this is how you select which wavetable to use for this instrument. it's like a bar graph. +we'll get to macros in more detail in a bit, but for now, simply click the down-arrow next to "Waveform". click the `+` button that appears; a column will turn grey in the box to the right. click in the middle of that column and it turns half orange; this is how you select which wavetable to use for this instrument. it's like a bar graph. -{{ instrument editor on macros tab }} +![instrument editor](qs-insteditor.png) close the wavetable editor, move the instrument editor off to the side, and click into the "Wavetable" channel in the pattern view. add a few notes to get a good sense of their tone. in the instrument editor, change that macro to a different value, and play the notes again to hear the difference between the wavetables you made. @@ -218,21 +207,19 @@ the **macro** is perhaps Furnace's most powerful feature. formally defined, it a let's start by clearing out the notes we've entered. after that, move the cursor to the top-left into the "Pulse 1" channel. create a new instrument and go into the instrument editor. we'll want to work with the volume macro, but before we can do that, we have to select the "Game Boy" tab and check the box labelled "Use software envelope". the Game Boy's sound hardware can do its own limited volume envelopes, but those won't help us right now, and if we leave the box unchecked, the volume macro won't work (though the others will). -{{ instrument editor on Game Boy tab with that box checked? }} - -in the "Macros" tab, click the down arrow next to "Volume" to open it up. the number that appears beneath the word "Volume" is the length of the macro; let's set it to 30. in the large box next to it, draw a ramp from near minimum volume (1) to maximum volume (15) at the left, then another down to minimum volume (0) at the right. if it's a little uneven, that's okay; you can always edit the numbers directly beneath the box, just as with the wavetable editor. +in the "Macros" tab, the number that appears beneath the word "Volume" is the length of the macro; let's set it to 30. in the large box next to it, draw a ramp from near minimum volume (1) to maximum volume (15) at the left, then another down to minimum volume (0) at the right. if it's a little uneven, that's okay; you can always edit the numbers directly beneath the box, just as with the wavetable editor. also try right-clicking in the macro and dragging; now you have perfectly smooth ramps. you may have a little trouble navigating the whole macro at once. use the scrollbar at the top of the macros tab to move around it. even better, use the `-` button to the left of it to narrow the bars until it's all visible! -{{ completed macro }} +![volume macro](qs-macro.png) while in the instrument editor (and as long as you're not in a text box) you can play notes on the keyboard without affecting anything in the pattern view. give it a try, and you'll notice that when held down, each note does its own quick fade in then fade to silence. you could do this with effects, but if you're using it on many notes, doing it with the instrument itself could save a lot of typing! in the pattern view, add a few notes spaced far enough apart that the whole rise and fall is audible (at speed 6, five rows will do). then look to the thin bar underneath the macro view. it may not look like much, but if you hold the `Shift` key and click directly underneath the peak of the macro, it will light up green. we've just set a **release point**. play with the instrument a little here, and notice that holding the key down holds the note in place at top volume – at the release point – until let go. now play the song from the start; each note will rise to max volume then stay there until the next note plays. -{{ macro view }} +![volume macro with release](qs-macro-release.png) -somewhere after the last note in our song, move to about ten rows beneath it and place a note off. the final note rises to maximum, then is suddenly cut off! to get the rest of the macro to play, delete the note off and use the `~` key to put in a **macro release** instead, which will appear as `REL`. now when the song is played back, the final note will rise and hold steady until it reaches the macro release, then we'll hear the rest of the macro play out. +about ten rows after the last note in our song, place a note off. the final note rises to maximum, then is suddenly cut off! to get the rest of the macro to play, move your cursor over the note off and use the `~` key to replace it with a **macro release** instead, which will appear as `REL`. now when the song is played back, the final note will rise and hold steady until it reaches the macro release, then we'll hear the rest of the macro play out. macros are absurdly powerful tools. read the [macro documentation](../4-instrument/README.md) to make the most of them!