text:
Blender 3D: Noob to Pro/Tutorial Links List

This page includes a categorized list of Blender tutorials written or spoken in English. This is by no means a comprehensive list of tutorials, so adding links is encouraged. For tutorials that are not in English, please refer to the About page.

If you would like to learn about editing pages, you can find information in the Introduction to Wikipedia.

General Blender Information

 * Blender Documentation - Includes information on Blender functionality, developing for Blender, and creating Addons.
 * To Those Learning 3D - Recommendations for people first diving into Blender.

Blender Tutorial Websites
This section includes links to websites that host multiple tutorials or provide links to other Blender tutorials. This section does not contain links to individual tutorials.

 * BlenderGuru - Run by Andrew Price, BlenderGuru includes free tutorials as well as full training courses.
 * Blender Cookie - Part of the CG Cookie Network. Includes many free tutorials. Other tutorials and full courses are available to members with a subscription.
 * BlenderDiplom - Free tutorials mostly focused on visual effects, but includes other topics as well.
 * Blender Tutor - Includes a series for Blender beginners as well as tutorials for more advanced users
 * BlenderArt Magazine - Blender magazine that includes tutorials in each issue.
 * Blenderpedia - Free video tutorials, mostly about creating scenes and environments.
 * 3D Total Blender Tutorials - Includes many tutorials about various topics in Blender.
 * BlenderCourse - 120 page Blender E-Book created for Blender 2.63
 * Tutorials For Blender3d - Many Blender Game Engine tutorials for Blender 2.6
 * Blender Tutorials Vimeo Group - This group the collects video tutorials posted on Vimeo.
 * Super3boy's Blender Tutorials - Video tutorials dealing with the basics of different aspects of Blender.
 * Greybeard's Blender Video Tutorials - Downloadable video tutorials that go over many topics.

These sites include links to Blender tutorials on other sites
 * BlenderNation Tutorials - List of tutorials that have been posted on BlenderNation
 * Blender3d Club - Includes links to various Blender tutorials
 * SurfnLearn.com : Blender 3D Tutorials - Links to various Blender Tutorials
 * Learningblender.com - Categorized links to various Blender Tutorials

These sites include tutorials that use Blender versions prior 2.5.
 * Dave Jarvis' Blender Tutorials - Free tutorials using Blender 2.4x
 * Kator Legaz - List at bottom includes a couple Blender tutorials
 * BlenderMasters - Links to tutorials and some embedded YouTube tutorials. All 2.4x and older.
 * Selleri (Link removed, because it is harmful nowadays) - Handful of tutorials on a very old version of Blender.
 * Cogfilms Tutorials - PDF downloads of tutorials in 2.4x
 * Pavaler.se - A couple of tutorials on modeling and animation.

Blender Interface

 * Blender Basics: 2 Minute Tutorials - The Interface
 * Blender Interface Theme Repository
 * Basic Editing
 * Blender Hotkeys
 * Changing Views
 * First Impression
 * Getting Started

Mesh Modeling

 * Video - DupliVerts Tutorial
 * How to solve Blender's smoothing problems: discussion about smoothing strategies: Smooth/Solid, Auto Smooth, EdgeSplit modifier...
 * Heightmaps
 * Extrusion Controlled by IPO
 * Basic objects
 * Modeling Techniques and Strategies
 * Easily Remove Orphan Edges and Vertices
 * Non-destructive bevel effect

Nurbs and Subsurface Modeling

 * Subsurf modeling 2
 * Metaballs
 * Abstract SubSurf modeling I

Modeling Specific Objects

 * Wooden Crate
 * Double-Helix
 * Turtle
 * Leaf Shader
 * Sears-Roebuck Dairy Barn
 * Golf Ball
 * Celtic Knot
 * Quick and Easy Tree
 * Ice Cube (pdf tutorial)
 * Water I (Link removed, because it is harmful nowadays) (pdf tutorial)
 * Water II (Link removed, because it is harmful nowadays) (pdf tutorial)
 * Dice
 * Die with round corners
 * Logo
 * Cutting through steel
 * Candle
 * Landscape Cartoon (Link removed, because it is harmful nowadays) (pdf tutorial)
 * Text
 * Hair Tutorial
 * Wikipedia: Human Body Proportions

Texturing

 * Video - Basic Materials
 * Making a Lightsaber with Halos
 * The Unofficial Texturing Tutorial
 * Material Indice Tutorial
 * Transparency and Refraction
 * Reflections
 * Texturing landscapes according to slopes
 * Using Texture Stencils
 * Textures with Alpha
 * Textures with Bumpmapping

UV Mapping

 * 2 Minute Tutorial: Blender Basics - UV Mapping (Project from View)
 * Video - UV Mapping
 * UV Mapping & Texturing
 * Complex material for a sword

Animated Textures

 * Video - Changing Colors Of Objects Mid Animation
 * animating masks for simulating ice freeze
 * Animated Procedural Textures (pdf tutorial)

Texture Nodes

 * Video - Blender Nodes
 * Vector Blur usage with Blender

2D Texture Painting Techniques
These tutorials do not directly involve Blender, however they cover useful 2D knowledge for advanced Blender users.
 * Steven Stahlberg's Tutorials * exposed
 * Fixing Lighting Irregulaties in Self-Tiling Maps
 * Texturing with Gimp

Lighting, Shadows and Rendering

 * 2 Minute Tutorials: Blender Basics - An Outline of Lighting and Rendering in Cycles
 * Basic 3 Point Lighting
 * Radiosity I
 * Radiosity II
 * Ramp Shaders
 * Simulating Radiosity
 * Ambient Occlusion
 * Soft Shadows and Area Lights
 * Soft Lights (Link removed, because it is harmful nowadays)(pdf tutorial)
 * Blender's Mist

Compositing

 * Matching Real Lighting

Animation

 * Video - Animation Basics
 * Simple Animations
 * Effects
 * Walking Blues
 * Non Linear Action Editor - NLA I
 * Non Linear Action Editor - NLA II

Armatures and IK

 * Video - Basic Armatures
 * Dancing Flor * exposed
 * Animation Workshop II * exposed
 * Animation recode project
 * Action Constraints tutorial made easy
 * Driven Hand Rig
 * Constrained Mechanics
 * Ikas Blender 3D - Introduction

Particles

 * Video - Particle Basics
 * Video - Grass with Particles
 * Video - Explosions with Particles and the Explode Modifier
 * Particle Interaction
 * Static Particles
 * Making a Rain Effect
 * Setting a prey-predator relationship using Boids particles
 * Particle and field basics

Fluid Simulation

 * Video - Fluid Simulation
 * Fluid Simulation Basics

Game Engine

 * Video - Blender Game Engine Basics
 * Video - Making Dominoes
 * Game Engine Development
 * New fully integrated game engine?
 * #GameBlender
 * Walkthrough Tutorial
 * Mouse Look 1st Person. Options include capping, invert mouse pitch and adjust mouse sensitivity.
 * Viewports. Creating a split screen.
 * Python game functions. Sample Code Included.  Updated to 2.48
 * Car Setup. Use Bullet Physics vehicle wrapper.
 * Python scripting for the Game Engine at cgmasters.net.
 * Python scripting series of tutorials

Verge3D

 * Video - Verge3D for Blender basics

Python and Plugins

 * Povanim Export Script
 * AI Path Importer
 * 3D-No Plugins; Put your 3D Blender space on web!
 * Randomizer Script Scroll down the page
 * Different Useful Scripts (Link removed, because it is harmful nowadays )
 * Lsystem tree maker
 * Python API Introduction
 * Python API, Making a Square Mesh
 * Python API, Iterations
 * Python API, Automating Vertex Creation
 * Python API, Automating Face Creation
 * Python API, Making Potatoid
 * Python Script, To build an Empty for EnvMap
 * Python Script, Bezier Curves Import
 * Python Script, Paths import
 * Python Script, Importing Adobe Illustrator Format
 * Python Script, Mesh Explosion
 * Python Script, Level Of Detail
 * Python Script, Wire Shadows and extrusions
 * Python Script, Changing the active camera instantly
 * Using the Superficial Scattering Script
 * City Block Genarator
 * Blender Camera Calibration with Live Camera
 * Mesh shaker and tutorial
 * Batch STL
 * Vertices to a Curve Converter
 * Zutils, Z-Buffer Utilities

Related Programs

 * YafRay
 * SPE - Python IDE for Blender
 * Wings 3D Subdivision Modeler
 * Verse Gimp-Blender Plugin
 * Kerkythea Renderer
 * Equinox 3D
 * Povray export
 * Adobe Illustrator Paths import
 * Inkscape SVG import
 * Voodoo Camera Tracker
 * Lionhead The Movies

Distributed Computing

 * BURP - Big and Ugly Rendering Project
 * Global Rendering-Farm

Blender WikiBooks

 * Blender 3D: Blending Into Python
 * Blender 3D: HotKeys
 * Blender 3D: Import and Render a SolidWorks Model
 * Blender 3D: MemoBook * exposed
 * Blender 3D: Noob to Pro

FAQ

 * Blender FAQ (Generated on September 24, 2001)

Miscellaneous
These are must reads for CG artists.
 * How to succeed in Animation
 * Classical Film and Video Knowledge Base
 * Quick Tips in Design&GFX

Open Movies

 * NaNo - Blender Internet Virtual Movie Studio

IRC

 * irc://irc.freenode.net/blender
 * irc://irc.freenode.net/blenderchat
 * irc://irc.freenode.net/blenderclasses
 * irc://irc.freenode.net/blenderqa
 * irc://irc.freenode.net/blendercoders
 * irc://irc.freenode.net/blenderwiki
 * irc://irc.freenode.net/gameblenderdev
 * irc://irc.freenode.net/gameblender
 * irc://irc.freenode.net/verse

Tests

 * Blender Benchmarks

Other Lists
Please read more about on talk page.

 * LANGUAGES (czech)

About
This links list is language filtered and extended version of personal collection originally provided by IamInnocent. So if you looking for tutorials in other languages check this link at www.elYsiun.com.

 * German Blenders should have a look at http://de.wikibooks.org/wiki/Blender_3D:_Tutorial_Linkliste

