Skip to content

Instantly share code, notes, and snippets.

@pma
Created March 28, 2014 07:18
Show Gist options
  • Save pma/9827088 to your computer and use it in GitHub Desktop.
Save pma/9827088 to your computer and use it in GitHub Desktop.
defmodule QuickSynth.UI do
alias QuickSynth.Sound
alias QuickSynth.KeyboardMap
def start do
wx = :wx.new
frame = :wxFrame.new(wx, -1, 'Press keys to play...')
panel = :wxPanel.new(frame, [])
:wxFrame.connect(frame, :enter_window, [callback: fn(_,_) -> :wxWindow.setFocus(panel) end])
key_event = fn(ev, obj) ->
key = << elem(elem(ev, 4), 4) >> # Better way to get key from event?
note = KeyboardMap.note_for(String.downcase(key)) # key is uppercase
case note do
:nomap -> :ok
_ -> spawn(Sound, :play, [note])
end
:wxEvent.skip(obj)
end
:wxWindow.connect(panel, :key_down, [callback: key_event])
:wxFrame.show(frame)
[wx, frame, panel]
end
def stop do
:wx.destroy
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment