Sono confuso perché ci sono molti programmi. Ma sto guardando qualcosa del genere. Scriverò una melodia come "a4 c3 h3 a2" ecc. E poi voglio sentirlo. Qualcuno sa cosa sto cercando? grazie in anticipoCome posso creare una melodia? C'è qualche modulo sonoro?
risposta
calcolare le frequenze dal nome della nota è facile. ogni mezza nota è 2^(1/12) di distanza dalla nota precedente, 440 Hz è A4.
se per caso siete su Windows, è possibile provare questo pezzo di codice, che gioca una canzone attraverso l'altoparlante del PC:
import math
import winsound
import time
labels = ['a','a#','b','c','c#','d','d#','e','f','f#','g','g#']
# name is the complete name of a note (label + octave). the parameter
# n is the number of half-tone from A4 (e.g. D#1 is -42, A3 is -12, A5 is 12)
name = lambda n: labels[n%len(labels)] + str(int((n+(9+4*12))/12))
# the frequency of a note. the parameter n is the number of half-tones
# from a4, which has a frequency of 440Hz, and is our reference note.
freq = lambda n: int(440*(math.pow(2,1/12)**n))
# a dictionnary associating note frequencies to note names
notes = {name(n): freq(n) for n in range(-42,60)}
# the period expressed in second, computed from a tempo in bpm
period = lambda tempo: 1/(tempo/60)
# play each note in sequence through the PC speaker at the given tempo
def play(song, tempo):
for note in song.lower().split():
if note in notes.keys():
winsound.Beep(notes[note], int(period(tempo)*1000))
else:
time.sleep(period(tempo))
# "au clair de la lune"!! 'r' is a rest
play('c4 c4 C4 d4 e4 r d4 r c4 e4 d4 d4 c4 r r r '
'c4 C4 c4 d4 e4 r d4 r c4 e4 d4 d4 c4 r r r '
'd4 d4 d4 d4 A3 r a3 r d4 c4 B3 a3 g3 r r r '
'c4 c4 c4 d4 e4 r d4 r c4 e4 d4 d4 c4 r r r ', 180)
(si prega di notare che io sto usando python 3.x, è potrebbe essere necessario adattare alcune parti del codice per utilizzarlo su python 2.x.)
ho, a proposito, ho usato abcdefg
come scala, ma sicuramente troverai il modo di usare h
invece di b
.
NameError: nome globale 'nomi' non è definito – kame
ooops, mi dispiace, questo è quello che succede quando non cancelli il tuo la sessione di Python prima del test. corretta ora! –
è possibile utilizzare qualsiasi libreria che produce uscita MIDI, in caso di .net io consiglierei quello creato da Stephen Toub da Microsoft (non riesce a trovare da dove l'ho preso, ma per google it.)
Verificare che fuori: http://www.algorithm.co.il/blogs/index.php/pytuner/ È un progetto molto simile e si presenta come un riferimento molto decente.
ho problemi con l'installazione di pymedia :( – kame
Un'opzione esterna è JFugue come shown here (con Groovy). Nota che dovresti usare Jython invece di Python, che si spera che rientri nei limiti come risposta.
- 1. Come posso creare un modulo con angoli arrotondati in WPF?
- 2. Come posso creare una classe Perl?
- 3. Generatore sonoro sinusoidale in Java
- 4. Come posso creare un singolo modulo di istanza (non un'applicazione)?
- 5. Come posso creare una configurazione MSI?
- 6. Come posso creare un modulo di codice in VBA
- 7. Django: come posso creare un modulo di selezione multipla?
- 8. Come posso creare un modulo "unfocusable" in C#?
- 9. Effetto sonoro senza latenza in Objective-C
- 10. Come creare una variabile globale in elisir modulo
- 11. Come posso creare una calcolatrice RESTful?
- 12. Come posso creare una copia di BufferedReader?
- 13. Come posso creare una lumaca in Django?
- 14. Come posso creare una RecyclerView circolare (infinita)?
- 15. Come posso creare una sandbox Lua sicura?
- 16. Come posso creare una copia dell'oggetto java.util.Properties?
- 17. Come posso creare una nuova annotazione?
- 18. Come posso creare una query UNION modificabile?
- 19. Come posso creare una lista in Oz?
- 20. Come posso creare una casella di testo scorrevole?
- 21. Come creare un campo modulo personalizzato raggruppando altri campi modulo?
- 22. Come posso installare un modulo CPAN in una directory locale?
- 23. Come disabilitare l'effetto sonoro di sistema su AlertDialog?
- 24. Come posso creare una linea in un'applicazione WinForms?
- 25. Come creare un modulo in ionico 2
- 26. Come posso creare confetti?
- 27. Come posso creare una richiesta POST JSON con LWP?
- 28. Come creare un modulo Divi personalizzato?
- 29. Come posso creare una funzione inline a tratti in MATLAB?
- 30. Python: Come posso creare una sottoclasse da una superclasse?
"h3"? Oltre alla h3, la tua notazione ricorda la notazione usata da lilypond. Cerca un'app lilypond-to-audio o lilypond-to-midi. –
Ah, Ubicazione: Berlino. Come sospettavo. @Ewan: nella notazione musicale tedesca, è "cdefgah". "h" invece di (inglese/internazionale) "b". –
Nitpick: come ho capito, "H" è in realtà che noi chiamiamo B flat - B (naturale) è ancora solo B. Il compositore Bach è stato in grado di utilizzare questo per codificare il suo nome in note in uno dei suoi pezzi. –