If you want to add Blender tutorial link in some other language you can add it temporary on talk page. We will later made such WikiBooks in other languages too.

Thank you all who contributed to this nice and useful links collection! Feel free to add your name or link if you think you need to be mentioned here.


text:
Talk:Blender 3D: Noob to Pro/Tutorial Links List

www.cg-files.com is huge resource of cg files and tutorials. On CG Files you can download free 3D models, 3D Max Tutorials, Photoshop Tutorials, Flash Tutorials, Collection of Textures, Blueprints, HDRI, News, and much more.

To Do

 * Probably is good idea to mark author, quality, version, level, format (pdf, flash, java)...etc of tutorials somehow. UTF-8 caracters are useful, but problem is that Window$ IE usually don't show them all.

Here are some useful UTF-8 caracters for this purpose:

or we could have Window$ safe caracters:

 * !? - ok, but probably not the best
 * ! - good
 * !! - excellent
 * ***** - five stars for the best
 * 2.36 - Blender version compatibility

--Popski 02:09, 24 Mar 2005 (UTC)

Dead Links
Here is list of (hopefully temporary) dead links, if you find dead link please put it here, heh and vice versa if you find here working link put it back in article.
 * If you really need some of those 'dead links' you can try to dig it at http://www.archive.org

Mesh Modeling

 * Boolean Operations (Site down: 7.3. 2005)
 * Low Poly Modeling (Site down: 7.3. 2005)
 * Advanced Mesh Modeling (Site down: 7.3. 2005)

Specific Object Modeling

 * South Park Character (403 forbidden, 20. 9. 2005)
 * Mountain Tutorial (Site down: 7.3. 2005)
 * Making a Pencil (Site down: 7.3. 2005)
 * Jet Engine (Site down: 7.3. 2005)
 * HexHead Bolts (Site down: 7.3. 2005)
 * Making Loudspeakers (Site down: 7.3. 2005)
 * Racing Wheel (Site down; 7.3. 2005)
 * Torpedo (zipped pdf; Site down: 7.3. 2005)

Human

 * Cut a Head (Blenderman Site down: 25.5. 2005)
 * Modeling a Realistic Human Body(broken link: 22. 10. 2005)
 * Modeling a Realistic Human Head(broken link: 22. 10. 2005)
 * Modeling a Realistic Human Ear(broken link: 22. 10. 2005)
 * Modeling a Realistic Human Hand Palm(broken link: 22. 10. 2005)
 * Modeling a Realistic Human Feet(broken link: 22. 10. 2005)
 * A working mirror of Modeling a Realistic Human ... (should it be on the main page?)

Cars

 * Car I (Blenderman Site down: 25.5. 2005)
 * Car II (Blenderman Site down: 25.5. 2005)
 * Car III (Blenderman Site down: 25.5. 2005)

Texture Mapping

 * Blender Material Tutorials * exposed (broken link, 20. 9. 2005)
 * Chrome Reflections (broken links; 25.7. 2005)
 * Material Indices ( error 404, 27.4. 2005)
 * Bump Maps (Site down: 7.3. 2005)
 * Animating UV Textures (Site down: 7.3. 2005)
 * Getting Rid of the PINK! (Site down: 7.3. 2005)

Lighting, Shadows and Rendering

 * Lighting Techniques (broken link; 6.8.2005)
 * Hidden Line Rendering Tutorial (broken link; 8/30/2005)

Armatures and IKA

 * Basic Robotic Leg Rigging (Broken Link 21/10/05)
 * Weight Painting (Broken Link 6/30/05)
 * IKA Tutorial (Broken Link 7/8/05) Working at 2006/03/27

Animation

 * Vertex Key Animation (Site down: 8.3. 2005)

Compositing

 * Compositing Graphic Elements (link broken: 23. 8. 2005)

 * Live Video Page requires permission to view (?)

Video Tutorials

 * Softbody in Wind (Xvid AVI) broken link 2005-09-19
 * Softbody I (link broken: 3. 9. 2005)
 * Softbody II (link broken: 3. 9. 2005)
 * Softbody & Lattice (link broken: 3. 9. 2005)

ElYsiun Discussion
We also talk about this Module on www.elysiun.com.

Sorry Popski
(Official Blender Documentation) Sorry for deleting w/o discussing, but those links are wierd... One is linking to the first of two parts of the current blender doc. One other is for the old blender doc, but the one at the top (which i kept) is linking to a page -> linking to all official docs. Either we remove the two second links (again), or add all the links on the "official docs" page which the first link is reffering to.

 * It's ok, you were right about Blender Documentation Links, but discussion before delete is a fair play here, also don't be just a number and sign up, it's free. --Popski 15:41, 15 Jun 2005 (UTC)

How to write a Blender WikiBook?
It's easy. Just make link with Blender 3D: BookName in Blender 3D module and start to write. But if you will write some Blender tutorial it's probably better place to put it in Blender 3D: Noob to Pro WikiBook where is proper place for all classical Blender tutorials. --Popski 15:41, 15 Jun 2005 (UTC)

French
In Blender 3D: Tutorial Links List are only links to English tutorials. I noticed that some users started to add there also tutorials in other languages. So I will move them temporary here since there is no such WikiBooks.

 * The French Greatest List of Tutorials
 * The French Greatest FAQ

--Popski 08:41, 10 August 2005 (UTC)

Český

 * www.blender3d.cz

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Blender 3D: MemoBook

As you may be aware, Blender is the first and only fully integrated 3D graphics creation suite allowing modeling, animation, rendering, post-production, realtime interactive 3D, and game creation and playback with cross-platform compatibility - all in one tidy package.

This Blender MemoBook is part of my personal Memo Ssschratchhhh WikiBook. Maybe you will find it useful. You can edit it if you already have your own MemoBook, tip or proper link to add@this level! This level means that you can find this MemoBook useful after you went carefully thru Blender Interface for the very first time and you want something nice to render or animate with your Digital Studio Masterpiece - Blender! This Blender MemoBook doesn't want to be YaBt (Yet another Blender tutorial), but more like MemoBook with references to tutorial links (to support short HOWTOs) and tips which related tutorials maybe didn't include or are worth repeating. I want to keep this MemoBook as compact as possible, but still smooth and friendly enough to be read.

Also don't worry if you want to edit this MemoBook, feel free and welcome, MediaWiki has all history backed up. MediaWiki is quite easy to install. How? Read this WikiBook.

General Tips

 * Here is what I found to be the Golden Rule of Blender:
 * "Keep one hand on your keyboard and one on your mouse."

 * Blender Manual.
 * Blender Hotkeys & Useful Blender Shortcuts
 * Blender Tutorial Links List
 * Google is your friend. Search for blender filetypes like this: scene filetype:blend

Ok, let's do it!
I didn't work in real 3D for many years (I've used Cubicomp and Topas in my professional past) and even with all my 3D experiences using Blender doesn't look like easy task... But anyway, you will never know how to swim if you don't jump into the water, as someone said, so I'll try to make a beautiful Staunton chess set for my first Blender lesson. Hard & original task, huh? :) But before you start i would like to invite you to read beautiful writing for a new artists, To Those Learning 3D written by Glen Moyes.

Before you really start, it's a good idea to set home paths for textures, fonts, render, yfexport, python, texplugins, sounds, seqplugins, and tmp (be careful: default /tmp is deleted after reboot, it's better to set it somewhere else, like /home/blender/render). You can find this options in User Preferences: CTRL-ALT-U. I find it useful if it's MMB (middle mouse button) set to Pan View instead the default Rotate View. I also prefer Dolly rather than Continue View Zoom. After these changes you can save default scene with CTRL-U.

For the reference image I've downloaded some proper Staunton set photos from the net. You can use photos as references in Blender too, but for the Blender SVG import test I will use Inkscape for the 2D chess set render.

Staunton chess set
First I will make a pawn. Why? Heh, because it's the greatest piece! You don't believe me? Well, the pawn can be promoted to any piece except the king, can't it? So... :)

Ok, I can't say that Blender 2.35 doesn't read Inkscape SVG, but the import is not perfect yet, so it looks that I will have to wait for perfect import till some next Blender release.

I didn't want to make a 2D pawn polygon again, so I repaired the broken Inkscape SVG in Blender 2.35 version also can't read open SVG polygons which are needed for my pawn...

I used Blender basic Mesh Tool Spin, which is probably not the best option if you want to have huge number of objects made that way. For such purpose is better to use Catmull-Clark Subdivision Surfaces because of Subdivision Surfaces control, but for this very first test was ok.

Ok, I did it! Staunton Pawn is born. Not bad for the first try! I had problems with merging doubled points (Edit mode > WKEY > Merge); maybe it is better to leave them doubled. There must be easier way to delete them. I'll check this with the next piece - bishop, zebra, robot, house, or mouse. You can download chess set from here. (You can remove doubles if you select all vertices & (Edit mode > WKEY > Remove Doubles), but you need to be careful that you start to build at center SHIFT-CKEY).

Materials

 * The plastic pawn is without texture and the scene has two lights, one omni (omnidirectional) light for better ambient light and one stronger spot light which casts shadows. Shadows in this scene were made with Buf. Shadow setting (Lamp buttons) where you have good control over shadow softness.

 * For the rusty pawn I've used the same scene with two lights and a rust texture map (I've made a larger tile 2400x3200 px texture in Gimp, but I found it later that is better to use power of 2 sizes for textures: 512x512, 1024x1024, 2048x2048, ... etc.) from www.mayang.com where you can find a lot of free, large & useful textures for your models. Map input setting for this rust texture is cube; settings for map to are col and nor, this stands for using colors and normals (bump mapping). This stage went without problems, but I needed a lot of experimenting with settings. I found it out that you need to rotate texture through 90 degrees in Blender if you want to have original texture position!! (Blender ver. 2.35).

 * The Amber pawn is made using Subdivisions instead of SPIN command. It stands in the same scene but there is more lights and background curved plane. For this material I've used reflection mapping F5 > World buttons; F5 > Material buttons > Mirror Trans and Ramp Shader. Do you know how many lights are used for the Amber pawn?

 * The Glass pawn stands in the same scene but is rendered with Yafray renderer which finally works in Blender 2.35, but still not by default(!!). For this you have to switch off the xml button Scene (F10) > Render > Yafray > xml. Results with Yafray are good, but it's a large time consumer - read slow. For Yafray rendering I needed to set different light settings to those in the previous scene because the Yafray render is much darker than the default Blender renderer. This you can correct a bit in the same menu as is xml button with Gam and Exp sliders (Gamma correction and Exposition), but probably you will need to add more energy to lights too. I set Exp to 4.0 and the spot light Energy to 5.5 (in the previous scene was 1.4 for the same lighting arrangement). This glass pawn is without texture, but I added one photon spot light from the same direction but little lower. Photon light doesn't shine as normal light but traces light photons through material refraction. You can see results on the background surface and on model itself. I set the pawn material refraction to 1.5 Shading (F5), Material buttons > Mirror Transp > IOR which is the value for glass as you can see in Material Refraction Values Table. I found good tutorials about this topic on www.blender3d.com.

Completed Staunton chess set, prepared for a good NeoRandom Chess game!

 * All chess pieces were made with the same subsurface principle: Shift AKEY >> Add > Mesh > Cylinder and EKEY for extrude, but the difference is in the number of vertices. The pawn is started with 4 vertices, the knight with 8, bishop with 16, king with 8, queen with 10, and the rook with 12. Four vertices for the pawn is not enough for a rounded bottom (read about this problem here). The knight was made with the extrude function EKEY and with some tweaked vertices. I also added two additional Face Loop Cuts KKEY > Face Loop Cut for head details. The bishop was made the same way. Here I also used the knife function KKEY > Knife (Exact) for the bishop head cut. The rook could be started with 18 vertices for a better result on the parapets (the upper part of the rook). Material for this chess set was taken from amber pawn, the only change is color hue.

Cobra
Did you expect to find here Queen or Zebra? Oh no, my friend. Here is Cobra, or the so-called Shelby Cobra Blueprint which is needed to build your new Cobra 3D car model. One day I was looking for a good Cobra Car Blueprint, but I found only one with a small resolution, so I decided to draw a Cobra Blueprint in SVG format with another great 2D vector software package Inkscape. You can download the Cobra Blueprint SVG files here at Openclipart.org.

There are quite a lot of car tutorials around, but best so far that I found is a tutorial for a car made by Speedtiti (sometimes you can find him on IRC). I missed some details in his tutorial, but I think his approach to car modeling is right one. In the picture above you can see my Cobra progress so far. Perhaps as you are building your car model you will need some of these tutorials and also this, as well as one about car lights at 3dcar-gallery.com. Finally there is an excellent site with tons of blueprints online!

 * Have fun with building Cobra and don't forget to make some useful entries in the Memo Book!

Face of Gilbert
The Face of Gilbert was my first try to make an organic form with Blender. I didn't use any reference pictures. The main reason for this is that almost every tutorial uses reference pictures and I wanted to see what I could do without them. What did I learn from this exercise? Well, Blender is very strong modeling tool compared to software that I had used before (yes, that's an old book:). Catmull-Clark Subdivision Surfaces is an excellent tool for organic forms and gives you precise control over surface curves, but you have to be careful about two things: First, when you model the front side of the model you have to be careful about the back side vertices at the same time! Why? Because if you start with box modeling like I did in this exercise, you will have a flat backside full of vertices in the same plane after you finish the front side face modeling and this is rather difficult to change later. The same is true for the left and right side of the model. Only later I found a very useful Topology Guides. Second, if you want to model some exact shapes, especially rounded circles, don't start with a Box but try with a Tube or use command SPIN. Read more about this problem here. In my case it was also a good idea to control surfaces from inside of the model, especially when modeling concave slopes like ears. Thru processing I didn't delete any vertices and I've used mainly these commands for modeling: KKEY for loop cut, EKEY for extrude (in my case used only for the ear), GKEY for editing vertices and SKEY for scale (with the SKEY you also control symmetrization of vertices). You can check some tutorials for the basic idea how I've made Gilbert. ''Holly smoke! I think I can fly!'' The scene and material for this model are quite simple. I have used two lights: one spot and one omnidirectional. I have also included a grey-blue back plane for an additional 3D effect. Face material is made with Ramp Shaders (F5 > Ramps). I didn't care much about materials this time, but I will try SSS python script for this purpose later. This face is made with Blender 2.36 but it will be even easier to do it with the additional features in Blender's next release 2.37! Yesss!!

Victor the Brave
Yes, Blender 2.37a is even more enjoyable for modeling than the previous versions. At this point I can tell you for sure that Blender is really a Big Software Bundle. This also means that you will never be able to master all of Blender's finest filigree features and options unless you are hmm, God? With integrated Python there's just too many options... and there's still more and more to come!

I've made the Victor The Brave character for the purpose of learning animation, and pure fun of course! What did I learn? I found another of Blender's Modeling Golden Rules! Less is More, but Optimal is the Best! So when you model have in mind that less vertices you use, the closer to perfection you will be, but don't forget to press Optimal button from time to time (F9; Mesh; Optimal :)

I also found it out that is VERY important how you start modeling your model if you want to finish it with a good, smooth & optimal mesh (this is also important for composition). There are many ways to finish your model, but only few that are optimal. Victor the Brave (all his body parts) was started from one and only one sphere, yes sphere.

Unfortunately there is no single way to model optimally. Different models, different approaches. The Face of Gilbert was started from a box (8 vertices), but was hard for me to control the shape of the whole head. So I started to model Victor from sphere with 8x8 vertices. I'm satisfied with this result also because of the quite short render times which will be important in the next stages. On the other hand, the model of the Cobra was started from circle (not a sphere) with 8 vertices. Optimal? Did I say that my way is optimal? :) I used a tool Taper for the snake-like form. In this scene there are seven lights (one spot light) with two contrast colors (cold, warm). Materials involved experimenting with Ramp Shaders and Particle System. You can check out Steven Stahlberg's excellent tutorials. Anyway, if you still have some questions about how this works we can use this Blender MemoBook talkpage.

Well, Blender 2.4 is on its way! With a big jump! In the next Blender release we can expect a lot of great new features! First and most important for my next step in this MemoBook is new armature system. We'll be able to animate more comfortably with it. Then I have to congratulate timmeh for embedding IRC & additions in Blender. I also keenly waiting on Fluid Dynamics. On the horizon is also and interesting project Verse, which will hopefully be able to join together many, many users in one real time working team. I just have a feeling that Blender will be in every single school & elsewhere around the globe very soon.
 * Orange! Where is Orange? --21:45, 1 September 2005 (UTC)
 * Where is 10 years of whooshing sound?:)
 * So, have a Blend fun!

Material Refraction Values Table
Useful material refraction values for material refraction settings:

My progress FAQ
''Notice: This part also cover Blender versions 2.4+. Some functions may not work with an older Blender versions.''

Basic FAQ

 * How do I close a polygon?
 * Select 2 vertices you want to close and press FKEY.

 * How do I open closed polygon?
 * One option: Select two vertices, press XKEY and choose Edge in the menu not to delete the vertices but only the edge.
 * Another one: Select two vertices, make subdivide and then delete section.

 * How to make a hole?
 * One option: Delete face(s).
 * Second option: Select face(s) and press PKEY (separate). That way you will separate face(s) from mesh.
 * Third option: Select edge and press VKEY. That way you will make hole in the edge. (new feature)

 * How to separate faces from a mesh?
 * Select faces and press PKEY.

 * How to join separated meshes?
 * Select meshes and press CTRL-JKEY.

 * How to join vertices?
 * Select vertices and press WKEY >> Merge.

 * How the heck do I edit those Bézier Curves already?
 * You can add points to the curve by selecting one of the two endpoints, then holding CTRL and clicking LMB
 * Curve Modes: HKEY, VKEY, SHIFT-H; CKEY (close) or Read here.

 * How to move 3D cursor in center XYZ (0,0,0)?
 * SHIFT-CKEY is the answer.

 * How to move center of the object?
 * Under Editing (press F9), Curve and surface - New Center

 * How to rotate 2D polygon around one axis and make object that way?
 * Draw open(!) polygon; Convert it into a mesh (press ALT-C in Object Mode); Select all vertices (press AKEY) and check on top bar for number of vertices (this is important for deleting this polygon later); Switch to top view (NUM 7) (you can't do this in other views!); Select one verticle; The cursor should be placed along the center of the polygon profile, and snapping the cursor to that location with SHIFT-S >> Cursor -> Selection.; Press SPIN button (don't forget to set 360 degrees rotation and proper steps number - around 36); Annoying part is removing double vertices: To merge (weld) two vertices together, select both of them by holding SHIFT  and RMB on them. Press SKEY to start scaling and hold down CONTROL while scaling to scale the points down to 0 units in the X,Y and Z axis. LMB to complete the scaling operation and click the "Remove Doubles" button in the EditButtons window. Alternatively, you can press WKEY and select "Merge" from the appearing Menu. You can then choose in a new menu if the merged node will have to be at the center of the selected nodes or in the location of the cursor. The first choice is better in my case.

 *  How do I force camera to track an object?
 * Select camera in object mode then hold SHIFT and select object; press CTRL-T.

 *  How do I un-force camera to track an object?
 * Under menu Constraint (F7) press button (x) delete, (I didn't have luck with shotcut) :/

 * Holy smoke, there are no shadows?!
 * You will not see shadows casting by lights if you do not switch the Ray button on (Scene (F10) - Render Menu - Ray); you also have to check if you set object material to receive shadows (Shading (F5) - Shaders - Shadow) ; another option is to use Buffer Shadow, this option is very value sensitive.

 * How to Redo?
 * CTRL-Y. Redo. Mac users may use CMD-Y.; SHIFT-CTRL-Z. Redo. Mac users may use SHIFT-CMD-Z; You can even use ALT-U (Global Undo History List).

 * How to switch to the reverse side view?
 * Press CTRL + Numpad Number.

 * How to align view to selected?
 * Select face(s) & press SHIFT-VKEY.

 * How to move faces along their normals?
 * Select face(s) & press ALT-S.

 * How to lock only one axis (x, y or z)?
 * GKEY (or SKEY, EKEY,...) & then press SHIFT-X (or SHIFT-Y, SHIFT-Z).

 * How to apply modifiers on object?
 * In Object Mode press ALT-C or press button Apply in Modifiers menu.

Other FAQ

 * How to append character with armatures into another scene?
 * One way is to append Scene (SHIFT-F1 >> Scene) and link it together (Object Mode >>> Object >> Make Links > To Scene...).

 * How do I control curvature over subsurf surface?
 * In Edit Mode select vertice(s) and press SHIFT-E then drag mouse to change value (0.0 - 1.0).

 * Can I get perfect circle roundness from the bottom to the top of the pawn?
 * No, not if you started with mesh having less than 4 corners - try starting with SPACE >> Add Cylinder (8 vertices).

 * Where is my wallet?
 * Check your pocket, wallet. :)

 * Can I download models and textures from this MemoBook?
 * Yes, try here.

 * Where can I find newest Blender builds?
 * Check this site.

 * Where can I find friends?
 * Hmm, this depends on many factors (where you are, how old are you, etc). Try with this book.

