Spil klaver fra terminalen
Hej drenge.
Jeg sidder med et projekt i forbindelse med studiet, hvor vi skal have afspillet noget musik ud fra en tekst vi modtager fra seriel porten.
Det jeg er ude efter, er derfor et kommandolinje klaver program eller lignende.
Jeg har kigget på fluidsynth og andre synthesizere, men vil gerne have gjort det så simpelt som muligt.
Jeg vil gerne hvis det kunne fungere noget ala:
echo "a b c a" | piano.sh
og der så vil komme noget lyd ud.
Nogen forslag?
- Log in to post comments
Kommentarer2
du laver en named pipe
du laver en named pipe (fifo):
mkfifo MINFIFO
i en terminal starter du play der i samarbejde med cat udlæser fra filen:
bash -c "while true; do cat MINFIFO; done" | play -t raw --rate 44100 --buffer 512 --bits 32 --encoding=signed-integer -
Du kan så generere lyd fra en anden terminal med sox:
sox --null -t raw --rate 44100 -s --bits 32 MINFIFO synth 1.0 sine 1000
synth 1.0 sine 1000 giver dig 1 sekund med en 1000 Hz sinustone.
Hvis du oplever forsinkelser kan du justere --buffer værdien.
EDIT: Det er så nu jeg finder ud af at du skal bruge et klaver og ikke en sinustone.
Hvis du i stedet for sine
Hvis du i stedet for sine 1000 skriver sine %0, får du A (440Hz).
Du kan så tælle halvtoner op og ned fra A, %-2 sv.t. G og %3 sv.t. C (over A 440).