Полный обработанный пример:
public class OrganisationInfo
{
[Key]
public int OrgID { get; set; }
public virtual List<OrgOwners> OrgOwners { get; set; }
}
public class OrgOwners
{
[Key]
public int OrgOwnerID { get; set; }
public int OrgID { get; set; }
public int? OrgRefID { get; set; }
[ForeignKey("OrgRefID")]
public virtual OrganisationInfo Organisation { get; set; }
}
modelBuilder.Entity<OrganisationInfo>()
.HasMany(e => e.OrgOwners)
.WithRequired()
.HasForeignKey(e => e.OrgID);
"Колокольчики" в Java (чрезмерно увеличенный в размере, как обычно), с помощью JFugue, с трубчатыми звонками и ксилофонами (полифонический!):
import org.jfugue.*;
public class JingleBells
{
public static void main(String[] args)
{
Player player = new Player();
player.play("T170 "+
" V0 I[XYLOPHONE] C4q C4q C3h C4q C4q C3h C3q B3q A3q G3q C4h "+
" V1 I[TUBULAR_BELLS] E5q E5q E5h E5q E5q E5h E5q G5q C5q D5q Eqh "+
" V2 I[XYLOPHONE] G3h G2q G3q G3h G3h");
}
}
Разговор о "настолько же плохо как звуковой сигнал", если у Вас есть звуковой сигнал, установленный на Вашем поле Linux, можно выполнить следующий сценарий оболочки (в том же духе как ответ Jeremy Ruten):
#!/bin/sh
beep -f 659 -l 400
sleep 0.05
beep -f 659 -l 400
sleep 0.05
beep -f 659 -l 800
sleep 0.05
beep -f 659 -l 400
sleep 0.05
beep -f 659 -l 400
sleep 0.05
beep -f 659 -l 800
sleep 0.05
beep -f 659 -l 400
sleep 0.05
beep -f 783 -l 400
sleep 0.05
beep -f 523 -l 400
sleep 0.05
beep -f 587 -l 400
sleep 0.05
beep -f 659 -l 800
MIDI является опцией, хотя на ПК это обычно звучит почти настолько же плохим как звуковой сигнал.
Да, можно играть midi.
Midi не кодирует звуки по сути, он кодирует информацию, используемую, чтобы играть музыку; подача, тон, интенсивность, и т.д.
Существует инструментарий midi C# на codeplex в: http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx
Качество звука зависит полностью от устройства midi, используемого для проигрывания его, таким образом, это будет варьироваться по качеству с компьютера на компьютер.
Можно найти хороший список Рождественских файлов midi в: http://www.lockergnome.com/midi/
Windows Media Player может играть файлы midi, как может Быстрое Время (я верю).
Что относительно того, чтобы генерировать данные PCM на лету? PCM - Модулируемый Импульсный код - звук является просто набором образцов напряжения через аналоговую аудиосистему.
Думайте о динамике. Поскольку звук играется, он вибрирует. Что, если Вы взяли линейку и измерили местоположение динамика на уровне быстрее затем частота звука? Вы получили бы изображение формы сигнала. Это точно, на что данные PCM похожи с каждым измерением, сохраненным как интервал на 8 или 16 битов. Частота, говорят, что 44 кГц являются количеством образцов в секунду. CD используют частоту дискретизации на 44 кГц и образцы на 16 битов.
DirectSound (на окнах) и (кросс-платформенный) OpenAL является двумя библиотеками, которыми можно пользоваться для проигрывания буферов данных, полных данных PCM. Я использовал DirectSound в прошлом, чтобы не играть данные, а скорее читать в данных из микрофона для получения уровня громкости.
Если Вы хотели создать образец PCM для определенного примечания, Вы просто вычисляете, частота (вот таблица), и затем поместите синусоидальную волну в свой буфер. Можно смешать различные частоты только путем добавления их (удостоверьтесь, что сумма является меньше затем максимальной громкостью, чтобы не отсекать),