Vorlage:Scale

Zur Navigation springen Zur Suche springen
Bearbeiten · Versionen · Cache leeren · Messages · Seiteninformation
Die Vorlage Scale ist nur auf eingebundenen Seiten voll sichtbar und auf dieser Seite versteckt.

Vorlagendokumentation Bearbeiten · Raw · Versionen · Cache leeren · Seiteninformation
Diese Vorlagendokumentation wird von der Seite Vorlage:Scale/doc eingebunden.

Die Vorlage {{Scale}} ruft den Modul Lilypond mit dem Unterprogramm scale auf. Erzeugt eine Linkliste quer durch alle Tonarten, gedacht für meine musiktheoretischen Spinnereien.

Parameter

x
NameBeschreibungStandardStatus
1pre vorderer Namensteil{{PAGENAME}}optional
2suf hinterer NamensteilDuroptional
3Tonartgeschlecht, dur/moll; auch art oder geschlechtduroptional
4link: Linkbeschriftungleeroptional
5templ: Vorlage, auch vorlage, templateleeroptional
wenn keine Vorlage zur Auswertung, dann wird eine Linkliste erzeugt
6trenn: auch trennzeichen, trennt die Werte für die einzelnen Tonarten voneinander·optional

Kopiervorlagen

{{Scale|1=|2=|3=|4=|5=|6=}}
{{Scale|1=|2=|3=|4=|5=|6=}}
{{Scale
|1=
|2=
|3=
|4=
|5=
|6=}}
{{Scale
|1=
|2=
|3=
|4=
|5=
|6=}}

Anwendung

{{Scale|art=moll|suf=Moll}}
ergibt als Wikitext expandiert:
[[Scale A Moll|Scale A Moll]] · [[Scale E Moll|Scale E Moll]] · [[Scale H Moll|Scale H Moll]] · [[Scale Fis Moll|Scale Fis Moll]] · [[Scale Cis Moll|Scale Cis Moll]] · [[Scale Gis Moll|Scale Gis Moll]] · [[Scale Dis Moll|Scale Dis Moll]] · [[Scale Es Moll|Scale Es Moll]] · [[Scale B Moll|Scale B Moll]] · [[Scale F Moll|Scale F Moll]] · [[Scale C Moll|Scale C Moll]] · [[Scale G Moll|Scale G Moll]] · [[Scale D Moll|Scale D Moll]]

Code

<includeonly>

<onlyinclude>{{#invoke:Lilypond|scale}}</onlyinclude> </includeonly> {{Cat|Quintenzirkel}}

{{Dokumentation}}

Lua Code

function p.scale(frame)
	local a = mw.getCurrentFrame():getParent().args     -- bei Aufruf über Vorlage ist :getParent(). erforderlich
	if empty(a) then a = mw.getCurrentFrame().args end  -- entweder Direktaufruf oder über Vorlage, so bin ich für alles gerüstet

	local pre  = a.pre or a[1] or 'Scale'
	local suf  = a.suf or a[2] or 'Dur' 
	local art  = a.art or a.geschlecht or a[3] or 'dur' 
	local link = a.link or a[4] or ''                              -- Linkbeschriftung
	local templ = a.template or a.templ or a.vorlage or a[5] or '' -- soll eine Vorlage angewendet oder nur ein Link erzeugt werden
	local trenn = a.trenn or a.trennzeichen or a[6] or '·'         -- das Trennzeichen kann umdefiniert werden
	
	local leiter = {}
	if art == 'dur' then leiter = qidur else leiter = qimol end

	pre = trim(pre) .. ' '
	suf = ' ' .. trim(suf)
	trenn = ' ' .. trenn .. ' '
	
	local page_name = pre .. leiter[1] .. suf
	if link == '' then 
		linkp = page_name 
	else	
		link  = link .. ' '
		linkp = link .. leiter[1] .. suf
	end
	
	qilen = #leiter  -- Zahl der Elemente im Quintenzirkel
	
	local _ = ''
	if templ ~= '' then 
		_ = frame:expandTemplate { title = templ, args = { page_name } } 
		
		for i=2,qilen do
			page_name = pre .. leiter[i] .. suf
			_ = _ .. trenn .. frame:expandTemplate { title = templ, args = { page_name } }
		end
		return _
	end
	
	-- es wurde keine Vorlage angegeben, nur Links erzeugen
	_ = frame:preprocess( '[[' .. page_name .. '|' .. linkp .. ']]' )

	for i=2,qilen  do  -- alle Tonleitern im Quintenzirkel abarbeiten
		page_name = pre .. leiter[i] .. suf
		if link == '' then 
			linkp = page_name 
		else	
			linkp = link .. leiter[i] .. suf
		end
		_ = _ .. trenn .. frame:preprocess( '[[' .. page_name .. '|' .. linkp .. ']]' )
	end
	return _
end

Verwendungen dieser Vorlage

Unterseiten