Part II: ActionBook!!
Old & new Blender tools have a bunch of new stuff implemented since versions 2.4+. Changes and new candies in armatures, NLA, new Nodes & other powerful tools can give you amazing spectrum of new options, but watch out, also traps! In the next part of this book I'll try to cover other advanced Blender options & features in animations, nodes, composing, etc...

 * Ok, let's go! Action! More tips, more tricks & traps you can find in Part II, called ActionBook! Go, Victor, go!!

title: Blender 3D: MemoBook


text:
Talk:Blender 3D: MemoBook

Tutorial Authors Wanted on Official Blender MediaWiki!
The main Blender documentation and tutorial authors are now working on the Official Blender MediaWiki. If you're considering helping write Blender tutorials or documentation, please consider helping us at the official wiki instead. --Popski 10:47, 18 July 2006 (UTC)

Blender icon
I have removed the 'Blender icon' image from this page. It is not the Blender icon or logo, and looks like it has been made by a third party. Unfortunately there's no logo pages on the blender website (there will be with the new site), but there's a brief history of the logo here, wit husage guidelines: http://www.mopi.nl/blogo/

cheers

 * Ok, np.

title: Talk:Blender 3D: MemoBook


text:
Network Plus Certification/Media and Topologies/Connectors

Objective 2.2: Identify common connector types

RJ-11 (Registered Jack 11)
RJ-11 is a physical interface often used for terminating telephone wires. It is probably the most familiar of the registered jacks, being used for single line Plain Old Telephone Service (POTS) telephone jacks in most homes across the world.

RJ-14 is similar, but for two lines, and RJ-25 is for three lines. The telephone line cord and its plug are more often a true RJ-11 with only two conductors.

RJ-45 (Registered Jack 45)
The 8 Position 8 Contact (8P8C) (often incorrectly called RJ-45) plugs and sockets are most regularly used as an Ethernet connector. 8P8C connectors are typically used to terminate twisted pair cable.

BNC (Bayonet Neill-Concelman)
The BNC (Bayonet Neill-Concelman) connector is a very common type of connector used for terminating coaxial cable. The BNC connector is used for RF signal connections, for analog and digital video signals, amateur radio antenna connections, aviation electronics (avionics) and many other types of electronic test equipment. It is an alternative to the RCA connector when used for composite video on commercial video devices, although many consumer electronics devices with RCA jacks can be used with BNC-only commercial video equipment via a simple adapter.

SC (Subscriber Connector or Standard Connector)
A fiber-optic connector with a push-pull mechanism to allow locking in place while still being simple to insert and remove.

ST (Straight Tip)
A fiber-optic connector with a socket that is locked in place with a bayonet lock. ST was the first de-facto standard for fiber-optic cabling, and has since been made an official standard.

LC (Local Connector or Lucent Connector)
Developed by Lucent. It looks like a smaller version of the SC connector. It is used in Telco environments.

RS-232 (Recommended Standard 232)
RS-232 (Recommended Standard 232) is a standard for serial binary data signals connecting between DTE (Data Terminal Equipment) and DCE (Data Circuit-terminating Equipment). It is commonly used in computer serial ports.


text: Network Plus Certification/Memory Aids

title: Network Plus Certification/Memory Aids


text:
Super NES Programming/Loading SPC700 programs

In this tutorial, we will create a ROM that initializes the SPC700 to play a song captured from another SNES game.

= Introduction = To produce a sound on the SNES, the registers of the DSP need to be set to appropriate values. This means that to play a song on the SNES, you need a program for the SPC700 that manipulates the DSP, and you need code for the 65816 that transfers the SPC700 program to the SPC700. Fortunately, there are thousands of programs for the SPC700 freely available online in the form of SPC files, solving half our problem.

= SPC files = SPC files contain the state of the SPC700, typically at the very beginning of a song in an SNES game. By restoring the state in an SPC700 and DSP emulator -- a.k.a. an SPC player -- you can listen to the song without the SNES ROM. We can likewise use SPC files to restore the SPC state inside of the SNES to play the song. You can get SPC files either by capturing them yourself using an SNES ROM and emulator or by downloading one of the thousands online at SNESMusic.org.

= Extracting SPC700 state from an SPC file =

The SPC700 file contains the SPC hardware state as well as a variety of additional information, such as title, game name, author, capturer, etc. An in-depth description of the format can be found at SNESMusic.org, but the relevant fields for our purposes are:

We need to get this data from inside an SPC file and put it into our ROM. You could write a script to extract this data from the SPC file and turn it into a text file of assembly data directives, and .include in your assembly file. However, the .incbin directive in the WLA assembler makes this process much simpler, since it allows us to include pieces of binary files directly into our ROM. Here is how we include the above data:

; The SPC file from which we read our data. .define spcFile "test000.spc" dspData: .incbin spcFile skip $10100 read $0080 audioPC: .incbin spcFile skip $00025 read $0002 audioA:  .incbin spcFile skip $00027 read $0001 audioX:  .incbin spcFile skip $00028 read $0001 audioY:  .incbin spcFile skip $00029 read $0001 audioPSW: .incbin spcFile skip $0002a read $0001 audioSP: .incbin spcFile skip $0002b read $0001

Notice that we have not included the SPC RAM data in the data definitions above. Because the SPC RAM data (64k) is larger than the SNES's ROM bank size (32k), we need to break it in half and store it in two banks of its own, separate from the rest of our code and data:

; The first half of the saved SPC RAM from the SPC file. .bank 1 .section "musicData1" spcMemory1: .incbin spcFile skip $00100 read $8000 .ends ; The second half of the saved SPC RAM from the SPC file. .bank 2 .section "musicData2" spcMemory2: .incbin spcFile skip $08100 read $8000 .ends

= The Main Program =

We use most of the code from the SNES Initialization Tutorial for our main program:

Start: ; Initialize the SNES. Snes_Init jsr    LoadSPC ; Set the background color to green. sep    #$20        ; Set the A register to 8-bit. lda    #%10000000  ; Force VBlank and set brightness to 0%. sta    $2100 stz    $2121 lda    #%11100000  ; Load the low byte of the green background color. sta    $2122 lda    #%00000000  ; Load the high byte of the green background color. sta    $2122 lda    #%00001111  ; End VBlank, setting brightness to 100%. sta    $2100 ; Loop forever. Forever: jmp Forever

We have added a line to call a subroutine to load the SPC data, just before the graphics code from the initialization tutorial. The advantage of including this graphics code is that it does something on the screen after the music loads. Thus, when we execute the ROM, it tells us visually either that the music was loaded successfully or that execution halted somewhere in the music code.

= Uploading the SPC700 state =

The SNES and the SPC700 communicate via four byte-wide channels, which we will call Audio0, Audio1, Audio2, and Audio3. On the SNES side, these are represented by the memory-mapped registers $2140-$2143, while the SPC represents them as $00f4-$00f7. Although there are four channels, there are actually eight values being stored behind the scenes -- four bytes for the channels from the SNES to the SPC and four bytes for the channels from the SPC to the SNES. For example, when the SNES writes a value to its Audio0, it is saved in one location so the SPC can read it from its Audio0. Likewise, when the SPC writes a value to its Audio0, it is saved in another location so the SNES can read it from its Audio0. Thus the value that is read from a channel's memory-mapped register may not be the value that was last written there.

The SPC's communication routine
When the SNES is reset, the SPC maps a 64-byte chunk of ROM -- called the "IPL ROM" -- to locations $ffc0-$ffff and executes it. While it's mapped there, reads come from this ROM rather than normal RAM. It performs the necessary initialization of the SPC:

 * Set the stack pointer to $01ef.
 * Zero memory locations $0000-$00ef.
 * Wait for data from the SNES.

The IPL ROM routine is capable of copying blocks of data from the SNES into SPC memory and then starting execution at a given location. The documents of the SNES Devkit at SNES Central are somewhat confusing regarding the exact communication protocol of the SPC. You can view the routine by disassembling the IPL ROM bytecode included in the source code of SNES or SPC emulators or in SPC files themselves. Here, however, is a summary of the algorithm the SPC uses:

 * 1) Initialization:
 * 2) * Set AudioOut0 to $aa and AudioOut1 to $bb.
 * 3) * Wait until AudioIn0 is $cc.
 * 4) Prepare to copy a block:
 * 5) * Read the 16-bit destination address from AudioIn2 (low byte) and AudioIn3 (high byte).
 * 6) * Copy AudioIn0 to AudioOut0.
 * 7) * If AudioIn1 is zero, start execution at the destination address.
 * 8) Copy a block:
 * 9) * Wait until AudioIn0 is zero.
 * 10) * Set a byte-sized counter to zero.
 * 11) Copy a byte:
 * 12) * Wait while the counter is greater than AudioIn0.
 * 13) * If the counter equals AudioIn0:
 * 14) ** Copy a byte from AudioIn1 to the memory location.
 * 15) ** Increment the counter and the memory location.
 * 16) ** Go to Step 4.
 * 17) * Otherwise (when the counter is less than AudioIn0), go to Step 2.

A particularly astute and/or paranoid programmer will observe that when the SPC's byte-sized counter rolls over (increments from $ff to $00), it becomes less than the value in AudioIn0, which may cause an error: Unless the SNES updates AudioIn0 in time, the SPC routine may think the block has ended, while the SNES is still sending data. When this happens, the SNES and SPC may end up waiting for each other in different parts of the protocol, freezing the system (this may be incorrect -- see note on discussion page).

To prevent a lockup, then, the SNES must update Audio0 as fast as possible. This means pre-copying the data to the fastest memory available and disabling interrupts whenever using the IPL ROM's protocol. Alternatively, you could restrict yourself to copying blocks of less than 255 bytes so that the counter never rolls over, or you could install a better communications routine in SPC RAM and use that instead.

The SNES's communication routine
Now that we have examined the protocol from the SPC's side, we need an SNES routine to interface with it. First, we will examine a routine similar to the one used in open-source demos (and, presumably, actual SNES games). Then, we will make a slight modification to it that simplifies our code.

Here is the general algorithm used in open-source demos:

 * 1) Wait until Audio0 is $aa, signifying that the SPC has completed its initialization.
 * 2) Initialize a byte-wide counter to $cc.
 * 3) If there are no more blocks to send:
 * 4) * Send the 16-bit execution address to Audio2 and Audio3.
 * 5) * Send $00 to Audio1.
 * 6) * Send the counter to Audio0.
 * 7) * Wait until the counter value is echoed on Audio0.
 * 8) * End routine.
 * 9) Otherwise:
 * 10) * Send the 16-bit destination address to Audio2 and Audio3.
 * 11) * Send $01 to Audio1.
 * 12) * Send the counter to Audio0.
 * 13) * Wait until the counter value is echoed on Audio0.
 * 14) * Reset the counter to zero.
 * 15) If there are bytes left in the current block:
 * 16) * Send the current byte to Audio1.
 * 17) * Send the counter to Audio0.
 * 18) * Wait until the counter value is echoed on Audio0.
 * 19) * Move on to the next byte.
 * 20) * Increment the counter.
 * 21) * Go to step 5.
 * 22) Otherwise:
 * 23) * Add $03 to the counter. If the counter is now zero, add $03 again.
 * 24) * Move on to the next block.
 * 25) * Go to step 3.

(Note: there's nothing magical about the value $03. We can add almost any value to the counter -- the important thing is that the counter value the SNES sends needs to be greater than the value the SPC expects it to be, which is how the SPC knows the block has ended.)

This routine sends all the blocks at once. It would be nice, however, if we had a routine that just copied one block so that we could do other things between transferring blocks. If we tried to modify the above routine to do this, though, we would either need to know the address of the next block ahead of time or we would need to save the terminating byte of the previous block and send it with the next one. A simple solution to this problem is to send exactly one block, then give the start of the communications routine ($ffc9) as the address at which to begin execution. This resets the protocol state, so that we do not need to store any information between sending blocks.

The communications routine in assembly
This section describes in detail our assembly routine to copy a block of memory from SNES RAM to SPC RAM.

First, we need to consider the parameters to our routine. We will need to pass the source location, the destination location, and the length of the block to copy. Since there is 64k of SPC RAM, the destination and length will fit in 16-bit variables, so we can pass those in the X and Y registers. The source memory location, on the other hand, is 24 bits long, since we will be reading from the expanded RAM block from $7f:0000-$7f:ffff. Thus, we define a location in the zero page where we can store the three bytes of a pointer to our source data:

.define musicSourceAddr $00fd

While we are at it, we can define the values of the audio ports and CPU flags, so that our code uses recognizable identifiers instead of hex values:

.define AUDIO_R0 $2140 .define AUDIO_R1 $2141 .define AUDIO_R2 $2142 .define AUDIO_R3 $2143 .define XY_8BIT $10 .define A_8BIT $20

While writing the routine, we frequently will be waiting for the SPC to echo back the value we just sent to the Audio0 register. Rather than write this code repeatedly, we can put it in a macro, and the assembler will make the necessary substitutions:

.macro waitForAudio0M -    cmp     AUDIO_R0 bne    - .endm

With these initial definitions out of the way, we can write our routine. Here is the initialization phase, which waits until the SPC is ready to accept data, then sends the destination address. Note that we can send the two bytes of the destination address with a single 16-bit write to Audio2.

CopyBlockToSPC: ; musicSourceAddr - source address ; x - dest address ; y - count ; Wait until audio0 is 0xbbaa sep    #A_8BIT lda    #$aa waitForAudio0M ; Send the destination address to AUDIO2. stx    AUDIO_R2 ; Transfer count to x.    phy plx ; Send $01cc to AUDIO0 and wait for echo. lda    #$01 sta    AUDIO_R1 lda    #$cc sta    AUDIO_R0 waitForAudio0M ; Zero counter. ldy    #$0000

Here is the communication routine's main loop, which sends a byte and waits for the SPC's response, then updates the memory and counter values. Note that we can swap the high and low bytes of a with the xba operation, even though a is in 8-bit mode at the time. Again, we use the trick of writing a 16-bit value to send to Audio0 and Audio1 in a single operation.

CopyBlockToSPC_loop: ; Load the high byte of a with the destination byte. xba lda    [$fd],y xba ; Load the low byte of a with the counter. tya ; Send the counter/byte. rep    #A_8BIT sta    AUDIO_R0 sep    #A_8BIT ; Wait for counter to echo back. waitForAudio0M ; Update counter and number of bytes left to send. iny dex bne    CopyBlockToSPC_loop

Finally, we end the block and tell the SPC to start execution at the beginning of the SPC's communication routine, resetting the protocol:

; Send the start of IPL ROM send routine as starting address. ldx    #$ffc9 stx    AUDIO_R2 ; Clear high byte. xba lda    #0 xba ; Add a value greater than one to the counter to terminate. clc adc    #$2 ; Send the counter/byte. rep    #A_8BIT sta    AUDIO_R0 sep    #A_8BIT ; Wait for counter to echo back. waitForAudio0M rts

Sending the SPC state
The SPC state consists of three parts:

 * The memory
 * The DSP registers
 * The CPU registers

The hardest thing to restore is the CPU state, since it changes just by executing the SPC communications routine. Also, restoring the program counter means that the SPC then will be executing the stored code, not the communications routine, so we can't send anything else after we have restored the program counter. Thus, we need to restore the CPU state last, after we have set up everything else. Whether we restore the memory or DSP registers first doesn't matter too much, but it will turn out to be convenient to restore the memory first.

Sending memory state
Earlier we noticed that the SPC communications routine could freeze if the SNES doesn't send data fast enough. This means that any data we send needs to be stored in RAM; it can't be directly copied to the SPC from its original location in ROM. Thus, we use the following routine to assemble the two 32k banks of ROM containing the SPC memory state into one 64k segment in SNES RAM:

CopySPCMemoryToRam: ; Copy music data from ROM to RAM, from the end backwards. rep  #$XY_8BIT        ; xy in 16-bit mode. ldx.w #$7fff          ; Set counter to 32k-1. -  lda.l spcMemory1,x     ; Copy byte from first music bank. sta.l $7f0000,x lda.l spcMemory2,x    ; Copy byte from second music bank. sta.l $7f8000,x dex bpl - rts

Now, we can use the macro we wrote earlier to transfer the SPC memory state:

; Copy RAM between 0x0002 and 0xffc0. sendMusicBlockM $7f $0002 $0002 $ffbe

We do not transfer the first two and last sixty-four bytes of memory because they are used by the communications routine: the last sixty-four bytes contain the routine itself and the first two bytes are used during the routine to store the destination address.

Most SPCs will not overwrite the communications routine, so we will simply not restore that section of memory. It is quite possible, on the other hand, that an SPC will use the first two bytes of RAM, since they are in the zero page and easy to access. Therefore, we will set those bytes when we restore the CPU state, taking care not to overwrite them in the SNES RAM until then.

Note that because we are overwriting the block $f0-$ff, we actually write to a number of memory-mapped registers. This has the effect of restoring the timer state, as well as one DSP register. It also manipulates the Audio0-3 ports, but this doesn't seem to interfere with the memory transfer process, probably because the SNES is only listening for a certain value on Audio0.

Sending DSP state
To set the value of a DSP register, you first need to write its number to address $f2 of the SPC's memory, then you need to write its value to address $f3 of the SPC's memory. Because these addresses are right next to each other, we can restore a DSP register value by using our memory-copying routine to send a block of two bytes to $f2. We repeat this process for each of the 128 DSP registers:

InitDSP: rep    #XY_8BIT            ; x and y in 16-bit mode ldx    #$0000              ; Reset DSP address counter. -    sep     #A_8BIT txa                        ; Write DSP address register byte. sta    $7f0100 lda.l  dspData,x           ; Write DSP data register byte. sta    $7f0101 phx                        ; Save x on the stack. ; Send the address and data bytes to the DSP memory-mapped registers. sendMusicBlockM $7f $0100 $00f2 $0002 rep    #XY_8BIT            ; Restore x.     plx ; Loop if we haven't done 128 registers yet. inx cpx    #$0080 bne    - rts

Sending SPC initialization routine
Our SPC initialization routine restores the parts of the SPC state that would be altered just by running the SPC's communications routine. We will pass the SPC's control to the initialization routine after we are done copying everything, and the routine, as its final step, will jump to the saved program counter location. Here are the things our initialization routine needs to do:

 * Restore the first two bytes of RAM.
 * Restore the stack pointer (S).
 * Push the restored PSW register onto the stack.
 * Restore the A register.
 * Restore the X register.
 * Restore the Y register.
 * Pop the PSW register value into its register.
 * Jump to the saved program counter location.

We'll write the routine starting at (arbitrary) memory location $7f0000. Since we'll be needing the first two bytes at that location (that we have been careful thus far not to overwrite), we will first save these on the stack. Since we'll restore the first byte first, we push it last:

MakeSPCInitCode: sep    #A_8BIT ; Push [01] value to stack. lda.l  $7f0001 pha ; Push [00] value to stack. lda.l  $7f0000 pha

Next, we write the code to restore the first byte. Looking up the mov dp,#imm opcode in an SPC reference, we see that the opcode byte is $8f, so we write that, followed immediately by the first argument byte (imm -- the value to restore), then the second argument byte (dp -- the address to which to write the byte):

; Write code to set [00] byte. lda    #$8f        ; mov dp,#imm sta.l  $7f0000 pla sta.l  $7f0001 lda    #$00 sta.l  $7f0002

We do the same thing for the second memory byte:

; Write code to set [01] byte. lda    #$8f        ; mov dp,#imm sta.l  $7f0003 pla sta.l  $7f0004 lda    #$01 sta.l  $7f0005

As there is no opcode to write a value to S directly, we first move the stack value into X -- mov x, #imm ($cd) -- then we move X into the stack register -- mov sp, x ($bd).

; Write code to set s.    lda     #$cd        ; mov x,#imm sta.l  $7f0006 lda.l  audioSP sta.l  $7f0007 lda    #$bd        ; mov sp,x sta.l  $7f0008

Now we write code to push the program status ward (PSW) register value onto the stack, so that we can pop it later. We need to push the value before we restore the other registers because we overwrite X in the process of pushing the value. We can't pop the value until after the other registers are restored, since the mov instruction that we use to restore them changes the PSW register.

; Write code to push psw lda    #$cd        ; mov x,#imm sta.l  $7f0009 lda.l  audioPSW sta.l  $7f000a lda    #$4d        ; push x     sta.l   $7f000b

Here we write the code to restore the registers:

; Write code to set a.    lda     #$e8        ; mov a,#imm sta.l  $7f000c lda.l  audioA sta.l  $7f000d ; Write code to set x.    lda     #$cd        ; mov x,#imm sta.l  $7f000e lda.l  audioX sta.l  $7f000f ; Write code to set y.    lda     #$8d        ; mov y,#imm sta.l  $7f0010 lda.l  audioY sta.l  $7f0011

Writing the code to restore PSW from the stack is fairly straightforward: ; Write code to pull psw. lda    #$8e        ; pop psw sta.l  $7f0012

Finally, we write the code to send control to the saved program counter position:

; Write code to jump. lda    #$5f        ; jmp labs sta.l  $7f0013 rep    #A_8BIT lda.l  audioPC sep    #A_8BIT sta.l  $7f0014 xba sta.l  $7f0015 rts

After this routine is called, then, the region $7f0000-$7f0015 contains the initialization routine, so sending it using our communications routine is fairly straightforward. We must, however, have somewhere in the SPC RAM to put it. Here, we gamble that the region of memory just before the IPL ROM code is not in use:

; The address in SPC RAM where we put our 15-byte startup routine. .define spcFreeAddr $ffa0

Calling the routine:

; Build code to initialize registers. jsr    MakeSPCInitCode ; Copy init code to some region of SPC memory that we hope isn't in use. sendMusicBlockM $7f $0000 spcFreeAddr $0016

= Starting SPC execution =

Now that we have restored the memory and DSP state, and we have written an initialization routine to complete restoration, all we need to do is to tell the SPC to begin execution at our initialization routine. We do this by modifying our communications routine to send no blocks, but rather immediately start execution at the given address:

StartSPCExec: ; Starting address is in x.    ; Wait until audio0 is 0xbbaa sep    #A_8BIT lda    #$aa waitForAudio0M ; Send the destination address to AUDIO2. stx    AUDIO_R2 ; Send $00cc to AUDIO0 and wait for echo. lda    #$00 sta    AUDIO_R1 lda    #$cc sta    AUDIO_R0 waitForAudio0M rts

At this point, the SPC should start playing the music originally stored in the SPC file.

= Analysis =

This technique is really only good for playing one song on a ROM; after you start playing an SPC file, it is hard to stop it, upload another song, or play a sound effect. This is because the code in the SPC only understands the communications protocol of the game from which it is captured. To discover the protocol, you would have to reverse-engineer the code of either the SPC state or the original SNES ROM, and even then there is no guarantee that the protocol would support whatever you wanted to do. Writing a custom protocol for the audio in a game would be a good subject for a future tutorial.

Problems
There are a number of reasons why the SPC state, restored in the manner described here, would refuse to play:

 * The original SPC program used either the IPL ROM area or the area where we stored our initialization code. If it used the initialization area, we can write the code to another location, and this should allow the SPC to play.  Restoring the IPL ROM region is harder because you need a communications routine somewhere else in SPC memory to allow you to do this.  In either case, we can't get away from the fact that some space in RAM is needed for initialization and will not match the original RAM.

 * The state of the SPC when control is passed to the original code does not exactly match the state when it was captured, since the DSP and timers begin updating their values immediately upon restoration. If the SPC was waiting for some state change, like a timer or DSP value, then it may miss it and lock up.

 * It is possible for the SNES to play music entirely by sending values to the SPC in real-time. For instance, it could modify the DSP registers as we did when we were restoring them, except it would modify them over time so as to produce music, much as other SPC code would.  In this way, the SPC could produce music with the IPL ROM communications routine as the only code in its memory.  Such SPC files would not even play in a player, since they rely on the SNES for information.

= Complete Source Code =


text:
World History/The Middle Ages in Europe

The masters of the Renaissance regarded their era as a golden age, and looked back on the previous age as "dark" by comparison. Thus it is considered to be the "middle" transitional period between late antiquity and the modern world. It had feudal and manorial systems as socio-economic forms. Feudalism generally describes the relation held between a lord and his vassal. Manorialism placed significant emphasis upon self-sufficiency of manors, the underlying structure of economic establishment.

In addition to new socio-economic forms and models, new agricultural methods also came into existence, including the moldboard plow, which allowed a greater arriation of crops, and the three-field system, a manner in which one-third of available farmland was left fallow (unplated) to reduce the risk of soil erosion or over-usage.

Rise of the Germanic Kingdoms
Following the fall of the Roman Empire, the Germanic tribes became the dominant force in Europe. The greatest of these was the Frankish Empire. The earliest Frankish king was King Clovis (481 - 511). Clovis was known for the Salic Law, which listed out crimes and their various punishments.

The Frankish Empire relied on dukes to defend the borders of the empire and the Mayor of the Palace to run much of the daily business of the Empire. By 640, the Mayor of the Palace was the de facto ruler of the empire. In 751, Mayor of the Palace Pipin was appointed king of the Franks by the Pope.

Age of Charlemagne

Pepin's son, Charlemagne, was the greatest of the Frankish kings. He expanded the Frankish empire to northern Italy and Spain as well as to parts of Germany. In 800, the Pope appointed Charlemagne Holy Roman Emperor in return for some help putting down a riot in Rome. Charlemagne also took an interest in art and education, opening a palace school at Aix-la-Chapelle.

Another important advancement made by Charlemagne was in the area of justice. At the time, conpurgation was the common practice. In conpurgation, a group of witnesses would gather to swear a defendant's innocence. If that wasn't sufficient, trial by fire, water, or combat was employed. Charlemagne set up a board of judges to listen to testimony and decide the verdict.

Charlemagne's empire didn't last long after he died. His son, Louis the Pious, lost land to Muslims in the south, Vikings in the north, and Slavs to the east. When Louis died in 840, his three sons battled for the throne. The Treaty of Verdun in 843 divided the empire between them. Lothar received the Rhine river valley and the Frankish holdings in the Alps and Italy. The other brothers received the land to the east and west. By 870, the holdings were simply East and West Frankland.

Viking Raiders

The Vikings (also known as Norse or Northmen) were Germanic Scandinavian seafarers who raided and settled many regions of Northern Europe during the 9th, 10th and 11th centuries. Norse settlers founded communities and maintained important trade routes all the way from Greenland east to the heart of Russia, and developed a fearsome reputation as warriors and plunderers. Their descendants played crucial roles in the later history of France, England, Ireland and the Russian principalities, and they were the first Europeans to visit and settle in North America.

Denmark and Scandinavia had lain well outside the borders of the Roman Empire. By the end of the eighth century, the region contained many small tribal kingdoms. Farming and fishing comprised most of the economy. Growing populations and limited fertile land were probably the cause of a Norse movement to find new homes across the sea. The first major Viking raid was recorded in 793 when raiders sacked the wealthy monastery at Lindisfarne on the Yorkshire coast. As the 9th century wore on, Francia and Anglo-Saxon England came under yearly attack by Vikings whose swift ships appeared without warning off the coast, landing warriors whose skill and ruthlessness prompted the prayer, "from the fury of the Northmen, deliver us, o lord."

By the 860s Danish Vikings had implanted themselves to stay in northeast England. After a series of wars against the Anglo-Saxon kings, the two sides agreed to a truce where the country was divided and the "Danelaw" area of Viking control recognized, if not formally ceded. The 10th century saw similar developments in Francia; there the Norse settlement -- Normandie -- was on the Channel coast between Le Havre and the Cotentin Peninsula.

Feudalism in Europe
Each lord had, more or less, complete control over his lands. However, weaker lords would become vassals of the stronger lords. A lord would protect his vassal. In return vassals were expected to supply soldiers in time of war and serve his lord in times of peace.

Medieval Society
When people think of the Middle Ages, the knight is one of the first things that come to mind. Most noblemen became knights. The path to knighthood began by serving a knight as a page. Pages had to learn to battle, ride a horse, be polite to ladies, sing, dance, and play chess. Once he learned to do this, he became knighted by another knight and blessed by a priest. Knights did not do common work. When they weren't fighting, they often hunted.

Medieval ladies were expected to run their house and tend to the ill. In their leisure time, they enjoyed falconry, chess, checkers, and dice. They were also very interested in fashion.

Besides what has been mentioned above, entertainment mostly consisted of banquets. The feasts were elaborate and lasted hours at a time. After everyone had eaten, jesters or minstrels would entertain the guests.

The Manor System
The manor or estate system refers to life on a manor, it could be said that it was the logical evolution of the continuing fractioning of land rights and government, something that was already common, even if under a somewhat distinct system, for instance the Roman villa.

Each manor had a lord who ruled over it, by hereditary rights, concession or payment. The people who worked on the manor were serfs. Serfs were responsible for tending the lord's fields as well as doing maintenance on the manor's buildings, they were bound to the land, forced to work there for their entire lives. Unlike slaves, serfs could not be bought or sold individually, they had freedom of movement but due to having no land of their own (and at time no right to acquire it) or any other means of surviving independently, they were forced into servitude.

The manor system quickly became common during the Middle Ages, but the system adapted to changes in legal rule and society, through the European expansion to the Colonial age, the United States of America plantations and to the large landowner in Brazil, the system has survived in some form or other until today.

Monasteries and Convents
Monasticism became quite popular in the Middle Ages, with religion being the most important force in Europe. Monks and nuns were to live isolated from the world to become closer to God. Monks provided service to the church by copying manuscripts, creating art, educating people, and working as missionaries. Convents were especially appealing to women. It was the only place they would receive any sort of education or power. It also let them escape an unwanted marriage.

During the rule of Pope Innocent III (1198 - 1216), the two most famous monastic orders were founded. They were called the medicant, or begging, orders because they begged for the food and clothes. They would usually travel in pairs; preaching, healing the sick, and helping the poor. Francis of Assisi founded the Franciscans, who were known for their charitable work. The Dominicans, founded by St. Dominic, focused on teaching, preaching, and suppressing heresy.

Papal Supremacy
The Pope, through the church, was as powerful as any nation and more powerful than most. The church taught that the only way to get to Heaven was through the sacraments that the Catholic church provided. The sacraments had to be paid for, which accounted for part of the church's vast wealth. Other reasons were that everyone paid the church ten percent of their income and no one taxed church property.

One dramatic example of the Pope's power was the Investiture Controversy. In 1076, Holy Roman Emperor Henry IV attempted to take the power to give a bishop the symbols of his office. Pope Gregory VII excommunicated Henry. Henry begged for forgiveness for three days and was forced to accept Gregory's terms.

The ultimate display of power by the medieval papacy was the crusades. From 1096 to 1272, no less than twelve crusades took place. Any man who participated was promised forgiveness for any sins committed before or during the crusade. As a mission to put Jerusalem under Christian control, the crusades were a failure. Jerusalem was in Christian control for less than 50 years. However, the crusades put the people of Europe in contact with the Muslim world. They were exposed to new ideas and developed a taste for new products. In this capacity, something good came from the crusades.

title: World History/The Middle Ages in Europe


text:
User:PCon

You can contact me at pconnell AT gmail DOT com

title: User:PCon


text:
User:IknowNothing~enwikibooks

I'm a third year electrical engineering student at Wits. I've started editing on the Electronics book as a sort of revision and studying aide. I've also got an interest in languages but I only speak two: English and Afrikaans. But I know a bit of Latin and Zulu. I'm hoping to learn some Dutch and French via wikibooks if time allows with varsity.

title: User:IknowNothing~enwikibooks


text:
Cookbook:Placenta with Broccoli

This is a tasty dish that the whole family will love. It might go well served with rice, especially if the rice is loose and firm.

You'll need about 1/2 the placenta of a 6.2 pound baby, or 1/3 the placenta of a 9.3 pound baby. Chopped and packed, this is just a bit more than 1/3 cup. (but like any raw meat, you don't exactly chop it — try snipping away at it with a kitchen scissors)

