func main() { flag.Parse() portaudio.Initialize() defer portaudio.Terminate() portmidi.Initialize() defer portmidi.Terminate() if *doDemo { if err := demo(); err != nil { log.Println(err) } return } http.Handle("/", http.FileServer(http.Dir("static"))) http.HandleFunc("/socket", socket.Handler) l, err := net.Listen("tcp", *listenAddr) if err != nil { log.Fatal(err) } go http.Serve(l, nil) u := fmt.Sprintf("http://%v/", *listenAddr) if !*doBrowser || !openBrowser(u) { fmt.Printf("Open your web browser to %v\n\n", u) } fmt.Println("Press enter to quit...") os.Stdin.Read([]byte{0}) }
func main() { flag.Parse() portaudio.Initialize() defer portaudio.Terminate() portmidi.Initialize() defer portmidi.Terminate() if *doDemo { if err := demo(); err != nil { log.Println(err) } return } http.Handle("/", http.FileServer(http.Dir("static"))) http.HandleFunc("/socket", socketHandler) go func() { if err := http.ListenAndServe(*listenAddr, nil); err != nil { log.Println(err) } }() os.Stdout.Write([]byte("Press enter to stop...\n")) os.Stdin.Read([]byte{0}) }
func main() { flag.Parse() rand.Seed(time.Now().Unix()) if err := portmidi.Initialize(); err != nil { log.Fatal(err) } defer portmidi.Terminate() if *deviceN == -1 { listDevices() return } if err := run(); err != nil { portmidi.Terminate() log.Fatal(err) } }
func main() { flag.Usage = func() { fmt.Fprint(os.Stderr, usage) flag.PrintDefaults() os.Exit(2) } flag.Parse() if flag.NArg() != 1 { flag.Usage() } p, err := drum.DecodeFile(flag.Arg(0)) if err != nil { log.Fatalf("cannot decode splice file: %v", err) } if *showInfo { fmt.Print(p) return } patches, err := readPatches(p, *sampleDir) if err != nil { log.Fatalf("cannot read sample patches: %v", err) } drumMod, err := drummachine.New(p, patches) if err != nil { log.Fatalf("cannot make new drum machine: %v", err) } portaudio.Initialize() defer portaudio.Terminate() portmidi.Initialize() defer portmidi.Terminate() e := audio.NewEngine() e.Input("in", drumMod) if err := e.Start(); err != nil { panic(err) } select {} }
func main() { var ( ccValue int64 ccNumber int64 deviceId portmidi.DeviceId err error ) ccNumber, ccValue, err = parseArgs(os.Args) if err != nil { fmt.Println(err) os.Exit(1) } portmidi.Initialize() defer portmidi.Terminate() deviceId, err = getDeviceId() if err != nil { fmt.Println(err) os.Exit(1) } out, err := portmidi.NewOutputStream(deviceId, 1024, 0) if err != nil { fmt.Println("Error opening MicroBrute output port:", err) os.Exit(1) } err = out.WriteShort(ccMessage, ccNumber, ccValue) if err != nil { fmt.Println("Error sending message to MicroBrute:", err) os.Exit(1) } }
func main() { var synthID int32 const synthName = "sineTone" // Set up SuperCollider client. client, err := sc.NewClient("udp", "127.0.0.1:57121", "127.0.0.1:57120", 5*time.Second) if err != nil { log.Fatal(err) } _, err = client.AddDefaultGroup() if err != nil { log.Fatal(err) } err = client.DumpOSC(int32(1)) if err != nil { log.Fatal(err) } def := sc.NewSynthdef(synthName, func(p sc.Params) sc.Ugen { freq := p.Add("freq", 440) gain := p.Add("gain", 0.5) bus := sc.C(0) env := sc.EnvGen{ Env: sc.EnvPerc{}, Done: sc.FreeEnclosing, LevelScale: gain, }.Rate(sc.KR) sig := sc.SinOsc{Freq: freq}.Rate(sc.AR).Mul(env) return sc.Out{bus, sig}.Rate(sc.AR) }) err = client.SendDef(def) if err != nil { log.Fatal(err) } // initialize midi portmidi.Initialize() // this code can be uncommented to discover the // device ID's portmidi comes up with // deviceCount := portmidi.CountDevices() // enc := json.NewEncoder(os.Stdout) // for i := 0; i < deviceCount; i++ { // info := portmidi.GetDeviceInfo(portmidi.DeviceId(i)) // log.Printf("device %d - ", i) // err = enc.Encode(info) // if err != nil { // log.Fatal(err) // } // } // setup midi input stream and listen for midi events in, err := portmidi.NewInputStream(3, 1024) if err != nil { log.Fatal(err) } ch := in.Listen() for event := range ch { if event.Status == 144 { // MIDI note log.Printf("Note %-3d Velocity %-3d\n", event.Data1, event.Data2) if event.Data2 > 0 { // Note On synthID = client.NextSynthID() ctls := map[string]float32{ "freq": sc.Midicps(float32(event.Data1)), "gain": float32(event.Data2 / 127.0), } _, err = client.Synth(synthName, synthID, sc.AddToTail, sc.DefaultGroupID, ctls) } } } portmidi.Terminate() }
func shutDownPortMidi() { portmidi.Terminate() }