Also just here to express interest.
I think there are multiple arguments for essentially audio over USB.
connecting Norns to a higher quality sound card would be a huge win, regardless if it’s for the shield, fates, or original hardware. I think the fidelity on these devices are usable in most cases but, if the option is there for something better I’ll use it for sure.
The argument that I think would interest more users is the option to record straight into a DAW over USB like the new OP-1 update.
I have definitely experienced a healthy amount of digital noise on my outputs, especially when I have a MIDI device connected.
USB audio would just be clean and convenient.
THIS IS AN EDIT BECAUSE I CAN’T REPLY CONSECUTIVELY:
I have a couple of questions here.
I’m trying to adapt this script so I can change the audio device in the parameter screen. If I’m successful I’m hoping this would make it as easy as the MidiGrid library where you just need to include it in any script and the option would be available in your params to toggle between devices.
a very handy command I’ve found on the Jack website is “cat /proc/asound/cards” which easily allows you to identify any audio devices connected to the Norns.
Identifying my OP1
Running os.execute('cat /proc/asound/cards')
you can see Norns is on hw:0
and the OP1 on hw:1
os.execute('cat /proc/asound/cards')
0 [sndrpimonome ]: snd_rpi_monome - snd_rpi_monome
snd_rpi_monome
1 [OP1 ]: USB-Audio - OP-1
Teenage Engineering AB OP-1 at usb-3f980000.usb-1.4, high speed
true exit 0```
This seems to be easy enough for most to figure out on their own but could be useful to make a script that runs it and automatically adds all your devices to a table that you could easily scroll through if you have multiple devices that you use on different ocasions.
Similarly os.execute('lsusb')
can identify the ID as @Justmat mentioned above but, I’m not sure how to pair the correct ID with its device as the current method is simply running the command again with your device disconnected and seeing what changed.
It would take me a while to get there though as I’m still trying to adapt this script to work as a Param.
I thought it would be pretty straightforward but, it’s been a little bit of a struggle.
In theory, it should be as simple as the below script. (excluding some safety precautions like checking if the OP1 is connected.)
Change input in Params
params:add_separator("Set Audio Device")
devices = {"Norns","OP1"}
params:add_option("Input Device","Input Device",devices,1)
params:add_option("Output Device","Output Device",devices,1)
device_state = params:get("Input Device")
if device_in_state == 1 then
os.execute(_path.this.lib..'disconnect-opz-input.sh')
elseif decice_in_state == 2 then
-- I plan on always resetting the i/o to Norns default before switching to a new device
os.execute(_path.this.lib..'disconnect-opz-input.sh')
os.execute(_path.this.lib..'connect-opz-input.sh')
end
I’ve even simply tried running os.execute(_path.this.lib..'connect-opz-input.sh')
but no luck.
I don’t think the “connect-opz-input.sh” file is actually being executed. I’m trying to find information on how the os.execute
command actually works and how it executes a specified file I’ve tried pointing it using the actual file path which should be /dust/code/connect-op1/lib
but I end up running into several errors like:
lua:
attempt to call a string value
stack traceback:
Any help here?
PS.
I’ve successfully connected my OP1 with the stock script as I assume everyone else on this thread has also done and how the script is intended. The only problem I’ve run into there is not being able to set both the IN and the OUT as TRUE which causes feedback. I assume this is due to the OP1 sending whatever it’s listening to, to its output and the Norns is doing the same.