Ingredients

 * 1/3 cup chopped fresh human placenta
 * 2/3 cup chopped broccoli
 * 2 egg whites
 * 1/8 t thyme
 * oil for frying

Procedure

 * 1) Wash the placenta well, in a colander, then shake it to drain. (it will still leak juices)
 * 2) Stir the egg whites with a fork until they are without lumps.
 * 3) Mix all ingredients well, squishing them by hand.
 * 4) Add a decent amount of oil to a suitable frying pan.
 * 5) Set a burner to high heat, and put the pan on it.
 * 6) Start frying, stirring as if stir-frying or scrambling an egg.
 * 7) The small amount of liquid (seeping from the placenta, plus the egg whites) will come to a boil. You might turn down the heat slightly at this point.
 * 8) Let the liquid boil away and/or solidify onto the broccoli and placenta.
 * 9) When it looks yummy, serve it.

Warning
As with any meat from uncontrolled sources (such as hunting or scavenging) people should be cautious of risks involved. Certain blood borne diseases can live in blood and tissue outside the body for some time. Be sure that sensible precautions have been taken.

title: Cookbook:Placenta with Broccoli


text:
Talk:Guitar/Harmonics

how do the notes in harmonics on frets 5,7, and 12 get lower sounds, yet theyare going up the neck, which usually has a higher sound?
 * When you pluck a guitar string it oscillates, but not as a pure, single-frequency sine wave (as the picture might lead you to believe). Rather, we get the fundamental, plus all its harmonics (i.e., double frequency, triple frequency, quadruple frequency, etc).  I hope this doesn't cause confusion, but in physics, the word harmonic is used to indicate the relationship between frequencies.  So when I say "harmonic" here, I'm not talking about the technique described on this page, but rather, I'm talking about frequencies.

 * Back to plucking an open string. Suppose we pluck the A string.  If the guitar is tuned so that A is 440 Hz, plucking the A string will generate 440Hz, 880Hz, 1320Hz, 1760 Hz, etc.  Each of these are the harmonics of 440 Hz (i.e., 1x440, 2x440, 3x440, 4x440, etc).  Each frequency will be at a different loudness though (generally each harmonic is a bit quieter than the one that came before).  This combination of frequencies is what gives any instrument its tone.

 * Now suppose you touch the string over the 12th fret and pluck it. None of the odd-numbered harmonics can be made.  It knocks out the 440 and 1320Hz components, because the "touched" portion of the string has to move for these sounds to be created, only it can't because your finger was in the way and dampened it out.  However, the even harmonics can still be made, because the center of the string doesn't need to move to make those frequencies.  Said differently, you will cancel out all the harmonics that are not a multiple of two.  It might help to look at the picture again:

 * See how the middle of the string isn't moving in the lower picture? When you move to a different fret, you will cancel a different set of harmonics.  If you touch the string one third of the way from the nut to the bridge, it's exactly the same as if you touch the string one third of the way from the bridge to the nut.  In either case you will cancel out the fundamental plus all the harmonics that are not divisible by three.  Touch it a quarter of the way to the nut or the tail, and you cancel out all the harmonics that are not multiples of 4.  Since there are fewer harmonics that are divisible by 4 than there are that are divisible by two, touching the string there will be quieter (you've dampened out more of the harmonics).

 * If you touch the string at a distance one fifth from the nut (or two fifths, or three fifths, or four fifths), you cancel everything that is not a multiple of five.

 * Sorry for the bad explanation. Maybe someone else can explain it better. --Jomegat (talk) 21:33, 25 November 2009 (UTC)

title: Talk:Guitar/Harmonics


text:
File:DottedSwing.png

Two bars of dotted swing.

title: File:DottedSwing.png


text:
Talk:Polish/More on nouns - genders

Untitled
"Ala ma - this sounds least natural. There is a tendency in Polish to drop the subject rather than the object and rarely you know the object but not the subject. If the question was "Kto ma kota ?" (who has a cat ?), the answer should be "Ala" alone, without a verb."

I do not agree with this opinion. For question "kto ma kota?" (who has a cat) you can answer "Ala" as well as "Ala ma". Both answers are correct. How do I know that? I am Polish.

Isn't this page the exact same as the next one in the book? - Greg

title: Talk:Polish/More on nouns - genders


text:
Cookbook:Karma-Free Diet

The karma-free diet or lifestyle is a form of vegetarianism associated with Srila Prabhupada, the Hindu deity Krishna, and Vaishnavism. It has various dietary and ritual requirements for preparation.

Background
In Vaishnavism, food is considered prasadam, or the Lord's mercy. In keeping with the philosophy of offering everything to the god Krishna, devotees offer everything they eat before they eat it. In this way the food is considered sanctified.

Diet
Vaishnavas follow a strict vegetarian diet, eating no meat or fish. In addition, they avoid eating eggs. Onions, garlic, and mushrooms are also avoided due to their association with adverse effects on the consciousness of the eater.

Ritual Cooking
The most important ingredient in any offering is the devotion of the cook and of the person doing the offering. It is also important that the people offering the food are in good consciousness. This can be accomplished by:

 * Making sure the kitchen is clean
 * Using pure ingredients
 * Wearing clean clothes while cooking
 * Having peaceful music or chanting going on during the preparation of the meal

Because devotees are cooking for Krishna, it is important that no-one else tastes the preparation before it is offered.

Offering
A simple offering can be made by placing the food on a plate in front of a picture of Krishna and chanting the Hare Krishna Mantra a few times while asking Krishna to please accept the humble offering. It is preferable to have one or more dishes used only for this purpose.

A slightly more elaborate offering can be made by chanting each of the following prayers three times while ringing a small bell. However, the most important part of a successful offering is the devotion.

Prayer to Srila Prabhupada, or your own guru
nama om visnu-padaya krsna-presthaya bhu-tale

srimate bhaktivedanta-svamin iti namine

namas te sarasvate deve gaura-vani-pracarine

nirvisesa-sunyavadi-pascatya-desa-tarine

Prayer to Lord Caitanya
namo maha-vadanyaya

krishna-prema-pradaya te

krishnaya krishna-chaitanya-

namne gaura-tvishe namaha

Prayer to Lord Krishna
namo brahmanya-devaya

go-brahmana-hitaya ca

jagad-dhitaya krsnaya

govindaya namo namah

Chant Maha Mantra

Hare Krishna, Hare Krishna, Krishna Krishna, Hare Hare

Hare Rama, Hare Rama, Rama Rama, Hare Hare

Ingredients

 * 250 g moong dal
 * 5 ml turmeric powder
 * 2 tomatoes, finely sliced or grated
 * 10 ml masala
 * 5 ml jeera (cumin)
 * Mustard seed
 * 5 ml ground ginger
 * 3 ml Hing powder (asafoetida)
 * Oil
 * Curry leaves
 * Salt
 * 12.5 ml lemon juice

Procedure

 * 1) Boil moong dal with turmeric until it disintegrates.
 * 2) Heat oil in a pan. Add jeera, mustard seed, ginger, curry leaves and hing.
 * 3) Allow oil to sputter, then add masala and tomatoes.
 * 4) Allow to cook for a few minutes.
 * 5) Add boiled moong and cook until dahl starts to thicken.
 * 6) Add lemon juice when dahl is almost ready.

title: Cookbook:Karma-Free Diet


text:
Cookbook talk:Karma-Free Diet

More to come soon!!! Im in my final exams so if anyone wants to add to this thingy, great. In about a month I should have all the recipies I know up here. Theres alot so good thing are coming:)

Śrī Caitanya Mahāprabhu is known as mahā-vadānyāvatāra, the most magnanimous incarnation, for He does not consider the offenses of the fallen souls. CC Adi 7.4, Purport: As preachers of the Kṛṣṇa consciousness movement, we first offer our obeisances to Śrī Caitanya Mahāprabhu by chanting this Pañca-tattva mantra; then we say Hare Kṛṣṇa, Hare Kṛṣṇa, Kṛṣṇa Kṛṣṇa, Hare Hare/ Hare Rāma, Hare Rāma, Rāma Rāma, Hare Hare. There are ten offenses in the chanting of the Hare Kṛṣṇa mahā-mantra, but these are not considered in the chanting of the Pañca-tattva mantra, namely, śrī-kṛṣṇa-caitanya prabhu-nityānanda śrī-advaita gadādhara śrīvāsādi-gaura-bhakta-vṛnda. Śrī Caitanya Mahāprabhu is known as mahā-vadānyāvatāra, the most magnanimous incarnation, for He does not consider the offenses of the fallen souls. Thus to derive the full benefit of the chanting of the mahā-mantra (Hare Kṛṣṇa, Hare Kṛṣṇa, Kṛṣṇa Kṛṣṇa, Hare Hare/ Hare Rāma, Hare Rāma, Rāma Rāma, Hare Hare), we must first take shelter of Śrī Caitanya Mahāprabhu, learn the Pañca-tattva mahā-mantra, and then chant the Hare Kṛṣṇa mahā-mantra. That will be very effective.

Page rework
I've reworked the page to clarify it and make it more comprehensible to the average person. I've also tried to make it slightly more encyclopedic. -- Nostriker (discuss • contribs) 03:53, 21 January 2022 (UTC)

title: Cookbook talk:Karma-Free Diet


text:
User talk:Metaeducation

Please feel free to write on this page all you like. Pick a category and add your own subheading for the topic you would like to comment upon...

Friendly Greetings and Shout-Outs
Use this section for basic hellos.

Angry Comments
''Though the discussion page for an article is generally the right place to carry out discussions of alternate points of view, sometimes what you want to do is vent solely to the person you're arguing with. Why not here?''

title: User talk:Metaeducation


text:
Talk:Linear Algebra/Vectors

Is underlining vectors really a practise? That seems very odd as it's a common highlighting/emphasis method. I have always drawn the line over the vector. I believe LaTeX Just Worked like this as well. Actually, let's see: $$\vec{f}$$. Seems to use an arrow. But I forget what syntax was available.

title: Talk:Linear Algebra/Vectors


text:
Ada Programming/Portals

Forges of open-source projects

 * SourceForge : Currently, there are more than 200 Ada projects hosted at SourceForge — including the example programs for Ada Programming wikibook.
 * GitHub : A source code repository based on Git with many recent developments.
 * Codeberg : Codeberg is a democratic community-driven, non-profit software development platform based on Forgejo. It contains a few Ada projects.
 * Disroot : Disroot is another public Forgejo instance. It also contains a few Ada projects.

 * Ada-centric sites: There are some Ada-centric forges/catalogues hosted by Ada associations and individuals:
 * http://codelabs.ch
 * http://www.adaforge.org

Directories of freely available tools and libraries

 * Ada Information Clearinghouse — Free Tools and Libraries

 * Open Hub (language summary, ada tag, language search): Open Hub is a directory of Open Source projects. Its main features are source code analysis of public repositories and public reviews of projects.

Collections of Ada source code

 * The Public Ada Library (PAL) : The PAL is a library of Ada and VHDL software, information, and courseware that contains over 1 BILLION bytes of material (mainly in compressed form). All items in the PAL have been released to the public with unlimited distribution, and, in most cases (the exceptions are shareware), the items are freeware.

 * Ada and Software Engineering Library Version 2 (ASE2) : The ASE2 Library contains over 1.1GB of material on Ada and Software Engineering assembled through a collaboration with over 60 organizations. Walnut Creek CD-ROM once sold copies of this library. Nowadays, it is no longer maintained, but is still hosted in the archive.adaic.com server. It may contain useful resources, but it is highly redundant with other libraries.

 * AdaPower : A directory and collection of Ada tools and resources.

Wikibook

 * Ada Programming
 * Ada Programming/Tutorials
 * Ada Programming/Web 2.0

title: Ada Programming/Portals


text:
Cookbook:Zuppa Toscana

| Soup

Zuppa toscana is a soup available at the Olive Garden restaurant.

Ingredients

 * 1 lb spicy Italian sausage, crumbled
 * ½ lb smoked bacon, chopped
 * 1 qt water
 * 2 cans (29 oz) chicken broth
 * 2 large russet potatoes, cubed
 * 2 garlic cloves, crushed
 * 1 medium onion, chopped
 * 2 cups chopped kale or Swiss chard
 * 1 cup heavy cream
 * Salt to taste
 * Pepper to taste

Procedure

 * 1) In a skillet over medium-high heat, brown the sausage, breaking into small pieces as you fry it. Drain and set aside.
 * 2) In skillet over medium-high heat, brown bacon. Drain and set aside.
 * 3) Place water, broth, potatoes, garlic, and onion into a pot. Simmer over high heat until potatoes are tender.
 * 4) Add sausage and bacon to the pot. Simmer for 10 minutes.
 * 5) Add kale/chard and cream to the pot. Seasons with salt and pepper; heat through.

Notes, tips, and variations

 * Potatoes can be substituted with cauliflower for a low-carbohydrate version of this soup.
 * You can also use half mild half spicy turkey sausage instead of pork sausage.
 * Sometimes, fennel is used.

title: Cookbook:Zuppa Toscana


text:
Cookbook talk:Bonito Flakes

--61.5.120.61 16:15, 30 May 2005 (UTC) $$[[Media:[[Image:

[How to make katsuobushi?]
]]]]$$

title: Cookbook talk:Bonito Flakes


text:
Electronics/Measuring Instruments

= Measuring Instruments =

Ammeters
Ammeters are devices that measure current. Current in electronics is usually measured in mA which are called milliamperes, which are 1/1000s of an ampere. ..... Basically an ammeter consists of a coil that can rotate inside a magnet, but a spring is trying to push the coil back to zero. The larger the current that flows through the coil, the larger the angle of rotation, the torque (= a rotary force) created by the current being counteracted by the return torque of the spring. ..... Usually ammeters are connected in parallel with various switched resistors that can extend the range of currents that can be measured. Assume, for example, that the basic ammeter is "1000 ohms per volt", which means that to get the full-scale deflection of the pointer a current of 1 mA is needed (1 volt divided by 1000 ohms is 1 mA - see "Ohm's Law"). ..... To use that ammeter to read 10 mA full-scale it is shunted with another resistance, so that when 10 mA flows, 9 mA will flow through the shunt, and only 1 mA will flow through the meter. Similarly, to extend the range of the ammeter to 100 mA the shunt will carry 99 mA, and the meter only 1 mA.

Ohmmeters
Ohmmeters are basically ammeters that are connected to an internal battery, with a suitable resistance in series. Assume that the basic ammeter is "1000 ohms per volt", meaning that 1 mA is needed for full-scale deflection. When the external resistance that is connected to its terminals is zero (the leads are connected together at first for calibration), then the internal, variable, resistor in series with the ammeter is adjusted so that 1 mA will flow; that will depend on the voltage of the battery, and as the battery runs down that setting will change. The full scale point is marked as zero resistance. If an external resistance is then connected to the terminals that causes only half of the current to flow (0.5 mA in this example), then the external resistance will equal the internal resistance, and the scale is marked accordingly. When no current flows, the scale will read infinity resistance. The scale of an ohmmeter is NOT linear.Ohmmeters are usually useful in checking the short circuit and open circuit in boards.

Multimeters
Multimeters contain Ohmeters, Voltmeters, Ammeters and a variety of capabilities to measure other quantities. AC and DC voltages are most often measurable. Frequency of AC voltages. Multimeters also feature a continuity detector, basically an Ohmmeter with a beeper if the multimeter sees less than 100 Ω then it beeps otherwise it is silent. This is very useful for finding whether components are connected when debugging or testing circuits. Multimeters are also often able to measure capacitance and inductance. This may be achieved using a Wien bridge. A diode tester is also generally onboard, this allows one to determine the anode and cathode of an unknown diode. A LCD display is also provided for easily reading of results.

 * Wikipedia:Multimeter

= Electronics Laboratory Instruments =

Oscilloscope
The instrument is used to view AC waveforms. For better explanation of the oscilloscope.

Spectrum Analyzer

 * Wikipedia:Spectrum_Analyzer

Signal Generator
This instrument is used to generate low voltage AC signals. Most common signal generators can create sinusoidal(sine), triangular and square waves of various frequencies. They are used in conjunction with the oscilloscope to test analogue circuits.
 * Wikipedia:Signal_Generator

Logic Probe
This instrument generates high and low logic states to test digital circuits. If a logic probe is not available a square wave through a signal generator can be used. Square waves can also be used to test the response time of a digital circuits.
 * Wikipedia:Logic Probe

title: Electronics/Measuring Instruments