@ivs = qw(2 4 5 7 9 11 12 14 16 17 19 21 23 24); for (1..7) { print "0 @ivs[0..6]\n"; $min = shift @ivs; for $v (@ivs) { $v -= $min; } } I 0 2 4 5 7 9 11 12 II 0 2 3 5 7 9 10 12 III 0 1 3 5 7 8 10 12 IV 0 2 4 6 7 9 11 12 V 0 2 4 5 7 9 10 12 VI 0 2 3 5 7 8 10 12 VII 0 1 3 5 6 8 10 12 Qmb5 0 3 6 VII Qm7b5 0 3 6 10 VII Qm 0 3 7 II III VI Qm7 0 3 7 10 II III VI Q 0 4 7 I IV V Q7 0 4 7 10 V Qmaj7 0 4 7 11 I IV Qsus 0 5 7 I II III V VI Q 0 4 7 Qm 0 3 7 Q+ 0 4 8 Qmb5 0 3 6 Q7 0 4 7 10 Qmaj7 0 4 7 11 Qm7 0 3 7 10 Qm(maj7) 0 3 7 11 Qm7b5 0 3 6 10 Qdim 0 3 6 9 Qsus 0 5 7 I, Imaj7, Isus IIm, IIm7, IIsus IIIm IIIm7, IIIsus IV, IVmaj7 V, V7, Vsus VIm, VIm7, VIsus VIImb5, VIIm7b5 @lines = split /\n/, <