Tonausgabe mit Python unter Windows
- Protokoll
from winsound import Beep
frequency = 1000 # Herz
duration = 1000 # ms
Beep( frequency, duration ) # synchroner Aufruf
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton von 1000 Herz für 1000 Millisekunden ausgibt.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton für 1000 Millisekunden ausgibt, dessen Frequenz in Herz der Funktion beim Aufruf als Argument übergeben werden kann.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton von 1000 Herz für eine Zeitdauer in Millisekunden ausgibt, die Funktion beim Aufruf als Argument übergeben werden kann.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton von 1000 Herz für eine Zeitdauer in Sekunden vom Typ »float« ausgibt, die Funktion beim Aufruf als Argument übergeben werden kann. Diese Funktion soll »Beep« nicht direkt aufrufen, sondern die Funktion aufrufen, die als Lösung der vorigen Übungsaufgabe geschrieben wurde.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton ausgibt, dessen Frequenz in kHz und dessen Zeitdauer in Sekunden als Werte vom Typ »float« beim Aufruf übergeben werden können.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton und danach einen Ton, der um eine Oktave höher liegt, ausgibt.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die einen Ton und danach einen Ton, der um eine Quinte höher liegt, ausgibt.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die drei Töne hintereinander ausgibt, die einen Dreiklang bilden.
/ Übungsaufgabe
Geben Sie acht Töne hintereinander aus, die eine Dur-Tonleiter bilden.
/ Übungsaufgabe
Schreiben Sie eine Funktion, die zwei Argumente akzeptiert.
Wenn das erste Argument 0 ist, soll der Normstimmton ausgegeben werden (440 Hz), bei 1 der Halbton darüber und so weiter.
Wenn das erste Argument 1 ist, soll die Dauer des Tons ein ganzer Ton sein, bei 2 ein halber Ton und so weiter.
/ Übungsaufgabe
Geben Sie das Lied „Alle meine Entchen “ aus.
/ Übungsaufgabe
Schreiben Sie ein Programm, das es erlaubt, die Tastatur zu benutzen, um Töne auszugeben. Es soll zumindest beim Antippen von Z ein C erklingen, beim Antippen von X ein D erklingen, und beim Antippen von C ein E. Sie können aber auch weitere Tasten mit den nächsten Tönen der C-Dur-Tonleiter belegen und die darüberliegenden Tasten für die Halbtöne nutzen.
Die Dauer der Töne kann mit den uns derzeit zur Verfügung stehenden Mitteln leider nicht an die Dauer eines Tastendrucks angepaßt werden. Zwar könnten wir mit »onkeypress« und »onkeyrelease« das Drücken und Loslassen einer Taste erkennen, doch erlaubt es »winsound« nicht, einen Ton entsprechend zu starten und zu stoppen.
/ Übungsaufgabe
- Buffer
run_file "bwv846.rb
- bwv846.rb
def start():
print( 'use_synth :blade' )
def s(x):
print( "sleep", x )
def b(x,y):
print( "play hz_to_midi(", x, "), attack: 0.1, release: 0.65" )
print( "sleep", y/1000 )
def c(x,y): # fuer die letzte Note
print( "sleep 0.25" )
print( "play hz_to_midi(", x, "), attack: 0.1, release: 2.00" )