diff --git a/music21/stream/__init__.py b/music21/stream/__init__.py
index e3d28c408..2acb6b31d 100644
--- a/music21/stream/__init__.py
+++ b/music21/stream/__init__.py
@@ -5864,19 +5864,16 @@ class Stream(core.StreamCoreMixin, base.Music21Object):
         #   alteredPitches])
 
         # need to move through notes in order
-        # NOTE: this may or may have sub-streams that are not being examined
-        noteStream = returnObj.notesAndRests
+        # recurse to capture notes in substreams: https://github.com/cuthbertLab/music21/issues/577
+        noteIterator = returnObj.recurse().notesAndRests
 
         # environLocal.printDebug(['alteredPitches', alteredPitches])
         # environLocal.printDebug(['pitchPast', pitchPast])
 
-        # # get chords, notes, and rests
-        # for i in range(len(noteStream)):
-        #     e = noteStream[i]
         if tiePitchSet is None:
             tiePitchSet = set()
 
-        for e in noteStream:
+        for e in noteIterator:
             if isinstance(e, note.Note):
                 if e.pitch.nameWithOctave in tiePitchSet:
                     lastNoteWasTied = True
@@ -6058,7 +6055,7 @@ class Stream(core.StreamCoreMixin, base.Music21Object):
                 pass
 
         # note: this needs to be after makeBeams, as placing this before
-        # makeBeams was causing the duration's tuplet to loose its type setting
+        # makeBeams was causing the duration's tuplet to lose its type setting
         # check for tuplet brackets one measure at a time
         # this means that they will never extend beyond one measure
         for m in measureStream:
@@ -8786,6 +8783,11 @@ class Stream(core.StreamCoreMixin, base.Music21Object):
         {0.0} <music21.note.Note B>
         {2.0} <music21.chord.Chord A B->
         {3.0} <music21.note.Note D>
+
+        (Technical note: All elements of class NotRest are being found
+        right now.  This will eventually change to also filter out
+        Unpitched objects, so that all elements returned by
+        `.notes` have a `.pitches` attribute.
         '''
         if 'notes' not in self._cache or self._cache['notes'] is None:
             noteIterator = self.getElementsByClass('NotRest')
diff --git a/music21/stream/makeNotation.py b/music21/stream/makeNotation.py
index 165003b69..42e9771ee 100644
--- a/music21/stream/makeNotation.py
+++ b/music21/stream/makeNotation.py
@@ -231,7 +231,7 @@ def makeMeasures(
 
     Here is a simple example of makeMeasures:
 
-    A single measure of 4/4 is created by from a Stream
+    A single measure of 4/4 is created from a Stream
     containing only three quarter notes:
 
     >>> from music21 import articulations

diff --git a/music21/test/testStream.py b/music21/test/testStream.py
index 8925c2bef..4f76c7174 100644
--- a/music21/test/testStream.py
+++ b/music21/test/testStream.py
@@ -5993,13 +5993,22 @@ class Test(unittest.TestCase):
         p = stream.Part()
         p.append([m1, m2])
         # p.show()
-        # test result of xml output to make sure a natural has been hadded
+        # test result of xml output to make sure a natural has been added
         GEX = m21ToXml.GeneralObjectExporter()
         raw = GEX.parse(p).decode('utf-8')
         self.assertGreater(raw.find('<accidental>natural</accidental>'), 0)
-        # make sure original is not chagned
+        # make sure original is not changed
         self.assertFalse(p.haveAccidentalsBeenMade())
 
+    def testHaveAccidentalsBeenMadeInVoices(self):
+        s = Score()
+        s.insert(key.Key('Gb'))
+        s.insert(0, note.Note('D-5'))
+        s.insert(0, note.Note('D-4'))
+        post = s.makeNotation()  # makes voices, makes measures, makes accidentals
+        self.assertEqual(len(post.recurse().getElementsByClass('Voice')), 2)
+        self.assertTrue(post.haveAccidentalsBeenMade())
+
     def testHaveBeamsBeenMadeA(self):
         from music21 import stream
         m1 = stream.Measure()

Making voices can disrupt makeAccidentals()
Based on case reported by Igor Praznik, music21 list 3/3/20.

```
s = stream.Stream()
s.insert(key.Key('Gb'))
s.insert(0, note.Note('D-5'))
s.insert(0, note.Note('D-4'))
s.show()  # During export to xml, makeNotation(), makeVoices(), makeMeasures()
```
<img width="138" alt="Screen Shot 2020-07-14 at 9 19 28 PM" src="https://user-images.githubusercontent.com/38668450/87492057-b5828a00-c617-11ea-86ca-9e4ea46d96c3.png">

`makeNotation()` calls `makeAccidentals()` per `Measure` object, but `makeAccidentals()` only inspects `measure.notesAndRests`, which is empty in this case because the notes have been put in voices already:

https://github.com/cuthbertLab/music21/blob/93bea7cc87bdb9fb2bb0ab0cb3faef1717b24004/music21/stream/__init__.py#L5867

<s>Need to grab the voice objects somewhere, possibly just recursively calling `makeAccidentals()`, but there are going to be corner cases here with accidentals tied from previous measures.</s> Update: I think this is only affecting the code path where measures have not been created yet. In that case, probably easier to just call `makeAccidentals()` before `makeVoices()` and `makeMeasures()`, since without measures to worry about, those corner cases go away.
music21/test/testStream.py::Test::testHaveAccidentalsBeenMadeInVoices
music21/test/testStream.py::Test::testAccumulatedTimeA music21/test/testStream.py::Test::testAccumulatedTimeB music21/test/testStream.py::Test::testActivateVariantsA music21/test/testStream.py::Test::testActivateVariantsB music21/test/testStream.py::Test::testActivateVariantsBySpanA music21/test/testStream.py::Test::testActivateVariantsBySpanB music21/test/testStream.py::Test::testActivateVariantsC music21/test/testStream.py::Test::testActivateVariantsD music21/test/testStream.py::Test::testActivateVariantsE music21/test/testStream.py::Test::testActiveSiteCopiedStreams music21/test/testStream.py::Test::testActiveSiteMangling music21/test/testStream.py::Test::testActiveSites music21/test/testStream.py::Test::testActiveSitesMultiple music21/test/testStream.py::Test::testAdd music21/test/testStream.py::Test::testAddSlurByMelisma music21/test/testStream.py::Test::testAnalyze music21/test/testStream.py::Test::testAugmentOrDiminishBasic music21/test/testStream.py::Test::testAugmentOrDiminishCorpus music21/test/testStream.py::Test::testAugmentOrDiminishHighestTimes music21/test/testStream.py::Test::testBestTimeSignature music21/test/testStream.py::Test::testChordifyA music21/test/testStream.py::Test::testChordifyB music21/test/testStream.py::Test::testChordifyC music21/test/testStream.py::Test::testChordifyD music21/test/testStream.py::Test::testChordifyE music21/test/testStream.py::Test::testChordifyF music21/test/testStream.py::Test::testChordifyG music21/test/testStream.py::Test::testChordifyImported music21/test/testStream.py::Test::testChordifyRests music21/test/testStream.py::Test::testChordifyTagPartA music21/test/testStream.py::Test::testChordifyTagPartB music21/test/testStream.py::Test::testClefs music21/test/testStream.py::Test::testContextNestedA music21/test/testStream.py::Test::testContextNestedB music21/test/testStream.py::Test::testContextNestedC music21/test/testStream.py::Test::testContextNestedD music21/test/testStream.py::Test::testDeepcopyActiveSite music21/test/testStream.py::Test::testDeepcopySpanners music21/test/testStream.py::Test::testDerivationA music21/test/testStream.py::Test::testDerivationB music21/test/testStream.py::Test::testDerivationC music21/test/testStream.py::Test::testDerivationMethodA music21/test/testStream.py::Test::testDoubleStreamPlacement music21/test/testStream.py::Test::testElements music21/test/testStream.py::Test::testElementsHighestTimeA music21/test/testStream.py::Test::testElementsHighestTimeB music21/test/testStream.py::Test::testElementsHighestTimeC music21/test/testStream.py::Test::testExtendDurationA music21/test/testStream.py::Test::testExtendTiesA music21/test/testStream.py::Test::testExtendTiesB music21/test/testStream.py::Test::testExtractedNoteAssignLyric music21/test/testStream.py::Test::testFinalBarlinePropertyA music21/test/testStream.py::Test::testFinalBarlinePropertyB music21/test/testStream.py::Test::testFindConsecutiveNotes music21/test/testStream.py::Test::testFindGaps music21/test/testStream.py::Test::testFlatCachingA music21/test/testStream.py::Test::testFlatCachingB music21/test/testStream.py::Test::testFlatCachingC music21/test/testStream.py::Test::testFlatSimple music21/test/testStream.py::Test::testFlattenUnnecessaryVoicesA music21/test/testStream.py::Test::testGetElementAfterElement music21/test/testStream.py::Test::testGetElementAtOrBeforeBarline music21/test/testStream.py::Test::testGetElementBeforeOffsetA music21/test/testStream.py::Test::testGetElementBeforeOffsetB music21/test/testStream.py::Test::testGetElementsByContextStream music21/test/testStream.py::Test::testGetElementsByOffsetZeroLength music21/test/testStream.py::Test::testGetInstrumentFromMxl music21/test/testStream.py::Test::testGetInstrumentManual music21/test/testStream.py::Test::testGetKeySignatures music21/test/testStream.py::Test::testGetKeySignaturesThreeMeasures music21/test/testStream.py::Test::testGetTimeSignatures music21/test/testStream.py::Test::testGetVariantsA music21/test/testStream.py::Test::testGraceChords music21/test/testStream.py::Test::testGracesInStream music21/test/testStream.py::Test::testHaveAccidentalsBeenMadeA music21/test/testStream.py::Test::testHaveAccidentalsBeenMadeB music21/test/testStream.py::Test::testHaveBeamsBeenMadeA music21/test/testStream.py::Test::testHaveBeamsBeenMadeB music21/test/testStream.py::Test::testInsertAndShiftBasic music21/test/testStream.py::Test::testInsertAndShiftMultipleElements music21/test/testStream.py::Test::testInsertAndShiftNoDuration music21/test/testStream.py::Test::testInsertIntoNoteOrChordA music21/test/testStream.py::Test::testInsertIntoNoteOrChordB music21/test/testStream.py::Test::testInvertDiatonicA music21/test/testStream.py::Test::testInvertDiatonicQuickSearch music21/test/testStream.py::Test::testIteration music21/test/testStream.py::Test::testMakeAccidentalsA music21/test/testStream.py::Test::testMakeAccidentalsB music21/test/testStream.py::Test::testMakeAccidentalsC music21/test/testStream.py::Test::testMakeAccidentalsD music21/test/testStream.py::Test::testMakeAccidentalsOctaveKS music21/test/testStream.py::Test::testMakeAccidentalsTies music21/test/testStream.py::Test::testMakeAccidentalsWithKeysInMeasures music21/test/testStream.py::Test::testMakeChordsBuiltA music21/test/testStream.py::Test::testMakeChordsBuiltB music21/test/testStream.py::Test::testMakeChordsBuiltC music21/test/testStream.py::Test::testMakeChordsBuiltD music21/test/testStream.py::Test::testMakeChordsImported music21/test/testStream.py::Test::testMakeMeasuresInPlace music21/test/testStream.py::Test::testMakeMeasuresMeterStream music21/test/testStream.py::Test::testMakeMeasuresTimeSignatures music21/test/testStream.py::Test::testMakeMeasuresWithBarlines music21/test/testStream.py::Test::testMakeNotationA music21/test/testStream.py::Test::testMakeNotationB music21/test/testStream.py::Test::testMakeNotationC music21/test/testStream.py::Test::testMakeNotationKeySignatureMultiVoice music21/test/testStream.py::Test::testMakeNotationKeySignatureOneVoice music21/test/testStream.py::Test::testMakeNotationScoreA music21/test/testStream.py::Test::testMakeNotationScoreB music21/test/testStream.py::Test::testMakeNotationScoreC music21/test/testStream.py::Test::testMakeRestsA music21/test/testStream.py::Test::testMakeRestsB music21/test/testStream.py::Test::testMakeTies music21/test/testStream.py::Test::testMakeTupletBracketsA music21/test/testStream.py::Test::testMakeTupletBracketsB music21/test/testStream.py::Test::testMakeVoicesA music21/test/testStream.py::Test::testMakeVoicesB music21/test/testStream.py::Test::testMeasureAndTieCreation music21/test/testStream.py::Test::testMeasureBarDurationProportion music21/test/testStream.py::Test::testMeasureBarline music21/test/testStream.py::Test::testMeasureGrouping music21/test/testStream.py::Test::testMeasureLayout music21/test/testStream.py::Test::testMeasureOffsetMap music21/test/testStream.py::Test::testMeasureOffsetMapPostTie music21/test/testStream.py::Test::testMeasureRange music21/test/testStream.py::Test::testMeasureStream music21/test/testStream.py::Test::testMeasuresA music21/test/testStream.py::Test::testMeasuresAndMakeMeasures music21/test/testStream.py::Test::testMeasuresB music21/test/testStream.py::Test::testMeasuresC music21/test/testStream.py::Test::testMeasuresSuffix music21/test/testStream.py::Test::testMelodicIntervals music21/test/testStream.py::Test::testMelodicIntervalsB music21/test/testStream.py::Test::testMergeElements music21/test/testStream.py::Test::testMetadataOnStream music21/test/testStream.py::Test::testMidiEventsBuilt music21/test/testStream.py::Test::testMultipartStream music21/test/testStream.py::Test::testMusicXMLGenerationViaPropertyA music21/test/testStream.py::Test::testMusicXMLGenerationViaPropertyB music21/test/testStream.py::Test::testMusicXMLGenerationViaPropertyC music21/test/testStream.py::Test::testOpusSearch music21/test/testStream.py::Test::testOverlapsA music21/test/testStream.py::Test::testOverlapsB music21/test/testStream.py::Test::testPartDurationA music21/test/testStream.py::Test::testPartDurationB music21/test/testStream.py::Test::testPartsToVoicesA music21/test/testStream.py::Test::testPartsToVoicesB music21/test/testStream.py::Test::testQuantize music21/test/testStream.py::Test::testRecurseA music21/test/testStream.py::Test::testRecurseB music21/test/testStream.py::Test::testRemove music21/test/testStream.py::Test::testRemoveByClass music21/test/testStream.py::Test::testReplace music21/test/testStream.py::Test::testReplaceA1 music21/test/testStream.py::Test::testReplaceB music21/test/testStream.py::Test::testReplaceDerivated music21/test/testStream.py::Test::testScaleDurationsBasic music21/test/testStream.py::Test::testScaleOffsetsBasic music21/test/testStream.py::Test::testScaleOffsetsBasicInPlaceA music21/test/testStream.py::Test::testScaleOffsetsBasicInPlaceB music21/test/testStream.py::Test::testScaleOffsetsBasicInPlaceC music21/test/testStream.py::Test::testScaleOffsetsBasicInPlaceD music21/test/testStream.py::Test::testScaleOffsetsNested music21/test/testStream.py::Test::testScoreShowA music21/test/testStream.py::Test::testSecondsMapA music21/test/testStream.py::Test::testSecondsMapB music21/test/testStream.py::Test::testSecondsPropertyA music21/test/testStream.py::Test::testSecondsPropertyB music21/test/testStream.py::Test::testSecondsPropertyC music21/test/testStream.py::Test::testSemiFlatCachingA music21/test/testStream.py::Test::testSetElements music21/test/testStream.py::Test::testSetElementsFromOtherStreamWithEndElements music21/test/testStream.py::Test::testSimpleRecurse music21/test/testStream.py::Test::testSliceAtOffsetsBuilt music21/test/testStream.py::Test::testSliceAtOffsetsImported music21/test/testStream.py::Test::testSliceAtOffsetsSimple music21/test/testStream.py::Test::testSliceByBeatBuilt music21/test/testStream.py::Test::testSliceByBeatImported music21/test/testStream.py::Test::testSliceByGreatestDivisorBuilt music21/test/testStream.py::Test::testSliceByGreatestDivisorImported music21/test/testStream.py::Test::testSliceByQuarterLengthsBuilt music21/test/testStream.py::Test::testSliceByQuarterLengthsImported music21/test/testStream.py::Test::testSort music21/test/testStream.py::Test::testSortAndAutoSort music21/test/testStream.py::Test::testSortingAfterInsertA music21/test/testStream.py::Test::testSpannerTransferA music21/test/testStream.py::Test::testSplitAtQuarterLengthA music21/test/testStream.py::Test::testSplitAtQuarterLengthB music21/test/testStream.py::Test::testSplitAtQuarterLengthC music21/test/testStream.py::Test::testStoreAtEndFailures music21/test/testStream.py::Test::testStreamCopy music21/test/testStream.py::Test::testStreamDuration music21/test/testStream.py::Test::testStreamElementsComparison music21/test/testStream.py::Test::testStreamExceptionsOnAssert music21/test/testStream.py::Test::testStreamRecursion music21/test/testStream.py::Test::testStreamSortRecursion music21/test/testStream.py::Test::testStripTiesBuiltA music21/test/testStream.py::Test::testStripTiesBuiltB music21/test/testStream.py::Test::testStripTiesChords music21/test/testStream.py::Test::testStripTiesImportedA music21/test/testStream.py::Test::testStripTiesImportedB music21/test/testStream.py::Test::testStripTiesScore music21/test/testStream.py::Test::testTemplateAll music21/test/testStream.py::Test::testTransposeByPitchA music21/test/testStream.py::Test::testTransposeByPitchB music21/test/testStream.py::Test::testTransposeScore music21/test/testStream.py::Test::testTwoStreamMethods music21/test/testStream.py::Test::testTwoZeroOffset music21/test/testStream.py::Test::testVoicesA music21/test/testStream.py::Test::testVoicesALonger music21/test/testStream.py::Test::testVoicesB music21/test/testStream.py::Test::testVoicesC music21/test/testStream.py::Test::testVoicesToPartsA music21/test/testStream.py::Test::testVoicesToPartsNonNoteElementPropagation music21/test/testStream.py::Test::testYieldContainers music21/test/testStream.py::Test::test_makeBeams__1_e__after_16th_note music21/test/testStream.py::Test::test_makeBeams__1_e_n_a music21/test/testStream.py::Test::test_makeBeams__all_eighths music21/test/testStream.py::Test::test_makeBeams__all_quarters music21/test/testStream.py::Test::test_makeBeams__eighth_rests_and_eighth music21/test/testStream.py::Test::test_makeBeams__repeated_1_e_a music21/test/testStream.py::Test::testcontainerHierarchyA