Discussion:
Transponieren
(zu alt für eine Antwort)
s***@hotmail.com
2006-02-05 16:46:58 UTC
Hi NG,

ich versteh das einfach nicht. Egal wo ich nach dem Begriff
"Transponieren" suche, findet sich maximal eine Erklärung, dass es so
etwas wie eine Tonhöhenveränderung ist und mit welchem Programm man
das machen kann, aber nirgends steht wie das Transponieren eigentlich
funktioniert oder wie man das als Programmierer umsetzen könnte!

Kann mir jemand weiterhelfen und ein paar Links oder so geben, wo die
Funktionsweise (am besten mathematisch) beschrieben ist?

Danke im Voraus,
Steffen
Ralf Koenig
2006-02-05 18:10:09 UTC
Post by s***@hotmail.com
Hi NG,
ich versteh das einfach nicht. Egal wo ich nach dem Begriff
"Transponieren" suche, findet sich maximal eine Erklärung, dass es so
etwas wie eine Tonhöhenveränderung ist und mit welchem Programm man
das machen kann, aber nirgends steht wie das Transponieren eigentlich
funktioniert oder wie man das als Programmierer umsetzen könnte!
Kann mir jemand weiterhelfen und ein paar Links oder so geben, wo die
Funktionsweise (am besten mathematisch) beschrieben ist?
Mal ganz grundsätzlich: Wenn du das "als Programmierer umsetzen" willst,
was sind dann deine Eingabedaten: MIDI-Dateien (also Notenevents),
Notensatz-Daten (z.B. Finale) oder Audio-Samples (z.B. WAV oder
MP3-Dateien)?

MIDI
====

Bei MIDI ist das ganze trivial (du rechnest einfach eine konstante Zahl
auf die Notenwerte drauf, Bsp.

Original: in der mittleren Oktave c d e
(also nach General MIDI: 60, 62, 64)
Um zwei Halbtöne nach oben transponieren heißt überall plus 2, also ist
das Ergebnis:
(nach General MIDI: 62, 64, 66), also d1 e1 fis1

Wichtig: Wir nehmen hier mal vereinfacht an, dass es als "Quelle" und
"Ziel" nur die Tasten auf dem Klavier gibt, das man auch nicht umstimmen
will. Auf anderen Instrumenten kann man auch Töne zwischen den Halbtönen
erzeugen, z.B. Streicher und Bläser, da wird es komplizierter. Das
Stichwort heißt hier "Stimmung". Die Kiste mach ich lieber nicht auf.
http://de.wikipedia.org/wiki/Stimmung_(Musik)

Literatur zur Programmierung z.B. hier:
http://www.synrise.de/docs/literatur/midi2.htm

Notation
=========

Die Grundlagen sind wie bei "MIDI". Aber hier wird es je nach Instrument
schon komplizierter, da der Notensatz auch instrumentenspezifisch
unterschiedliche Symbole kennt, der die jeweiligen Eigenheiten des
Instruments berücksichtigt.

WAV (also Audio-Samples)
========================

Das wird schon deutlich komplizierter. Schau dir das mal an:
http://de.wikipedia.org/wiki/Transposition_(Musik)

Dort den Abschnitt "Elektronische Transposition (Sampling)", da ist auch
ein einfaches Verfahren angegeben (Ändern der Abtastrate mit den
Faktoren in der Tabelle).

Literatur, z.B.
http://www.synrise.de/docs/literatur/sampler.htm

Das grosse Sampler Praxisbuch, Peter Gorges, erschienen im
G.C.Carstensen-Verlag, 304 Seiten, ISBN 3-910092-00-2, 48,- DM.

Sampling, Klaus Ploch, erschienen im Signum-Media-Verlag, 48,- DM
Sound-Sampler, Doepfer/Assall, erschienen im Elektor-Verlag, ISBN:
3-921608-44-9, 39,80 DM

Richtig hardcore: dann meist unter "Pitch shifting".

DAFX:Digital Audio Effects
Udo Zölzer et. al.
ISBN: 0471490784

Oder hier, ein White-Paper mit ein bisschen Theorie (und der Erklärung,
warum ein Pitch-Processor meist unnatürlich klingt).

Patrick BASTIEN, TC-Helicon
"Pitch shifting and voice transformation techniques"
http://www.tc-helicon.com/Files/Whitepapers/Pitch_shifting.pdf

Time Stretching And Pitch Shifting of Audio Signals
http://www.dspdimension.com/data/html/tutorials.html

Ralf
s***@hotmail.com
2006-02-05 18:42:59 UTC
Ohh! Hab ganz vergessen zu sagen, dass ich das für WAV-Daten brauch.
Scheint das richtige zu sein. Also danke, ich werde dann mal die Links
durchforsten...

Steffen
Dirk Thierbach
2006-02-06 09:06:15 UTC
Post by s***@hotmail.com
Ohh! Hab ganz vergessen zu sagen, dass ich das für WAV-Daten brauch.
Scheint das richtige zu sein. Also danke, ich werde dann mal die Links
durchforsten...
Pitch shifting ist so eine Sache -- die Ergebnisse sind nicht immer
so, wie man es sich vorstellt.

Es gibt noch die ganz plumpe Methode: Wenn es Dir auf das Tempo des
Stueckes nicht so ankommt, kann man die WAV-Datei auch ein bisschen
schneller oder langsamer abspielen (= Sample-Rate mit "Gewalt" aendern).
Das verschiebt auch die Tonhoehe, aber eben auch die Geschwindigkeit.

Transponieren als Wort bezieht sich eigentlich immer auf die Noten.
Wenn jemand ein Stueck, das in C-Dur geschrieben ist, in D-Dur abspielt,
transponiert er.

- Dirk
Reinhard Zwirner
2006-02-05 21:14:56 UTC
Ralf Koenig schrieb:
[...]
Post by s***@hotmail.com
ich versteh das einfach nicht. Egal wo ich nach dem Begriff
"Transponieren" suche, findet sich maximal eine Erklärung, dass es so
etwas wie eine Tonhöhenveränderung ist ...
Primär geht es um die Verschiebung eines Musikstücks in eine andere
Tonart!

Nehmen wir "Hänschen klein". In C-Dur fängt es so an:
g-e-eh/f-d-deh/c-d-e-f/g-g-geh ...

Wenn man das Lied nach D-Dur transponiert, ergeben sich folgende
Töne: a-fis-fihs/g-e-eh/d-e-fis-g/a-a-ah ...

Die Intervalle sind die gleichen, und wenn man nicht das absolute
Gehör hat, wird man - wenn man die beiden Versionen nicht unmittelbar
nacheinander hört - kaum einen Unterschied bemerken. Dennoch ist
die D-Dur-Version einen Ganzton höher.

Es geht aber genau so in die andere Richtung. Musikstücke, die im
Ursprung in F-Dur geschrieben wurden, können analog in die Tonart
E-Dur transponiert werden und klingen dann eben (einen Halbton) tiefer.
Kenner weisen den unterschiedlichen Tonarten sogar einen jeweils
spezifischen Charakter zu - da halte ich mich aber raus.

HTH

Reinhard
Marco Funk
2006-02-06 17:19:23 UTC
Post by Reinhard Zwirner
Kenner weisen den unterschiedlichen Tonarten sogar einen jeweils
spezifischen Charakter zu - da halte ich mich aber raus.
Schade... ;)
Die Zeiten, als jede Tonart einen eigenen Charakter hatte, sind seit der
gleichschwebend temperierten Stimmung[1] (leider) vorbei.
Bei älteren temperierten Stimmungen -- Werckmeister oder Kirnberg z.B.
-- war es tatsächlich so.

Gruß
Marco

[1] ich würde dies eigentlich gern "sterile Stimmung" nennen ;)
joe berg
2006-02-06 18:21:08 UTC
Post by Marco Funk
Post by Reinhard Zwirner
Kenner weisen den unterschiedlichen Tonarten sogar einen jeweils
spezifischen Charakter zu - da halte ich mich aber raus.
Schade... ;)
Die Zeiten, als jede Tonart einen eigenen Charakter hatte, sind seit der
gleichschwebend temperierten Stimmung[1] (leider) vorbei.
Bei älteren temperierten Stimmungen -- Werckmeister oder Kirnberg z.B.
-- war es tatsächlich so.
Gruß
Marco
[1] ich würde dies eigentlich gern "sterile Stimmung" nennen ;)
Aber wer spielt den wirklich temperiert, außer Pianisten und Orgelspielern?

Gruß

jb



Database (slave) 0.005728 s
44.2734 kB
Benchmark Min Max Average Total
SELECT `lang` FROM `newsgroup` WHERE `newsgroup_url` = 'de.comp.audio' (4)
0.000135 s
0.000303 s
0.000196 s
0.000786 s
2.2344 kB
2.3672 kB
2.2676 kB
9.0703 kB
SELECT `code`, `name` FROM `lang` WHERE `code` = 'de' (3)
0.000127 s
0.000157 s
0.000138 s
0.000415 s
2.4141 kB
2.4141 kB
2.4141 kB
7.2422 kB
SELECT * FROM `lang` WHERE `code` = 'de' (1)
0.000171 s
0.000171 s
0.000171 s
0.000171 s
12.5234 kB
12.5234 kB
12.5234 kB
12.5234 kB
SELECT * FROM `thread` WHERE `hash` = 'RyFqTc9Q' (1)
0.002190 s
0.002190 s
0.002190 s
0.002190 s
4.2500 kB
4.2500 kB
4.2500 kB
4.2500 kB
SELECT * FROM `newsgroup` WHERE `newsgroup_id` = '65896' (1)
0.000732 s
0.000732 s
0.000732 s
0.000732 s
5.8047 kB
5.8047 kB
5.8047 kB
5.8047 kB
SELECT * FROM `temp_simthread` WHERE `hash` = 'RyFqTc9Q' (1)
0.000532 s
0.000532 s
0.000532 s
0.000532 s
2.6953 kB
2.6953 kB
2.6953 kB
2.6953 kB
SELECT text_res, img_res, manual FROM porndetect WHERE hash = 'RyFqTc9Q' AND page = 1 (1)
0.000903 s
0.000903 s
0.000903 s
0.000903 s
2.6875 kB
2.6875 kB
2.6875 kB
2.6875 kB
Kohana 0.009324 s
53.2266 kB
Benchmark Min Max Average Total
find_file (81)
0.000005 s
0.000325 s
0.000115 s
0.009324 s
0.5234 kB
2.1563 kB
0.6571 kB
53.2266 kB
Requests 0.060826 s
500.0391 kB
Benchmark Min Max Average Total
"RyFqTc9Q/transponieren" (1)
0.062545 s
0.062545 s
0.062545 s
0.062545 s
528.0547 kB
528.0547 kB
528.0547 kB
528.0547 kB
Thread controller 0.000970 s
27.7031 kB
Benchmark Min Max Average Total
Init (1)
0.000970 s
0.000970 s
0.000970 s
0.000970 s
27.7031 kB
27.7031 kB
27.7031 kB
27.7031 kB
Thread parsing 0.041862 s
118.5234 kB
Benchmark Min Max Average Total
Other (2)
0.002246 s
0.005353 s
0.003800 s
0.007599 s
17.5625 kB
20.9609 kB
19.2617 kB
38.5234 kB
PHP Post Parsing (1)
0.003927 s
0.003927 s
0.003927 s
0.003927 s
60.4609 kB
60.4609 kB
60.4609 kB
60.4609 kB
C++ Post Parsing (1)
0.029977 s
0.029977 s
0.029977 s
0.029977 s
10.5703 kB
10.5703 kB
10.5703 kB
10.5703 kB
Three (1)
0.000359 s
0.000359 s
0.000359 s
0.000359 s
8.9688 kB
8.9688 kB
8.9688 kB
8.9688 kB
Load & uncompress 0.002176 s
15.0625 kB
Benchmark Min Max Average Total
load_thread (1)
0.002176 s
0.002176 s
0.002176 s
0.002176 s
15.0625 kB
15.0625 kB
15.0625 kB
15.0625 kB
Application Execution (507) 0.020666 s 33.418700 s 0.197905 s 0.078194 s
749.6172 kB 4,534.3750 kB 1,358.4771 kB 1,148.6875 kB